CC2530 定时器应用
任务分析
定时器控制流水灯
知识储备
相关寄存器知识
由于我手上的开发板LED1,LED2,KEY1对应的引脚分别是P1_0,P1_1,P1_2。所以我下面主要介绍和P1相关的寄存器。其他端口类似。
T1CTL-定时器1的控制和状态
令T1CTL = 0x0e即可使定时器1处于模模式,128分频
T1CCTL0-定时器1通道0捕获/比较控制
即令T1CCTL0 |= 0x04;即可开启定时器1通道0的比较模式
T1CC0H和T1CC0L-定时器1通道0捕获/比较值的高低位
即令T1CC0L = 0xd4;,T1CC0H=0x30;就可以使定时器每过0.1s触发一次中断
根据公式
(CC2530晶振频率为16MHz。上面我们定义了128分频,所以定时器计数周期如上.)
最后再加上下面两行代码即可
T1IE = 1;//定时器1中断使能
EA = 1;//开启总中断
相关寄存器总结
1.开启总中断EA = 1;
2.开启定时器中断T1IE = 1;
3.设定定时器1为模模式,128分频T1CTL = 0x0e;
4.开启定时器1通道0的比较模式T1CCTL0 |= 0x04;
5.设定定时器1通道0捕获/比较值的高低位T1CC0L = 0xd4;T1CC0H = 0x30;
代码
#include <ioCC2530.h>
#define KEY1 P1_2
#