按键查询控制灯的状态
1、宏定义灯和按键
2、按键和灯初始化
3、用if语句消抖的方法,实现按键控制灯的状态
相关寄存器
PxSEL
PxDIR
1 #include"ioCC2530.h" 2 #define D3 P1_0 3 #define D4 P1_1 4 #define D5 P1_3 5 #define D6 P1_4 6 #define sw1 P1_2 7 8 typedef unsigned int uint; 9 typedef unsigned char uchar; 10 11 uchar flag=0;//灯的状态 12 13 void delay(uint time)//延时函数 14 { 15 uint i; 16 while(time--) 17 { 18 for(i=0;i<535;i++); 19 } 20 } 21 22 void Init_Port() 23 { 24 P1SEL&=~0x1f;//设置灯和按键为I/O输出 25 P1DIR|=0x1b;//设置灯为输出00011011 26 P1DIR&=~0x04;//设置按键为输入 27 D3=0; 28 D4=0; 29 D5=0; 30 D6=0; 31 } 32 33 void Init_key()//按键查询初始化 34 { 35 if(sw1==0) 36 { 37 delay(100); 38 if(sw1==0) 39 { 40 flag++; 41 while(sw1==0); 42 if(flag==6) 43 { 44 flag=1; 45 } 46 } 47 } 48 } 49 50 void main() 51 { 52 Init_Port(); 53 while(1) 54 { 55 Init_key(); 56 switch(flag) 57 { 58 case 1:D4=1;D3=0;D6=0;D5=0;break; 59 case 2:D4=0;D3=1;D6=0;D5=0;break; 60 case 3:D4=0;D3=0;D6=1;D5=0;break; 61 case 4:D4=0;D3=0;D6=0;D5=1;break; 62 case 5:D4=0;D3=0;D6=0;D5=0;break; 63 } 64 } 65 }