目前為止,我還沒有用過沒有定時器的單片機
對于一個單片機程序,延時時間達1秒的,肯定是不能用軟件延時的,難道你要讓程序什么都不做,就在那干等1秒嗎?
像18b20p 這種需要那么長時間的時序,肯定是要通標志位或者全局變量來處理時序的嘛
如果非得執著于軟件延時1秒,那仿真肯定不行,就像說的一樣,STM32有仿真,那別的單片機不一定能仿真
那肯定是示波器了
先隨便寫一個延時函數,大概是1mS左右,然后用示波器看一下這1mS的真正延時,不斷的調整,直到最接近1mS然后把這個延時循環放到另一個循環中,參數調用就行了
假設,我已經調節好了一個1mS延時,它是這樣的
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
那就把這循環放到另一個循環中,做成一個函數就可以了,
這樣的函數調用參數會用到一定的時間,整個延時的時間可能會有誤差,再通過微調就差不多了
void Delay_ms(unsigned int a)
{
unsigned char i, j;
for(a;a>0;a--)
{
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
}
}
|