片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器

上传人:E**** 文档编号:89490589 上传时间:2019-05-25 格式:PPT 页数:100 大小:1.28MB
返回 下载 相关 举报
片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器_第1页
第1页 / 共100页
片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器_第2页
第2页 / 共100页
片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器_第3页
第3页 / 共100页
片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器_第4页
第4页 / 共100页
片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器》由会员分享,可在线阅读,更多相关《片机原理及应用教程(C语言版)-电子教案-周国运 第6章 MCS 51单片机的定时器计数器(100页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及应用教程 (C语言版) 第6章 MCS-51单片机定时器/计数器,主 编:周国运 中国水利水电出版社,第6章 MCS-51单片机定时器/计数器,目 录 6.1 单片机定时器/计数器的结构及原理 6.2 定时器/计数器T0、T1 6.3 定时器/计数器T2 6.4 定时器/计数器应用举例,定时器/计数器应用极其广泛。 本章主要讨论MCS-51单片机定时器/计数器T0、T1、T2的逻辑结构、工作原理、使用方法和应用。 本章为单片机的主要内容,也是学习第七章串行口的基础。,第6章 MCS-51单片机的定时器/计数器,6.1 单片机定时器/计数器 的结构及原理,主要内容 6.1.1 单片机

2、定时器/计数器的结构 6.1.2 单片机定时器/计数器的工作原理,6.1.1 单片机定时器/计数器的结构,MCS-51单片机定时器/计数器的原理结构图,6.1.1 MCS-51单片机定时器/计数器的结构,MCS-51主要由如下构成: 三个16位的可编程定时器/计数器:定时器/计数器0、1和2。 每个定时器有两部分构成:THx和TLx 特殊功能寄存器TMOD和TCON ,主要对T0和T1进行控制。 特殊功能寄存器T2MOD和T2CON ,主要对T2进行控制,RCAP2H、RCAP2L为T2服务。 引脚P3.4、P3.5、P1.0,为计数脉冲输入。 定时器T0、T1和T2有中断功能,计数器溢出或被

3、触发(T2),向CPU 发出中断请求。,6.1.2 单片机定时器/计数器的工作原理,定时器/计数器T0、T1、T2 的内部结构简图如下图所示。,做定时器,做计数器,6.1.2 MCS-51单片机定时器/计数器的工作原理,从上图可以看出: 定时器的实质是一个加1计数器。 C/T =0 ,为定时器 计数频率:fosc/12 计数信号由片内振荡电路提供,振荡脉冲n分频送给计数器,每个机器周期计数器值增1。 C/T =1 ,为计数器 计数信号由Tx引脚(P3.4、P3.5和P1.0)输入,每输入一有效信号,相应的计数器中的内容进行加1 计数器的最高计数频率为:fosc/24 1)每1个输入脉冲的下降沿

4、使计数器计1个数 2)每1个机器周期对引脚采样1次,当上1个机器周期采样为高、本机器周期采样为低为1个下降沿。,6.1.2 MCS-51单片机定时器/计数器的工作原理,控制信号TRx=1时,定时器启动。 当定时器由全1加到全0时计满溢出,TFx=1,向CPU申请中断;同时,定时器从0开始继续计数。,6.2 定时器/计数器T0、T1,主要内容 6.2.1 T0、T1的特殊功能寄存器 6.2.2 T0、T1的工作模式 6.2.3 T0、T1的使用方法,6.2.1 T0、T1的特殊功能寄存器,1. T0、T1 模式寄存器TMOD 功能:确定定时器的工作模式。其格式为:,GATE外部门控制位。 GAT

5、E1,使用外部控制门,且TRx=1 当P3.2(P3.3)为高时启动定时器, P3.2(P3.3)为T0、T1运行外部控制引脚。,6.2.1 T0、T1的特殊功能寄存器,GATE0,禁止外部信号控制定时器/计数器。 C/T定时或计数方式选择位 C/T0,为定时器;C/T1,为计数器 计数采样:CPU在每机器周期的S5P2期间,对计数脉冲输入引脚进行采样。 若前一机器周期采样值为1,下一机器周期采样值为0,则计数器增1,即下降沿计数。,6.2.1 T0、T1的特殊功能寄存器,M1、M0工作模式选择位。,6.2.1 T0、T1的特殊功能寄存器,2. T0、T1控制寄存器TCON,TF1、TF0:T

6、1、T0的溢出标志位 计数溢出,TFx=1。 中断方式:自动清零; 查询方式:软件清零。,6.2.1 T0、T1的特殊功能寄存器,TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。 注意: GATE=1 ,TRx与P3.2(P3.3)的配合控制。 IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位,6.2.2 T0、T1的工作模式,MCS-51的T0、T1共有4种工作模式,前三种模式下两个定时器/计数器工作原理是相同的,只有模式3下两者才有差别。以下主要以T0为例进行介绍,T1类似。,模式0与模式1 的区别仅仅是计数器的位数不同,

7、前者是13位,后者是16位,其它完全相同,现在一般都不使用模式0,故不讲。 当设置M1M001时,选择模式1,为16位定时器/计数器。 模式1原理结构 模式1原理结构由4部分构成(下页图): 信号源 运行控制 计数器 溢出标志,1模式1,6.2.2 T0、T1的工作模式,6.2.2 T0、T1的工作模式,图6-6 T0模式1原理结构,6.2.2 T0、T1的工作模式,信号源 C/T设为1,为计数器,用P3.4引脚脉冲 C/T设为0,为定时器,用内部脉冲 运行控制 GATE=1,由外部信号控制运行 此时应该设置TR0=1 P3.2引脚为高电平,T0运行 GATE=0,由内部控制运行 TR0设置为

8、1,T0运行,6.2.2 T0、T1的工作模式,计数部件 由TL0、TH0组成,是一个16位的加法计数器,对送来的脉冲进行计数,计数溢出后输出由低变高,设置溢出标志。 溢出标志:TF0。 当计数部件溢出后对其置1,向CPU 请求中断。 模式1定时时间的计算公式如下: 定时时间=计数值机器周期 =(216 - 定时初值)振荡周期12 最大定时时间(初值为0时)为: 216 振荡周期 12。,2模式2,6.2.2 T0、T1的工作模式,M1 M0 10时,选择模式2,为8位定时器/计数器,且初值自动重装。 模式2原理结构 原理结构如下页图所示,由4部分构成: 信号源 运行控制 计数器 溢出标志 在

9、能够满足计数要求时,尽可能地选择模式2。,图6-7 T0(T1)模式2原理结构 8位初值自动重装,6.2.2 T0、T1的工作模式,M1 M0 11,选择模式3。逻辑结构如图6-8和6-9所示: 结构: TL0、TH0分为两个独立的8位计数器 TL0: 8位定时器/计数器 使用T0所有的资源和控制位 TH0:8位定时器 使用T1所有的资源(中断向量、中断控制ET1、PT1)和控制位 (TR1、TF1),6.2.2 T0、T1的工作模式,3模式3,图6-8 模式3下T0的原理结构图,6.2.2 T0、T1的工作模式,T0模式3时T1的工作模式 T1可以模式0模式2工作。 T1的结构如图6-9所示

10、 由于TF1及中断矢量被TH0占用,所以T1仅用作波特率发生器或其它不用中断的地方。 T1作波特率发生器,其计数溢出直接送至串行口。设置好工作方式,串行口波特率发生器开始自动运行。 TMOD中T1的M1M0=11,T1停止工作,因为T1没有模式3。,6.2.2 T0、T1的工作模式,图6-9 T0模式3时T1的原理结构,6.2.2 T0、T1的工作模式,6.2.3 T0、T1的使用方法,T0、T1各有两种功能(定时/计数)、4种或3种工作模式,如何选择其功能和工作模式,是使用T0、T1编写程序需要首先解决的问题。 1.选择定时和计数概念 如果需要对单片机外部输入的脉冲进行计量,则选择计数功能(

11、如统计产品数量、轮子转到周数(每周产生的脉冲数目一定)、液滴的数目等); 否则选择定时功能(如定时启动/停止机器运转、定时打开/关闭阀门、产生方波、产生某种频率的声音等)。,6.2.3 T0、T1的使用方法,2.选择工作模式 (1)计算计数值N 1)计数情况 需要计的数N往往是给定的,如计100个数、200个数等。 2)定时情况 在这种情况下往往给出的是定时的时间t 根据定时器每个机器周期计1个数的规律,则计数值N与定时时间t、机器周期TMC、晶振频率fosc的关系如下: t = N TMC 、 TMC = 12/fosc N = t / TMC = t fosc /12 (公式6-1),6.

12、2.3 T0、T1的使用方法,(2)确定工作模式 如果N256,则选择模式1;否则选择模式2,或者选择模式3。首选模式2。 3计数初值X的计算 计数初值X = 最大计数值 - 计数值N (公式6-2) 计数初值和工作模式有关,即与计数位数有关: 模式1:16位计数,N=65536,(216) 模式2:8位计数,N=256,(28) 模式3:8位计数,N=256,(28),6.2.3 T0、T1的使用方法,4什么情况下选择模式3 模式3是在系统既需要波特率发生器,又需要多个定时器/计数器,而且计数值都比较小(N256)的情况下使用。 这时定时器/计数器T1作为波特率发生器,定时器/计数器T0分为

13、两个8位定时器,或者分成的两个其中一个作8位定时器、另一个8位计数器使用。,6.2.3 T0、T1的使用方法,5使用T0、T1编程的方法步骤 计算计数值N。 确定工作模式。 计算定时或计数的初值X。 编写初始化程序: 设置TMOD,设置TLx和THx,(需要时开T0、T1中断和总中断),设置TRx启动运行。 编写T0、T1的应用程序。 前3项为编写初始化程序的准备,称之为初始化准备。,6.2.3 T0、T1的使用方法,6在运行中读取TLx、THx的方法 在T0、T1运行情况下,TLx和THx中的值在变化,读的期间有可能进位,读出的数据不正确。正确的读取方法如下: do xh=THx; xl=T

14、Lx; while(xh!=THx); 程序中的xl、xh为已经定义过的无符号字符型变量。,6.2.3 T0、T1的使用方法,例6-1 对89C52单片机编程,使用定时器/计数器T0以模式1定时,以中断方式实现从P1.0引脚产生周期为1000s的方波。设单片机的振荡频率为12MHz。 分析与计算 (1)方波产生原理 将T0设为定时器,计算出合适的初值,定时到了之后对P1.0引脚取反即可。 (2)选择工作模式 计算计数值N,P1.0,6.2.3 T0、T1的使用方法,定时时间t: 周期为1000s的方波要求 t =周期/2 = 1000/2 = 500(s) 对应计数值:N = t/机器周期 =

15、 500/1 = 500 N=500256,所以选择模式1。 模式字: TMOD=0000 0001B = 0x01 (3)计算初值X X = 65536 N = 65036 = 0xfe0c,方波周期T,定时时间t,6.2.3 T0、T1的使用方法,C语言程序: #include /包含特殊功能寄存器库 sbit P1_0=P10; /定义位变量 void main( ) TMOD=0x01; /T0用模式1、定时 TL0=0x0c; TH0=0xfe; /设置定时器的初值 ET0=1; /允许T0中断 EA=1; /允许CPU中断 TR0=1; /启动定时器 while(1); /等待中断

16、 ,6.2.3 T0、T1的使用方法,void time0_int(void) interrupt 1 /中断服务程序 TL0=0x0c; TH0=0xfe; /定时器重赋初值 P1_0=P1_0; /P1.0取反,输出方波 汇编语言程序: ORG 0000H SJMP MAIN ORG 000BH ;T0中断入口地址 LJMP INT_T0,6.2.3 T0、T1的使用方法,MAIN: ;主程序 MOV SP,#0DFH ;设置堆栈指针 MOV TMOD,#01H ;T0模式1定时 MOV TL0, #0CH ;设置定时初值 MOV TH0, #0FEH SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待T0中断 INT_T0: ;中断服务程序 MO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号