蓝桥杯单片机学习过程记录(二)独立按键

单片机独立按键控制部分

长夜漫漫无心睡眠,京京姑娘你在哪

按键控制led灯

//按键控制led灯
#include<STC15F2K60S2.H>
void main(void)
{
 P0 = 0X00;P2 = 0XA0;P2 = 0X80;P0 = 0XFF;
 while(1)
 {
  if(P30 == 0)
   P00 = 0;
  if(P31 == 0)
   P01 = 0;
  if(P32 == 0)
   P02 = 0;
  if(P33 == 0)
   P03 = 0;
 }
}

按键控制流水灯

//按键控制流水灯
#include<STC15F2K60S2.H>
unsigned int i;
unsigned int led;
int button_flag = 0;
void delayms(int ms);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 while(1){
  if(P30==0)
    button_flag=1;
  if(button_flag==1){
    for(led=0;led<8;led++){
      P0=~(0X01<<led);
      delayms(200);
    }
  if(led==8)
    P0=0XFF;
  }
 }
}

按键消抖、抬起亮灯

//抬起亮灯
#include<STC15F2K60S2.H>
void delayms(int ms);
int led,button_flag;
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 led = 0;button_flag =0;
 while(1){
  if(P30==0){
   //消抖
   delayms(5);
   if(P30==0){
    button_flag=1;
   }
   //等待抬起
   while(!P30);
  }
  if(button_flag==1){
   P0=~(0X01<<led);led++;
   if(led==8)
    led=0;
   button_flag =0;
  }
 }
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}

多个按键控制流水灯

//四个按键控制流水灯
#include<STC15F2K60S2.H>
void delayms(int ms);
int led,button_flag;
void key_scan(void);
void main(void){
 P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
 led = 0;button_flag =0;
 while(1){
  key_scan();
  if(button_flag==1){
   P0=~(0X01<<led);
   led++;
   button_flag=0;
  }
  if(led==8)
   led=0;
 }
}
//延时
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++){
  for(w=845;w>0;w--);
 }
}
void key_scan(void){
 //s7手动流水
 if(P30==0){
   delayms(5);
   if(P30==0){
    button_flag=1;
   }
   while(!P30);
  } 
 //s6自动流水
 else if(P31==0){
   delayms(5);
   if(P31==0){
    for(led=0;led<8;led++){
     P0=~(0X01<<led);
     delayms(200);
    }
    if(led==8){
     led=0;
     P0=0XFF;
    }
   }
   while(!P31);
  } 
 //s5全亮
 else if(P32==0){
   delayms(5);
   if(P32==0){
    P0=0X00;
   }
   while(!P32);
  } 
 //s4全灭
 else if(P33==0){
   delayms(5);
   if(P33==0){
    P0=0XFF;
   }
   while(!P33);
  }  
}