51单片机多路独立按键开关程序
2022-03-11 来源:eefocus
每一个按键对应一个led灯,实现独立开关灯。
源程序:
** #include #define uint unsigned int #define uchar unsigned char //定义按键端口 sbit key1 = P1^0;//定义按键端口1 sbit key2 = P1^1; sbit key3 = P1^2; sbit key4 = P1^3;//定义按键端口4 sbit key5 = P1^4; sbit key6 = P1^5; sbit key7 = P1^6; sbit key8 = P1^7; sbit led1 = P2^0; //定义LED灯1 sbit led2 = P2^1; sbit led3 = P2^2; sbit led4 = P2^3; //定义LED灯4 sbit led5 = P2^4; sbit led6 = P2^5; sbit led7 = P2^6; sbit led8 = P2^7; //延时函数声明 void delay(uint xms); //程序入口 void main(){undefined while(1){undefined //第一次判断 if(key1 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 List item if(key1 == 0){undefined led1 = ~led1;// 灯亮 } while(!key1); //当按键未松开时,key为0,执行该死循环。 //等待按键被松开 } if(key2 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key2 == 0){undefined led2 = ~led2; //灯亮 } //等待按键被松开 while(!key2); //当按键未松开时,key为0,执行该死循环。 } if(key3 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key3 == 0){undefined //灯亮 led3 = ~led3; } //等待按键被松开 while(!key3); //当按键未松开时,key为0,执行该死循环。 } if(key4 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key4 == 0){undefined led4 = ~led4;// 灯亮 } while(!key4); //当按键未松开时,key为0,执行该死循环。 //等待按键被松开 } if(key5 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key5 == 0){undefined led5 = ~led5; //灯亮 } //等待按键被松开 while(!key5); //当按键未松开时,key为0,执行该死循环。 } if(key6 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key6 == 0){undefined //灯亮 led6 = ~led6; } //等待按键被松开 while(!key6); //当按键未松开时,key为0,执行该死循环。 } if(key7 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key7 == 0){undefined led7 = ~led7; //灯亮 } //等待按键被松开 while(!key7); //当按键未松开时,key为0,执行该死循环。 } if(key8 == 0){undefined //延时20ms 消除抖动 delay(20); //第二次判断 if(key8 == 0){undefined //灯亮 led8 = ~led8; } //等待按键被松开 while(!key8); //当按键未松开时,key为0,执行该死循环。 } } } void delay(uint xms) {undefined uint i,j; for(i = 0; i }
上一篇:小白自学c51笔记之流水灯
下一篇:51单片机单键开关