|
/*******************************************************************/ //模 塊 名: 鍵盤(pán)掃描 //創(chuàng) 建 者: 好心情 //修 改 者: //功能描述: 行列線(xiàn)掃描方式驅(qū)動(dòng) 4*4,含有按下去抖和彈起去抖 //其他說(shuō)明: 51上運(yùn)行通過(guò),晶振12M //版 本: V1.0 //日 期: 2008-1-18 /*******************************************************************/ //------------------------------------------------------------------- #ifndef _keyDriver_h_ //防止重復(fù)引用 #define _keyDriver_h_ //------------------------------------------------------------------- #include"userdefined.h" #include"yanshi.h" //#include"ledDriver.h" /****************************常量定義*******************************/ #define keyPort P2 //定義鍵盤(pán)接口 /****************************函數(shù)聲明*******************************/ code unsigned char stop[3] _at_ 0x3B; //Mon51用! //------------------------------------------------------------------- #endif //---------------------------函數(shù)實(shí)現(xiàn)-------------------------------// uchar keyScan() { uchar rCode; //保存行碼 uchar lCode; //保存列碼
keyPort = 0xf0; //初始化端口,準(zhǔn)備掃描 11110000 if(keyPort != 0xf0) //如果有按鍵動(dòng)作 { delay_1ms(10); //延時(shí)去抖 if(keyPort != 0xf0) //再次檢測(cè)按鍵,去抖 { rCode = (~keyPort) & 0xf0; //保存列碼 keyPort = 0x0f; //翻轉(zhuǎn)行列電平,判斷行碼 00001111 lCode = (~keyPort) & 0x0f; //保存行碼 do{ //按鍵彈起去抖 keyPort = 0x0f; delay_1ms(10); }while(keyPort != 0x0f); return (rCode | lCode); //得到特征碼并將其返回 } } return (0); } |