菜鸟问题:这样的代码产生的方波是多少频率?
MCU用STC8H8K64U,无中断,采用内部振荡24MHz,P11端口推挽输出,主代码如下,这样可以在P11上产生多少频率的方波?void main(void)
{
P11=~P11;
}
你这样写是不会产生输出信号的,做个简单修改:
void main()
{
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
while (1)
{
P11 = ~P11;
}
}
主循环里面的指令转成汇编指令:
LOOP:
CPL P11
SJMPLOOP
其中CPL消耗1个指令周期,SJMP消耗3个指令周期,总共4个指令周期。
IO口翻转频率是:24MHz / 4 = 6MHz
产生的脉冲翻转2次为一个周期,所以脉冲频率为:6MHz / 2 = 3MHz 谢谢乘风老师的讲解,让我终于明白了为何这样一个取反命令怎么产生的方波的频率是3MHz,而不是12MHz。原来最终出来的代码中有跳转指令,会增加总的指令周期。非常感谢! 乘风飞扬 发表于 2024-2-22 18:20
你这样写是不会产生输出信号的,做个简单修改:
主循环里面的指令转成汇编指令:
学到了,另外想请教一个问题,如果不考虑其他代码的情况,像这么高的脉冲 3MHZ的IO切换在IIC和SPI等通讯协议上 可以正常的被从机解析吗
页:
[1]