51单片机多路独立按键开关程序

51单片机8路独立按键开关程序

每一个按键对应一个led灯,实现独立开关灯。
源程序:
** #include <reg51.h>
#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(){
while(1){
//第一次判断
if(key1 == 0){
//延时20ms 消除抖动
delay(20);
//第二次判断

  1. List item

    if(key1 == 0){
    led1 = ~led1;// 灯亮

    }
    while(!key1); //当按键未松开时,key为0,执行该死循环。
    //等待按键被松开
    }
    if(key2 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key2 == 0){
    led2 = ~led2; //灯亮

    }

    //等待按键被松开

    while(!key2); //当按键未松开时,key为0,执行该死循环。
    }
    if(key3 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key3 == 0){
    //灯亮
    led3 = ~led3;

    }

    //等待按键被松开

    while(!key3); //当按键未松开时,key为0,执行该死循环。
    }

    if(key4 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key4 == 0){
    led4 = ~led4;// 灯亮

    }
    while(!key4); //当按键未松开时,key为0,执行该死循环。
    //等待按键被松开
    }
    if(key5 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key5 == 0){
    led5 = ~led5; //灯亮

    }

    //等待按键被松开

    while(!key5); //当按键未松开时,key为0,执行该死循环。
    }
    if(key6 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key6 == 0){
    //灯亮
    led6 = ~led6;

    }

    //等待按键被松开

    while(!key6); //当按键未松开时,key为0,执行该死循环。
    }
    if(key7 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key7 == 0){
    led7 = ~led7; //灯亮

    }

    //等待按键被松开

    while(!key7); //当按键未松开时,key为0,执行该死循环。
    }
    if(key8 == 0){
    //延时20ms 消除抖动
    delay(20);
    //第二次判断
    if(key8 == 0){
    //灯亮
    led8 = ~led8;

    }

    //等待按键被松开

    while(!key8); //当按键未松开时,key为0,执行该死循环。
    }

    }
    }
    void delay(uint xms)
    {
    uint i,j;
    for(i = 0; i<xms; ++i)
    for(j = 0; j<110; ++j);
    }

     **
    

猜你喜欢

转载自blog.csdn.net/weixin_45442198/article/details/118466989