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