#include "head_file.h" sbit Natural_wind_button =P2^0; sbit Ordinary_wind_button =P2^1; sbit Sleep_wind_button =P2^2; bit flag_button = 0; unsigned char flag_com = 0; void BUTTON_Config()//按键模块驱动初始化 { Natural_wind_button = 1; Ordinary_wind_button = 1; Sleep_wind_button =1; Time_button = 1; auto_button = 1; } void key(){ static unsigned char key_new; //P2 |= 0xff; //对应的按键IO口输出为1 if((P2 & 0xFF) != 0xFF) //按键按下 { sdelay(5); //按键消抖动 if(((P2 & 0xff) != 0xff) && (key_new == 1)) { //确认是按键按下 key_new = 0; //防止重复读取按键 if((~P2)&0x01){//速度调节 flag_button = 1; set_t(100); P0 |= 0xf0; P05 = 0; if(flag_com == 0)P25 = 0; } if((~P2)&0x02){ flag_button = 1; set_t(70); //P2&=(0xEF);//亮两个 P0 |= 0xf0; P06 = 0; if(flag_com == 0)P25 = 0; } if((~P2)&0x04){ flag_button = 1; set_t(40); //P2&=(0xDF);//亮一个 P0 |= 0xf0; P07 = 0; if(flag_com == 0)P25 = 0; } if((~P2)&0x08){ flag_com = 1; flag_button = 1; set_t(0); //P2&=(0xDF);//亮一个 P0 |= 0xf0; P08 = 0; } if((~P2)&0x10){ flag_com = 1; flag_button = 1; flag=1; ET0=1; TR0=1; P3 |= 0x0E; P32 = 0; } if((~P2)&0x20){ flag_com = 2; flag_button = 1; worktime=4000;//it means 4 sec ET0=1;//开定时器0中断 TR0=1;//启动定时器0 P3 |=0x0E; P33 = 0; } if((~P2)&0x40){ flag_com = 3; flag_button = 1; worktime=8000;//2 sec ET0=1;//开定时器0中断 TR0=1;//启动定时器0 P3 |= 0x0E; P34 = 0; } } } else key_new = 1; P2 |= 0xff; //对应的按键IO口输出为1 }