单片机原理及应用 第5章单片机的定时器计数器 第6章单片机串行通信接口课件.pptx
第5章单片机的定时器/计数器;第5章单片机的定时器/计数器;;定时器/计数器的核心部件是加1计数器。
定时器模式时,是对内部机器周期计数。计数值乘以机器周期就是定时时间。
计数器模式时,是对外部事件计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。;
MCS-51单片机中有两个SFR与定时/计数有关:
TMOD用于设置定时器/计数器的工作模式和工作方式
TCON用于控制定时器/计数器的启动、停止和中断请求
1.工作方式寄存器TMOD(89H);TMOD中各位的含义如下:
①M1、M0—工作方式选择位
定时器/计数器有4种工作方式,由M1M0进行设置,如下表所示。;②C/T—定时/计数模式选择位
C/T=0,设置为定时模式,对内部机器周期进行计数。
C/T=1,设置为计数模式,对来自T0、T1引脚的外部脉冲信号进行计数。
③GATE—门控位
GATE=0时,只要用软件使TCON中的运行控制位TRx为1,就可以启动Tx。
GATE=1时,要用软件使运行控制位TRx为1,同时或引脚要为高电平时,才可以启动Tx。
注意:TMOD不能进行位寻址。;2.中断请求标志寄存器TCON(88H);T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。
5.2.1方式0(13位计数器);5.2.2方式1(16位计数器);门控位作用;5.2.3方式2(8位自动重装初值计数器);5.2.4方式3(仅T0有此方式,T1的方式3将停止计数);5.3.1定时器/计数器初值计算和初始化
1.计数初值的计算
假设当前工作方式下的最大计数值用M表示,则各种工作方式的最大计数值如下:
方式0,M=213=8192;
方式1,M=216=65536;
方式2,M=28=256;
方式3,M=28=256。;假设用X表示计数初值,N表示能产生溢出的计数值
计数模式下,计数值与计数初值之间的关系如下:
X=M-N
定时模式,计数值N乘以机器周期Tcy等于定时时间t,即:
t=N×Tcy=(M-X)×Tcy
由此式可以得到计数初值X的表达式如下所示:
X=M-t/Tcy
其中Tcy=12/fosc。
;【例5-1】假设定时时间为5ms,单片机主频为6MHz,使用T0,求方式1的计数初值。
解:Tcy=12/(6MHz)=2μs
X=M-t/Tcy=M-5ms/(2μs)=M-2500
对于方式1,X=216-2500=63036=0F63CH,
其中低8位3CH要送入TL0,高8位F6H要送入TH0。;2.定时器/计数器的初始化
初始化的步骤如下:
(1)对TMOD赋值,以设定T0和T1的工作模式和工作方式;
(2)计算计数初值,并送入TH0、TL0、TH1、TH1;
(3)给IE和IP赋值,以开放相应中断和设置中断优先级;
(4)设置TR0、TR1,以启动或禁止T0、T1的运行。;【例5-2】假设T0为定时模式,按方式2工作,TH0、TL0的初值均为0FH,且允许T0中断,请对该定时器进行初始化。
;【例5-3】在某工厂的一条自动饮料生产线上,每生产12瓶饮料,就需要发出一个包装控制信号自动执行装箱操作。试编写程序完成这一计数任务,假设用T0完成计数,用P1.0发出控制信号,如下图所示。;分析
(1)选择工作方式
因为计数值为12,所以选用T0的工作方式2来完成此任务。
假设此时T1不工作,则方式控制字为TMOD=06H。
(2)求计数初值X
X=256-12=244=F4H
因此,TL0和TH0的初值都为F4H。;参考程序1(采用中断方式);参考程序2(采用查询方式);【例5-4】利用定时器T1的方式2对外部信号计数,要求每计满100个数将P1.7取反。
分析
(1)确定方式字
假设此时T0不工作,则T1工作在方式2的控制字为TMOD=60H。
(2)计算初值
X=28-100=156=9CH
因此,TL1和TH1的初值都为9CH。;参考程序;
【例5-5】假设系统时钟频率为6MHz,现欲利用定时器T0每隔1ms产生宽度为1个机器周期的正脉冲,并由P1.0送出,如下图所示,请编程实现该功能。;分析
(1)选择工作方式
因为Tcy=12/fosc=2μs,由定时器各种工作方式的特性,可计算出:
方式0最长可定时16.384ms;方式1最长可定时131.072ms;方式2、3最长可定时512?s。
本题中定时时间t=1ms,选则T0的工作方式1来完成此任务。假设此时T1不工作,则方式控制字为TMOD=01H。
(2)计算初值X
X=216-1000μs/2μs=65536-50