Zigbee CC2430睡眠定时器的使用

//sz wxl

//说明:本实验在深圳无线龙提供的CC2430模块中调试通过。http://www.wxlmcu.com

#include

#define uint unsigned int

#define uchar unsigned char

#define DELAY 10000

//小灯控端口定义

#define RLED P1_0

#define YLED P1_1

void Delay(void);

void Init_IO_AND_LED(void);

void PowerMode(uchar sel);

/****************************************************************

*函数功能:延时     

*入口参数:无      

*返回值 :无      

*说 明 :可在宏定义中改变延时长度  

****************************************************************/

void Delay(void)

{

uint tt;

for(tt = 0;tt

for(tt = 0;tt

for(tt = 0;tt

for(tt = 0;tt

for(tt = 0;tt

}

/****************************************************************

*函数功能:初始化电源    

*入口参数:para1,para2,para3,para4  

*返回值 :无     

*说 明 :para1,模式选择     

*                 *

* para1 0 1 2 3            *

* mode PM0 PM1 PM2 PM3            *

*                 *

****************************************************************/

void PowerMode(uchar sel)

{

uchar i,j;

i = sel;

if(sel<4)

{

   SLEEP &= 0xfc;

   SLEEP |= i;

   for(j=0;j<4;j++);

   PCON = 0x01;

}

else

{

     PCON = 0x00;

}

}

/****************************************************************

* 函数功能:初始化I/O,控制LED      

* 入口参数:无     

* 返回值 :无     

* 说 明 :初始化完成后关灯   

****************************************************************/

void Init_IO_AND_LED(void)

{

    P1DIR = 0X03;

    RLED = 1;

    YLED = 1;

    P1SEL &= ~0X0C;

    P1DIR &= ~0X0C;

    P1INP &= ~0X0c;//有上拉、下拉

    P2INP &= ~0X40; //选择上拉

    P1IEN |= 0X0c;   //P12 P13

    PICTL |= 0X02;   //下降沿

    EA = 1;

    IEN2 |= 0X10; //P1IE = 1;

    P1IFG |= 0x00;   //P12 P13

};

/****************************************************************

* 函数功能:主函数    

* 入口参数:    

* 返回值 :无     

* 说 明 :10次绿色LED闪烁后进入睡眠状态  

****************************************************************/

void main()

{

uchar count = 0;

Init_IO_AND_LED();

RLED = 0 ;       //开红色LED,系统工作指示

Delay();        //延时

Delay();

Delay();

Delay();

while(1)

{

   YLED = !YLED;

                RLED = 0;

   count++;

   if(count >= 20)

                {

                  count = 0;

                  RLED = 1;

                  PowerMode(3);

    //10次闪烁后进入睡眠状态

                }

   //Delay();

   Delay();

                //延时函数无形参,只能通过改变系统时钟频率

                //来改变小灯的闪烁频率

};

}

/*****************************************

//唤醒系统

*****************************************/

#pragma vector = P1INT_VECTOR

__interrupt void P1_ISR(void)

{

        if(P1IFG>0)

        {

          P1IFG = 0;

        }

        P1IF = 0;

}

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张