![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
单片机是STC12C4052AD,18.432MHZ晶振,但是我执行了18433个NOP,为什么延时会是1S的时间??
理论上1/18432000=54.23ns54.23*18433=1000000=1ms,现在出现问题了,不是1ms,要大于1s,这是为什么呢???请求指点!!...
理论上1/18432000=54.23ns 54.23*18433=1000000=1ms,
现在出现问题了,不是1ms,要大于1s,这是为什么呢???请求指点!! 展开
现在出现问题了,不是1ms,要大于1s,这是为什么呢???请求指点!! 展开
2个回答
展开全部
4052只有4K的flash,装不了18433个NOP指令,你一定是用了循环语句,用循环语句必定要有条件跳转指令,而条件跳转指令是需要占用比NOP更多时钟周期的,给你一个参考
void Delay1ms() //@18.432MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 18;
j = 234;
do
{
while (--j);
} while (--i);
}
void Delay1ms() //@18.432MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 18;
j = 234;
do
{
while (--j);
} while (--i);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询