单片机独立按键控制部分
长夜漫漫无心睡眠,京京姑娘你在哪
按键控制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);
}
}