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