zigbee学习之路(五):定时器1(查询方式)

一.前言
今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作。
二.原理与分析
谈到定时器的控制,我们最先想到的是要给它赋初值和选择工作模式吧,下面我带大家熟悉一下cc2530中的定时器寄存器。
zigbee学习之路(五):定时器1(查询方式)
文章图片

如上图所见,DIV寄存器用来确定定时器运行一次所需的时间,MODE用来选择定时器的工作模式。
zigbee学习之路(五):定时器1(查询方式)
文章图片

定时器中断的标志位,有中断发生时,置为1
三.程序
#include
#define uint unsigned int
#define uchar unsigned char
【zigbee学习之路(五):定时器1(查询方式)】//定义控制LED灯的端口
#define LED1 P1_0//LED1为P1_0端口控制
#define LED2 P1_1//LED2为P1_1端口控制
#define LED3 P1_4//LED3为P1_4端口控制
//函数声明
void Delayms(uint xms); //延时函数
void InitLed(void); //初始化LED端口
void InitT1(void); //初始化定时器T1
/*********函 数 名: main功能描述: Timer1测试(Timer1查询方式的使用)输入参数: NONE输出参数: NONE返 回 值: NONE ***************/
void main(void)
{uchar count=0;
InitLed(); //LED1_IO初始化
InitT1(); //Timer1初始化
while(1)
{
if(IRCON>0)//查询溢出标志
{IRCON=0;
if((++count)==1)//溢出一次约为0.5s
{count=0;
LED1 = !LED1; //LED1取反
LED2 = !LED2;
LED3 = !LED3; }
}} }
/********** 函 数 名: Delayms功能描述: 毫秒延时输入参数: xms:延时时间,如 i=xms 即延时i毫秒输出参数: none返 回 值: none ******************/
void Delayms(uint xms)
{
uint i,j;
for(i=xms; i>0; i--)
for(j=587; j>0; j--); }
/************************函 数 名: InitLed功能描述: LED_IO初始化函数输入参数: NONE输出参数: NONE返 回 值: NONE *****************/ void InitLed(void)
{P1DIR |= 0xff; //P1端口定义为输出
LED1 = 1; //LED灯初始化熄灭
LED2 = 1;
LED3 = 1; }
/************函 数 名: InitT1功能描述: Timer1初始化函数输入参数: NONE输出参数: NONE返 回 值: NONE **************/
void InitT1(void)
{T1CTL = 0x0d; //128分频;
自由运行,从0x0000到0xFFFF反复计数 }
四.总结
通过本次实验,相信大家已经基本了解定时器1的使用了,需要注意的是IRCON这个寄存器,主函数里通过它来判断定时器是否溢出。

转载于:https://www.cnblogs.com/sjsxk/p/5295108.html

    推荐阅读