zigbee学习之路(五):定时器1(查询方式)
一.前言
今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作。
二.原理与分析
谈到定时器的控制,我们最先想到的是要给它赋初值和选择工作模式吧,下面我带大家熟悉一下cc2530中的定时器寄存器。
文章图片
如上图所见,DIV寄存器用来确定定时器运行一次所需的时间,MODE用来选择定时器的工作模式。
文章图片
定时器中断的标志位,有中断发生时,置为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
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》