版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 AT89S51AT89S51单片机的单片机的 定时器定时器/ /计数器计数器12第第6章章 目录目录6.1 定时器定时器/计数器的结构计数器的结构 6.1.1 工作方式控制寄存器TMOD 6.1.2 定时器/计数器控制寄存器TCON6.2 定时器定时器/计数器的计数器的4种工作方式种工作方式 6.2.1 方式0 6.2.2 方式1 6.2.3 方式2 6.2.4 方式36.3 对外部输入的计数信号的要求对外部输入的计数信号的要求36.4 定时器定时器/计数器的编程和应用计数器的编程和应用 6.4.1 方式1的应用 6.4.2 方式2的应用 6.4.3 方式3的应用 6.4.4
2、门控制位GATEx的应用测量脉冲宽度 6.4.5 实时时钟的设计6.1 定时器定时器/计数器的结构计数器的结构 4图6-1 AT89S51单片机的定时器/计数器结构框图具有定时器和计数器2种工作模式种工作模式,4种工作方式种工作方式 (方式0、方式1、方式2和方式3)。属于增增1计数计数 器器。定时器定时器/计数器控计数器控制寄存器:制寄存器:用于控制定时器用于控制定时器/计数器的启动、计数器的启动、溢出状态标志溢出状态标志工作方式控制工作方式控制寄存器:寄存器:用于设置定时用于设置定时器器/计数器的工计数器的工作模式和工作作模式和工作方式的选择。方式的选择。定时器定时器/计数器计数器的计数值
3、寄存器:的计数值寄存器: 通常用于存通常用于存放计数器的计数放计数器的计数值,用户通常通值,用户通常通过它设定计数的过它设定计数的初值初值计数器模式和定时计数器模式和定时器模式的不同计数器模式的不同计数时钟来源时钟来源5分频后的内部脉冲信号计数。由于时钟频率是定值, 所以可根据计数值根据计数值可计算出定时时间计算出定时时间。 对外部输入信号进行计数,用于统计外部事件的发生次数。 计数器的起始计数都是从计数器初值开始从计数器初值开始的的。单片机 复位时计数器的初值为0,也可用指令给计数器装入一个新的初 值。6.1.1 工作方式控制寄存器工作方式控制寄存器TMOD 用于选择定时器/计数器的工作模式
4、和工作方式,字节地址字节地址为89H,格式如图图6-2所示所示。图图6-2 TMOD格式格式8位分为两组,高高4位位控制T1,低低4位位控制T0。TMOD各位的功能。(1)GATE门控位门控位。 0:仅由运行控制位TRx(x = 0,1)来控制定时器/计 数器运行。 1:用外中断引脚上的电平与运行控制位TRx共同来控制定时器/计数器运行。6(2)M1、M0工作方式选择位工作方式选择位M1、M0共有4种编码,对应于4种工作方式种工作方式的选择:78 0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲 进行计数。 1:为计数器工作模式,计数器对外部输入引脚T0(P3.4)或 T1 (P3.
5、5)的外部脉冲计数。6.1.2 定时器定时器/计数器控制寄存器计数器控制寄存器TCON 字节地址为88H,位地址为88H8FH。格式如图6-3所示所示。图图6-3 TCON格式格式(3)C/ 计数器模式和定时器模式选择位计数器模式和定时器模式选择位T(1)TF1、TF0计数溢出标志位。 当计数器计数时,该位置“1”。 此位作为状态位供CPU查询,查询有效 后,应使用软件软件及时将该位清“0”。 此位作为中断请求标志位,进入中断服务 程序后由硬件硬件自动清“0”。(2)TR1、TR0计数运行控制位。 TR1位(或TR0位)= 1,启动定时器/计数器工作 的必要条件。必要条件。(如果该位为如果该位
6、为1,不一定就能启动计数器,但如果,不一定就能启动计数器,但如果 该位为该位为0,则一定禁止使能。,则一定禁止使能。)9TR1位(或位(或TR0位)位) = 0,停止定时器,停止定时器/计数器工作。计数器工作。6.2 定时器定时器/计数器的计数器的4种工作方式种工作方式6.2.1 方式方式 M1、M0=00时,被设置为工作方式0。10116.2.2 方式方式1 当M1、M0=01时,定时器/计数器工作于方式方式1。T方式方式1和方式和方式0的差别的差别仅仅在于计数器的位数计数器的位数不同,方式1为16位计数器位计数器,方式0则为13位计数器,有关控制状态位的含义(GATE、C/ 、TFx、TR
7、x)与方式0相同。126.2.3 方式方式2 计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指存在用指令反复装入计数初值的令反复装入计数初值的问题问题。这不仅影响定时精度,也给程序设计带来麻烦。 定时器/计数器的方式方式2为自动恢复初值为自动恢复初值(初值自动装入)的8位位定时器定时器/计数计数器器。 1) THx(x = 0,1)为常数缓冲器,用来存放计数的初值; TLx (x = 0,1)用作计数。 2)初值重装的时机:当TLx计数溢出时,在溢出标志TFx置“1”的同时, 还自动将自动将THx中的初值送至中的初值送至TLx,使TLx从初值开始重新计数。 计数器宽度只有8位
8、,计数范围较窄。13图6-6 定时器/计数器方式2逻辑结构框图当M1、M0为10时,定时器/计数器处于工作方式2, 图图6-7 方式2工作过程 该方式可省去用户软件中重装初值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定相当精确地确定定时时间定时时间。14定时器/计数器的方式2工作过程如图6-7所示。156.3 对对的计数信号的要求的计数信号的要求 当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生时,计数器的值增1。 每个机器周期每个机器周期,都对外部输入引脚对外部输入引脚T0或或T1进行采样。如在机器周期中采得的值为1,而在机器周期中采得的值
9、为0,则在紧跟着的机器周期,计数器加1。 16外部计数信号的一个周期中,低电平和高电平的持续外部计数信号的一个周期中,低电平和高电平的持续时间都要大于一个机器周期。才能保证下跳沿能够被准确时间都要大于一个机器周期。才能保证下跳沿能够被准确的测量到。的测量到。 故对外部输入信号的要求如故对外部输入信号的要求如图图6-12所示,图中,所示,图中,Tcy为机器周期为机器周期。图6-12 对外部计数输入信号的要求6.4 6.4 定时器定时器/ /计数器的编程和应用计数器的编程和应用4 4种方式,方式种方式,方式0 0与方式与方式1 1基本相同,只是计数位数不同。方基本相同,只是计数位数不同。方式式0
10、0初值计算复杂,初值计算复杂,一般不用方式一般不用方式0 0,而,而用方式用方式1 1。6.4.1 6.4.1 方式方式1 1的应用的应用【例例6-16-1】假设系统时钟频率采用假设系统时钟频率采用6MHz6MHz,采用内部时钟计,采用内部时钟计 数,数,在在P1.0P1.0引脚上输出一个引脚上输出一个周期为周期为2ms2ms,占空比,占空比50%50%的的方方 波波,如,如图图6-136-13 所示。所示。17图图6-13 P1.0引脚上输出周期为引脚上输出周期为2ms的方波的方波18解决方案解决方案:产生1ms定时开始1ms时间到发出定时中断 进入中断服务程序,对P1.0管脚取反第一步:产
11、生第一步:产生1ms1ms定时定时时间基准:时间基准:使用内部使用内部1212分频的时钟计数分频的时钟计数 主时钟频率主时钟频率6MHz6MHz 6MHz 6MHz时钟的机器周期时钟的机器周期= =(1/61/6* *1010-6-6)* *12=2us12=2us TmaxTmax= =机器周期机器周期最大计数值最大计数值 方式方式0 0最长计时最长计时= =2us2us* *2 21313=16.384ms=16.384ms 方式方式1 1最长计时最长计时= =2us2us* *2 21616=131.072ms=131.072ms 方式方式2 2最长计时最长计时= =2us2us* *2
12、 28 8=512us=512us 选择方式选择方式11计时时间足够,初值计算简便计时时间足够,初值计算简便 1920计数初值计算:计数初值计算: 设需要设需要装入装入T0的的初值为初值为X,则产生定时的计数值为,则产生定时的计数值为(216X)。 计算公式:计算公式: 则有:则有:(216X) 2 106=1 103 X=65036 X化为十六进制数,即:化为十六进制数,即: 65036 = FE0CH 。 T0的的初值初值为为TH0 =FEH,TL0 = 0CH。第二步:定时器设置及中断设置第二步:定时器设置及中断设置 定时器设为工作方式定时器设为工作方式1 设置定时器初值设置定时器初值
13、开放定时器中断及使能总中断控制位开放定时器中断及使能总中断控制位 启动定时启动定时/计数计数 相关寄存器相关寄存器: IP、IE、TCON、TMOD初初始始化化步步骤骤第三步:中断服务程序设计第三步:中断服务程序设计 对P1.0管脚取反; 计数初值的重装,这样才能产生周期性波形。21参考程序如下:参考程序如下: ORG0000H;程序入口RESET:AJMP MAIN ;转主程序 ORG 000BH ;T0中断入口 AJMP IT0P;转T0中断处理程序IT0P ORG 0100H;主程序入口MAIN: MOV SP,#60H;设堆栈指针 MOV TMOD,#01H;设置T0为方式1定时 AC
14、ALL PT0M0;调用初始化子程序PT0M0HERE: AJMP HERE ;原地循环,等待中断程序入口处理中断向量表处理1)堆栈指针处 理2)初始化程序 调用PT0M0: MOV TL0,#0CH;T0初始化,装初值的低8位 MOV TH0,#0FEH;装初值的高8位 SETB ET0;允许T0中断 SETB EA ;总中断允许 SETB TR0;启动T0 RETIT0P: MOV TL0,#0CH;中断子程序,T0重装初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的状态取反 RETI22初始化子程序中断服务程序查询方式参考程序:查询方式参考程序: MOVTMOD,#01H
15、;设置T0为方式1LOOP: MOVTH0,#0FEH ;T0置初值 MOVTL0,# 0CH SETBTR0 ;启动T0LOOP1:JNB TF0,LOOP1 ;查TF0,TF0 =0, T0未溢出; ;TF0 =1, T0溢出, CLRTR0 ;T0溢出, 关断T0 CPLP1.0 ;P1.0的状态求反 SJMPLOOP 查询程序虽简单程序虽简单,但CPU必须要不断查询TF0标志, 工作效率低效率低。23TF0 =0【例例6-2】系统时钟为6MHz,利用内部时钟计数,编写定时器T0产生1s定时的程序。24基本思想:基本思想:采用定时器模式。因定时时间较长,首先确定采用哪一种工作方式采用哪一
16、种工作方式。时钟为6MHz的条件下,定时器各种工作方式最长可定时时间:方式方式0最长可定时16.384ms;方式方式1最长可定时131.072ms;方式方式2最长可定时512 s。由上可见,可选选方式方式1,每隔,每隔100ms中断一次中断一次,中断中断10次次为1s。25中断向量表处理1)堆栈指针处 理2)初始化程序 调用ORG0000H;程序入口RESET:AJMP MAIN ;转主程序ORG 000BH ;T0中断入口AJMP IT0P;转T0中断处理程序IT0PORG 0100H;主程序入口MAIN: MOV SP,#60H;设堆栈指针 MOV TMOD,#01H;设置T0为方式1定时
17、 ACALL PT0M0;调用初始化子程序PT0M0HERE: AJMP HERE ;原地循环,等待中断程序入口处理26PT0M0: SETB ET0;允许T0中断 SETB EA ;总中断允许 SETB TR0;启动T0 RETIT0P: MOV TL0,#0B0H;中断子程序,T0重装初值 MOV TH0,#3CH DJNZ B, ;计数次数的判断 CLR TR0 ;1S定时到,T0停止工作; SETB F0 ;设置定时时间到的标志位F0 RETI初始化子程序中断服务程序6.4.2 方式方式2的应用的应用方式2:1) 可以自动重新装载初值自动重新装载初值的8位计数器/定时器。可 省去省去重
18、装初值指令。 2) 定时/ 计数范围比较窄,但计时精确; 典型应用:1)用于可扩展一个扩展一个负跳沿触发负跳沿触发的的外部中断源外部中断源; 2)用于比较准确的定时/计数操作。【例例6-36-3】扩展一个负跳沿触发的外部中断源负跳沿触发的外部中断源,把定时器/计数 器T0脚脚(P3.4)作为外部中断请求输入端外部中断请求输入端,溢出标志TF0作为外 中断请求标志。27基本思想:基本思想:设为方式2(自动装入常数方式)计数模式,TH0、 TL0初值初值均为0FFH。当T0脚发生负跳变时,T0计数溢出, TF0置“1”,单片机发出中断请求。 ORG0000H ;程序入口处理 AJMPIINI OR
19、G000BH ;中断向量表处理 AJMPIT0P;主程序入口IINI:MOV TMOD,#06H;设置T0为方式2 MOV TL0,#0FFH;设T0初值 MOV TH0,#0FFH SETB ET0;允许T0中断 SETB EA;总中断允许 SETBTR0;启动T0 IT0P: 外中断处理程序段外中断处理程序段 28如果不工作在方式如果不工作在方式2,而是,而是方式方式1,如何实现这个要求?,如何实现这个要求?【例例6-4】 当引脚上发生负跳变时,作为P1.0引脚产生方波的启动信号。开始从P1.0脚脚上输出一个周期为周期为1ms,占空比,占空比50%的方波:方波:(系统时钟6MHz)。29图
20、图6-14 6-14 负跳变触发输出一个周期为负跳变触发输出一个周期为1ms1ms的方波的方波30分析:分析:T0管脚上出现一个负脉冲,则管脚上出现一个负脉冲,则发出启动计数信号发出启动计数信号F0F0P1.0引脚产生周期引脚产生周期1ms,占空占空比比50%的方波的方波1)T0:设为工作方式1, 初值设为FFFFH 2)在T0的中断服务程序 中设置F0标志1)T1设为工作方式工作方式2; 2)计时时间设为500us: (在方式2的计时范围 内); 3)开放中断; 4)查询F0的值,为1则 启动计时。 5)中断服务程序中对 P1.0取反。1)计算)计算T1的初值的初值 设T1的初值为x,由于工作在方式2,则 (28 x) 2 106 = 5 104 x = 28 250 = 6 = 06H2)程序设计)程序设计参考程序参考程序: ORG 0000H;程序入口RESE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急救护理骨科护理培训
- 护理计划制定技巧
- 护理面试面试成功全攻略
- 护理查房中的团队合作
- 急危患者血糖管理护理
- 护理人文关怀与患者满意度
- 急诊科护理体温监护与护理
- 恩施网络安全责任制度
- 户政管理责任制度
- 托管帮扶主体责任制度
- 2026年安徽新闻出版职业技术学院单招职业技能考试题库含答案详解
- 《林海雪原》主要情节与重要事件(速记清单)解析版-2025-2026学年六年级语文下册整本书阅读(统编版五四学制)
- 2026绍兴上虞区事业单位编外招聘15人考试参考题库及答案解析
- 2025-2030中国中国责任保险行业市场现状分析供需及投资评估发展研究报告
- 采购涨价合同模板(3篇)
- 国家职业资格认证考试报名试题及答案
- 新员工反洗钱培训课件
- 2026年时事政治测试题库附参考答案【研优卷】
- 老年痴呆患者治疗决策的伦理教学
- 公司级安全教育培训考试卷测试题(答案)
- (正式版)DB51∕T 2732-2025 《用材林培育技术规程 杉木》
评论
0/150
提交评论