【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。
方法1(一目了然版)
%%独立按键 代码1
#include<reg51.h>
sbit K1=P0^0;
sbit K2=P0^1;
sbit K3=P0^2;
sbit K4=P0^3;
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
sbit D4=P2^3;
void delay(unsigned int i){
unsigned int j=0;
for(;i>0;i--)
for(;j<125;j++);
}
void main(void){
D1=D2=D3=D3=1;
while(1){
if(K1==0){
delay(10);
if(K1==0){
D1=0;
D2=D3=D4=1;
while(K1==0);
}
}
if(K2==0){
delay(10);
if(K2==0){
D2=0;
D1=D3=D4=1;
while(K2==0);
}
}
if(K3==0){
delay(10);
if(K3==0){
D3=0;
D2=D1=D4=1;
while(K3==0);
}
}
if(K4==0){
delay(10);
if(K4==0){
D4=0;
D2=D3=D1=1;
while(K4==0);
}
}
}
方法2(简易版)
%%独立按键 代码2
#include<reg51.h>
void main(){
char key=0; //初始化key
while(1){
key=P0&0x0f; //送P0值,高四位清零
if(key!=0x0f) //判断按下
P2=key; //低电平时灯亮
}
}