修改NEW第六章-MCS-51定时器与计数器_第1页
修改NEW第六章-MCS-51定时器与计数器_第2页
修改NEW第六章-MCS-51定时器与计数器_第3页
修改NEW第六章-MCS-51定时器与计数器_第4页
修改NEW第六章-MCS-51定时器与计数器_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、 第六章第六章 MCS-51单片机定时单片机定时/计数器计数器问题的提出 什么是什么是“定时定时”? 回答:定时就是通过硬件或软件的定时就是通过硬件或软件的方法产生一个时间基准,以方法产生一个时间基准,以此来实现系统的定时或延时此来实现系统的定时或延时控制。控制。 n6.1定时定时/计数器的结构和工作原理计数器的结构和工作原理n6.2定时定时/计数器的功能计数器的功能n6.3定时定时/计数器的控制计数器的控制n6.4定时定时/计数器工作方式及其设置计数器工作方式及其设置n6.5定时定时/ /计数器应用举例计数器应用举例8051内部集成了内部集成了可编程定时可编程定时/计数器,称计数器,称为定时

2、为定时/计数器计数器0(T0)和定时)和定时/计数器计数器1(T1)。)。图6-1 MCS-51定时器/计数器逻辑结构图:是:是计数器计数器,分别由两个八位专用,分别由两个八位专用寄存器寄存器和和组成。组成。:是:是计数器,计数器,分别由两个八位专用寄存器分别由两个八位专用寄存器和和组成。组成。用来设置定用来设置定时器的时器的用来控制定时器的用来控制定时器的。6.1 定时定时/计数器的结构和工作原理计数器的结构和工作原理定时定时/ /计数器的计数器的核心部件核心部件是一个加是一个加1 1计数器,计数器, 外部脉冲源外部脉冲源 系统的时钟振荡器系统的时钟振荡器其脉冲有两个来源:其脉冲有两个来源:

3、振荡器振荡器12 加加1 1计数器计数器TFx中断中断引脚引脚TX端端C/T=0C/T=0C/T=1C/T=1 控制信号控制信号定时定时/ /计数器的原理计数器的原理6.2 定时定时/计数器的功能计数器的功能 一、一、定时功能定时功能用作定时器用作定时器n是通过内部计数器的计数来实现的,计数脉冲来是通过内部计数器的计数来实现的,计数脉冲来自单片机内部的时钟振荡器,其频率是振荡频率自单片机内部的时钟振荡器,其频率是振荡频率的的1/12,即每个机器周期产生一个计数脉冲,计,即每个机器周期产生一个计数脉冲,计数器加数器加1,直至计满溢出。,直至计满溢出。振荡器振荡器12 加加1 1计数器计数器TFx

4、中断中断引脚引脚TX端端C/T=0C/T=0C/T=1C/T=1 控制信号控制信号对对8051时钟信号的时钟信号的12分频信号进行计数分频信号进行计数。6.2 定时定时/计数器的功能计数器的功能 二、二、计数功能计数功能用作计数器用作计数器n计数脉冲来自外部输入引脚计数脉冲来自外部输入引脚T0(P3.4)或或T1(P3.5) ,当输入信号发生一个由当输入信号发生一个由1到到0的跳变时,计数器加的跳变时,计数器加1。由于识别一个从。由于识别一个从1到到0的跳变要用两个机器周的跳变要用两个机器周期,所以最快的计数频率是振荡器频率的期,所以最快的计数频率是振荡器频率的1/24。振荡器振荡器12 加加

5、1 1计数器计数器TFx中断中断引脚引脚TX端端C/T=0C/T=0C/T=1C/T=1 控制信号控制信号6.2 定时定时/计数器的功能计数器的功能 二、二、计数功能计数功能用作计数器用作计数器n计数脉冲来自外部输入引脚计数脉冲来自外部输入引脚T0(P3.4)或或T1(P3.5) ,当输入信号发生一个由当输入信号发生一个由1到到0的跳变时,计数器加的跳变时,计数器加1。由于识别一个从。由于识别一个从1到到0的跳变要用两个机器周的跳变要用两个机器周期,所以最快的计数频率是振荡器频率的期,所以最快的计数频率是振荡器频率的1/24。因此外部脉冲的最高频率不能超过振荡频率的因此外部脉冲的最高频率不能超

6、过振荡频率的1/24,如如fosc=12MHz,则外部事件脉冲频率不,则外部事件脉冲频率不能能 于于500kHz,否则否则 CPU无法识别一次跳变。无法识别一次跳变。高高(1) 例如某机械零件的热处理工艺曲线为:例如某机械零件的热处理工艺曲线为:温度温度开始定时开始定时保温保温5分钟分钟淬火淬火清洗清洗开始定时开始定时回火回火3小时小时空冷空冷实际控制可以由单实际控制可以由单片机定时发出信号片机定时发出信号控制自动完成整个控制自动完成整个工艺过程。工艺过程。: 例如一啤酒生产线,如下图所示:例如一啤酒生产线,如下图所示:计数计数2424瓶瓶光电信号检测光电信号检测2424瓶装完申请中断瓶装完申

7、请中断转入中断服务程序装箱转入中断服务程序装箱输送带输送带6.3 定时定时/计数器的控制计数器的控制涉及涉及3个寄存器:个寄存器:1.定时器控制寄存器:定时器控制寄存器:TCON2.定时器方式寄存器:定时器方式寄存器:TMOD3.定时器初值寄存器:定时器初值寄存器:TH0 TL0 TH1 TL11. 定时器控制寄存器定时器控制寄存器TCON D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0l TF0和和TF1计数溢出标志位。计数溢出标志位。l TR0和和TR1定时器运行控制位定时器运行控制位。 TR0(TR1)=0 停止定时停止定时/计数器工作计数器工作 TR0

8、(TR1)=1 启动定时启动定时/计数器工作计数器工作2. 定时器方式寄存器定时器方式寄存器TMOD 位位 7 6 5 4 3 2 1 0 GATE C/T M1 M0 GATE C/T M1 M0 定时器定时器1 定时器定时器01 计数计数 ; 0 定时定时 门控位,为门控位,为1时要求时要求INTi引脚高电平才计数引脚高电平才计数GATE:门控位,用来控制定时器门控位,用来控制定时器/计数器的启动是计数器的启动是否受外部中断请求信号的影响。否受外部中断请求信号的影响。GATE=0,不受影响,不受影响,仅由控制位仅由控制位TRx控制;控制;GATE=1,受,受TRx和外部中断请求信号共同控制

9、。和外部中断请求信号共同控制。lC/T:选择定时器功能还是计数器功能。选择定时器功能还是计数器功能。 C/T=1 选择选择计数器计数器功能功能 C/T=0 选择选择定时器定时器功能功能 (计出现在计出现在T0或或T1引脚上的负跳变引脚上的负跳变) ( (计机器周期计机器周期) )M1 M0方式方式说明说明 0 00TLx低低5位与位与THx8位构成位构成13位计数器位计数器 0 11TLx与与THx构成构成16位计数器位计数器 1 02可自动重装初值的可自动重装初值的8位计数器位计数器 1 13定时器定时器0分成两个分成两个8位独立计数器位独立计数器定时器定时器1停止计数停止计数lM1M0:指

10、定定时指定定时/计数器的工作方式计数器的工作方式,可形成可形成四种编码,对应四种工作方式:四种编码,对应四种工作方式: 例例6-1: 某一系统使某一系统使T1作为定时器,采用方式作为定时器,采用方式2,使使T0作为计数器采用方式作为计数器采用方式1,T0、T1的门控位均的门控位均为为0,请设置,请设置TMOD的值。的值。 0 0 1 0 0 1 0 1 即:即:TMOD=25H TMODGATEC/TM1M0GATEC/TM0M1D7D6D5D4D3D1D2D0T1方式控制T0方式控制 用于存放计数初值,具有自动加用于存放计数初值,具有自动加1功能,加满后溢功能,加满后溢出,它们的字节地址是出

11、,它们的字节地址是:根据定时器根据定时器/计数器工作方式,计数长度可分别选计数器工作方式,计数长度可分别选择择:8位,位,13位,位,16位。位。3.定时器初值寄存器定时器初值寄存器 TH0 TL0 TH1 TL1 6.4 定时定时/计数器的工作方式及其设置计数器的工作方式及其设置T0有方式有方式0、1、2、3四种;四种;T1有方式有方式0、1、2三种。三种。51的定时器的定时器/计数器共有四种工作方式,计数器共有四种工作方式,其中:其中: 6.4.1 工作方式及其特点工作方式及其特点 定时范围:定时范围: 计数范围:计数范围: 18192 定时范围:定时范围: 计数范围计数范围: 16553

12、6 定时范围:定时范围: 计数范围:计数范围: 1256 (注:(注:Tp为一个机器周期的时间)为一个机器周期的时间)1、方式、方式0(以(以T0为例)为例)13位定时器位定时器/计数器计数器TMOD00M0M1C/TGATEINT0(P3.2)T0(P3.4)C/T=1C/T=0振荡器 12控制TL0(低5位)TH0TCONTF0TR 0中断图 6-4 方式 0(13位计数器)(高8位)S1S2TL0的高的高3位位没有用没有用C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数入的外部脉冲计数,当脉冲发生负跳变时,计数器加

13、器加1,计数值公式为:,计数值公式为: N=213 X=8192 X 其中:其中:N为计数值,为计数值,X是是THx、TLx的初值。的初值。 X=时,时,N最小值最小值= ; X= 时,时,N最大值最大值=。 则则N的范围:的范围:。讨论计数方式:讨论计数方式:C/T=0时,时, S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期Tp计数。计数。v 求定时时间由下式确定:求定时时间由下式确定: Tc=NTp=(213 X)Tp= (8192 X)Tp 其中:其中:Tc为定时时间;为定时时间;N为需要计数的次数;为需要计数的次数;X为计数初值为计数初值v 求计数初值计算公式:求计数

14、初值计算公式: X=213 Tc/Tp=8192 Tc/Tp2、方式、方式1(以(以T0为例)为例)16位定时器位定时器/计数器计数器TMOD10M0M1C/TGATEINT0(P3.2)T0(P3.4)C/T=1C/T=0振荡器12控制TL0(8位)TH0(8位)TCONTF0TR0中断图6-5 方式1(16位计数器)C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器入的外部脉冲计数,当脉冲发生负跳变时,计数器加加1,计数值公式为:,计数值公式为: N=216 X=65536 X 其中:其中:N为计数值,为计数值,X是

15、是THx、TLx的初值。的初值。 X=时,时,N最小值最小值= ; X= 时,时,N最大值最大值=; 则则N的范围:的范围:。讨论计数方式讨论计数方式C/T=0时,时, S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期Tp计数。计数。v 求定时时间由下式确定:求定时时间由下式确定: Tc=NTp=(216 X)Tp= (65536 X)Tp其中:其中:Tc为定时时间;为定时时间;N为需要计数的次数;为需要计数的次数;X为计数初值为计数初值求计数初值计算公式:求计数初值计算公式: X=216 Tc/Tp=65536 Tc/Tp3、方式、方式2(以(以T0为例)为例)8位定时器位定

16、时器/计数器计数器TL0作为作为8位加法计数器,位加法计数器, TH0作为初值寄存器作为初值寄存器用。用。TL0加法计数器溢出时置加法计数器溢出时置TF0=1,而且发出,而且发出重装载信号,使三态门打开,将重装载信号,使三态门打开,将TH0中的初值自中的初值自动送入动送入TL0。C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加的外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:计数值公式为: N=28 X=256 X 其中:其中:N为计数值,为计数值,X是是THx、TLx的初值。的初值。 X=时,时,N最

17、小值最小值= ; X= 时,时,N最大值最大值=; 则则N的范围:的范围:。讨论计数方式:讨论计数方式:C/T=0时,时, S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期Tp计数。计数。v 求定时时间由下式确定:求定时时间由下式确定: Tc=NTp=(28 X)Tp= (256 X)Tp其中:其中:Tc为定时时间;为定时时间;N为需要计数的次数;为需要计数的次数;X为计数初值为计数初值v 求计数初值计算公式:求计数初值计算公式: X=28 Tc/Tp=256 Tc/Tp工作方式工作方式0:X= 213 Tc/Tp=213 500us/2us =8192 250=7942=1F

18、06H =1111100000110B 则则TL0=00000110B=06H, TH0=11111000B=0F8H例例6-2:已知晶振已知晶振6MHz,要求定时,要求定时0.5ms,试分别求,试分别求出出T0工作于方式工作于方式0、方式、方式1、方式、方式2时的定时初值。时的定时初值。解:解:机器周期机器周期Tp=12/fosc=12/6MHz=2us; 定时定时Tc=0.5ms=500us.工作方式工作方式1: X= 216 Tc/Tp=216 500us/2us =65536 250=65286=FF06H 则则TL0=06H,TH0=0FFH工作方式工作方式2: X= 28 Tc/T

19、p=28 500us/2us=256 250=6=6H 则则TL0=06H TH0=06H(重装初值寄存器,其值不变)(重装初值寄存器,其值不变)练习:n已知晶振已知晶振6MHz,要求定时,要求定时250us,试分别,试分别求出求出T1工作于方式工作于方式0、方式、方式1时的定时初值。时的定时初值。答:答:X0=213 Tc/Tp=213 250us/2us =8067=1F83H TH1=FCH,TL1=03H X1= 216 Tc/Tp=216 250us/2us =65411=FF83H TH1=FFH,TL1=83HTL0八位定时八位定时/计数器计数器TH0八位定时器八位定时器T1建议

20、使用自动重装方式建议使用自动重装方式TF0TF1将将T0分解为两个计数器分解为两个计数器TL0和和TH0,其中其中TH0借借用了用了T1的的TR1和和TF1T1已无已无TR1,TF1功能功能,建议建议T1做波特率发生器做波特率发生器T1无方式无方式34、方式、方式3 (只适用于(只适用于T0) 组合扩展模式组合扩展模式注意!注意!方式方式3时时T0(TH0,TL0)及)及T1的各自特点的各自特点:n方式方式3就是将单片机原有的就是将单片机原有的T0,T1两个计数器变成三两个计数器变成三个独立的计数器个独立的计数器,其中其中T1要事先设定为方式要事先设定为方式2(串行口串行口的波特率发生器的波特

21、率发生器)并启动起来。并启动起来。 nTH0计数脉冲来自内部计数脉冲来自内部fosc,所以它只能处于所以它只能处于”定时定时”方式。方式。nTH0分别借用了定时器分别借用了定时器T1的的TR1和和TF1来为自己工来为自己工作作,使使TH0能象能象TL0那样用那样用TR1启动定时启动定时,并用并用TF1来来作为作为TH0的溢出中断的标志。的溢出中断的标志。n T1处于方式处于方式3是相当于是相当于TR1=0,此时,此时T1停止计数。停止计数。 小结:定时小结:定时/计数功能的计算公式计数功能的计算公式小结:定时小结:定时/计数器的四种工作方式计数器的四种工作方式方式方式0: 13位计数器模式。位

22、计数器模式。 (以以T1为例为例) 当计数器计满为全当计数器计满为全”1”时时,再来一个计数再来一个计数脉冲时脉冲时,就产生一个就产生一个“溢出中断信溢出中断信号号”TF1=1.TH1 TL1振荡器振荡器 1/12(8位位)(低低5位位)TF1中断中断启动控制启动控制T1引脚引脚TR1GATEINT1高三位弃用高三位弃用C/T=0C/T=113位加位加1计数器计数器n GATE=0时时,TR1=1开始定时开始定时/计数计数; GATE=1时时(门控方式门控方式), TR=1且且INT1=1时时,开始工开始工作作.此种方式主要用于测量加在此种方式主要用于测量加在INT1脚上一个正脉脚上一个正脉冲

23、的脉宽冲的脉宽. 方式方式1: 既既16位计数器模式位计数器模式(以以T1为例为例)TL1TH1振荡器振荡器 1/12(8位位)(8位位)TF1中断中断启动控制启动控制T1引脚引脚TR1GATEINT1C/T=0C/T=116位加位加1计数器计数器n由由TL1做计数器做计数器,TH1做初值寄存器做初值寄存器. 工作前工作前TL1,TH1分别预置相同的初值分别预置相同的初值.计数器计数器TL1工作时工作时,每当溢出产生中断的同时每当溢出产生中断的同时, 将将TH1中的初值自动重中的初值自动重装装.此模式主要用于做串行口波特率发生器使用此模式主要用于做串行口波特率发生器使用.TL1(8位位)TH1

24、(8位位)振荡器振荡器 1/12TF1中断中断控制控制T1引脚引脚TR1GATEINT1C/T=1C/T=0方式方式2: 自动重装初值模式自动重装初值模式8位加位加1计数器计数器8位初值寄存器位初值寄存器n在这种模式中在这种模式中,单片机将单片机将T0和和T1重新进行重新进行“拆分、拆分、组合组合”.将将T0变为由变为由TH0,TL0组成的两个独立的组成的两个独立的8位位定时定时/计数器计数器. T1作为串行通讯的波特率发生器使用。作为串行通讯的波特率发生器使用。方式方式3: 组合扩展模式组合扩展模式TL0振荡器振荡器 1/12TF0中断中断控制控制T0引脚引脚TR0GATEINT0C/T=0

25、C/T=1TH0TF1中断中断控制控制TR1Fosc/12在方式在方式3时的模式中时的模式中定时器定时器T0的结构图的结构图定时定时/计数器计数器4种方式比较:种方式比较:方方 式式计数方计数方M 最大定时时间最大定时时间 Tmax方式方式013位位Tmax=8192*1 =8.192ms方式方式116位位Tmax=65536*1=65.536ms方式方式2,38位位Tmax=256*1 =0.256ms方方 式式计数方计数方M 最大计数值最大计数值方式方式013位位Tmax=8192方式方式116位位Tmax=65536方式方式2,38位位Tmax=256注:设主频为注:设主频为12MHzp

26、 工作模式和方式的确定 确定采用定时还是计数模式 p 初值计算 定时模式公式 计数模式公式 p 溢出方式判断 中断方式还是查询方式 TC/PCnTTX 2NXn 2 6.4.2 定时定时/计数器配置及初始化计数器配置及初始化 定时/计数器的初始化程序可按照上述三个步骤进行,溢出方式设置则需要根据实际需要具体编写,如采用中断方式,还需设置中断入口地址等。例题1:假设8051单片机外接晶振频率为,请用单片机的工作方式实现,试计算初值并给出初始化子程序。 6.4.2 定时定时/计数器配置及初始化计数器配置及初始化 例题1:假设8051单片机外接晶振频率为12MHz,请用单片机T0以方式0的工作方式实

27、现5ms的定时,试计算初值并给出初始化子程序。ORG 0000HAJMP STARTSTART:MOV TMOD,#00H ;T0定时模式, 工作方式0MOV TH0,#63H ;T0赋初值MOV TL0,#18H 例题2: 假设8051单片机外接晶振频率为6MHz, T0工作在方式1下实现定时100mS后申请中断,T1工作在方式2下计数100次后申请中断,计算初值并编写相应程序。MOV TMOD,#61H;设置T0和T1的工作方式MOV TH0,#3CH;T0赋初值MOV TL0,#0B0H MOV TL1,#9CH;T1赋初值MOV TH1,#9CH;SETB ET0;开放相关中断SETB

28、 ET1SETB EA. ;设置其他程序DS0:MOV TH0,#3CHMOV TL0,#0B0H;T0重赋初值重赋初值6.4.3 扩大定时时间方法扩大定时时间方法 要让单片机产生10秒钟的定时信号,由于6MHz的频率T0溢出一次的最大时间约为131mS左右。因此可让T0每次定时时间为100mS,连续溢出100次,时间就能到10S。学习内容学习内容1应用步骤应用步骤2编程举例编程举例6.5 定时定时/计数器应用举例计数器应用举例n1、T0、T1的选择使用;的选择使用;n2、合理选择工作方式、合理选择工作方式TMOD;n3、计算初值:、计算初值:X=2n Tc/Tp 其中,其中,n与工作方式有关

29、,与工作方式有关, 方式方式0,n=13; 方式方式1,n=16; 方式方式2、3时,时,n=8。一、定时器应用步骤一、定时器应用步骤n4、编制应用程序:、编制应用程序:定时器定时器/计数器的初始化:计数器的初始化: 写写TMOD; 写入定时初值;写入定时初值; 设置中断系统的设置中断系统的IP、IE; 启动定时器运行(启动定时器运行(TRx)。)。正确编制定时器正确编制定时器/计数器中断服务程序。计数器中断服务程序。 一、定时器应用步骤一、定时器应用步骤例例6-3:设单片机晶振频率设单片机晶振频率fosc=12MHz,使用,使用T0以方以方式式0产生周期为产生周期为1ms的方波,并由的方波,

30、并由P1.0输出。以中断输出。以中断方式完成编程。方式完成编程。解:解: T1不用,有关位设置为不用,有关位设置为0; T0的的GATE=0,C/T=0,M1M000(方式(方式0)。)。 则则TMOD初始化设置为初始化设置为00000000B,即,即00H。二、定时器编程举例二、定时器编程举例f=12MHZ,则有机器周期,则有机器周期Tp=1us X=8192 - 500=7692 00011110 00001100B 11110000 00001100 TH0=F0H TL0=0CH 2、计算初值、计算初值 产生产生1ms的方波,只需在的方波,只需在P1.0端以端以0.5ms为周期为周期交

31、替输出高低电平即可,因此定时时间为交替输出高低电平即可,因此定时时间为0.5ms 。3、启动和中断、启动和中断 定时器定时器T0的启动由的启动由TR0控制,即控制,即TR0=1启动。启动。 定时器定时器T0的中断允许由的中断允许由ET0和和EA控制,控制, 即即ET0=1、EA=1。 4、程序设计、程序设计 ORG 0000H LJMP MAIN ORG 000BH LJMP DS0 ORG 0100HMAIN: MOV SP, #30H MOV TL0, #0CH MOV TH0, #0F0H MOV TMOD, #00H SETB ET0 SETB EA SETB TR0 SJMP $DS

32、0: MOV TL0, #0CH MOV TH0, #0F0H CPL P1.0 RETI 练习练习1 1:(计数方式):(计数方式) 如前述啤酒生产线,计数如前述啤酒生产线,计数24瓶中断转入装箱程序瓶中断转入装箱程序选选T1方式方式0计数,计数,TMOD的高的高4位为位为: 0 1 0 0初始常数初始常数X的计算的计算: 213 - X =24 X=8192 - 24=8168 00011111 11101000B 00001000 TH1=FFH TL1=08H加加24次即溢出中断。程序如下次即溢出中断。程序如下:练习练习2:设单片机晶振频率为设单片机晶振频率为6MHz,使用,使用定时器

33、定时器1以以方式方式0产生周期为产生周期为500s的等的等宽正方波连续脉冲,并由宽正方波连续脉冲,并由P1.0输出,以输出,以查询方式查询方式完成。完成。 1TMOD寄存器初始化寄存器初始化 2计算计数初值计算计数初值 3由定时器控制寄存器由定时器控制寄存器TCON中的中的TR1 位控制定时的启动和停止位控制定时的启动和停止 4程序设计程序设计 MOV TMOD ,# 00H ;设置;设置T1为方式为方式0 MOV TH1 ,# 0FCH ;设置计数初值;设置计数初值 MOV TL1 ,# 03H MOV IE ,# 00H ;禁止中断;禁止中断LOOP: SETB TR1 ;启动定时;启动定

34、时 JBC TF1 ,LOOP1 ;查询计数溢出;查询计数溢出 AJMP LOOPLOOP1:MOV TH1 ,# 0FCH ;重新设置计数初值;重新设置计数初值 MOV TL1 ,# 03H CLR TF1 ;计数溢出标志位清;计数溢出标志位清“0” CPL P1.0 ;输出取反;输出取反 AJMP LOOP ;重复循环;重复循环 练习练习3:题目同题目同练习练习2,但以,但以中断方式中断方式完成。完成。 单片机晶振频率为单片机晶振频率为6MHz,使用定时器,使用定时器1以以 工作工作方式方式1产生周期为产生周期为500s的等宽正方波的等宽正方波 连续脉冲,并由连续脉冲,并由P1.0输出。输

35、出。 1TMOD寄存器初始化寄存器初始化 TMOD=10H 2计算计数初值计算计数初值 TH1 = 0FFH TL1 = 83H 3. 置位置位EA以使以使CPU开放中断开放中断 4. 置位置位ET1以允许定时以允许定时/计数器计数器1中断中断 5. 置位置位TR1以启动计数以启动计数 主程序:主程序: MOV TMOD ,# 10H ;设置;设置T1为工作方式为工作方式1 MOV TH1 ,# 0FFH ;设置计数初值;设置计数初值 MOV TL1 ,# 083H SETB EA ;开中断;开中断 SETB ET1 ;定时器;定时器1允许中断允许中断 SETB TR1 ;定时开始;定时开始

36、HERE:SJMP $ ;等待中断;等待中断 中断服务程序:中断服务程序: MOV TH1 ,# 0FFH ;设置计数初值;设置计数初值 MOV TL1 ,# 083H CPL P1.0 ;输出取反;输出取反 RETI ;中断返回;中断返回 练习练习4:使用定时器使用定时器0以工作以工作方式方式2在在P1.0输输 出周期为出周期为200s的连续正方波脉冲。已知的连续正方波脉冲。已知 晶振频率晶振频率f osc = 6MHz。 1计算计数初值计算计数初值 TH0 = 0CEH ,TL0 = 0CEH 2TMOD寄存器初始化寄存器初始化 M1M0 =10 TMOD寄存器的状态应为寄存器的状态应为0

37、2H 3程序设计程序设计(查询方式查询方式) MOV IE ,# 00H ;禁止中断;禁止中断 MOV TMOD ,# 02H ;设置定时器;设置定时器0为工作方式为工作方式0 MOV TH0 ,# 0CEH ;保存计数初值;保存计数初值 MOV TL0 ,# 0CEH ;设置计数初值;设置计数初值 SETB TR0 ;启动定时;启动定时 LOOP:JBC TF0 ,LOOP1 ;查询计数溢出;查询计数溢出 AJMP LOOP LOOP1:CPL P1.0 ;输出方波;输出方波 AJMP LOOP ;重复循环;重复循环注:由于方式注:由于方式2具有自动重装载功能,因此计数初值只具有自动重装载功

38、能,因此计数初值只 需设置一次,以后不再需要软件重置。需设置一次,以后不再需要软件重置。 (中断方式)(中断方式) 主程序:主程序: MOV TMOD ,# 02H ;设置;设置T1为工作方式为工作方式2 MOV TH0 ,# 0CEH ;保存计数初值;保存计数初值 MOV TL0 ,# 0CEH ;设置计数初值;设置计数初值 SETB EA ;开中断;开中断 SETB ET0 ;定时器;定时器0允许中断允许中断 SETB TR0 ;定时开始;定时开始 HERE:SJMP $ ;等待中断;等待中断 中断服务程序:中断服务程序: CPL P1.0 ;输出方波;输出方波 RETI ;中断返回;中断

39、返回【例【例6-4】某应用系统需对外部正脉冲测试宽度。】某应用系统需对外部正脉冲测试宽度。INT0:MOV TMOD,#09H ;方式方式1,GATE=1 MOV TL0,#00H MOV TH0,#00H CLR EX0 ;关;关INT0中断中断LOP1:JB P3.2,LOP1 ;等待低电平;等待低电平LOP2:JNB P3.2,LOP2 ;等待高电平;等待高电平 SETB TR0 ;启动;启动T0计数计数LOP3:JB P3.2,LOP3 ;等待低电平;等待低电平 CLR TR0 ;停止计数;停止计数 MOV A , TL0 MOV B , TH0 【例【例6-4】某应用系统需对外部正脉

40、冲测试宽度。】某应用系统需对外部正脉冲测试宽度。LOP1:JB P3.2,LOP1 ;等待低电平;等待低电平LOP2:JNB P3.2,LOP2 ;等待高电平;等待高电平 SETB TR0 ;启动;启动T0计数计数LOP3:JB P3.2,LOP3 ;等待低电平;等待低电平 CLR TR0 ;停止计数;停止计数 MOV A , TL0 MOV B , TH0 P3.2INT0*对对T0初始化,初始化,09H送送TMOD,GATE=1T0从从0开始计数开始计数测量脉冲宽度测量脉冲宽度0送送TR0,T0停止计数停止计数读出读出T0的值的值定时器方式寄存器定时器方式寄存器TMOD 位位 7 6 5

41、4 3 2 1 0 GATE C/T M1 M0 GATE C/T M1 M0 定时器定时器1 定时器定时器0lGATE门控位。门控位。GATE=1,同时,同时INTx为高电平,且为高电平,且TRx置置位时,选通定时器位时,选通定时器x。GATE=0,每当,每当TRx置位时就选通定时器置位时就选通定时器x l只有在启动计数要由外部输入只有在启动计数要由外部输入INTx控制时,控制时,才使才使GATE=1,由框图可知,由框图可知,GATE=1,TRx=1时,只有时,只有INTx引脚输入高电平,引脚输入高电平,Tx才才被允许计数。被允许计数。 l在一般情况下,在一般情况下,GATE=0,定时,定时

42、/计数器运行计数器运行控制仅由控制仅由TRx位的状态确定。位的状态确定。 (TRx=1启动,启动,TRx=0停止停止) 振荡器振荡器1212TFx中断中断Tx端端C/T=0C/T=0C/T=1C/T=1GATEINTx端端TRx TLx( (低低5 5位位) ) THx(8(8位位) )控制控制&l ll l利用利用GATEGATE的这一功能,可的这一功能,可以很方便的测量脉冲宽度以很方便的测量脉冲宽度( (见例见例6-4)6-4)。小结:定时小结:定时/ /计数器操作控制次序:计数器操作控制次序: 确定工作方式,写入确定工作方式,写入TMOD定时定时/计数计数 器工作方式寄存器;器工

43、作方式寄存器; 计算定时计算定时/计数初值,装入计数初值,装入THx及及TLx; 置位置位TRx以启动计数;以启动计数; 置位置位ETx以允许定时以允许定时/计数器计数器x中断;中断; (若需要,不需要可略若需要,不需要可略) 置位置位EA以使以使CPU开放中断。开放中断。课后习题解答 (1)8051单片机定时单片机定时/计数器都有哪些工作方式,计数器都有哪些工作方式,分别有何特点?分别有何特点?答:答:方式方式0:13位的工作方式,不能自动重装入初值;位的工作方式,不能自动重装入初值;方式方式1:16位的工作方式,不能自动重装入初值,位的工作方式,不能自动重装入初值,定时时间最长;定时时间最长;方式方式2:8位的工作方式,可自动重装入初值,定时位的工作方式,可自动重装入初值,定时最为精确;最为精确;方式方式3:8位的工作方式,可自动重装入初值,定时位的工作方式,可自动重装入初值,定时最为精确,只用最为精确,只用T0具有该方式。具有该方式。(2)简述)简述8051单片机定时单片机定时/计数器的基本工作原理。计数器的基

温馨提示

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

评论

0/150

提交评论