单片机课程课件定时器

上传人:E**** 文档编号:92633074 上传时间:2019-07-11 格式:PPT 页数:35 大小:252.50KB
返回 下载 相关 举报
单片机课程课件定时器_第1页
第1页 / 共35页
单片机课程课件定时器_第2页
第2页 / 共35页
单片机课程课件定时器_第3页
第3页 / 共35页
单片机课程课件定时器_第4页
第4页 / 共35页
单片机课程课件定时器_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《单片机课程课件定时器》由会员分享,可在线阅读,更多相关《单片机课程课件定时器(35页珍藏版)》请在金锄头文库上搜索。

1、2 MCS-51的定时器/计数器,在单片机实时应用系统中,有定时和对外部事件计数的功能 。 定时:对周期已知的脉冲信号计数 计数:对外部事件计数,对周期未知的外来脉冲信号计数 定时方法: 采用软件:占用CPU的时间,降低了CPU的使用效率; 定时或计数方法: 采用专门的硬件电路,参数调节不便; 采用可编程的定时器/计数器是最好的方法。 可以方便灵活地修改定时或计数的参数或方式 与CPU并行工作,大大提高了CPU的工作效,2.1 定时器/计数器的组成 Timer/ Counter,MCS-51单片机内部有二个16位的可编程的定时器/计数器: 定时器/计数器0(T/C0) 定时器/计数器1(T/C

2、1) 它们都有定时和对外部事件计数的功能,可用于定时控制、延时、对外部事件检测和计数等场合.,T/C0和T/C1的结构及与CPU的关系如图6-4所示。,结构组成: T/C0由两个8位的TH0(8CH)和TL0(8AH)组成 T/C1由TH1(8DH)和TL1(8BH)组成 软件设置: 计数初值: 对TH1、TL1 、TH0、和TL0的初始化编程 工作方式: 通过TMOD和 TCON对每个T/C设置定时或计数 特殊功能寄存器 TMOD(Timer Mode Register) TCON(Timer Control Register ) THx 存放计数初值的高8位 TLx 存放计数初值的低8位,

3、定时器/计数器(T/C0和T/C1)的组成,T/C0和T/C1都是16位的加1计数器,方式0,方式1,方式2,方式3,TH0,TL0,T/C1,TH1,TL1,T/C0,方式3 串行口 波特率发生器,共同点:都是通过计数器计脉冲的个数来实现的,定时方式与计数方式的主要区别,1、定时方式 T/C计数8051内部机器周期信号的个数 ,由计数个数可以计算出定时时间 。 每个机器周期使T/C的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时间到 。 f=12MHz, 一个机器周期是1 s,2、 计数方式 T/C计数来自引脚T0(P3.4)和T1(P3.5)的外部脉冲信号的个数。 输入脉冲由

4、1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。 最高计数频率为振荡频率的1/24。 即计数周期=2机器周期。,不同点:,5.2.1 定时器/计数器的控制,定时器/计数器的工作由TCON和TMOD控制 由软件把控制字写入TCON和TMOD,用来设置T/C0和T/C1的工作方式和控制功能。 当8051系统复位时,TCON和TMOD所有位都被清0。 一、工作模式寄存器TMOD(89H) TMOD用于控制T/C0和T/C1的工作模式,其各位的定义格式如下:,其中,低4位用于T/C0,高4位用于T/C1。各位功能如下:,3GATE 门控位(控制启动方式) GATE0时,T

5、/C的启动只要用软件使TR0(或TR1)置1即可,而不管/INT0(或/INT1)的电平是高还是低。 GATE1时,只有/INT0(或/INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才启动T/C工作。 也就是T/C的启动受双重控制。 注意:TMOD不能位寻址,只能由字节设置T/C的工作方式, 低半字节设定T/C0,高半字节设定T/C1。,二、 控制寄存器 TCON(88H) 控制寄存器 TCON除可字节寻址外,各位还可位寻址。各位定义及格式如下:,1) TF1(TCON.7) T/C1的溢出标志位。 当T/C1被允许计数后,T/C1从初值开始加1计数,回零时由高位产生溢出,由硬件自

6、动置TF1为“1”,并向CPU请求中断,当CPU响应并进入中断服务程序后,TF1又被硬件自动清0。TF1也可以由程序查询和清0。 2)TF0(TCON.5) T/C0溢出标志位。其功能同TF1。,3) TR1(TCON.6) T/C1运行控制位。 由软件置位或复位。 当GATE(TMOD.7)为0时, TR1 为1时,启动T/C1计数; TR1为0时, 停止T/C1计数。 4) TR0(TCON.4) T/C0运行控制位。 其功能同TR1,只是GATE 为TMOD.3。 5) IE1、IT1、IE0、IT0(TCON.3TCON.0) 外部中断INT1、INT0的中断标志位和申请信号的触发方式

7、控制位。,5. 2. 3 定时器的四种工作方式, TMOD中控制位C/T设置定时或计数功能 M1、M0位的设置选择四种工作方式, 即方式0、方式1、方式2和方式3 方式0、1和2时,T/C0和T/C1的工作相同; 方式3时,T/C0和T/C1的工作不同。,方式0 高8位和低5位的一个13位计数器的运行方式 当TL1的低5 位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过查询TF1是否置位来判断TH1是否回零溢出。,启动控制 BTR1A TR1(INT1+GATE ),举例:利用GATE位测正脉冲的宽度,方式1 方式1是一个16为定时器/计

8、数器,见图6-7。 方式1的结构几乎与方式0完全一样,唯一的差别是:方式1中的TH1(TH0)和TL1(TL0) 均是8位的,构成16位计数器。,方式2 在方式2时,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C,如图6-8所示。,每当它计满回零时 一方面向CPU发出溢出中断请求, 另一方面从TH1(或TH0)中重新获得初值并启动计数; 也就是CPU 自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。,方式3 方

9、式3下T/C0和T/C1功能就不同了。此时,TH0和TL0按两个独立的8位计数器工作,如图所示。T/C1只能按不中断的方式工作,常常利用它的定时功能作串行口波特率发生器,如图所示。 T/C0方式3时,TL0占用了T/C0的C/T、GATE、TR0、TF0、T0(P3.4)和INT0控制引脚 。 TH0只有简单的内部定时功能,它占用了T/C1的TR1控制位和TF1中断标志位,其启动/关闭仅受TR1控制。,在T/C0工作在方式3时,T/C1仍可设置为方式02。 由于TR1和TF1已被T/C0(TH0)占用,计数开关已被接通,此时仅用T/C1的C/T来切换其定时或计数工作方式就可使T/C1工作。 计

10、数器(8位、13位或16位)回零溢出时,只能将输出送入串行口或用于不需要中断的场合。 一般情况下,当T/C1用作串行口波特率发生器时,T/C0才设置为工作方式3。 此时,常把T/C1设置为方式2用作波特率发生器,见图6-10,5.2.3 T/C的初始化 1. 初始化的步骤 MCS-51内部的T/C是可编程的,其工作方式和模式通过程序进行设定和控制,称为对T/C的初始化。初始化的步骤是: 1) 确定工作方式,即根据题目要求先给TMOD送一个方式控制字。 2)计算计数初值/定时初值,并写入TH0、TL0或 TH1、TL1中。 3)根据需要,置位EA使CPU开放中断,同时置位ETx允许T/C中断。I

11、P设定中断优先级。 4) 给TCON送命令控制字,即置位TRx启动T/C计数。,2计数器初值的计算 T/C在计数模式下,计数之前必须给它的计数器TH0、TL0或TH1、TL1选送计数初值。T/C的计数器是在计数初值的基础上加1计数的,当计数器回“0”时自动产生溢出,置位TFx中断标志,向CPU 提出中断请求。 设需要计数器计数的个数为 X,计数初值为C,由此可得出如下计算计数初值的通式: 计数初值: C M - X (61) 式中,M为计数器的模值,该值和计数器的工作方式有关。 当方式0时 M 当方式1时 (62) 当方式2、3时,3定时器初值计算 在定时模式下,计数器对单片机振荡频率fosc

12、经12分频后的机器周期进行加1计数,用X表示计数个数,M表示模,C表示定时初值, Tcy表示机器周期,则 1 Tcy 12/fosc,因此, 定时时间T的计算公式为: T XTcy ( M-C)Tcy (63) 定时初值公式为: C M - T/ Tcy (64) 定时器的溢出率 1/T fosc/(12X) fosc/(12 (M-C) (65) 应用举例1 举例2 GATE,例6-2 利用T/C0方式0产生1ms的定时,在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc 12MHZ。 解: (1)确定T/C0的工作方式 要在P1.0输出周期为2ms的方波,只要使P10每隔1m

13、s取反一次即可。 (2)送T/C0的方式控制字 (TMOD)00H,即T/C0定时,方式0,只由TR0启动,因为T/C1不用,高4位取0。即: GATE C/T M1 M0 GATE C/T M1 M0 0 0 0 0 0 0 0 0 TR0 定时 方式0 , T/C1不用各位均取0 启动,(3)计算定时初值 Tcy12/fosc12/(12106 )S1s 计数个数 : X1ms/1s1000 定时初值: C( -X) 8192-1000 7192D 1C18H 11100000 11000B 高8位0E0H 低5 位18H TH0初值为0E0H,TL0初值为18H 。 若采用方式1,16位

14、,则 定时初值: C 65536-1000 64536 FC18H TH0初值为0FCH,TL0初值为18H,(4) 编程方法 可以采用中断或查询两种方式编写程序。 1) 中断方式: 当T/C0定时溢出时,TF0被置1,申请中断。编程使CPU采用响应中断方式输出方波效率比较高。 程序清单:,ORG 0000H AJMP MAIN ; 转到主程序MAIN ORG 000BH AJMP TC0S ; 转到T/C0的中断服务程序TC0S 主程序: ORG 1000H MAIN: MOV SP,#6FH MOV TMOD ,#00H ;置T/C0为方式0,定时。 MOV TH0,#0E0H ;送计数初

15、值 MOV TL0,#18H SETB ET0 ;T/C0允许中断 SETB EA ;CPU开中断 SETB TR0 ;启动T/C0定时 HERE: SJMP HERE ;等待中断 中断服务程序: ORG 1200H TC0S: MOV TH0,#0E0H ;重新装入计数初值 MOV TL0,#18H CPL P1.0 ;输出方波 RETI ;中断返回 END,ORG 0000H MOV TMOD,#00H MOV TH0,#0E0H MOV TL0,#18H SETB TR0 LOOP:JBC TF0,DO1 SJMP LOOP DO1:MOV TH0,#0E0H MOV TL0,#18H CPL P10 SJMP LOOP END,2) 查询方式: 还可以使CPU采用查询TF0的方式处理T/C0定时溢出,编程简单,但效率较低。 程序中查询采用JBC TF0,DO1 指令,目的是当判到TF01后,必须用软件复位TF0,为下次计数器回零溢出做好准备,这条指令具有判TF0为1后清零的双重功能。,例6-5 利用GATE门控位测量从INT1引脚输入的正脉冲宽度。解:1. 确定工作方式 (1)送方式控制字

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

当前位置:首页 > 高等教育 > 其它相关文档

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