单片机技术与应用课件 20.实训1-T1定时器正计数倒计数模式下控制LED1亮.pptx
实训1-T1定时器正计数/倒计数模式下控制LED1亮灭zigbee技术开发主讲人:XXXZigbeetechnologydevelopment
实训1-T1定时器正计数/倒计数模式下控制LED1亮灭任务描述基于CC2530模块做基础开发,利用定时功能实现每隔1sLED1闪烁1次,要求采用定时器1,正计数/倒计数模式,32分频,已知其溢出周期为100ms。
1.知识分析任务分析01LED1闪烁→LED1与单片机端口对应关系→端口初始化函数02定时时间要求使用定时器1→定时器T1初始化函数03定时器T1中断服务函数→中断服务函数基本书写格式04保证程序完整性→添加头文件,定义相关变量,设计主函数实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
2.技能分析任务分析实现定时器1正计数/倒计数模式下控制LED闪烁,必须清晰该模式下溢出次数的计算方法,熟练运用IAR软件进行模模式下定时/计数功能相关函数的编程,并能编译、链接、调试程序,实训仿真演示。实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
3.设备分析任务分析实训任务选择ZigBee实训模块如图所示,要会识读此实训模块电路图,并明确此模块上LED灯与CC2530单片机端口关系。实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
程序设计思路引入头文件定义相关变量设计端口初始化函数设计定时器T1初始化函数设计定时器T1中断服务函数主函数实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
任务实施引入头文件定义相关变量设计端口初始化函数#includeiocc2530.h#defineLED1P1_0unsignedcharcount;voidInit_Port(){P1SEL=~0x01;P1DIR|=0x01;LED1=0;}实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
任务实施设计定时器T1初始化函数1正计数/倒计数模式特点:01最大计数值保存在寄存器T1CC0中。02T1CC0(16位寄存器,由T1CC0H和T1CC0L组合)。T1CC0L使用来保存定时时间的低八位,T1CC0H是用来保存定时时间的高八位。03计数器反复从0x0000开始计数,正计数到T1CC0时,然后计数器将倒计数回到0x0000。实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
任务实施设计定时器T1初始化函数2初始化函数设计基本流程:01将定时器1的最大计数值写入T1CC0。02通过T1CCTL0寄存器开启定时器1通道0的输出比较模式。T1CCTL0|=0x04;//开启通道0的输出比较模式03设置定时器1的相关中断控制位。使能总中断→使能T1中断→使能T1溢出中断。04设置分频系数和工作模式并启动定时器。T1CTL=0x0B;//启动定时器T1,设32分频,正计数/倒计数模式T1CCTL0(0xE5)-定时器1通道0捕获/比较控制寄存器位名称复位R/W描述7RFIRQ0R/W当设置时,使用RF中断捕获,而不是常规捕获输入。6IM1R/W通道0中断屏蔽。设置时使能中断请求。5:3CMP[2:0]000R/W通道0比较模式选择。当定时器的值等于在T1CC0中的比较值,选择操作输出000:在比较设置输出001:在比较清除输出010:在比较切换输出011:在向上比较设置输出,在0清除100:在向上比较清除输出,在0设置101:没有使用110:没有使用111:初始化输出引脚。CMP[2:0]不变。2MODE0R/W模式。选择定时器1通道0捕获或者比较模式0:捕获模式1:比较模式1:0CAP[1:0]00R/W通道0捕获模式选择00:未捕获01:上升沿捕获10:下降沿捕获11:所有沿捕获实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
任务实施设计定时器T1初始化函数3定时器T1的最大计数值:本任务中系统时钟为32MHz,分频系数为32,溢出周期为100ms,则到达最大计数值时间为50ms,则:将其转换为十六进制为0xC350。=50000实训1-T1定时器正计数/倒计数模式下控制LED1亮灭
任务实施设计定时器T1初始化函数voidInit_T1(){T1CC0L=500000x00FF;T1CC0H=(500000xFF00)8;T1CCTL0|=0x04;TIMIF|=0x40;T1IE=1;EA=1;T1CTL=0x0B;}//设置最大计数值的低8位//设置最大计数值的高8位//开启通道0的输出比较模式//定时器1溢出中断使能//定时器1中断使能//总中断使能//启动定时器T1,设32