void main(void)
{
LedInit() ;
While(1)
{
LED = ON ;
DelayMs(500) ;
LED = OFF ;
DelayMs(500) ;
}
}
程序很簡(jiǎn)單,從它的結(jié)構(gòu)可以看出,LED先點(diǎn)亮500MS,然后熄滅500MS,如此循環(huán)下去,形成的效果就是LED以1HZ的頻率進(jìn)行閃爍。下面讓我們分析上面的程序有沒(méi)有什么問(wèn)題。
看來(lái)看出,好像很正常的啊,能有什么問(wèn)題呢?這個(gè)時(shí)候我們應(yīng)該換一個(gè)思路去想了。試想,整個(gè)程序除了控制LED = ON ; LED = OFF; 這兩條語(yǔ)句外,其余的時(shí)間,全消耗在了DelayMs(500)這兩個(gè)函數(shù)上。而在實(shí)際應(yīng)用系統(tǒng)中是沒(méi)有哪個(gè)系統(tǒng)只閃爍一只LED就其它什么事情都不做了的。因此,在這里我們要想辦法,把CPU解放出來(lái),讓它不要白白浪費(fèi)500MS的延時(shí)等待時(shí)間。寧可讓它一遍又一遍的掃描看有哪些任務(wù)需要執(zhí)行,也不要讓它停留在某個(gè)地方空轉(zhuǎn)消耗CPU時(shí)間。
typedef unsigned int uint16;
typedef unsigned int UINT;
typedef unsigned int uint;
typedef unsigned int UINT16;
typedef unsigned int WORD;
typedef unsigned int word;
typedef int int16;
typedef int INT16;
typedef unsigned long uint32;
typedef unsigned long UINT32;
typedef unsigned long DWORD;
typedef unsigned long dword;
typedef long int32;
typedef long INT32;
typedef signed char int8;
typedef signed char INT8;
typedef unsigned char byte;
typedef unsigned char BYTE;
typedef unsigned char uchar;
typedef unsigned char UINT8;
typedef unsigned char uint8;
typedef unsigned char BOOL;