 源程序如下: unsigned char scan_key(void) { unsigned char keyval = 0;//無鍵,有鍵1~6 IO1 = 1;//釋放總線 IO2 = 1;//釋放總線 if (!IO1 && !IO2) keyval = 3;//大強盜鍵S3 else if (!IO1) keyval = 2;//小強盜鍵S2 else if (!IO2) keyval = 1;//小強盜鍵S1 else {//開始掃描,也要考慮小毛賊的問題~~~ IO1 = 0;//掃描 if (!IO2) {//這時不能立即判定S4/S6 IO1 = 1;//釋放總線 IO2 = 0;//反向掃描 if (!IO1) keyval = 4;//找出小毛賊S4~~~ else keyval = 6;//S6 } else {//只能是S5了 IO1 = 1;//釋放總線 IO2 = 0;//反向掃描 if (!IO1) keyval = 5;//S5 // else keyval = 6;//S6//上面已判出了S6,這句是廢話 } // IO1 = 1;//釋放總線//已經釋放~~~ IO2 = 1;//釋放總線 } return keyval;//返回鍵值0-無鍵,1~6-S1~S6鍵
|