CCS PICC實(shí)現(xiàn)的矩陣鍵盤(pán)掃描
網(wǎng)上關(guān)于CCS PICC矩陣鍵盤(pán)掃描的參考程序較少,本人近來(lái)做了此類(lèi)實(shí)驗(yàn),這里將把程序公開(kāi)至此以便和學(xué)習(xí)CCS PICC的網(wǎng)友交流!
例:
unsigned char key()
{
#use fast_io(C)
unsigned char k1,k2,k3;
set_tris_c(0x00);
output_c(0x0f);
set_tris_c(0x0f);
k1=input_c()0x0f;
set_tris_c(0x00);
output_c(0xf0);
set_tris_c(0xf0);
k2=input_c()0xf0;
k3=k1|k2;
return(k3);
}//此程序只是最基本的矩陣掃描,忽略了抖鍵、干擾和多鍵同時(shí)按下的情況!
/*需要注意的是:CCS PICC中庫(kù)函數(shù)output_x()、input_x()都會(huì)整個(gè)的將TRIS端口方向控制寄存器改為輸出或輸入,而矩陣鍵盤(pán)掃描時(shí)要求:端口輸出0x0f,然后高四位設(shè)置為輸出低四位設(shè)置為輸入,結(jié)果和0x0f相與屏蔽無(wú)效位,檢測(cè)是否有0出現(xiàn),如果有,即有按鍵按下,轉(zhuǎn)到掃描處理,如果沒(méi)有,低四位應(yīng)該為0x0f。接著端口輸出0xf0,然后高四位設(shè)置為輸入低四位設(shè)置為輸出,結(jié)果和0xf0相與屏蔽無(wú)效位,檢測(cè)是否有0出現(xiàn),如果有,即有按鍵按下,轉(zhuǎn)到掃描處理,如果沒(méi)有,高四位應(yīng)該為0xf0。PIC單片機(jī)與51系列單片機(jī)不同,如果使用過(guò)程中不注意設(shè)置端口方向,將得不到正確的值。CCS PICC中庫(kù)函數(shù)output_x()、input_x()能自動(dòng)將整個(gè)TRIS端口方向控制寄存器改為輸出或輸入,但在矩陣掃描中,需要手動(dòng)設(shè)置方向控制寄存器,本例中就使用#use fast_io(C)、set_tris_x()這些語(yǔ)句來(lái)設(shè)置方向控制寄存器。本人在這個(gè)例子中走了不少?gòu)澛贰?/
評(píng)論