不管有沒有中斷, 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);
}
} |
|