关于单片机延时问题,如果不用计时器如何能做到精确延时。
今天看霖锋的单片机视频,里面有个延时函数,晶振是12M
void delay(uint i)
{
while(i--);
}
视频里说delay(80);大概延时600us,
但是我用keil模拟的时候算出来的时间不对
void main(void)
{
uint i;
delay7us(80);......1
i=0;...............2
}
单步跟踪从1到2的时间是0.00038900--0.00112500,另个相减得到0.000736,单位是秒的话,哪岂不是延时是736ms,而不是微秒,我错在哪了吗?
还有能请教一下,for循环嵌套的延时函数应该怎么计算到底延时多少
[解决办法]
C语言的延时可以实现的精度是指令级别的.
前提:
要熟悉了解你C语言编程成汇编的代码.(比如 ++ i,i ++ 的区别)
要熟悉你所有编译器的优化.
或者
直接追踪汇编代码.