按键输入程序:unsigned char MatrixKey() { unsigned char KeyNumber=0; P1=0xFF; P1_0=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=13;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=9;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=5;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=1;} P1=0xFF; P1_1=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=14;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=10;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=6;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=2;} P1=0xFF; P1_2=0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=15;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=11;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=7;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=3;} P1=0xFF; P1_3 =0; if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=16;} if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=12;} if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=8;} if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=4;} return KeyNumber; }
时间: 2023-06-25 14:06:19 浏览: 63
用if语句控制P0口8位LED的流水方向-综合文档
这段程序是用来读取矩阵键盘输入的。它首先将P1口(8051单片机的一个I/O口)设置为高电平,然后依次将P1的每一位输出为低电平,检测键盘的输出,最后返回对应的按键编号。其中,Delay(20)表示延时20毫秒,while(P1_x==0)表示当P1_x为低电平时,一直等待。这里的P1_x表示P1口的第x位。
阅读全文