從點亮LED(發(fā)光二極管)開始
在眾多的單片機(jī)學(xué)習(xí)資料中,最基礎(chǔ)的實驗無疑于點亮LED了,即控制單片機(jī)的I/O的電平的變化。
如同如下實例代碼一般
void main(void)
{
LedInit() ;
While(1)
{
LED = ON ;
DelayMs(500) ;
LED = OFF ;
DelayMs(500) ;
}
}
程序很簡單,從它的結(jié)構(gòu)可以看出,LED先點亮500MS,然后熄滅500MS,如此循環(huán)下去,形成的效果就是LED以1HZ的頻率進(jìn)行閃爍。下面分析程序有沒有什么問題。
看來看出,好像很正常的啊,能有什么問題呢?這個時候我們應(yīng)該換一個思路去想了。試想,整個程序除了控制LED = ON ; LED = OFF; 這兩條語句外,其余的時間,全消耗在了DelayMs(500)這兩個函數(shù)上。而在實際應(yīng)用系統(tǒng)中是沒有哪個系統(tǒng)只閃爍一只LED就其它什么事情都不做了的。因此,在這里我們要想辦法,把CPU解放出來,讓它不要白白浪費500MS的延時等待時間。寧可讓它一遍又一遍的掃描看有哪些任務(wù)需要執(zhí)行,也不要讓它停留在某個地方空轉(zhuǎn)消耗CPU時間。