资源简介 (共53张PPT)单片机与C语言技术应用第三单元 任务33.3 定时器1正/倒计数模式控制交通信号灯学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08学习目标01掌握定时器1在自由运行模式、模模式、正/倒计数模式下的计数过程;掌握定时器1在自由运行模式、模模式、正/倒计数模式下相关寄存器的设置方法;掌握定时器1在自由运行模式、模模式、正/倒计数模式下的中断触发过程;学习目标01掌握定时器1在自由运行模式、模模式、正/倒计数模式下的定时中断周期计算;掌握定时器1在自由运行模式、模模式、正/倒计数模式下控制交通信号灯的开关。学习目标01能对定时器1在自由运行模式、模模式、正/倒计数模式下相关寄存器进行设置;能对定时器1在自由运行模式、模模式、正/倒计数模式下的中断使能进行配置;能根据定时长短在自由运行模式、模模式、正/倒计数模式下计算定时中断的次数;能使用定时器1在自由运行模式、模模式、正/倒计数模式下控制交通信号灯的开关;学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.3 定时器1正/倒计数模式控制交通信号灯任务要求与任务分析02● 任务要求:①黑板通电后,D6红色LED点亮(红灯亮),延时1秒;②1秒到,D6红色LED熄灭(红灯灭),延时1秒;③1秒到,D6红色LED点亮(红灯亮),延时1秒;④LED灯效果可循环。任务要求与任务分析02● 任务分析:定时器1工作在正/倒计数模式下定时输出控制。学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.3 定时器1正/倒计数模式控制交通信号灯正/倒计数模式的计数过程1知识储备03正/倒计数模式的选择与配置234正/倒计数模式下定时器1中断触发过程正/倒计数模式下定时中断周期的计算03知识储备定时器1工作在正/倒计数模式下,计数器从0x0000开始计数,计数值在每个定时器时钟的边沿加1,即为正计数。当计数值达到T1CC0时,产生比较输出,然后计数器从T1CC0开始计数,计数值在每个定时器时钟的边沿减1,即为倒计数。当计数器的值与0x0000相等时,自动溢出,计数器又从0x0000开始计数,继续下一次循环。T1CC0是一个16位的二进制数,由通道0捕获/比较的高8位寄存器T1CCOH和低8位寄存器T1CCOL共同组成。03知识储备正计数/倒计数模式:正/倒计数模式的计数过程1知识储备03正/倒计数模式的选择与配置234正/倒计数模式下定时器1中断触发过程正/倒计数模式下定时中断周期的计算03知识储备(1)配置T1CTL寄存器选择正/倒计数模式计数。(2)配置TIMIF寄存器的OVFIM位使能定时器1溢出中断。(3)配置IEN1寄存器的T1IE位使能定时1中断。(4)配置EA使能总中断。03知识储备本任务设置定时器1工作在正/倒计数模式下进行计数且定时器标记输出频率经过1分频得到定时器时钟。本任务定时器1在正/倒计数模式下工作的具体配置代码如下:1.T1CTL = 0x03; //定时器时钟分频系数为1并选择正/倒计数模式2.T1IE=1; //使能定时器1中断3.EA=1; //使能总中断03知识储备正/倒计数模式下不能配置T1CCTL0寄存器选择通道0比较输出,否则在通道0中断和定时器1溢出中断都使能的情况下,在正/倒计数过程中的比较输出和溢出两个时刻都将触发定时器1中断。正/倒计数模式的计数过程1知识储备03正/倒计数模式的选择与配置234正/倒计数模式下定时器1中断触发过程正/倒计数模式下定时中断周期的计算03知识储备在正/倒计数模式下,当定时器1计数器从0x0000开始正计数至T1CC0时,然后又倒计数至0x000时,产生自动溢出,T1STAT寄存器中的计数器溢出中断标志OVFIF被硬件自动置1。在定时器1溢出中断使能的情况下,硬件会自动将IRCON寄存器的定时器1中断标志T1IF置1。在定时器1中断和总中断使能的情况下,CC2530单片机检测到定时器1中断标志T1IF为1,将会触发定时器1中断,执行定时器1中断服务函数。正/倒计数模式的计数过程1知识储备03正/倒计数模式的选择与配置234正/倒计数模式下定时器1中断触发过程正/倒计数模式下定时中断周期的计算03知识储备定时器1在正/倒计数模式下,计数器从0x0000开始正计数至T1CC0又倒计数至0x0000,共计数(2* T1CC0)个定时器时钟信号,并触发定时器中断。整个定时中断的周期为(2* T1CC0)个定时器时钟周期,其计算公式如下:(s)03知识储备本任务的定时器时钟频率为16MHz,T1CC0的数值为32000,因此定时中断周期为:(s)03知识储备这说明本任务在执行过程中,每0.004秒将会触发一次定时器中断。十进制数32000对应的16进制数为0x7d00,将高8位0x7d写入T1CCOH寄存器,低8位0x00写入T1CCOL寄存器, 具体配置代码如下:1.T1CC0H=0x7d; //T1CC0高8位2.T1CC0L=0x00; //T1CC0低8位03知识储备在定时器时钟、T1CC0H、T1CC0L均一样的情况下,正/倒计数模式的定时中断周期是模模式定时中断周期的两倍。学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.3 定时器1正/倒计数模式控制交通信号灯任务实施04● 任务实施前必须先准备好以下设备和资源:序号 设备/资源名称 数量 是否准备到位(√)1 计算机(已安装好IAR软件) 1台 2 NEWLab实训平台 1套 3 CC-Debugger 仿真器 1套 4 黑板 1块 12任务实施04打开工程编写代码3编译工程4仿真调试●打开本书配套源代码文件夹中的“定时器1正/倒计数模式控制交通信号灯.ewp”工程。04任务实施12任务实施04打开工程编写代码3编译工程4仿真调试● 步骤1:头文件包含04任务实施#include ● 步骤2:I/O引脚宏定义04任务实施1.#define YELLOW_LED1 P1_0 //将P1_0引脚宏定义为D3绿色LED控制引脚2.#define YELLOW_LED2 P1_1 //将P1_1引脚宏定义为D4绿色LED控制引脚步骤3:全局变量定义unsigned int Count=0; //定义Count计数器为全局变量并初始化为004任务实施步骤4:编写定时器1初始化函数04任务实施(1)系统复位后默认选择内部16MHz的RC振荡器为时钟源,且系统时钟频率和定时器标记输出时钟频率都为16MHz;通过设置寄存器T1CTL,将定时器标记输出时钟信号经过1分频得到定时器时钟且设置定时器1工作在正/倒模式下。(2)根据定时中断周期配置高8位寄存器T1CC0H和低8位寄存器T1CC0L。(3)使能定时器1中断。(4)使能总中断。定时器1初始化代码如下:1.void Init_Timer1(void)2.{3. T1CTL = 0x03; //定时器时钟分频系数为1并选择正/倒计数模式4. T1CC0H=0x7d; //T1CC0高8位5. T1CC0L=0x00; //T1CC0低8位6. T1IE=1; //使能定时器1中断7. EA=1; //使能总中断8.}04任务实施步骤5:编写定时器1中断服务函数根据前面的初始化配置,定时器时钟频率为16MHz,在正/倒计数模式下定时器1的定时中断的周期为0.004秒/次。本任务需要完成间隔1秒控制交通信号灯的亮灭,1秒所对应的定时中断次数为:说明连续250次定时中断所需要的时间等于1秒。04任务实施04任务实施正/倒计数模式下定时器1中断处理流程图下定时器1中断处理流程图:本任务定时器1中断服务的代码如下:#pragma vector=T1_VECTOR //定时器1中断向量指定__interrupt void T1_ISR(void){Count++; //定时器计数加1if(Count>=250) //判断计数器Count是否等于定时1秒所需要的中断次数{Count=0; //计数器清0YELLOW_LED1=! YELLOW_LED1; //黄灯状态翻转YELLOW_LED2=! YELLOW_LED2; //黄灯状态翻转}}04任务实施(1)通过宏指令“#pragma vector=T1_VECTOR”或“#pragma vector=0x4B” 将该中断函数指向定时器1中断向量,然后下一行开始写中断服务函数“__interrupt void T1_ISR(void)”;(2)全局变量Count加1;(3)将Count的值与250进行比较,当Count的值大于等于250时,表示定时1秒到,黄灯状态翻转,中断返回;当Count的值小于250时,不作任何处理直接中断返回。04任务实施步骤6:编写main主函数main函数主要完成I/O口初始化、定时器1初始化,然后进入无限循环,其具体配置代码如下:void main(void){InitIO(); //I/O口初始化Init_Timer1(); //定时器1初始化while(1); //无限循环}04任务实施04任务实施代码中应用到所学过的知识点:12任务实施04打开工程编写代码3编译工程4仿真调试对工程进行编译,观察是否提示编译成功。如果出现错误或警告,需要认真检查修改,重新编译链接,直到没有错误和警告为止。04任务实施12任务实施04打开工程编写代码3编译工程4下载代码(1)用CC-Debugger仿真器的下载线连接黑板;(2)完成代码下载;(3)黑板上电,观察D3绿色LED和D4红色LED是否每隔1秒循环交替开关。04任务实施学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.3 定时器1正/倒计数模式控制交通信号灯05任务工单(一)本次任务关键知识引导1. 定时器1工作在正/倒计数模式下,计数器从( )开始计数,计数器的值在每个定时器时钟的边沿加1,即为( );当计数值达到( )时,产生比较输出,然后计数器从( )开始计数,计数器的值在每个定时器时钟的边沿( ),即为( );当计数器的值与( )相等时,自动溢出,计数器又从( )开始计数,继续下一次循环。2. 本任务选择正/倒计数模式并将定时器的分频系数设置为1,需要将T1CTL寄存器设置为( )。3. 在正/倒计数模式下,当产生自动溢出时,( )寄存器中的计数器溢出中断标志( )被硬件自动置1;在( )中断使能的情况下,硬件会自动将IRCON寄存器的定时器1中断标志( )置1;在( )和( )使能的情况下,CC2530单片机检测到定时器1中断标志T1IF为1,将会触发定时器1中断,执行定时器1( )。4. 本任务的定时器时钟频率为16MHz,T1CC0的数值为32000,其对应的16进制数为( ),将( )写入T1CC0H,将( )写入T1CC0L,则对应的定时中断周期为( )。任务工单05各组选派代表分析本组任务实施经验;01添加标题请参照评价标准完成自评;02完成对其他小组的评价。03互评经验分享自评评价方式 可采用自评、互评、老师评价等方式 说明 主要评价学生在项目学习过程中的操作技能、理论知识、学习态度、课堂表现、学习能力等。 序号 评价内容 评价标准 分值 得分1 知识运用(20%) 掌握相关理论知识,完成本次任务关键知识的作答准确率(20分) 20分2 专业技能(40%) 工程编译通过,D3和D4两颗LED的工作状态切换正常。(40分) 40分工程编译通过,D3和D4两颗LED的工作状态异常。(30分)完成代码的输入,工程没有编译通过。(15分)建立工程错误,或者部分输入代码。(5分)3 核心素养(20%) 具有良好的自主学习、分析解决问题、帮助他人的能力、整个任务过程中有指导他人并解决他人问题(20分) 20分具有较好的学习能力和分析解决问题的能力,任务过程中无指导他人(15分)具有主动学习并收集信息的能力,遇到问题有请教他人并得以解决(10分)不主动学习(0分)4 职业素养(20%) 实验完成后,设备无损坏、设备摆放整齐、工位区域内保持整洁、无干扰课堂秩序(20分) 20分实验完成后,设备无损坏、无干扰课堂秩序(15分)无干扰课堂秩序(10分)干扰课堂秩序(0分)总得分学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.3 定时器1正/倒计数模式控制交通信号灯任务小结06学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸练习083.3 定时器1正/倒计数模式控制交通信号灯任务拓展07动动脑请思考正/倒计数模式、自由运行模式、模模式三种工作模式的不同之处。任务拓展07动动手请在本任务的基础上进行修改,将绿、黄、红交替点亮的时间变为原来的2倍。学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸练习083.3 定时器1正/倒计数模式控制交通信号灯延伸练习08请在本任务代码基础上进行修改,实现按键按下时处于红灯亮禁行状态,而按键松开时立刻恢复绿、黄、红灯交替点亮状态。 展开更多...... 收起↑ 资源预览