定时器1是一个16 位定时器,具有定时器/计数器/脉宽调制功能。它有3 个单独可编程 输入捕获/输出比较信道,每一个信道都可以用来当做PWM 输出或用来捕获输入信号的边沿时间(关于什么是输入捕获/输出比较,以及如何实现PWM 输出,读者可自行查阅CC2530 中文手册)。定时器有一个很重要的概念:操作模式。操作模式包含:自由运行模式(free-running)、模模式(modulo)和 正计数/倒计数模式(up-down)。对定时器Timer1进行自由模式程序的设计如下:
#include #define uint unsigned int #define uchar unsigned char #define RLED P1_0 #define YLED P1_1 uint counter=0; //统计溢出次数 uint TempFlag; //用来标志是否要闪烁 void Initial(void); void Delay(uint); /**************************** //普通延时程序 ***************************/ void Delay(uint n) { uchar i; while(n--) { for(i=200;i>0;i--); } } /**************************** //初始化程序 ***************************/ void Initial(void) { //初始化P1 P1DIR = 0x03; //P10 P11 为输出 RLED = 1; YLED = 1; //灭LED T1CTL = 0x05; //00001101 8 分频 自动重装 } /*************************** //主函数 ***************************/ void main(void) { static unsigned char cnt = 0; Initial(); //调用初始化函数 RLED = 0; //点亮红色LED while(1) //查询溢出 { if(IRCON > 0) { IRCON = 0; //清溢出标志 cnt++; if(cnt == 15) { cnt = 0; RLED = !RLED; } } } } 本程序用到的主要寄存器有:T1CTL、IRCON。T1CTL寄存器设定的值为0x05,查手册可知,该寄存器将分频配置为8分频即f/8,模式设置为了自由模式及Free-running,计数值将从0x0000-0xFFFF进行计数。IRCON中的第二位为定时器1的中断标志位。
上一篇:cc2530裸机编程系列笔记5--中断
下一篇:cc2530裸机编程系列笔记2--定时器Timer1模模式程序 中断方式
推荐阅读
史海拾趣



XC6406PP60DL






京公网安备 11010802033920号