版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 MCS-51单片机的定时/计数器,6.1 定时器的定时与计数功能 6.2 定时器的有关寄存器 6.3 定时器的4种工作方式 6.4 定时器的综合应用,6.1 MCS-51定时/计数器的定时与计数功能,实现定时一般有三种方法: l 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 2硬件实现,专门设计一个单稳态定时器; 优点:CPU效率高;缺点:修改参数麻烦。 3 利用计数器实现,溢出,8位,256us,1us,计算机一般利用第三种方法实现定时/计数,一、定时/计数器的原理 定时器一般指硬件定时器,实质是计数器,脉冲每出现一次下降沿 ,计数寄存器数值将自动加1。 计
2、数的脉冲如果来源于单片机内部的晶振(时钟电路),由于其周期极为准确,这时称为定时器。计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器。,8031(8051、8751) 有2个可独立控制的16位定时/计数器:T0、T1,可用软件控制。,6.1 MCS-51定时/计数器的定时与计数功能,定时器: 对机器周期计数, 每来一个机器周期,计数器内容(值)自动加1 ;计数器:对外来脉冲进行计数, T0、T1引脚上从高电平到低电平跳变时,计数器内容自动加1,T1,片外计数器,定时器,二、定时/计数器的组成,结构框图,单片机 8031,1、定时器T0由TH0(84H)和TL0(8AH
3、)计数器构成; 2、定时器T1由TH1(8DH)和TL1(8BH)计数器构成; 具有两种工作模式(计数器模式和定时器模式)、4种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器中(TMOD:定时/计数器方式控制寄存器;TCON:定时/计数器控制寄存器),通过对特殊功能寄存器的编程,用户可以很方便地选择适当的工作模式和工作方式。,6.2 定时/计数器的有关寄存器 一、TMOD定时/计数器方式寄存器(89H) 用于控制和确定T0、T1的工作模式和工作方式,1) C/T:工作模式选择位 =0,定时器模式,对内部机器周期(脉冲)进行计数;计数频率为晶振频率的1/12。 =1
4、,计数器模式,对来自T0(P3.4)或T1(P3.5)引脚上的外部负脉冲计数。最高计数频率为晶振频率的1/24。 2) M1、M0:工作方式选择位,参看P102,表6.1,二、TCON定时/计数器控制寄存器(88H) 用于控制T0、T1的操作及其中断,位地址为:88H8FH,格式如下:,3)GATE:门控方式选择位 ,用于确定对应的外部中断请求引脚INT0(或INT1)是否参与T0(或T1)的操作控制。 GATE=0时,定时/计数器T0(T1)的运行不受外部中断请求引脚INT0(INT1)的控制,只要控制寄存器TCON中的TR0(TR1)位置“1”,T0(T1)就开始计数。 GATE=1时,只
5、有INT0(INT1)引脚为高电平且TR0(TR1)置“1”,T0(T1)才允许计数,这时可用于测量INT0(INT1)引脚上出现的正脉冲宽度。 确定定时/计数器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2,非门控定时;T1用方式1,门控计数。 MOV TMOD,#0D2H ; 11010010 B,TFx:定时/计数器溢出标志,当定时/计数器溢出时,硬件电路置TFx为 “1”,响应中断时硬件自动复位TRx。 TRx:定时/计数器运行控制位, “1”:启动计数; “0”:停止计数。,6.3 定时/计数器的4种工作方式,由TMOD中的方式选择位M1、M0来选择T0、T1的工作方
6、式 一、 方式0:M1M0=00 13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器,此种方式与MCS48系列兼容,如果不是为了兼容的目的,一般不用方式0。方式0的全部功能方式1都可以代替。最大计数脉冲个数:18192(213),最长定时时间(晶振12MHz ,T=1s):1 s 8192T= 8.192ms,通过上面的分析,我们回过头来看定时/计数器的工作原理。参看P100,图6.1。,高8位,低5位,二、 方式1:M1M0=01,16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:165536(216),最长定时时间(晶振12MHz T=1
7、s):1s 65536T= 65.54ms,非门控方式:当GATE0, 控制权由 TRx 决定 TRx1 计数开始 TRx 0 计数停止,门控方式:当GATE1、TRx1 控制权由 INTx 决定 INTx1 计数开始 INTx 0 计数停止,启动计数方式:,三、 方式2:M1M0=10,自动重装常数的8位定时/计数器。TLx作为8位加1计数器,THx作为8位重装初值寄存器。 用于需要重复定时和计数的场合。 最大计数值:256 (28),最大定时时间(晶振12MHz时 T=1s): 256s。,四、方式3:M1M0=11,T0:分成2个独立的8位定时/计数器,TL0为定时/计数器,TH0为定时
8、器。 TL0占用T0的控制位和引脚信号:C/ T、TR0、GATE、T0引脚、T0的中断源 TH0占用T1的控制位:TR1、TF1和T1的中断源。 T1:停止工作,当T0工作于方式3时,T1只能用作方式0、方式1和方式2,由C/T切换定时和计数工作模式,设置好工作方式时便自动开始运行,要停止运行时,只需设T1工作于方式3即可。,6.4 MCS-51定时/计数器的综合应用,计数初值的计算 1、计数器模式:设n为计数器位数,需计数的次数为m,则 计数初值X= 2n m , 十进制数 2、定时器模式:设t为定时时间(s),T为机器周期(s),n为定时器位数,系统晶振频率为fosc ,则 计数初值X=
9、 2n - t/T= 2n -fosct/12 , 十进制数 例1:设T0以方式0工作,在外界发生100次事件时产生中断请求,求计数初值。 解:n=13(TL0高3位未用)则 计数初值X= 213 - 100= 8092=1F9CH=1111110011100B 高8位为11111100B=FCH,低5位为11100B=1CH,即 (TH0)=FCH (TL0)=1CH 例2:设T1以方式1工作,系统晶振频率fosc为12MHZ,要求定时时间为10ms,求计数初值。 解:n=16 计数初值X= 2n - fosct/12= 216 121061010-3/12=55536=D8F0H,即 (T
10、H1)=D8H (TL1)=F0H,定时器初始化编程:使用定时器工作之前,先计算出计数初值并写入控制寄存器,确定好定时器工作方式。,编程初始化格式: MOV TMOD,# 方式字 ;选择方式 MOV THx, #XH ;装入Tx计数初值 MOV TLx, #XL SETB EA ;开Tx中断 SETB ETx SETB TRx ;启动Tx定时器。,例1:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。 计算计数初值:X = 216 - t/T = 216 -110-312106/12= 65536-1
11、000 = 64536 = FC18H,则(TH0)=0FCH,(TL0)=18H,(TMOD)=01H 程序如下:,ORG0000H AJMPMAIN ORG000BH ;T0中断程序入口地址 AJMPPT0INT ;跳到中断服务程序 ORG0030H MAIN:MOV TMOD,#01H ;中断方式 MOVTL0,#18H ;计数初值 MOVTH0,#0FCH SETBEA ;开放总中断 SETBET0 ;开放T0中断 SETBTR0 ;启动定时器 HERE:SJMPHERE ;等待中断,相当于执行其它任务 PT0INT:MOVTL0,#18H ;中断服务程序,置初值 MOVTH0,#0F
12、CH CPLP1.0 ;取反,产生方波 RETI ;中断返回,P1.0,例2: P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为12MHz。 解:设T1为定时器,工作于方式1,定时50ms,R7为软计数器,记录中断次数,计满20个中断为1秒。,ORG0000H AJMPMAIN ORG001BH AJMPPT1INT ORG0030H MAIN:MOV R7,#00H MOV TMOD,#10H MOV TL1, #0B0H MOV TH1, #3CH SETB EA SETB ET1 SETB TR1 HERE: SJMP HERE ORG 0100H PT1INT: MOV TL1,#0
13、B0H MOV TH1,#3CH INC R7 CJNE R7, #20, PEND MOV R7, #00H CPL P1.7 PEND: RETI,用定时/计数器来实现定时,主要考虑定时器的最大定时时间是否大于或等于要求的定时时间。若不满足,则要另外设置一个软计数器,对定时器基本定时的次数进行累计。,确定基本定时时间的原则: 基本定时时间尽量长且必须与要求的定时时间成整数倍关系。,各种方式下的最大定时 时间见P109.,例3:定时器外部引脚T0(T1)用作外部中断信号输入端。解:外部负脉冲引起中断请求,选计数方式,T0工作于方式2,计数初值为FFH。程序如下:,ORG 0000H AJMP
14、 MAIN ORG 000BH ;T0中断程序入口地址 AJMP PT0INT ;跳到中断服务程序 ORG0030H MAIN:MOV TMOD, # 06 H MOV TL0,# FF H MOV TH0, # FF H SETBET0 SETBEA SETBTR0 HERE:SJMP HERE ORG 0100H PT0INT: RETI,T0 P3.4,例4:门控方式测量正脉冲宽度(当GATE=1时,计数器受TRx和INTx同时控制)。 解:INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器周期脉冲个数。设脉宽小于65.5ms 等待查询INT1,正脉冲过后,读出TH1、TL1。,O
15、RG 2000H START:MOV TMOD,#90H MOV TL1,#00H MOV TH1,#00H WAIT1:JNB P3.3,WAIT1 SETB TR1 WAIT2 : JB P3.3, WAIT2 CLRTR1 MOVR2,TL1 MOVR3,TH1 ,例5、应用T0产生1ms的定时,并使P1.0输出占空比为1:1,周期为2ms的方波。设fosc为6MHZ,并假定CPU不作其它工作。,解:方法一、采用查询的方式 1、确定计数初值(方式0) 计数初值X=213-6106110-3/12=7692=1E0CH=1111000001100B 则计数初值应为:(TH0)=0F0H ,
16、 (TL0)=0CH 设置TMOD:,2、设计程序,ORG 2000H (MOV TMOD, #00H) SETB TR0 LOOP: MOV TH0, #0F0H MOV TL0, #0CH LOOP1: JNB TF0, LOOP1 CLR TF0 CPL P1.0 SJMP LOOP,方法二、采用中断方式,程序如下: ORG 0000H AJMP MAIN ORG 000BH AJMP IT0P ORG 0030H MAIN: MOV SP, #60H SETB EA SETB ET0 MOV TMOD, #00H SETB TR0 MOV TH0, #0F0H MOV TL0, #0C
17、H SJMP $,中断服务程序: ORG 0100H IT0P: MOV TH0, #0F0H MOV TL0, #0CH CPL P1.0 RETI,例6、用T1工作方式1产生25HZ的方波,由P1.0输出,fosc为12MHZ, 假定CPU不作其它工作。,例7、设T0以方式0工作,定时5ms产生中断请求;T1以方式2工作,每出现10次外界事件即产生中断请求,已知fosc为12MHZ,试设计其初始化程序。,例8、利用定时器T0产生一个5KHZ的方波,由P1.0输出,系统fosc 为12MHZ,要求以中断方式工作。,例9、定时器T1用于对外部脉冲计数,方式0工作,每计数1000个 脉冲将片内3
18、0H单元内容加1并调用子程序PRG,CPU采用查询 方式控制。,例6: 解:可采用查询的方式来实现 1、计算计数初值 定时时间t=1/(252)s=20ms 计数初值X=216-121062010-3/12=45536=0B1E01H 则计数初值应为:(TH0)=0B1H , (TL0)=0E0H 2、设置TMOD:,3、程序清单如下:,ORG 2000H MOV TMOD, #01H SETB TR0 LOOP:MOV TH0, #0B1H MOV TL0, #0E0H LOOP1:JNB TF0, LOOP1 CLR TF0 CPL P1.0 SJMP LOOP END,例7:解:采用中断
19、方式来实现 1、计算计数初值 T0:定时时间t=5ms,方式0,则计数初值 X=213-12106510-3/12=3192=0C78H=0110001111000B 即计数初值应为:(TH0)=63H , (TL0)=18H T1:计数模式,方式2,计数次数10,则计数初值X=28-10=246=F6H 即计数初值应为:(TH1)=0F6H , (TL1)=0F6H 2、设置TMOD:,3、程序清单如下:,MOV TMOD, #60H MOV TL0, #18H MOV TH0, #63H MOV TH1, #0F6H MOV TL0, #0F6H SETB EA SETB ET0,ORG
20、0000H AJMP MAIN ORG 000BH AJMP IT0P ORG 001BH AJMP IT1P ORG 0030H MAIN:MOV SP, #60H,SETB ET1 SETB TR0 SETB TR1 SJMP $ ORG 0100H IT0P: RETI ORG 1000H IT1P: RETI,例8: 解:采用中断方式实现 1、计算计数初值 定时时间t=1/(51032)s=100 s ,采用方式2,则计数初值 X=28-1210610010-6/12=156=9CH 则计数初值应为:(TH0)=9CH , (TL0)=9CH 2、设置TMOD:,3、程序清单如下:,O
21、RG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0030H MAIN: MOV TMOD, #02H MOV TH0, #9CH MOV TL0, #9CH SETB EA SETB ET0 SETB TR0 SJMP $,ORG 1000H T0INT: CPL P1.0 RETI END,例9: 解:采用查询方式实现 1、计算计数初值 X=213-1000=7192=1C18H=1110000011000B 则计数初值应为:(TH1)=0E0H , (TL1)=18H 2、设置TMOD:,3、程序清单如下:,ORG 0500H MOV 30H, #0
22、0H MOV TMOD, #40H MOV TH1, #0E0H MOV TL1, #18H SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 MOV TH1, #0E0H MOV TL1, #18H INC 30H,LCALL PRG SJMP LOOP END,例10、分析下列程序,说明程序功能,设fosc为6MHZ。,ORG 0000H RESET: AJMP MAIN ORG 000BH AJMP IT0P ORG 001BH AJMP IT1P ORG 0100H MAIN: MOV SP, #60H ACALL PT0M2 LOOP: MOV C, P1.1
23、 JNC LOOP SETB TR1 SETB ET1 HERE: AJMP HERE PT0M2: MOV TMOD, #16H MOV TL0, #0FFH MOV TH0, #0FFH,SETB TR0 SETB ET0 MOV TL1, #0CH MOV TH1, #0FEH CLR P1.1 SETB EA RET IT0P: CLR TR0 SETB P1.1 RETI IT1P: MOV TL1, #0CH MOV TH1, #0FEH CPL P1.0 RETI,程序功能: 该程序把T0脚作为外部中断请求信号,在T0脚发生负跳变时,向CPU请求中断,使P1.0产生周期为2ms的
24、方波。,例11、利用定时/计数器实现较长时间的定时。设P1.7端接有一个发光二极管,要求利用定时控制,使发光二极管LED亮1秒灭1秒,周而复始。设晶振频率fosc为6MHZ(最长定时时间为131.072ms),P1.7 P1.0 T1 8031,1,LED,+5V,1,100ms,100ms,T1引脚上的计数脉冲信号,在P1.0脚产生周期为200ms的方波,再利用方波的下降沿作为T1的外部计数脉冲,计数5次,就能完成1s的定时。,采用查询方式编程,程序如下:,ORG 0100H MAIN: CLR P1.7 SETB P1.0 MOV TMOD, #61H MOV TH1, #0FBH MOV
25、 TL1, #0FBH SETB TR1 LOOP1:CPL P1.7 SETB TR0 1OOP2:MOV TH0, #3CH MOV TL0, #0B0H LOOP3:JBC TF0, LOOP4 SJMP LOOP3 LOOP4:CPL P1.0 JBC TF1, LOOP1 SJMP LOOP2 END,P1.7 P1.0 T1 8031,1,LED,+5V,1,例12、试用8031设计一个航标灯控制器。要求当黑夜降临时,航标灯自动启动,亮2s,灭2s,闪闪发光,指明航向。当白天到来时,航标灯自动熄灭,不在发光。,P1.7 8031 INT0,+5V,1,+5V,R,R,R,R,灯,硬件:用光敏三极管来完成自动识别白天和黑夜的任务。将光敏管放大电路的输出接到8031的INT0脚。当夜幕来临时,由于光线很暗,光敏管截止,光敏电路输出低电平,向单片机发出中断请求,CPU接到中断请求后,进入外部中断处理程序,启动定时器工作,使航标灯闪闪发光,直到白天来临,光敏管导通,光敏电路输出高电平,关闭定时器,结束外部中断处理,回到主程序,等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 18384-2025电动汽车安全要求
- 五年级上册语文试卷及答案
- 卫生招聘题库及答案
- 过程装备控制技术与应用
- 部编版2021年四年级语文上册期末测试卷【附答案】
- 浅析中职卫校医护生英语学习难点及应对途径
- 脚气科普课件
- 2022-2023年人教版三年级语文下册期中测试卷及答案【审定版】
- 电气测量技术要领
- 申论考试题目分析及答案
- 南京医科大学2026年招聘人事代理人员备考题库及1套参考答案详解
- 2026年教育平台资源输出协议
- 【《四旋翼飞行器坐标系及相互转换关系分析综述》1000字】
- 2026浙江金华市婺城区城市发展控股集团有限公司招聘59人笔试参考题库及答案解析
- 静脉补液课件
- 广东深圳市盐田高级中学2024~2025学年高一上册1月期末考试化学试题 附答案
- 2026年辅警招聘考试试题库附答案【完整版】
- 建筑施工风险辨识与防范措施
- 浙江省杭州地区六校2026届化学高一第一学期期末学业水平测试试题含解析
- 2025年CFA二级估值与财务报表分析试卷(含答案)
- 2025年宜昌化学真题试卷及答案
评论
0/150
提交评论