Chapter4 定时器、中断和串口_第1页
Chapter4 定时器、中断和串口_第2页
Chapter4 定时器、中断和串口_第3页
Chapter4 定时器、中断和串口_第4页
Chapter4 定时器、中断和串口_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章第四章 MCS-51单单片机的定时器、中断片机的定时器、中断和串口和串口主要内容主要内容定时器/计数器的相关寄存器1定时器/计数器的四种工作方式2串口的四种工作方式5串口相关的寄存器4中断系统的结构和相关寄存器6中断的响应过程7串行通信的一些概念3学习目标学习目标了解MCS-51单片机的定时器/计数器的工作模式1能够根据指定的定时间隔,编写MCS-51单片机定时程序2了解MCS-51单片机串口结构和串口的使用方法3能够搭建80C51单片机的多机串行通信电路,同时编写相应的串行通信程序。4了解中断系统的概念、结构和相关寄存器5掌握80C51单片机中断系统的响应过程,能够设计一个中断系统。6

2、MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器基本情况基本情况v 2个16位的定时/计数器,有四种工作方式,简称定时器0、定时器1,分别用T0、T1表示。v 定时/计数器工作在定时模式定时模式时,计数脉冲信号来自单片机的内部单片机的内部,计数速率是晶振频率的晶振频率的1/12,当计数器启动后,每个机器周期计数器自动加1。v 定时/计数器工作在计数模式计数模式时,计数器对外部脉冲外部脉冲进行计数,计数器计P3.4(T0脚)脚)P3.5(T1脚)负跳变次数脚)负跳变次数。每产生一次负跳变,计数器自动加1。计数器最高计数频率为振荡频率的最高计数频率为振荡频率的1/24。定时器

3、计数器定时/计数器 内部计数器内部计数器外部计数器vCPU可以用软件设定定时器/计数器的工作方式,定时器/计数器工作时,会按照设定的工作方式独立运行,不占用CPU的操作时间,一旦定时器/计数器计满溢出,将向CPU提出中断申请,中断CPU当前操作。v还有2个8位的专用寄存器TMOD(88H)和TCON (89H) 。其中TMOD是定时器的工作方式和工作模式寄存器,TCON是控制寄存器,主要用于定时/计数器管理与控制。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器基本情况基本情况v定时器/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1) 。v当加到计数器

4、为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲使TCON中溢出中断标志TF0或TF1置1,并可向CPU申请中断。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器基本情况基本情况MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器基本情况基本情况3bit计数器 (a) 原理图. (b) 时序图MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器基本情况基本情况vT0和T1 8051单片机有2个16位的定时/计数器,即定时器0(T0)和定时器1(T1)。 T0由2个特殊功能寄存器TH0(高字节,地址8CH)和TL0(低字节,

5、地址8AH)构成,T1则由TH1(高字节,地址8DH)和TL1(低字节,地址8BH)构成。 MOV TL0, #9CHMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器v定时器/计数器工作方式控制寄存器:TMOD 8bit寄存器,地址89H 工作模式寄存器TMOD每一位都定义了不同的功能,但只能字节寻址,即要配置其中某一位信息,必须对TMOD整体赋值。 低四位用来设置T0的工作方式,高四位用来设置T1的工作方式。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器GATEC/TM1M0GATEC/TM1M0Timer 1Timer

6、0(MSB)(LSB)工作工作模式寄存器的格式模式寄存器的格式()()GATEGATE门控位门控位 门控位用来确定定时器门控位用来确定定时器/ /计数器的启动除了受计数器的启动除了受TR0TR0(TR1TR1)的影响,是否还要)的影响,是否还要受外部中断输入引脚受外部中断输入引脚 ( )( )的信号控制。的信号控制。 GATE=1GATE=1:当外部中断输入引脚当外部中断输入引脚 ( )为高电平时,)为高电平时,TR0TR0(TR1TR1)设置为)设置为1 1,启动定时器,启动定时器/ /计数器计数器T0T0(T1T1);当外部中断输入引脚);当外部中断输入引脚 ( )为低电平时,不能启动)为

7、低电平时,不能启动T0T0(T1T1)。)。 GATE=0GATE=0:只要将只要将TR0TR0(TR1TR1)设置为)设置为1 1,即可启动定时器,即可启动定时器/ /计数器计数器T0T0(T1T1)。)。D7D6D5D4D3D2D1D0GATE M1M0GATE M1M0T1T0MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器(2) 定时器定时器/计数器功能模式选择位计数器功能模式选择位 C/T=1:T0(T1)用作计数器。)用作计数器。 C/T=0:T0(T1)用作定时器。)用作定时器。v 作计数器用时,对作计数器用时,对单片机引脚单片机引脚P3.4(T

8、0)或)或P3.5(T1)上的)上的输入信号进行计数输入信号进行计数。在每个机器周期的。在每个机器周期的S5P2期间,期间,CPU采样采样引脚的输入电平。若前一周期采样值为引脚的输入电平。若前一周期采样值为1,下一周期的采样值,下一周期的采样值为为0,则计数单元加,则计数单元加1,加满后溢出引发定时器,加满后溢出引发定时器/计数器中断。计数器中断。v 作定时器用时,对作定时器用时,对内部时钟脉冲信号计数内部时钟脉冲信号计数。希望定时多长时。希望定时多长时间就间就给计数单元赋相应的初始值给计数单元赋相应的初始值,启动定时器后,每过一个,启动定时器后,每过一个机器周期机器周期计数单元加计数单元加1

9、,加满后溢出引发定时器,加满后溢出引发定时器/计数器中断。计数器中断。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器(3 3)M1M1、M0M0工作方式选择位工作方式选择位 由由M1M1、M0M0两位的组合可以确定两位的组合可以确定4 4种工作方式,如种工作方式,如表表4 42 2所示。所示。这这4 4种工作方式在定时时间长度、计数单元赋值等方面存在种工作方式在定时时间长度、计数单元赋值等方面存在较大差异,下一节将举例说明其应用特点。较大差异,下一节将举例说明其应用特点。 M1 M0 工作方式工作方式 功功 能能 描描 述述 0 0方式方式0 13位定时位定

10、时/计数器计数器 0 1方式方式1 16位定时位定时/计数器计数器 1 0方式方式2 8位定时位定时/计数器,自动重装初始值计数器,自动重装初始值 1 1方式方式3 T0分为两个分为两个8位计数器,位计数器,T1无此项无此项定时器定时器/计数器工作方式计数器工作方式MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器v控制控制寄存器寄存器TCON 控制控制寄存器寄存器TCON每一位都定义了不同的功能,既可以字节寻每一位都定义了不同的功能,既可以字节寻址,也可以位寻址,址,也可以位寻址,即即,如果要如果要配置其中某一位信息,可以对该配置其中某一位信息,可以对该位单独

11、赋值。位单独赋值。TCON格式如格式如表所表所示。示。 控制控制寄存器寄存器各位定义各位定义 TCON的高的高4位用来定义定时器位用来定义定时器/计数器中断控制信息计数器中断控制信息,低,低4位用位用来定义外部中断控制信息。下面分别介绍关于定时器来定义外部中断控制信息。下面分别介绍关于定时器/计数器中计数器中断控制的各位的具体含义。断控制的各位的具体含义。D7D6D5D4D3D2D1D0TF1 TR1TF0TR0IE1 IT1IE0IT0T1T0外部中断MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器 TF1(TF0):中断标志位。):中断标志位。计数单元溢出

12、时,硬件置位。若计数单元溢出时,硬件置位。若开启了定时器开启了定时器/计数器中断,则中断响应后硬件自动清除该标志计数器中断,则中断响应后硬件自动清除该标志位;若没有开启中断,则由软件清零位;若没有开启中断,则由软件清零。 TR1(TR0):定时器):定时器/计数器启动控制位计数器启动控制位。 若若门门控控GATE=0,则软件设置,则软件设置TR1(TR0)为)为1时,启动定时器时,启动定时器/计计数器数器T1(T0)开始工作;软件清除)开始工作;软件清除TR1(TR0)为)为0时,定时器时,定时器/计数器计数器T1(T0)停止工作)停止工作。 复位后复位后TCON中的所有位都清零,定时器中的所

13、有位都清零,定时器/计数器计数器T1(T0)均没有工作。均没有工作。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器n单片机复位时,特殊功能寄存器TCON被清0nTFx(x=0,1)和TRx(x=0,1)由软件方法置1或清0。n既可按单元操作的方式,也可以按位操作方式。如启动定时/计数器T0和T1,清除溢出标志位TF0和TF1操作如下: SETB TR0 SETB TR1 CLR TF0 CLR TF1 或: MOV TCON, #01010000Bv定时/计数器控制寄存器(TCON)MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器

14、寄存器v注意:使用定时器/计数器时应注意以下几个方面:v(1)MCS51的定时器/计数器为加1计数器。v(2)定时器/计数器T1的工作方式没有方式3,如果设置它为方式3(M1M0=11),定时器/计数器T1停止工作。v(3)一般情况下,定时器/计数器T1溢出后,TF1自动置1,可以以此为判断标志,检测定时或计数是否完成,但在定时器/计数器T0设置为方式3时, TF1为1时意味着8位计数器TH0溢出,TF0为1表示8位计数器TL0溢出。v(4)在计数器模式时,计数脉冲的频率不高于振荡器频率的1/24. MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器寄存器寄存器v方式方式0

15、 方式方式0:13位位定时器定时器/计数器。计数器。 设置设置TMOD的的M1=0、M0=0时,定时器时,定时器/计数器以方式计数器以方式0工作,此时计数单元由工作,此时计数单元由13位组成,即位组成,即TLx的低的低5位位(D0D4)和)和THx的的8位位,TLx的高的高3位没有使用。位没有使用。 这一方式主要是为了和早期这一方式主要是为了和早期4位单片机兼容,因此现在位单片机兼容,因此现在的单片机应用设计中很少将定时器的单片机应用设计中很少将定时器/计数器设为方式计数器设为方式0,大家对方式大家对方式0的结构和工作特点有基本了解就足够了。的结构和工作特点有基本了解就足够了。 MCS-51M

16、CS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式如如图所图所示,以定时器示,以定时器/计数器计数器T0为例,为例,当当GATE=0时,时,TR0控制定时器控制定时器/计计数器工作状态,只要设置数器工作状态,只要设置TR0=1,定时器,定时器/计数器就开始工作,计数器就开始工作,TL0和和TH0组成的组成的13位计数单元开始计数;位计数单元开始计数;当当GATE=1时,时,TR0与与 引脚信号引脚信号共同确定定时器共同确定定时器/计数器工作状态计数器工作状态。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 当当 =0时,时,MUX开

17、关接通内部振荡器的开关接通内部振荡器的12分频输出,此时分频输出,此时T0就是对就是对机器周期机器周期进行计数,即进行计数,即T0作为定时器使用,作为定时器使用,定时时定时时间为:间为: t:定时时间。:定时时间。 TC:机器周期。:机器周期。 X:定时器:定时器/计数器初始值。计数器初始值。 fOSC:晶体振荡器频率。:晶体振荡器频率。 L:计数单元的长度。:计数单元的长度。cTt XXMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 当当 =1时,时,MUX开关接通计数引脚(开关接通计数引脚(P3.4),此时),此时T0对外部引脚对外部引脚P3.4上

18、的脉冲信号进行计数,即上的脉冲信号进行计数,即T0作为计数器使用,作为计数器使用,计数个数为:计数个数为: S = 2LX S:脉冲信号计数值。:脉冲信号计数值。 L:计数单元的长度。:计数单元的长度。 X:计数单元初始值。:计数单元初始值。v 当当TL0的低的低5位计满溢出时,向位计满溢出时,向TH0进位,当计数单元的值为进位,当计数单元的值为全全“1”时时,再再来一个有效信号来一个有效信号将使将使计数单元溢出复位为全计数单元溢出复位为全“0”,同时使,同时使中断标志位中断标志位TF0置位置位,申请中断。如果程序中没有开启定时器,申请中断。如果程序中没有开启定时器/计数器中断,则可以通过计数

19、器中断,则可以通过软件查询标志位软件查询标志位TF0是否为是否为“1”来判断定时来判断定时/计数是否结束计数是否结束。v 在方式在方式0下,计数器计数范围是下,计数器计数范围是18192(213)。定时时间范围为)。定时时间范围为18192个机器周期。个机器周期。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式【例例】设系统晶振为设系统晶振为12 MHz,试编程实现在,试编程实现在P1.0管脚输出周期管脚输出周期为为10 ms的方波。的方波。 分析:分析:定时器定时器/计数器应用要考虑选择计数器应用要考虑选择T0还是还是T1、工作在定时、工作在定时模式还是

20、计数器模式、采用哪种工作方式、计数单元初始值模式还是计数器模式、采用哪种工作方式、计数单元初始值计算等问题。计算等问题。因此对应程序设计中定时器初始化步骤通常有因此对应程序设计中定时器初始化步骤通常有如下几步:如下几步: 配置配置TMOD(写入工作方式控制字);(写入工作方式控制字); 计数单元计数单元THx、TLx赋初值;赋初值; 启动定时器启动定时器/计数器(设置计数器(设置TRx);); 开中断(如采用查询方式可省略这一步)。开中断(如采用查询方式可省略这一步)。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 根据题意,定时器根据题意,定时器/计数

21、器应工作在定时模式,且定时时间为计数器应工作在定时模式,且定时时间为周期的一半,即周期的一半,即5 ms,假设选择,假设选择T0,确定工作方式,确定工作方式0,套用,套用前面的公式计算计数单元初始值。前面的公式计算计数单元初始值。 X = 2LtfOSC/12 = 213 510-312106/12 = 819250003192 = 0C78H = 110001111000B 由于方式由于方式0的计数单元由的计数单元由TL0的低的低5位和位和TH0的的8位共同组成,位共同组成,因此将上述计算结果拆分成低因此将上述计算结果拆分成低5位和高位和高8位的组合,则初始值位的组合,则初始值赋值为:赋值为

22、: TL0=11000B=18H, TH0=1100011B = 63H。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式如果用查询方式,程序代码如下:如果用查询方式,程序代码如下:ORG 0000HAJMP START ;跳转到主程序开始处;跳转到主程序开始处 ORG 0030HSTART:MOV SP, #68H ;堆栈指针上移;堆栈指针上移SETB P1.0 ;初始化初始化P1.0MOV TMOD,#00H ;设置;设置T0工作在定时模式,方式工作在定时模式,方式0MOV TH0, #63H ;定时器计数单元赋初值;定时器计数单元赋初值MOV TL

23、0, #18HSETB TR0 ;启动定时器;启动定时器T0LED_LOOP:JNB TF0, $ ;定时时间没有到,继续等待定时时间没有到,继续等待CLR TF0 ;手动清除中断标志位;手动清除中断标志位CPL P1.0 ;改变改变P1.0状态使之输出方波状态使之输出方波MOV TH0, #63H;重新赋初值重新赋初值MOV TL0, #18HSJMP LED_LOOPENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式如果用中断方式,程序代码如下:如果用中断方式,程序代码如下:ORG 0000HAJMP START ;跳转到主程序开始处;跳转到主程序

24、开始处ORG 000BH ;定时器定时器/计数器计数器T0中断入口中断入口AJMP INT_T0 ;跳转到;跳转到T0中断服务程序处中断服务程序处ORG 0030HSTART:MOV SP, #68H ;堆栈指针上移;堆栈指针上移SETB P1.0 ;初始化初始化P1.0MOV TMOD, #00H ;设置;设置T0工作在定时模式,方式工作在定时模式,方式0MOV TH0,#63H ;定时器计数单元赋初值;定时器计数单元赋初值MOV TL0 #18HSETB TR0 ;启动定时器;启动定时器SETB EA ;开总中断;开总中断SETB ET0 ;开定时中断;开定时中断T0SJMP $ ;等待中

25、断;等待中断MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式INT_T0:;中断服务程序;中断服务程序PUSH ACCPUSH PSWMOV TH0, #63H ;重新赋初值重新赋初值MOV TL0, #18HCPL P1.0 ;改变;改变P1.0状态使之输出方波状态使之输出方波POP PSW POP ACCRETIENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 例:例:设定时器设定时器T0选择工作模式选择工作模式0,定时时间为,定时时间为1ms,fOSC=6MHz。试确定。试确定T0初值,计算最大定时时间初值

26、,计算最大定时时间T。 解解:当:当T0处于工作模式处于工作模式0时,加时,加1计数器为计数器为13位。设位。设T0的初的初值为值为X。则。则 ssX31613101121061)2(1000612)2(13 X X=7692 转换为二进制数转换为二进制数X=1111000001100B=1E0CH T0的低的低5位:位:01100B=0CH T0的高的高8位:位:11110000B=F0H T0最大定时时间对应于最大定时时间对应于13位计数器位计数器T0的各位全为的各位全为1,即,即( TH0)=FFH,(,(TL0)=1FH。 则则msMHzT384.16612213MCS-51MCS-5

27、1单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 例:例:设设T0工作在模式工作在模式0,定时时间为,定时时间为1ms,fOSC =6MHz。编。编程实现其定时功能。程实现其定时功能。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式解解: (1)计算)计算T0初值初值X 结果为(结果为(TH0)=0F0H,(,(TL0)=0CH。 (2)程序清单)程序清单 ORG 0000H RESET:AJMP MAIN ; ;跳过中断服务程序区跳过中断服务程序区 ORG 000BH ; ;中断服务程序固定入口中断服务程序固定入口 AJMP ITOP

28、主程序主程序 ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针;设堆栈指针 ACALL PTOMD HERE: AJMP HERE ; ; 等待时间到,转入中断等待时间到,转入中断 PTOMD:MOV TL0,#0CH ;装入初值装入初值 MOV TH0,#0F0H SETB TR0 ;启动定时启动定时 SETB ET0 ;开中断开中断 SETB EA RET ;子程序返回子程序返回中断服务程序中断服务程序 ORG 0120H ITOP:MOV TL0,#0CH ;重装入初值重装入初值 MOV TH0,#0F0H CPL P1.0 ;P1.0输出取反输出取反 ;产生产生 周

29、期周期2ms的方波的方波 RETI ;中断返回中断返回MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 例:例:利用利用T0的工作模式的工作模式0产生产生1ms的定时,在的定时,在P1.0引脚上输出引脚上输出2ms的方波。设单片机晶振的方波。设单片机晶振 =12MHz。 解:解: 要在要在P1.0引脚输出周期为引脚输出周期为2ms方波,只要使方波,只要使P1.0每隔每隔1ms取取反一次即可。反一次即可。T0 的模式字节的模式字节TMOD=00H,即,即 TMOD.1TMOD.0 M1M0=00,T0为模式为模式0; TMOD.2 C/T=0,T0为定时状态

30、;为定时状态; TMOD.3 GATE=0,表示计数不受表示计数不受INT0控制控制; TMOD.4TMOD.7 可为任意值。因可为任意值。因T1不用,这里取不用,这里取0 oscfMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 机器周期机器周期 设设T0 的计数初值为的计数初值为X,则,则 =8192-1000 =7192D =11100000 11000B TH0初值为初值为E0H,TL0初值为初值为18H。可查询。可查询TF0的状态来控的状态来控制制P1.0输出输出。 sHzfTsoccy1121012112/ 16ssX3613101101)2(

31、6313101/1012X7192 32商为高商为高8位,位,余数为低余数为低5位位MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 采用查询方式的程序很简单,但在定时器计数过程中,采用查询方式的程序很简单,但在定时器计数过程中,CPU要不断查询溢出标志位要不断查询溢出标志位TF0的状态。这就占用了很多的状态。这就占用了很多CPU的工作时间,使的工作时间,使CPU的效率下降。的效率下降。 程序清单:程序清单: MOV TMOD,#00H ; ;设置设置T0T0为模式为模式0 0 MOV TL0,#18H ;送初值;送初值 MOV TH0,#0E0H SET

32、B TR0 ;启动;启动T0T0 LOOP:JBC TF0,NEXT ;查询定时时间到否?;查询定时时间到否? SJMP LOOP NEXT:MOV TL0,#18H ;重装计数初值;重装计数初值 MOV TH0,#0E0H CPL P1.0 ;输出取反;输出取反 SJMP LOOP ;重复循环;重复循环MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式主程序主程序 MAIN:MOV TMOD,#00H ;设置设置T0T0为模式为模式0 0 MOV TL0,#18H ;送初值送初值 MOV TH0,#0E0H SETB EA ;CPUCPU开中断开中断 SE

33、TB ET0 ;T0T0中断允许中断允许 SETB TR0 ;启动启动T0T0 HERE:SJMP HERE ;等待中断等待中断中断服务程序中断服务程序 ORG 000BH ;T0T0入口入口 AJMP CTC0 ;转中断服务程序转中断服务程序 CTC0:MOV TL0,#18H ;重装初值;重装初值 MOV TH0, #0E0H CPL P1.0 ;输出方波;输出方波 RETI ;中断返回;中断返回MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 方式方式1 方式方式1:16位定时器位定时器/计数器计数器。 设置设置TMOD的的M1=0、M0=1时,定

34、时器时,定时器/计数器以计数器以方式方式1工工作,此时计数单元由两个完整的作,此时计数单元由两个完整的8位寄存器位寄存器TLx、THx共共同组成。定时器同组成。定时器/计数器对应方式计数器对应方式1的结构的结构框图框图如下所如下所示。示。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 启动启动定时器定时器/计数器后,计数单元开始计数,计数器后,计数单元开始计数,TLx加满后溢出加满后溢出向向THx进位,进位,THx加加满(全满(全1)后再计一次后溢出)后再计一次后溢出,此时,此时TLx、THx自动清零自动清零,同时,同时系统将定时器系统将定时器/计数

35、器中断标志位计数器中断标志位TFx置置位位,表明定时时间到或外部信号计数达到目标,表明定时时间到或外部信号计数达到目标。v 如果如果允许中断,那么允许中断,那么CPU自动响应中断并转入中断处理程序,自动响应中断并转入中断处理程序,此时此时TLx、THx已经恢复为全已经恢复为全0,中断处理程序中必须重新给中断处理程序中必须重新给TLx、THx赋初始值赋初始值。中断返回时系统自动将标志位中断返回时系统自动将标志位TFx清清零零。v 方式方式1通常应用于需要实现较长时间定时的场合。下面我们通通常应用于需要实现较长时间定时的场合。下面我们通过一个简单的例子来说明方式过一个简单的例子来说明方式1的使用特

36、点。的使用特点。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 【例例】 电路如电路如图所图所示。试编程实现单片机控制示。试编程实现单片机控制8盏灯循环点亮,盏灯循环点亮,每盏灯点亮时间为每盏灯点亮时间为50 ms,系统晶振为,系统晶振为12 MHz。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式分析:根据题意,确定定时时间为分析:根据题意,确定定时时间为50 ms,每次定时时间到,即,每次定时时间到,即控制相邻的下一盏灯点亮,采用定时器控制相邻的下一盏灯点亮,采用定时器T1,工作方式,工作方式1,计数,计数单元

37、初始值计算如下:单元初始值计算如下: X = 2L - t fOSC/12 = 2165010-312106/12 = 15536 = 3CB0H 则则TH1=3CH,TL1=B0H。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式ORG 0000HAJMP START ;跳转到程序开始处;跳转到程序开始处 ORG 0030HSTART:MOV SP,#68H ;堆栈指针上移;堆栈指针上移MOV P2,#0FFH ;初始化,;初始化,LED全灭全灭MOV A, #0FEH ;初始化,累加器;初始化,累加器A保存保存;LED控制位状态信息控制位状态信息MOV

38、 TMOD, #10H ;设置;设置T1工作在定时模式,方式工作在定时模式,方式1MOV TH1, #3CH ;定时器计数单元赋初值;定时器计数单元赋初值MOV TL1, #0B0HSETB TR1 ;启动定时器;启动定时器LED_LOOP: JNB TF1,$ ;定时时间没有到,继续等待;定时时间没有到,继续等待CLR TF1 ;手动清除中断标志位;手动清除中断标志位MOV P2, A ;改变;改变LED状态状态RL A ;循环左移一位;循环左移一位MOV TH1,#3CHMOV TL1,#0B0HSJMP LED_LOOPENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数

39、器计数器工作方式工作方式中断方式、程序代码如下:中断方式、程序代码如下: ORG 0000HAJMP START ;跳转到程序开始处;跳转到程序开始处ORG 001BHAJMP INT_T1 ;跳转到定时中断;跳转到定时中断1处理程序处处理程序处ORG 0030HSTART:MOV SP, #68H ;堆栈指针上移;堆栈指针上移MOV P2,#0FFH ;初始化,;初始化,LED全灭全灭MOV A,#0FEH ;初始化,累加器;初始化,累加器A保存保存LED状态信息状态信息MOV TMOD,#10H ;设置;设置T1工作在定时模式,方式工作在定时模式,方式1MOV TH1, #3CH ;定时器

40、计数单元赋初值;定时器计数单元赋初值MOV TL1, #0B0HSETB TR1 ;启动定时器;启动定时器SETB EA ;开总中断;开总中断SETB ET1 ;开定时中断;开定时中断T1SJMP $ ;等待中断;等待中断MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式INT_T0:PUSH PSW;本次需要利用累加器本次需要利用累加器A传递传递LED状态,状态,;故不必将故不必将A的内容压入堆栈的内容压入堆栈MOV TH1, #3CH ;重新赋初值;重新赋初值MOV TL1, #0B0HMOV P2, A ;改变;改变LED状态状态RL A ;循环左移一

41、位循环左移一位POP PSWRETIENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式【例例】 系统晶振为系统晶振为12 MHz,利用定时器,利用定时器T0的工作方的工作方式式1实现实现P1.0管脚输出周期为管脚输出周期为2 s的方波。的方波。 分析分析:在晶振为:在晶振为12 MHz时,方式时,方式1最大能实现的定最大能实现的定时时间为时时间为2161s=65536 s,要使,要使P1.0输出周期为输出周期为2 s的方波,定时时间为的方波,定时时间为1 s。对于类似的长时间定时要。对于类似的长时间定时要求,可以采用基准定时加循环的方法。比如要求定求,

42、可以采用基准定时加循环的方法。比如要求定时时1 s,选择,选择T0的方式的方式1,基准定时,基准定时50 ms,循环,循环20次次即为即为1 s。程序流程图如。程序流程图如图所图所示。示。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式程序代码如下:程序代码如下:ORG 0000HAJMP START ;跳转到程序开始处;跳转到程序开始处ORG 000BHAJMP INT_T0 ;跳转到定时中断跳转到定时中断0处理程序处处理程序处ORG 0030HSTART:MOV SP

43、, #68H SETB P1.0 ;初始化初始化P10MOV R7, #20 ;循环次数赋初值循环次数赋初值MOV TMOD, #01H ;设置;设置T0工作在定时模式,方式工作在定时模式,方式1MOV TH0, #3CH ;定时器计数单元赋初值;定时器计数单元赋初值MOV TL0,#0B0HSETB TR0 ;启动定时器;启动定时器SETB EA ;开总中断;开总中断SETB ET0 ;开定时中断;开定时中断T0SJMP $ MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式;*中断服务程序中断服务程序 *INT_T0: PUSH ACC PUSH PSW

44、 MOV TH0,#3CH ;重新赋初值重新赋初值 MOV TL0,#0B0H DJNZ R7, EXIT ;循环次数未到,循环次数未到,;即未到;即未到1 s,退出中断,退出中断 MOV R7, #20 ;循环次数重新赋初值;循环次数重新赋初值 CPL P1.0 ;1 s定时时间到,改变定时时间到,改变P1.0状态状态EXIT: POP PSW POP ACC RETI ENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 方式方式2 方式方式2:8位位自动重装初始值自动重装初始值的定时器的定时器/计数器计数器。 设置设置TMOD的的M1=1、M0=

45、0时,定时器时,定时器/计数器以计数器以方式方式2工工作,此时计数单元作,此时计数单元THx作为备分寄存器保存和作为备分寄存器保存和TLx同样的同样的初始值。初始值。定时器定时器/计数器对应方式计数器对应方式2的结构框图如的结构框图如图所图所示。示。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 启动启动定时器定时器/计数器后,计数单元开始计数,计数器后,计数单元开始计数,TLx加加满(全满(全1)后再加后再加1溢出溢出,此时,此时TLx自动清零,同时系统将定时器自动清零,同时系统将定时器/计数计数器中断标志位器中断标志位TFx置位,表明定时时间到或

46、外部信号计数达置位,表明定时时间到或外部信号计数达到目标到目标。v 如果如果允许中断,允许中断,CPU自动响应中断并转入中断处理程序自动响应中断并转入中断处理程序。v 在在方式方式2中,系统会自动从备分寄存器中,系统会自动从备分寄存器THx取得初始值赋给取得初始值赋给TLx,因此不需要在中断处理程序中重新给,因此不需要在中断处理程序中重新给TLx、THx赋初始赋初始值值。v 中断中断返回时系统自动将标志位返回时系统自动将标志位TFx清零。方式清零。方式2通常应用于短通常应用于短时间定时的场合。时间定时的场合。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式

47、【例例】 电路如电路如图所图所示,系统晶振为示,系统晶振为12 MHz,程序控制,程序控制8盏灯轮盏灯轮流点亮,但要求看起来流点亮,但要求看起来8盏灯同时点亮。盏灯同时点亮。 分析:人眼的视觉停留时间大约为分析:人眼的视觉停留时间大约为20 ms,要想,要想8盏灯轮流点盏灯轮流点亮而看起来一齐亮,则每盏灯第一次点亮和第二次点亮的时亮而看起来一齐亮,则每盏灯第一次点亮和第二次点亮的时间间隔不能超过间间隔不能超过20 ms。不妨设计为每盏灯点亮。不妨设计为每盏灯点亮200 s。然。然后依次循环,则每盏灯中途熄灭的后依次循环,则每盏灯中途熄灭的时间间隔可以定为大约时间间隔可以定为大约为为14 ms,

48、远远小于人眼视觉停留时间,这样人眼将不会分辨,远远小于人眼视觉停留时间,这样人眼将不会分辨出灯曾经熄灭过,从而达到看起来一齐亮的效果。这一设计出灯曾经熄灭过,从而达到看起来一齐亮的效果。这一设计思路在数码管动态扫描显示中常常用到。思路在数码管动态扫描显示中常常用到。 选择定时器选择定时器T1,短时间定时采用方式,短时间定时采用方式2,定时,定时200 s,初始,初始值计算如下:值计算如下: X = 2L - t fOSC/12 = 2820010-612106/12 =56=38H MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式ORG 0000HAJMP

49、 START ;跳转到程序开始处;跳转到程序开始处ORG 001BHAJMP INT_T1 ;跳转到定时中断;跳转到定时中断1处理程序处处理程序处ORG 0030HSTART:MOV SP, #68H ;堆栈指针上移;堆栈指针上移MOV P2, #0FFH ;初始化,;初始化,LED全灭全灭MOV A, #0FEH ;初始化,累加器;初始化,累加器A保存保存LED状态信息状态信息MOV TMOD, #20H ;设置;设置T1工作在定时模式,方工作在定时模式,方式式2MOV TH1, #38H ;定时器计数单元赋初值;定时器计数单元赋初值MOV TL1, #38HSETB TR1 ;启动定时器;

50、启动定时器SETB EA ;开总中断;开总中断SETB ET1 ;开定时中断;开定时中断T1SJMP $ ;等待中断;等待中断MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式INT_T0:PUSH PSWMOV P2,A ;改变;改变LED状态状态RL A ;循环左移一位;循环左移一位POP PSWRETIEND MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式v 方式方式3 方式方式3:T0分解为分解为2个独立的个独立的8位定时器位定时器/计数器计数器。 设置设置TMOD的的M1=1、M0=1时,定时器时,定时器/计

51、数器以方式计数器以方式3工作,只有工作,只有T0可以设置为方式可以设置为方式3,此时,此时T0分解为分解为2个独立个独立的的8位定时器位定时器/计数器计数器TL0和和TH0。 其中其中TL0占用原占用原T0的相关资源,包括的相关资源,包括T0控制位控制位 、GATE、TR0、TF0,外部信号输入引脚,外部信号输入引脚P3.4(T0)、)、P3.2( ),),T0中断入口地址。除了计数单元只有中断入口地址。除了计数单元只有8位寄存器位寄存器TL0外,其余功能和用法与方式外,其余功能和用法与方式1完全相同,可完全相同,可用作用作8位定时器,也可用作位定时器,也可用作8位计数器模式位计数器模式。 此

52、时此时TH0使用原使用原T1的部分资源,包括的部分资源,包括T1控制位控制位TR1、TF1,T1中断入口地址。中断入口地址。TH0只用作只用作8位定时器模式。位定时器模式。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式 当定时器当定时器/计数器计数器T0用作方式用作方式3时,时,T1仍然可以设置为方式仍然可以设置为方式02。由于当前。由于当前T1的控制位和中断源都被的控制位和中断源都被TH0占用,此时占用,此时T1一般用作不需要中断的串口波特率发生器,定时控制串一般用作

53、不需要中断的串口波特率发生器,定时控制串口数据传输速率,详细说明可口数据传输速率,详细说明可参见本章串口部分。参见本章串口部分。 前面列举了很多定时器应用的例子,接下来看一个计数器前面列举了很多定时器应用的例子,接下来看一个计数器应用的例子。应用的例子。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式【例例】 假设某生产线的一个流程有假设某生产线的一个流程有5套工序,套工序,5套工序全部结套工序全部结束后工作人员应停止其他工作,来检测束后工作人员应停止其他工作,来检测5套工序后的产品。套工序后的产品。电路设计人员将电路设计人员将5套工序对应传感器的输出信号

54、(低有效)套工序对应传感器的输出信号(低有效)相与后接入到单片机引脚相与后接入到单片机引脚P3.4,蜂鸣器接,蜂鸣器接P1.0(低电平有(低电平有效),手动按键接效),手动按键接P1.7,要求,要求5套工序结束后蜂鸣器鸣叫套工序结束后蜂鸣器鸣叫提醒工作人员,直到工作人员按下按键(给提醒工作人员,直到工作人员按下按键(给P1.7一个低电一个低电平信号)为止。平信号)为止。 分析:根据题意,可以设置分析:根据题意,可以设置T0工作在方式工作在方式3,利用,利用TL0作作8位计数器,位计数器,P3.4管脚收到管脚收到5次有效信号后引发次有效信号后引发T0中断,则中断,则计数单元赋初值为计数单元赋初值

55、为TL0=285 = 250 = FAH。MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式ORG 0000HAJMP START ;跳转到程序开始处;跳转到程序开始处ORG 000BHAJMP INT_T0 ;跳转到定时中断;跳转到定时中断0处理程序处处理程序处ORG 0030HSTART:MOV SP, #68H SETB P1.0 ;初始化蜂鸣器;初始化蜂鸣器SETB P1.7 ;初始化按键;初始化按键MOV TMOD,#07H ;设置;设置T0工作在计数模式,方式工作在计数模式,方式3MOV TL0, #0FAH ;计数器计数单元赋初值;计数器计数单

56、元赋初值SETB TR0 ;启动计数器;启动计数器SETB EA ;开总中断;开总中断SETB ET0 ;开中断;开中断T0SJMP $ MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式INT_T0:PUSH ACCPUSH PSWMOV TL0,#0FAH ;重新赋初值;重新赋初值CLR P1.0 ;5套工序结束,控制蜂鸣器鸣叫套工序结束,控制蜂鸣器鸣叫JB P1.7,$;工作人员没有按键,蜂鸣器继续鸣;工作人员没有按键,蜂鸣器继续鸣叫叫SETB P1.0 ;工作人员按下停止键,蜂鸣器停止;工作人员按下停止键,蜂鸣器停止鸣叫鸣叫POP PSWPOP AC

57、CRETIENDMCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器工作方式工作方式思考与思考与练习练习1.定时器定时器/计数器有几种工作方式?各有何特点?计数器有几种工作方式?各有何特点?2.与定时器与定时器/计数器相关的寄存器有哪些?计数器相关的寄存器有哪些?3.定时器定时器/计数器初始化包括哪些步骤?计数器初始化包括哪些步骤?4.已知系统晶振为已知系统晶振为12 MHz,编程实现,编程实现P1.0输出输出50 ms的方波。的方波。5.设计一个设计一个8灯闪烁的控制电路,系统晶振为灯闪烁的控制电路,系统晶振为12 MHz,编程实现,编程实现8灯轮流闪灯轮流闪烁,其中每盏灯

58、点亮时间为烁,其中每盏灯点亮时间为3 ms。6.设计一个设计一个8灯闪烁的控制电路,系统晶振为灯闪烁的控制电路,系统晶振为12 MHz,编程实现,编程实现8灯轮流闪灯轮流闪烁,其中每盏灯点亮时间为烁,其中每盏灯点亮时间为2 s。有。有条件的在条件的在硬件电路板上硬件电路板上运行查看效果。运行查看效果。7. 设计设计一个流水灯控制电路,系统晶振为一个流水灯控制电路,系统晶振为12 MHz,编程实现第,编程实现第1 min 8灯从灯从左至右轮流闪烁,每盏点亮时间为左至右轮流闪烁,每盏点亮时间为1 s,第,第2 min 8灯从右至左闪烁,第灯从右至左闪烁,第3 min再从左至右,周期交替再从左至右,

59、周期交替。8. 利用利用T0测量外部信号的正脉冲宽度,已知系统的晶振频率为测量外部信号的正脉冲宽度,已知系统的晶振频率为12MHz,将,将所测得值高位存入片内所测得值高位存入片内71H,低位存入片内,低位存入片内70H。 v定时器计数器初始化 定时/计数器的初始化包括设置工作方式、计数器或定时器模式、计算计数初始值、启动定时/计数器、设置中断控制位等。 定时和计数可以采用查询方式和中断方式实现。 MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器使用总结使用总结v (一)采用查询方式实现定时和计数 (1)确定工作方式、计数器或定时器模式及启动控制方式,构造方式控制码并写入特

60、殊功能寄存器TMOD:MOV TMOD, #控制码。 (2)计算定时器或计数器的计数初始值,根据工作方式把初始值送人TH0、TL0或TH1、TL1。 (3)启动定时/计数器:SETB TRx,x=0,1。 定时/计数器开始工作,通过查询TFx是否为1来判断定时或计数是否达到要求。v定时器计数器设置MCS-51MCS-51单片机的定时器单片机的定时器/ /计数器计数器使用总结使用总结v(二)采用中断方式实现定时和计数 (1)确定工作方式、计数器或定时器模式及启动控制方式,构造控制码并写入特殊功能寄存器TMOD。 (2)计算定时器或计数器的计数初始值,根据工作方式把初始值送人TH0、TL0或TH1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论