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

如上图所见,DIV寄存器用来确定定时器运行一次所需的时间,MODE用来选择定时器的工作模式。

定时器中断的标志位,有中断发生时,置为1
三.程序
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制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这个寄存器,主函数里通过它来判断定时器是否溢出。
zigbee学习之路(五):定时器1(查询方式)的更多相关文章
- zigbee学习之路(七):定时器3(中断方式)
一.前言 上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出. 二.原理与分析 要使用定时器3,我们必须先要配置的是T3CTL,来把定时器 ...
- Hibernate学习笔记(五)—— Hibernate查询方式
一.对象图导航查询 对象图导航查询方式是根据已经加载的对象,导航到他的关联对象.它利用类与类之间的关系来查询对象.比如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象.当 ...
- zigbee学习之路(四):按键控制(中断方式)
一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...
- zigbee学习之路(八):定时器1(中断)
一.前言 通过上次的实验,我们已经学会了定时器3的中断方式,这次,我们来看看定时器1通过中断怎么控制. 二.原理分析 定时器1的初始化跟前面提到的一样,也是要配置寄存器T1CTL,还要进行开中断的操作 ...
- 用定时器T0查询方式P0口8位控制LED闪烁
#include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...
- zigbee学习之路(十五):基于协议栈的按键实验
一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...
- zigbee学习之路(六):Time3(查询方式)
一.前言 通过上次的学习,相信大家对cc2530单片机的定时器的使用有了一定的了解,今天我们来介绍定时器3的使用,为什么介绍定时器3呢,因为它和定时器4功能是差不多的,所以学会定时器3,就基本掌握了c ...
- FastAPI 学习之路(六)查询参数,字符串的校验
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- IBatis.Net学习笔记五--常用的查询方式
在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率.在IBatis.Net中提供了方便的数据库查询方式. 在Dao代码部分主要有两种方式:1.查询结果为一个对 ...
随机推荐
- FK JavaScript之:ArcGIS JavaScript添加Graphic,地图界面却不显示
使用ArcGIS JavaScript,往地图中添加几个Graphic,基本是与官网示例代码一致.绘制的图形一闪而过之后,就没了 核心代码如下: iniToolBar: function () { t ...
- css文本溢出省略号
.ellip{ display: block; width:200px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; ...
- centos重启不能自动联网的解决方法
在命令行下输入 下面的ifcfg-eth0,eth0为我的网卡名字.机器之间不同,请先查看自己网卡的名字 vi /etc/sysconfig/network-scripts/ifcfg-eth0 进行 ...
- # 20145334赵文豪 《Java程序设计》第7周学习总结
20145334赵文豪 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1时间的度量 1.格林威治时间(GMT):参考太阳到达最高点,有时间误差. 2 ...
- true是表示使用身份验证,否则不使用身份验证
?phpclass smtp{/* Public Variables */var $smtp_port;var $time_out;var $host_name;var $log_file;var $ ...
- C#抽象类、抽象方法、虚方法
定义抽象类和抽象方法: abstract 抽象类特点: 1.不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例 2.一个抽象类可以包含抽象和非抽象方法,当一个类 ...
- 【iCore3 双核心板_FPGA】例程十二:Modelsim仿真实验
实验指导书及代码包下载: http://pan.baidu.com/s/1bnQEldl iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- iOS简易图片选择器 (图片可多选,仿微信)
调用方法 NickyImagePickerViewController *pickerController = [[NickyImagePickerViewController alloc]init] ...
- [archlinux][hardware] 查看SSD的使用寿命
因为最近把16GB的SSD做成了HDD的cache,所以比较关系寿命问题. 使用smartctl工具. 参考:https://www.v2ex.com/t/261373 linux 下面只有 smar ...
- php递归遍历目录计算其大小(文件包括目录和普通文件)
<?php function countdir($path){ $size = 0; //size = 0; 跟 size = null; 怎么结果不一样 $path = rtrim($path ...