资源简介 (共88张PPT)单片机与C语言技术应用第三单元 任务13.1 定时器1自由运行模式控制交通信号灯学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08学习目标01掌握定时器1在自由运行模式、模模式、正/倒计数模式下的计数过程;掌握定时器1在自由运行模式、模模式、正/倒计数模式下相关寄存器的设置方法;掌握定时器1在自由运行模式、模模式、正/倒计数模式下的中断触发过程;学习目标01掌握定时器1在自由运行模式、模模式、正/倒计数模式下的定时中断周期计算;掌握定时器1在自由运行模式、模模式、正/倒计数模式下控制交通信号灯的开关。学习目标01能对定时器1在自由运行模式、模模式、正/倒计数模式下相关寄存器进行设置;能对定时器1在自由运行模式、模模式、正/倒计数模式下的中断使能进行配置;能根据定时长短在自由运行模式、模模式、正/倒计数模式下计算定时中断的次数;能使用定时器1在自由运行模式、模模式、正/倒计数模式下控制交通信号灯的开关;3.1 定时器1自由运行模式控制交通信号灯学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08任务要求与任务分析02● 任务要求:①黑板通电后,D5绿色LED点亮(绿灯亮),延时1秒;②1秒到,D5绿色LED熄灭(绿灯灭),延时1秒;③1秒到,D5绿色LED点亮(绿灯亮),延时1秒;④LED灯效果可循环。任务要求与任务分析02● 任务分析:CC2530单片机I/O口输出高低电平控制LED灯的亮灭;采用Delay()延时函数定时输出控制。3.1 定时器1自由运行模式控制交通信号灯学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08系统时钟1知识储备03CC2530单片机的系统时钟2345分频CC2530单片机的定时器自由运行模式的计数过程03知识储备单片机在工作时需要一个稳定的时钟,这个时钟叫做系统时钟。系统时钟有两个作用,其一为确定机器周期,统一工作步调;其二为确定单片机工作效率,系统时钟的频率越高,对应的系统时钟周期越短,单片机的执行效率越高。不同的单片机对系统时钟的频率要求不一样。系统时钟1知识储备03CC2530单片机的系统时钟2345分频CC2530单片机的定时器自由运行模式的计数过程03知识储备CC2530单片机的时钟源可以选择内部16MHz的RC振荡器或外部32MHz的晶体振荡器。RC振荡器由电阻、电容组成,能耗低、成本低,但容易受温度等因素影响,振荡频率会有误差;外部晶体振荡器的频率一般都比较稳定,但晶体振荡器通常还要接两个15~33pF的起振电容,成本稍高。环境温度易变化且对时钟周期精度要求较高的应用场合,通常选用外部晶体振荡器作为单片机的时钟源。03知识储备单片机复位后,可以通过软件配置CLKCONCMD寄存器决定时钟源、系统时钟频率、定时器标记输出时钟信号的频率。软件配置时,通常设置系统时钟的频率和定时器标记输出时钟信号的频率都不能大于时钟源频率。当设置的系统时钟的频率或定时器标记输出时钟信号的频率大于时钟源频率时,则实际系统时钟频率或定时器标记输出时钟信号的频率为时钟源频率。03知识储备CLKCONCMD寄存器:决定时钟源、系统时钟频率、定时器标记输出时钟信号的频率。位 位名称 复位值 操作 描述7 OSC32K 1 R/W 32kHz时钟振荡器选择。设置该位只能发起一个时钟源改变。要改变该位,必须选择16MHz内部高频RC振荡器作为时钟源0 : 32kHz XOSC1 : 32kHz RCOSC03知识储备CLKCONCMD寄存器:决定时钟源、系统时钟频率、定时器标记输出时钟信号的频率。位 位名称 复位值 操作 描述6 OSC 1 R/W 时钟源选择。设置该位只能发起一个时钟源改变。0 : 32MHz XOSCl : 16MHz RCOSC03知识储备位 位名称 复位值 操作 描述5:3 TICKSPD[2:0] 001 R/W 定时器标记输出设置。不能高于通过OSC位设置的系统时钟设置。000 : 32 MHz001 : 16 MHz010 : 8MHz011 : 4MHz100 : 2MHz101 : 1MHz110 : 500kHz111 : 250kHz03知识储备位 位名称 复位值 操作 描述5:3 TICKSPD[2:0] 001 R/W 注:CLKCONCMD.TICKSPD可以设置为任意值,但是结果受CLKCONCMD.OSC设置的限制,即如果CLKCONCMD.OSC=1且CLKCONCMD.TICKSPD=000,CLKCONCMD.TICKSPD读出为001且实际TICKSPD是16 MHz。位 位名称 复位值 操作 描述2:0 CLKSPD 001 R/W 时钟速度。不能高于通过OSC位设置的系统时钟设置。标识当前系统时钟频率000: 32MHz001: 16MHz010: 8MHz011: 4MHz100: 2MHz101: 1MHz110: 500kHz111: 250kHz03知识储备位 位名称 复位值 操作 描述2:0 CLKSPD 001 R/W 注:CLKCONCMD.CLKSPD可以设置为任意值,但是结果受CLKCONCMD.OSC设置的限制,即如果CLKCONCMD.OSC=1且CLKCONCMD.CLKSPD=000,CLKCONCMD.CLKSPD读出为001且实际CLKSPD是16 MHz。03知识储备03知识储备当选择外部32MHz的晶体振荡器作为时钟源时,由于外部晶体振荡器启动需要一定的时间,因此配置CLKCONCMD寄存器选择外部32MHz的晶体振荡器之后,软件上需要先不断读取CLKCONSTA寄存器,获取当下系统时钟频率的实测大小,等待系统时钟频率稳定为32MHz后再继续往后执行。03知识储备位 位名称 复位值 操作 描述7 OSC32K 1 R 当前选择的32 kHz时钟源。0 : 32kHz XOSC1 : 32kHz RCOSC6 OSC 1 R 当前选择的系统时钟源。0 : 32MHz XOSCl : 16MHz RCOSCCLKCONSTA寄存器:03知识储备位 位名称 复位值 操作 描述5:3 TICKSPD[2:0] 001 R 当前设定的定时器标记输出。000 : 32MHz001 : 16MHz010 : 8MHz011 : 4MHz100 : 2MHz101 : 1MHz110 : 500kHz111 : 250kHz位 位名称 复位值 操作 描述2:0 CLKSPD 001 R 当前时钟速度。000: 32MHz001: 16MHz010: 8MHz011: 4MHz100: 2MHz101: 1MHz110: 500kHz111: 250kHz03知识储备系统时钟1知识储备03CC2530单片机的系统时钟2345分频CC2530单片机的定时器自由运行模式的计数过程分频是指将单一频率信号的频率降低为原来的1/N,也叫N分频。这里的N通常是2的n次幂,n取整数。例如频率变为原来的二分之一,就叫2分频;频率变为原来的四分之一,就叫4分频;频率变为原来的八分之一,就叫8分频;频率变为原来的十六分之一,就叫16分频。经过分频之后,时钟的频率会下降,对应的时钟周期会延长。03知识储备系统时钟1知识储备03CC2530单片机的系统时钟2345分频CC2530单片机的定时器自由运行模式的计数过程定时器是一种能够对内部时钟信号进行计数的控制器,我们把这个内部时钟称作定时器时钟。定时器时钟可以通过配置T1CTL寄存器对定时器标记输出时钟信号进行分频得到,可设置为1分频、8分频、32分频、128分频。03知识储备控制寄存器T1CTL:位 位名称 复位值 操作 描述7:4 — 00000 R/W 保留3:2 DIV[1:0] 00 R/W 分频器划分值。产生主动的时钟边缘用来更新计数器。00:标记频率/101: 标记频率/810: 标记频率/3211: 标记频率/12803知识储备位 位名称 复位值 操作 描述1:0 MODE[1:0] 00 R/W 选择定时器1模式。定时器操作模式通过下列方式选择:00:暂停运行01:自由运行10: 模11: 正计数/倒计数03知识储备CC2530单片机有5个定时器,一个16位定时器、两个8位定时器、一个睡眠定时器和一个MAC定时器。其中定时器1内部包含一个16位计数器,在每个定时器时钟的边沿递增或递减,共有3种工作模式,分别为自由运行模式、模模式和正/倒计数模式。定时器1在使用时,通过配置T1CTL寄存器进行工作模式的选择。03知识储备系统时钟1知识储备03CC2530单片机的系统时钟2345分频CC2530单片机的定时器自由运行模式的计数过程03知识储备定时器1工作在自由运行模式下,计数器从0x0000开始计数,计数值在每个定时器时钟的边沿加1,当计数值达到0xFFFF时,再经过一个定时器时钟则自动溢出,然后又从0x0000重新计数,如图所示。自由运行模式的选择与配置6知识储备03自由运行模式下定时器1中断触发过程78910自由运行模式下定时中断周期的计算定时器1中断服务函数全局变量与局部变量(1)配置T1CTL寄存器选择自由运行模式;(2)配置TIMIF寄存器的OVFIM位使能定时器1溢出中断;(3)配置IEN1寄存器的T1IE位使能定时1中断;(4)配置EA使能总中断。03知识储备TIMIF寄存器:位 位名称 复位值 操作 描述7 - 0 R/W 保留6 OVFIM 1 R/W 定时器1溢出中断使能。0:中断禁止 1:中断使能5 T4CH1IF 0 R/W 定时器4通道1中断标志。0:无请求未处理 1:有请求未处理4 T4CH0IF 0 R/W 定时器4通道0中断标志。0:无请求未处理 1:有请求未处理03知识储备位 位名称 复位值 操作 描述3 T4OVIF 0 R/W 定时器4溢出中断标志。0:无请求未处理 1:有请求未处理2 T3CH1IF 0 R/W 定时器3通道1中断标志。0:无请求未处理 1:有请求未处理1 T3CH0IF 0 R/W 定时器3通道0中断标志。0:无请求未处理 1:有请求未处理0 T3OVIF 0 R/W 定时器3溢出中断标志。0:无请求未处理 1:有请求未处理03知识储备IEN1寄存器:位 位名称 复位值 操作 描述7:6 - 00 R0 不使用,读出来为05 P0IE 0 R/W 端口0中断使能0:中断禁止 1:中断使能4 T4IE 0 R/W 定时器4中断使能0:中断禁止 1:中断使能3 T3IE 0 R/W 定时器3中断使能0:中断禁止 1:中断使能03知识储备IEN1寄存器:位 位名称 复位值 操作 描述2 T2IE 0 R/W 定时器2中断使能0:中断禁止 1:中断使能1 T1IE 0 R/W 定时器1中断使能0:中断禁止 1:中断使能0 DMAIE 0 R/W DMA传输中断使能0:中断禁止 1:中断使能03知识储备本任务设置定时器1工作在自由运行模式下进行计数且定时器标记输出时钟信号的频率经过1分频得到定时器时钟。本任务定时器1在自由运行模式下工作的具体配置代码如下:T1CTL = 0x01; //定时器时钟分频系数为1并选择自由运行模式T1IE=1; //使能定时器1中断EA=1; //使能总中断03知识储备自由运行模式的选择与配置6知识储备03自由运行模式下定时器1中断触发过程78910自由运行模式下定时中断周期的计算定时器1中断服务函数全局变量与局部变量当定时器1计数器的值为0xFFFF时,再经过一个定时器时钟,该计数器将会自动溢出,T1STAT寄存器中的计数器溢出中断标志OVFIF被硬件自动置1。在定时器1溢出中断使能的情况下,硬件会自动将IRCON寄存器的定时器1中断标志T1IF置1。在定时器1中断和总中断使能的情况下,CC2530单片机检测到定时器1中断标志T1IF为1,将会触发定时器1中断,执行定时器1中断服务函数。03知识储备T1STAT寄存器:位 位名称 复位值 操作 描述7:6 — 00 R0 保留5 OVFIF 0 R/W0 定时器1计数器溢出中断标志。当计数器在自由运行或模模式下达到最终计数值时置1,当在正计数/倒计数模式下达到零时置1。写1没有影响4 CH4IF 0 R/W0 定时器1通道4中断标志。当通道4中断条件发生时置1。写1没有影响03知识储备位 位名称 复位值 操作 描述3 CH3IF 0 R/W0 定时器1通道3中断标志。当通道3中断条件发生时置1。写1没有影响2 CH2IF 0 R/W0 定时器1通道2中断标志。当通道2中断条件发生时置1。写1没有影响1 CH1IF 0 R/W0 定时器1通道1中断标志。当通道1中断条件发生时置1。写1没有影响0 CH0IF 0 R/W0 定时器1通道0中断标志。当通道0中断条件发生时置1。写1没有影响03知识储备IRCON寄存器:位 位名称 复位值 操作 描述7 STIF 0 R/W 睡眠定时器中断标志0:无中断未决 1:中断未决6 - 0 R/W 必须写为0,写入1总是使能中断源5 P0IF 0 R/W 端口0中断标志0:无中断未决 1:中断未决4 T4IF 0 R/WH0 定时器4中断标志。当定时器4中断发生CPU指向中断向量服务例程时清除0:无中断未决 1:中断未决03知识储备位 位名称 复位值 操作 描述3 T3IF 0 R/WH0 定时器3中断标志。当定时器3中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决 1:中断未决2 T2IF 0 R/WH0 定时器2中断标志。当定时器2中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决 1:中断未决1 T1IF 0 R/WH0 定时器1中断标志。当定时器1中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决 1:中断未决0 DMAIF 0 R/W DMA完成中断标志0:无中断未决 1:中断未决03知识储备自由运行模式的选择与配置6知识储备03自由运行模式下定时器1中断触发过程78910自由运行模式下定时中断周期的计算定时器1中断服务函数全局变量与局部变量定时器1在自由运行模式下,计数器从0x0000开始计数,计数到0xFFFF时(16进制数0xFFFF对应的十进制数为65535),共计数了65535个定时器时钟信号,再经过一个定时器时钟,将会产生自动溢出。因此,计数器从0x0000开始计数,共计数65536个定时器时钟信号,会触发定时器中断。整个定时中断的周期为65536个定时器时钟周期,其计算公式如下:(s)03知识储备本任务的定时器时钟频率为16MHz,因此其定时中断周期为:这说明本任务在执行过程中,大约每0.004096秒将会触发一次定时器中断。03知识储备(s)自由运行模式的选择与配置6知识储备03自由运行模式下定时器1中断触发过程78910自由运行模式下定时中断周期的计算定时器1中断服务函数全局变量与局部变量定时器1中断服务函数的编写步骤如下:(1)声明定时器1中断服务函数,通常将函数名称命名为“T1_ISR”。(2)在中断服务函数前通过宏指令“#pragma vector=T1_VECTOR”或“#pragma vector=0x4B”将该中断函数指向定时器1中断向量,因此,当定时器1触发中断时,将会执行该中断服务函数。(3)进入中断服务函数后,硬件自动将定时器1中断标志T1IF置0,然后进入中断处理。03知识储备#pragma vector=T1_VECTOR //定时器1中断向量指定__interrupt void T1_ISR(void){中断处理;}定时器1中断服务函数的具体配置代码如下:03知识储备自由运行模式的选择与配置6知识储备03自由运行模式下定时器1中断触发过程78910自由运行模式下定时中断周期的计算定时器1中断服务函数全局变量与局部变量(1)局部变量:定义在函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后立即无效,再次进入函数内部又重新初始化。(2)全局变量:在所有函数外部定义的变量称为全局变量,它的作用域默认为整个程序文件。一般全局变量只在定义处初始化一次,不会出现再次初始化,在后续的函数执行过程中都必须用写指令才可以改变其值,调用函数或退出函数不会对全局变量重新初始化。03知识储备unsigned int Count=0; //声明Count计数器为全局变量并赋值为0#pragma vector=T1_VECTOR //定时器1中断向量指定__interrupt void T1_ISR(void){……Count++; //Count计数器加1If(Count==244){Count=0x00;……}}03知识储备本任务中,声明Count为全局变量并初始化为0。每次进入中断, Count变量在原来的基础上加1,然后根据其大小进行逻辑分析处理。当Count变量的大小等于244时,表示定时器1已连续中断244次。在执行过程中,进入中断或退出中断时都不会对Count变量的值产生任何影响。03知识储备3.1 定时器1自由运行模式控制交通信号灯学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08任务实施04● 任务实施前必须先准备好以下设备和资源:序号 设备/资源名称 数量 是否准备到位(√)1 计算机(已安装好IAR软件) 1台 2 NEWLab实训平台 1套 3 CC-Debugger 仿真器 1套 4 黑板 1块 12任务实施04打开工程编写代码3编译工程4仿真调试●打开工程。04任务实施12任务实施04打开工程编写代码3编译工程4仿真调试● 步骤1:头文件包含04任务实施#include ● 步骤2:I/O引脚宏定义04任务实施#define LED_RED P1_4 //将P1.4引脚宏定义为D6红色LED控制引脚步骤3:全局变量定义unsigned int Count=0; //定义Count计数器为全局变量并初始化为004任务实施步骤4:编写定时器1初始化函数(1)系统复位后默认选择内部16MHz的RC振荡器为时钟源,且系统时钟频率和定时器标记输出时钟信号的频率都为16MHz;通过设置寄存器T1CTL,将定时器标记输出时钟信号经过1分频得到定时器时钟且设置定时器1工作在自由运行模式下。(2)使能定时器1中断。(3)使能总中断。04任务实施本任务定时器1初始化代码如下:void Init_Timer1(void){T1CTL = 0x01; //定时器分频系数为1,自由运行模式T1IE=1; //使能定时器1中断EA=1; //使能总中断}04任务实施步骤5:编写定时器1中断服务函数根据前面的初始化配置,定时器时钟频率为16MHz,在自由运行模式下定时中断的周期大约为0.004096秒/次。本任务需要完成间隔1秒控制交通信号灯的开关,1秒所对应的定时中断次数大约为:经过四舍五入大约为244次,也就是244次定时中断所需要的时间约等于1秒。04任务实施由运行模式下定时器1的中断处理流程如图所示。04任务实施本任务定时器1中断服务的代码如下:#pragma vector=T1_VECTOR //定时器1中断向量指定__interrupt void T1_ISR(void){Count++; //定时器计数加1if(Count>=244) //判断计数器Count是否等于定时1秒对应的定时中断次数{Count=0; //计数器清0RED_LED=!RED_LED; //红灯状态翻转}}04任务实施(1)通过宏指令“#pragma vector=T1_VECTOR”或“#pragma vector=0x4B” 将该中断函数指向定时器1中断向量,然后在下一行开始写中断服务函数“__interrupt void T1_ISR(void)”;(2)全局变量Count加1;(3)将Count的值与244进行比较,当Count的值大于等于244时,表示定时1秒到,红灯状态翻转,中断返回;当Count的值小于244时,不作任何处理直接中断返回。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)黑板上电,观察D6红色LED是否每隔1秒循环交替开关。04任务实施学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读083.1 定时器1自由运行模式控制交通信号灯05任务工单(一)本次任务关键知识引导1. 单片机在工作时需要一个稳定的时钟,这个时钟叫做( )。系统时钟的频率越( ),对应的系统时钟周期越( ),单片机的执行效率越( )。2. CC2530单片机的时钟源可以选择内部( )的RC振荡器或外部( )的晶体振荡器。3. 单片机复位后,可以通过软件配置CLKCONCMD寄存器决定( )、( )、( )。4. 定时器时钟可以通过配置( )寄存器对定时器标记输出时钟信号进行分频得到,可设置为1分频、8分频、32分频、128分频。5. 定时器1工作在自由运行模式下,计数器从( )开始计数,计数值在每个定时器时钟的边沿( ),当计数值达到( )时,再经过一个定时器时钟则自动溢出,共计数( )个定时器时钟,然后又从( )重新计数。6. 定时器1工作在自由运行模式下,当自动溢出时,( )寄存器中的计数器溢出中断标志( )被硬件自动置( );在定时器1( )中断使能的情况下,硬件会自动将( )寄存器的定时器1中断标志( )置1;在( )和( )使能的情况下,CC2530单片机检测到定时器1中断标志T1IF为1,将会触发定时器1中断,执行定时器1中断服务函数。7.局部变量的作用域仅局限于( ),全局变量的作用域为( )。任务工单05各组选派代表分析本组任务实施经验;01添加标题请参照评价标准完成自评;02完成对其他小组的评价。03互评经验分享自评评价方式 可采用自评、互评、老师评价等方式 说明 主要评价学生在项目学习过程中的操作技能、理论知识、学习态度、课堂表现、学习能力等。 序号 评价内容 评价标准 分值 得分1 知识运用(20%) 掌握相关理论知识,完成本次任务关键知识的作答准确率(20分) 20分2 专业技能(40%) 工程编译通过,红、绿灯同步交替亮灭的工作状态正常。(40分) 40分工程编译通过,红、绿灯同步交替亮灭的工作状态异常。(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.1 定时器1自由运行模式控制交通信号灯任务小结06学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸练习083.1 定时器1自由运行模式控制交通信号灯任务拓展07动动脑请思考下定时器中断延时与循环计数延时有什么不同点?任务拓展07动动手请在本任务代码基础上进行修改,实现红绿灯的状态相反,也就是红灯亮绿灯灭或者红灯灭绿灯亮,同时将亮灭的时间间隔改为3秒。学习目标01知识储备03任务工单05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸练习083.1 定时器1自由运行模式控制交通信号灯延伸练习08在实际交通灯控制系统中,红灯与绿灯并不是同时亮和同时灭,而且红绿灯亮的时间长度并不等于灭的时间长度。请在本任务代码基础上进行修改,实现红灯先亮2秒再灭1秒,然后周期性变化;而绿灯则先亮1秒再灭2秒,然后周期性变化。实现以上功能,可以以下方案进行修改设计。(1)计算1秒、2秒、3秒对应的计数阀值。(2)定义两个全局变量并初始化为0,分别用作红灯的定时计数器和绿灯的定时计数器。延伸练习08(3)进入定时器中断时,红灯的定时计数器加1,然后对红灯的定时计数器进行比较分析。当红灯的定时计数器小于等于2秒对应的阀值时,红灯打开;当红灯的定时计数器大于2秒对应的阀值且小于3秒对应的阀值时,红灯关闭;当红灯的定时计数器大于等于3秒对应的阀值时,红灯打开,同时将红灯的定时计数器置0,进入下一个循环动作。延伸练习08(4)进入定时器中断时,绿灯的定时计数器加1,然后对绿灯的定时计数器进行比较分析。当绿灯的定时计数器小于等于1秒对应的阀值时,绿灯打开;当绿灯的定时计数器大于1秒对应的阀值且小于3秒对应的阀值时,绿灯关闭;当绿灯的定时计数器大于等于3秒对应的阀值时,绿灯打开,同时将绿灯的定时计数器置0,进入下一个循环动作。 展开更多...... 收起↑ 资源预览