#define uchar unsigned char #define uint unsigned int/*顯示數(shù)據(jù)=====*/ uchar code a[9]={0xff,0xaa,0x55,0xcc,0x33,0xf0,0x0f,0x18,0x81}; uchar key;/*全局變量*/ /*IO口定義======*/ sbit P20=P2^0; sbit P21=P2^1; /*子函數(shù)說明==*/ uchar key_scan(void); void delay(uint a); /*主程序=======*/ void main() { uchar i; while(1) { i= key_scan();/*根據(jù)I的值達(dá)到控制顯示目的*/ P0=a[i]; } } /*按鍵掃描程序*/ /*有返回值=====*/ uchar key_scan(void) { uchar i; P2=0xfc; //按鍵接口 if(P2!=0xfc)//判斷有無鍵按下 { delay(50);//延時(shí) if(P2!=0xfc)//再判斷 { P2=0xfe;//判斷按下的鍵在哪列 i="P2"; if(i!=0xfe){ i="P2";}//把鍵值送到I. else //判斷按下的鍵在哪列 { P2=0xfd; i="P2"; if(i!=0xfd) {i="P2";}//把鍵值送到I. } } } /*判斷鍵值并返回*/ switch(i) { case 0xf9:key="1";break; case 0xfa:key="2";break; case 0xf5:key="3";break; case 0xf6:key="4";break; case 0xed:key="5";break; case 0xee:key="6";break; case 0xdd:key="7";break; case 0xde:key="8";break; default:key="0xff";break; } return(key);//返回I的值 } /*延時(shí)子函數(shù)==*/ void delay(uint a) { uint i; for(i="0";i<a;i++); }
|