通用模板做的网站不收录,开发微信微商城,宜昌营销型网站,python链接wordpress实验二#xff1a; Timer定时应用实验2.1实验目的1. 认识并了解 CC2530 定时器#xff1b; 2. 学习定时器的基本配置与应用#xff1b; 3. 在 ZigBee 模块上运行定时器程序。2.2实验原理根据数据手册可知 CC2530 总共有 4 个定时器#xff0c;但是定时器 2 被系统占用…实验二 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将产生 一个中断请求。自由运行模式可以用于产生独立的时间间隔输出信号频率。 当定时器运行在模模式时16 位计数器从 0x0000 开始每个活动时钟边沿增加 1。当计数器的计数 值达到 T1CC0 时溢出。寄存器 T1CC0H 与 T1CC0L 保存的终计数值将复位到 0x0000并继续递增。如果 定时器开始于T1CC0以上的一个值当达到终计数值0xFFFF时设置标志IRCON.T1IF和 T1CTL.OVFIF。 如果设置了相应的中断屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN将产生一个中断请求。该模式可以用于周期不是 0xFFFF 的应用程序。计数器的操作展示在图 3.2.2 中。在正计数/倒计数模式计数器反复从 0x0000 开始正计数直到达到 T1CC0H 与 T1CC0L 保存的值。 然后计数器将倒计数直到 0x0000如图 3.2.3 所示。这个定时器用于周期必须是对称输出脉冲而不是 0xFFFF 的应用程序因此允许中心对齐的 PWM 输出应用的实现。在正计数/倒计数模式当达到终计 数值时设置标志 IRCON.T1IF 和 T1CTL.OVFIF。如果设置了相应的中断屏蔽位 TIMIF.OVFIM 以及 IEN1.T1EN将产生一个中断请求。由以上三种模式的比较可以得出自由运行模式的溢出值为 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_0D2 所对应的 I/O 为 P1_1D3 所对应的 I/O 为 P1_2本实验选择 P1_0 P1_1 和 P1_2 I/O 引脚P1_0 控制模块上的 LED 灯 Status/DataP1_1 控制模块上的 LED 灯 NetP1_2 控制模块上的 LED 灯 User1。故在软件上只要配置好 P1_0P1_1P1_2 并初始化好定时器 1 即可。本次实验学习到的新寄存器T1CTL定时器 1 的控制寄存器。D1、D0 控制运行模式D3、D2 设置分频值。 T1STAT定时器 1 的状态寄存器D4~D0 为通道 4~通道 0 的中断标志D5 为溢出标志位当计数到 终计数值时自动置 1。 IRCON中断标志寄存器0 为无中断请求。1 为有中断请求。 IEN1中断允许寄存器 12.3 实验步骤1. 正确连接 ZB-LINK 调试器到 PC 机和 ZigBee 模块可参考第 1 章的 1.3 节进行连接2. 打开【配套光盘04-实验例程02-ZigBee技术与应用第三章 CC2530基础功能实验3.2 Timer 定时应用实验实验代码】中的实验工程“timer.eww”选择 Project→Rebuild All 重新编译 工程3. 选择 Project→Download and debug 将程序下载到 ZigBee 模块下载完成后点退出4. 按下 ZB-LINK 调试器的复位按钮让刚才下载的程序重新运行。2.4实验源码#include ioCC2530.h //引入CC2530所对应的头文件包含各SFR的定义
#include sys_init.huint counter0; //统计溢出次数/*主函数-------------------------------------------------------*/
void main()
{led_init(); //LED初始化 time1_init(); //T1中断初始化while(1);
}/*中断服务子程序-------------------------------------------------------*/
#pragma vector T1_VECTOR __interrupt void T1_ISR(void) { EA0; //关总中断 counter;if(counter15) //0.5s时间{counter0; D4 !D4;D2 !D2;D3 !D3;}T1IF0; //清中断标志EA1; //开总中断 }2.5 实验结果与分析 程序运行后会发现 ZigBee 模块上的所有 LED 指示灯在定时器 1 的作用下开始以秒为周期0.5s 为亮灭时间间隔的方式不停地闪烁从而达到了本节实验所要求的实验效果。