不管有没有中断, TMR0 是定时器吧? 理论上 TMR0 向上计数吧? 当TMR0 溢出之后,
while (CountNew >= CountOld)
{
CountOld = CountNew;
CountNew = TMR0;
}
这段代码里面的, CountNew 就 小于 CountOld 了吧? 这个时候 就会跳出这个 while, for 里面的 i 就会减1, 减到0 延时结束,子函数返回。不过,没明白为啥搞这么复杂……, 感觉这么写就可以了吧……
int mydelay_ms(int y) //延时 y*10 ms
{
while(y--)
{
TMR0 = 0xD9; //延时10ms
while(TMR0>=0xD9);
}
} |
|