嵌入式成长轨迹39 【Zigbee项目】【CC2430基础实验】【按键控制闪烁】

 

前面两个实验的综合,所有寄存器都是之前的

 

  1 //main.c
  2 #include <ioCC2430.h>
  3 
  4 #define uint unsigned int
  5 #define uchar unsigned char
  6 //定义控制灯的端口
  7 #define RLED P1_0    //定义LED1为P10口控制
  8 #define YLED P1_1    //定义LED2为P11口控制
  9 
 10 #define ON 0
 11 #define OFF 1
 12 
 13 #define K1 P0_6
 14 #define K2 P0_5
 15 
 16 //函数声明
 17 void Delay(uint);        //延时函数
 18 void Initial(void);        //初始化P口
 19 void InitKey(void);
 20 uchar KeyScan(void);
 21 
 22 uchar Keyvalue = 0 ;
 23 uchar GlintFlag[2] = {0,0};
 24 
 25 /****************************
 26 //延时
 27 *****************************/
 28 void Delay(uint n)
 29 {
 30     uint tt;
 31     for(tt = 0;tt<n;tt++);
 32     for(tt = 0;tt<n;tt++);
 33     for(tt = 0;tt<n;tt++);
 34     for(tt = 0;tt<n;tt++);
 35     for(tt = 0;tt<n;tt++);
 36 }
 37 
 38 /*****************************************
 39 //按键初始化
 40 *****************************************/
 41 void InitKey(void)
 42 {
 43   P0SEL &= ~0X60;
 44   P0DIR &= ~0X60; //按键在P05 P06
 45   P0INP |= 0x60; //上、下拉
 46 }
 47 
 48 /****************************
 49 //初始化程序
 50 *****************************/
 51 void Initial(void)
 52 {
 53     P1DIR |= 0x03; //P10、P11定义为输出
 54     RLED = 1;      //LED
 55     YLED = 1;    
 56 }
 57 
 58 /*****************************************
 59 //读键值
 60 *****************************************/
 61 uchar KeyScan(void)
 62 {
 63   if(K1 == 0)
 64   {
 65     Delay(100);
 66     if(K1 == 0)
 67     {
 68       while(!K1);
 69       return(1);
 70     }
 71   };
 72   if(K2 == 0)
 73   {
 74     Delay(100);
 75     if(K2 == 0)
 76     {
 77       while(!K2);
 78       return(2);
 79     }
 80   };
 81 
 82 
 83   return(0);
 84 }
 85 
 86 /***************************
 87 //主函数
 88 ***************************/
 89 void main(void)
 90 {
 91     Initial();        //调用初始化函数
 92         InitKey();
 93     RLED = ON;        //开红灯,表示系统工作
 94         YLED = ON;
 95     while(1)
 96     {
 97           Keyvalue = KeyScan(); //扫键
 98           if(Keyvalue>0)
 99           {
100             if(Keyvalue == 1)
101               GlintFlag[0] = !GlintFlag[0];
102             if(Keyvalue == 2)
103               GlintFlag[1] = !GlintFlag[1];
104           };
105 
106         if(GlintFlag[0]==0)
107         {
108           RLED = !RLED;        //闪灯
109           Delay(4000);
110         }
111         else
112           RLED = OFF;         //关灯
113 
114         if(GlintFlag[1]==0)
115         {
116           YLED = !YLED;
117           //if(GlintFlag[0] == 0)
118           Delay(4000);
119         }
120         else
121           YLED = OFF;
122     }
123 }

 

posted @ 2012-09-01 17:54  MooreZHENG  阅读(330)  评论(0编辑  收藏  举报