宏定义
# 主函数 /**************************************/ /* CC2530例程 */ /*例程名称:定时器(中断方式) */ /*描述:通过定时器T1中断方式控制LED1周期性闪烁 **************************************/ #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P1_0口控制 uchar count=0; //函数声明 void InitLed(void); //初始化P1口 void InitT1(); //初始化定时器T1 //初始化程序 /*****************************/
初始化
void InitLed(void) { P1DIR |= 0x01; //P1_0定义为输出 LED1 = 0; //LED1灯初始化熄灭 } //定时器初始化 void InitT1() //系统不配置工作时钟时默认使用内部RC振荡,即16MHz { T1CTL = 0x0F; //128分频,正计数/倒计数模式,计数值由T1CC0L和T1CC0H确定 T1CC0L=0x12; T1CC0H=0x7A; //T1OVFIM=1; T1IE=1; EA=1; //T1STAT= 0x21; //通道0, 中断有效 }
中断
/*************************** * 函数名称:T1_INT * 功 能:定时器1中断处理函数 * 入口参数:无 * 出口参数:无 * 返 回 值:无 ***************************/ #pragma vector=T1_VECTOR __interrupt void T1_INT(void) { T1STAT&=~0x21; ++count; if(count == 3) //如果溢出次数到达3说明经过了1.5秒 { LED1 = 1; //点亮LED1 } if(count == 4) //如果溢出次数到达4说明经过了2秒 { LED1 = 0; //熄灭LED1 count=0; } }
主函数
/*************************** * 函数名称:main * 功 能:main函数入口 * 入口参数:无 * 出口参数:无 * 返 回 值:无 ***************************/ void main(void) { InitLed(); //调用初始化函数 InitT1(); while(1) { } }