8051鍵盤讀取程式
取自8051【8051單晶片實作-使用C語言】;林振漢老師著
#include<reg51.h>
#define KBINP P1 //巨集;將P1名字做設定以便日後用不同的port時可以輕易更換
//聽說巨集有很多功能,有時間會熟悉一下整理一份文件來教自己~ XD
void delay1ms(int count){ //delay function
int i,j;
for(i=0;i<count;i++) for(j=0;j<122;j++);
}
int kbscan(){
unsigned char scanln[]={0xfe,0xfd,0xfb,0xf7};
unsigned char row,col,kbtemp,kbp;
for(row=0;row<4;row++){
KBINP=scanln[row]; //將低4bit依序拉low,來判斷是哪一個按鈕被按下
kbtemp=KBINP&0xf0;
if(kbtemp!=0xf0){
delay1ms(20); //防彈跳延遲;在判斷完按鈕狀態時給與一時間延遲避免誤動作
for(col=0;col<4;col++){
if(kbtemp==(scanln[col]&0x0f)*16){
kbp=row*4+col; //計算按鈕所對應的值
while((KBINP&0xf0)!=0xf0); //在按鈕放掉前使程式不跳離這個區塊,避免誤動作
}
}
}
}
return kbp;
}
void main(){
while(1){
P0=~kbscan();
}
}
本文目的僅在於分享學習心得,若涉及著作權法請留言告知,在下看到後會馬上處理
留言列表