特别注意:
P3_1代表K1
P3_0代表K2
P3_2代表K3
P3_3代表K1。
1. unsigned char KeyNumber = 0; 2. if(P3_1==0){ //表示如果按键按下 3. Delay(20); //延时20ms用来消抖 4. while(P3_1==0); //while空程序,手一直按住按键,程序一直卡在这里,直到松手跳出此循环 5. Delay(20); //再次延时20ms消抖 6. KeyNumber=1;} //记录键码值
类比上方代码,把它封装成一个函数方便调用。
1. #include <REGX52.H> 2. #include "Delay.h" 3. 4. 5. unsigned char Key() 6. { 7. unsigned char KeyNumber = 0; 8. 9. if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;} 10. if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);KeyNumber=2;} 11. if(P3_2==0){Delay(20);while(P3_2==0);Delay(20);KeyNumber=3;} 12. if(P3_3==0){Delay(20);while(P3_3==0);Delay(20);KeyNumber=4;} 13. 14. return KeyNumber; 15. }