实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验

c379f8bb225f2c56500bb4fc597a733c.png

实验二: Timer定时应用实验

2.1实验目的

1. 认识并了解 CC2530 定时器;

2. 学习定时器的基本配置与应用;

3. 在 ZigBee 模块上运行定时器程序。

2.2实验原理

根据数据手册可知 CC2530 总共有 4 个定时器,但是定时器 2 被系统占用,可用的只有三个,分别为 定时器 1、3、4。其中定时器 3 和定时器 4 是两个 8 位定时器,定时器 1 是一个独立的 16 位定时器,本 节主要介绍基于定时器 1 的定时应用。定时器的一个很重要的概念是操作模式,该模式包含自由运行模 式(free-running)、模模式(modulo)和正计数/倒计数模式(up-down)。以下为摘自 CC2530 中文手册 关于 3 种模式的介绍:

在自由运行操作模式下,计数器从 0x0000 开始,每个活动时钟边沿增加 1。 当计数器达到 0xFFFF 时(溢出),计数器载入 0x0000,继续递增它的值,如图 3.2.1 所示。当达到终计数值 0xFFFF,设置 标志 IRCON.T1IF 和 T1STAT.OVFIF。如果设置了相应的中断屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,将产生 一个中断请求。自由运行模式可以用于产生独立的时间间隔,输出信号频率。

aa11c75557d7090cf7a1cb6e43be8935.png

当定时器运行在模模式时,16 位计数器从 0x0000 开始,每个活动时钟边沿增加 1。当计数器的计数 值达到 T1CC0 时溢出。寄存器 T1CC0H 与 T1CC0L 保存的终计数值将复位到 0x0000,并继续递增。如果 定时器开始于T1CC0以上的一个值,当达到终计数值(0xFFFF)时,设置标志IRCON.T1IF和 T1CTL.OVFIF。 如果设置了相应的中断屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,将产生一个中断请求。该模式可以用于周期不是 0xFFFF 的应用程序。计数器的操作展示在图 3.2.2 中。

c982319bebea4a6f89716d30aa3041af.png

在正计数/倒计数模式,计数器反复从 0x0000 开始,正计数直到达到 T1CC0H 与 T1CC0L 保存的值。 然后计数器将倒计数直到 0x0000,如图 3.2.3 所示。这个定时器用于周期必须是对称输出脉冲而不是 0xFFFF 的应用程序,因此允许中心对齐的 PWM 输出应用的实现。在正计数/倒计数模式,当达到终计 数值时,设置标志 IRCON.T1IF 和 T1CTL.OVFIF。如果设置了相应的中断屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN,将产生一个中断请求。

17c216d16dd17685f6ca7592c1114513.png

由以上三种模式的比较可以得出:自由运行模式的溢出值为 0xFFFF 不可变;而其他两种模式则通过 对 T1CC0 赋值,以精确控制定时器的溢出值。

本实验通过对 CC2530 内部定时器 T1 的配置与使用,实现对 ZigBee 模块上的 LED 灯以 1 秒为时间单 位进行均等时间的定时闪烁,即让模块上的 LED 指示灯实现 0.5s 亮与 0.5s 灭,它们亮灭的时间是均等 的。这种均等的时间实现效果正是由 CC2530 的内部定时器 T1 来实现的。

2.2.1 电路分析与程序配置

本节使用 CC2530 的定时器 1 来实现对 LED 的定时闪烁时间控制,所使用的原理图与 3.1 节的一致,即:D4 所对应的 I/O 为 P1_0,D2 所对应的 I/O 为 P1_1,D3 所对应的 I/O 为 P1_2,本实验选择 P1_0, P1_1 和 P1_2 I/O 引脚,P1_0 控制模块上的 LED 灯 Status/Data,P1_1 控制模块上的 LED 灯 Net,P1_2 控制模块上的 LED 灯 User1。故在软件上只要配置好 P1_0,P1_1,P1_2 并初始化好定时器 1 即可。

699444f6eb4b43ca1af8fe3149166cd1.png

本次实验学习到的新寄存器:

T1CTL:定时器 1 的控制寄存器。D1、D0 控制运行模式;D3、D2 设置分频值。

c8ad77ce418b6f3674323885979c75b3.png

T1STAT:定时器 1 的状态寄存器,D4~D0 为通道 4~通道 0 的中断标志,D5 为溢出标志位,当计数到 终计数值时自动置 1。

9ef0d3191ebfd95db489e7a52c75989f.png

IRCON:中断标志寄存器;0 为无中断请求。1 为有中断请求。

e94ddd3d18ff02412303959906d774ca.png

IEN1:中断允许寄存器 1

4237ff43a4fec284f01d045c7d169707.png

2.3 实验步骤

1. 正确连接 ZB-LINK 调试器到 PC 机和 ZigBee 模块,可参考第 1 章的 1.3 节进行连接;

8c467423693a1e020732d2f87fb4823f.png

2. 打开:【配套光盘04-实验例程02-ZigBee技术与应用第三章 CC2530基础功能实验3.2 Timer 定时应用实验实验代码】中的实验工程:“timer.eww”,选择 Project→Rebuild All 重新编译 工程;

3. 选择 Project→Download and debug 将程序下载到 ZigBee 模块,下载完成后点

e384b2457e20c2f247f36b82e45ee2df.png

退出;

bd6e814c80d679bf0e392e83017c1b9b.png

4. 按下 ZB-LINK 调试器的复位按钮让刚才下载的程序重新运行。

2.4实验源码

#include <ioCC2530.h>          //引入CC2530所对应的头文件(包含各SFR的定义)
#include "sys_init.h"uint counter=0;                //统计溢出次数/*主函数-------------------------------------------------------*/
void main()
{led_init();     //LED初始化 time1_init();   //T1中断初始化while(1); 
}/*中断服务子程序-------------------------------------------------------*/
#pragma vector = T1_VECTOR      __interrupt void T1_ISR(void)            {       EA=0;                           //关总中断 counter++;if(counter>15)                  //0.5s时间{counter=0;  D4 = !D4;D2 = !D2;D3 = !D3;}T1IF=0;                         //清中断标志EA=1;                           //开总中断 }

2.5 实验结果与分析

程序运行后,会发现 ZigBee 模块上的所有 LED 指示灯在定时器 1 的作用下开始以1秒为周期,0.5s 为亮灭时间间隔的方式不停地闪烁,从而达到了本节实验所要求的实验效果。

67a7ac7f6c0da6a2f210788d16c71ed7.png

86ab49655c66241e025835edb416371a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详析java中的关键字和权限修饰

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于关键字你都知道什么?&#x1fa82; this和super关键字&#x1fa82; instanceof关键字&#x1fa82; static关键字&#x1fa82; final关键字&#x1f6eb; 权限修饰符的作用范围知多少?各位小伙伴们大家好&#xff0c;欢迎来…

JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币

昨天"猩动力节点"加入了fielcoin的测试网络&#xff0c;对用户或者矿工来说&#xff0c;如何获取代币&#xff0c;创建钱包保护好自己的资产&#xff0c;每一个用户来说都很关心。下面我们一起来学习如何创建账户钱包&#xff0c;并获取FIL 测试代币。在创建账户钱包…

Redis中 字符串的常用命令

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

mac wmware 无网络_无线网络中常用的技术名词

1、LAN&#xff1a;即局域网&#xff1a;是路由和主机组成的内部局域网&#xff0c;一般为有线网络。2、WAN&#xff1a;即广域网&#xff1a;是外部一个更大的局域网。3、WLAN(Wireless LAN&#xff0c;即无线局域网)&#xff1a;前面我们说过LAN是局域网&#xff0c;其实大多…

python界面开发webview_python在webview和activity混合页面下怎么定位

展开全部 genymotion 模拟器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安装_Android Studio4.0 安装及配置

本来打算十一月份写的&#xff0c;结果。。。就在我备注原来的文章的时候&#xff0c;硬盘坏了。。。所以重新配置环境。。。换硬盘&#xff0c;。。。坏的太突然以至于数据都没有备份。。。。建议大家在参考教程安装之前先大致浏览一遍&#xff0c;这样安装的时候就会大致知道…

Redis 五大数据类型的常用命令——列表、集合、哈希、有序集合

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录

一&#xff1a;功能简介本文主要记录如何使用aop切面的方式来实现日志记录功能。主要记录的信息有: 操作人&#xff0c;方法名&#xff0c;参数&#xff0c;运行时间&#xff0c;操作类型(增删改查)&#xff0c;详细描述&#xff0c;返回值。二&#xff1a;项目结构图如果想学习…

抽象类、接口的区别和相似点

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏&#xff0c;在这个系列专栏中我将记录浅学这本书所得收获&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波简直就是血赚 &#x1f4a1;涉及的知识点速通&#x1f6eb; abs…

c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?

今天千锋广州小编就给大家分享零基础如何掌握JSP技术&#xff0c;下面一起来看看吧!一、Java初级开发之jsp概述1.关于jspJavaServer Pages简称jsp&#xff0c;从“server”这个词可以看出&#xff0c;这其实也是一门java服务端技术&#xff0c;其实可以简单的把jsp认为是servle…

python语言保留字的特点_python保留字及其说明

原博文 2019-07-14 22:05 − 保留字 说 明 and 用于表达式运算&#xff0c;逻辑与操作 as 用于类型转换 assert 断言&#xff0c;用于判断变量或条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 continue 继续执行下一次循环 ...011647 相关推荐 2019-12-19…

使用Java操作Redis的两种方式Jedis、RedisTemplate

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

python提取数据库数据_Python如何读取MySQL数据库表数据

本文实例为大家分享了Python读取MySQL数据库表数据的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 环境&#xff1a;Python 3.6 ,Window 64bit 目的&#xff1a;从MySQL数据库读取目标表数据&#xff0c;并处理 代码&#xff1a; # -*- coding: utf-8 -*- import p…

【项目实战】基于Redis实现短信验证码登录 (附源码、思路)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

加工中心刻字宏程序_FANUC OI系列图书——车床、铣床及加工中心编程

☞ 这是金属加工(mw1950pub)发布的第10035篇文章导读今天跟大家分享FANUC OI系列图书&#xff0c;包括车床、铣床及加工中心编程&#xff0c;快来看看吧&#xff01;《FANUC 0i数控车床/加工中心编程技巧与实例》选择在企业里应用*广泛、编程*具代表性的日本FANUCSeries0i-TC/T…

Redis 的缓存策略

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

关闭后天 树莓派_陪你一起玩树莓派-系统安装

从今天就开始我们的树莓派之旅&#xff0c;心情是不是有点小激动&#xff1f;我们拿到一个树莓派是一个裸机。我们要准备一张16G的高速TF闪存卡&#xff0c;一个5V/2A的USB电源和一根micro B的 usb线。装机步骤&#xff1a;一、下载树莓派系统1、浏览器打开树莓派官方网站 http…

简单的签到代码_PHP实现一个小小的签到功能,到底用MySQL还是Redis?

来源 | http://suo.im/5EWN3k今天&#xff0c;看下签到功能怎么选择&#xff1f;现在的网站和app开发中&#xff0c;签到是一个很常见的功能&#xff0c;如微博签到送积分&#xff0c;签到排行榜~微博签到如移动app &#xff0c;签到送流量等活动&#xff0c;移动app签到用户签…

【Redis 6】缓存穿透、缓存雪崩、缓存击穿(附解决方案、代码)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

8软件遇到的问题及解决方法_Excel工作表中的8个常见问题,你一定遇到过,附解决方法...

在Excel工作表中&#xff0c;最常用的还是一些技巧&#xff0c;如果能够熟练掌握&#xff0c;对于工作效率的提高绝对不是一点点哦&#xff0c;结合工作实际&#xff0c;小编对工作中常见的问题进行了总结&#xff0c;一共有8类&#xff0c;你一定也遇到过……一、Excel工作表常…