NEC單片機(jī)的FIP應(yīng)用
3.2 程序初始化
進(jìn)行顯示方式設(shè)置、I/O端口設(shè)置、中斷系統(tǒng)設(shè)置始化的具體程序段如下:
DI(); /*關(guān)中斷*/
DSPM0=0x00; /*9段顯示,段顯示方式,系統(tǒng)時(shí)鐘4.9152MHz*/
DSPM1=0xB3; /*23位顯示,亮度為2/16,顯示周期為416.7μs*/
PM12=0x0F; /*P12端口的低四位用于鍵盤回讀,設(shè)為輸出模式*/
KSIF=0; /*清除中斷請求標(biāo)志*/
KSMK=0; /*清除中斷屏蔽標(biāo)志,允許INTKS中斷*/
Khead=9; /*初始化鍵盤緩沖區(qū)*/
Krear=0; /*消抖動計(jì)數(shù)器置初值*/
Scandata=0x01; /*鍵盤掃描數(shù)據(jù)置初值*/
ScanFinish=0; /*一遍掃描結(jié)束標(biāo)志置初值*/
KeyChanged=0; /*按鍵改變標(biāo)志置初值*/
EI(); /*開中斷*/
3.3 顯示程序
下面的程序可實(shí)現(xiàn)在指定位置顯示一個(gè)數(shù)字的功能。其中能數(shù)digit為要顯示的數(shù)字,范圍是0~9;position為顯示位置,從右向左與0~11相對應(yīng)。
void DisplayDigit(char digit,char position)
{if((digit10)(digit>=0)(position>=0)(position12)
/*在顯示范圍之內(nèi)*/
{pokeb(0xFA60+position,DisplayCode[digit][1]);
/*編碼的低字節(jié)*/
{pokeb(0xFA70+position,DisplayCode[digit][0])};
/*編碼的高字節(jié)*/
}
中斷處理程序流程如圖3所示。
4 小結(jié)
在其他單片機(jī)系統(tǒng)中,通常由軟件定時(shí)中斷來逐位刷新顯示和掃描鍵盤,這樣將增加軟件的復(fù)雜性,并且會占用較多的CPU資源。而μPD780208所具有的FIP顯示控制/驅(qū)動器可實(shí)現(xiàn)硬件的自動顯示刷新功能,在初始位置完成后,軟件的工作只是將顯示數(shù)據(jù)按要求的格式放入FIP顯示RAM區(qū)而無需額外編程,由于定時(shí)刷新顯示的作由硬件完成,因此在很大程序上降低了CPU的資源占用率。同時(shí),由于FIP顯示時(shí)序中提供有鍵盤掃描時(shí)序,從而進(jìn)一步簡化了軟件編程,并且減少了定時(shí)中斷占用。這樣,在單片機(jī)的資源并不豐富的資源條件下,F(xiàn)IP顯示控制/驅(qū)動器的優(yōu)越性得到了充分體現(xiàn)。
蜂鳴器相關(guān)文章:蜂鳴器原理
評論