1 / 17

第六章  MCS-51 单片机定时器 / 计数器

第六章  MCS-51 单片机定时器 / 计数器. 概述 第一节 定时器 / 计数器结构和工作方式 第二节 定时器 / 计数器的编程应用举例. 概 述. 定时器/计数器是 MCS - 51 单片机的重要功能模块之一。在检测、控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。 MCS - 51 单片机内有 3 个定时器/计 数器 T0 、 T1 和 T2 ;本章主要介绍 MCS - 51 的原理、结构、工作方式及应用。. 脉冲. +1 计数器. 溢出.

Download Presentation

第六章  MCS-51 单片机定时器 / 计数器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 MCS-51单片机定时器/计数器 • 概述 • 第一节 定时器/计数器结构和工作方式 • 第二节 定时器/计数器的编程应用举例

  2. 概 述 • 定时器/计数器是MCS-51单片机的重要功能模块之一。在检测、控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。MCS-51单片机内有3个定时器/计 • 数器T0、T1和T2;本章主要介绍MCS- • 51的原理、结构、工作方式及应用。

  3. 脉冲 +1计数器 溢出 中断 控制 开关 实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1。 计数的脉冲如果来源于单片机内部的晶振,由于其周期极为准确,这时称为定时器。计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器。 • MCS-51 计数/定时器的原理

  4. P3.4 P3.5 第一节 定时器/计数器结构 和工作方式 • 一、定时器/计数器0,1的结构

  5. T0 T1 • 一、定时器方式控制寄存器TMOD 1)功能选择位C/T: =0,定时功能,计数内部机器周期脉冲; =1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0: 3)门控方式选择位GATE 计数器启动方式的选择 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#0D2H ; 1101 0010 B

  6. 三.定时器/计数器控制寄存器TCON (1)定时器/计数器1运行控制位TR1(TCON.6) (2)定时器/计数器溢出中断标志TF1(TCON.7),当定时器/计数器1溢出时由硬件自动置TF1=1,在中断允许的条件下,便向CPU发出定时器/计数器1的中断请求信号,CPU响应后TF1由硬件自动清零。在中断屏蔽条件下,TF1可作查询测试用。 TF1也可以用程序置位或清零,例如执行指令SETB TF1后TF=1。这就是说,定时器/计数器1的中断请求还能用程序安排产生,这称为软件中断。 在定时器/计数器1工作时,CPU可以随时查询TF1的状态。 (3)定时器/计数器0运行控制位TR0(TCON.4) (4)定时器/计数器0溢出中断标志TF0(TCON.5)

  7. 四、工作方式 一、方式0 • 13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器,此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不用方式0.方式0的全部功能,方式1都可以代替。

  8. 可用程序将0-8191(213-1)的某一数送入TH0、TL0作为初值。TH0、TL0从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。可用程序将0-8191(213-1)的某一数送入TH0、TL0作为初值。TH0、TL0从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。 • 当对外部事件计数时,外部计数脉冲的频率应小于fosc/24,且高电平与你电平的延续时间均不得小1个机器周期。计数值由式 N=8192-x 计算(x为初值) • 对内部机器周期计数即为定时,定时时间由式 • T=(8192-x)Tcy计算

  9. 二、方式1 16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:1~65536(216),最长定时时间(晶振12MHz T=1s):1s ~ 65536×T= 65.54ms 非门控方式:当GATE=0, 控制权由 TRx 决定 TRx=1 计数开始 TRx =0 计数停止 门控方式:当GATE=1、TRx=1 控制权由 INTx 决定 INTx=1 计数开始 INTx =0 计数停止

  10. 三、方式2 用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(晶振12MHz时 T=1s): 256s • 自动恢复初值8位定时/计数器。TLx为8位加1计数器, • THx为8位初值暂存器。

  11. 四、方式3 • T0分成2个8位定时器:TL0定时/计数器和TH0定时器 • TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制 • 位:TR1。T1不能使用方式3工作。

  12. 第二节 定时器/计数器的编程应用举例 • 一、定时器/计数器的初始化 • 1.初始化的步骤 • (1) 确定工作方式、操作模式、启动控制方式——写入TMOD寄存器。 • (2) 设置定时器或计数器的初值——可直接将初值送入TH0、TL0或TH1、TL1中,16位计数初值必须分两次写入对应的计数器。 • (3)根据要求是否采用中断方式——直接对I E寄存器赋值。开放中断时,将对应的中断允许位置1,采用程序查询方式IE应将对应的中断允许位清0,进行中断屏蔽。 • (4)启动定时器工作——可使用SETB TR0、SETB TR1和SETB TR2指令启动。对于T0和T2而言,可根据GATE的设置有两种启动。

  13. 2.计数初值的计算 • 当计数器使用时,初值X的计算式为: • X=M-计数值 • 当定时器使用时,初值的计算式为: • X=M-计数值=M-T/TCY • 式中:TCY --为机器周期, • T --为要求定时的时间。 • M 由工作方式决定 • 例如:MCS-51的主频为6MHz,要求产生1ms的定时,试计算计数初值X。若设置定时器工作于操作模式1,定时1ms,则计数初值X等于:

  14. 3. 定时器初始化举例 • 例6-1 已知振荡器振荡频率fosc=12MHz,要求定时器/计数器0产生10ms定时,试编写初始化程序。 • 解:由于定时时间大于8192us,应选用工作方式1。 • (1)TH0、TL0初值的计算由于Tcy=1μs,故有 • T=(65536-x)Tcy=(65536-x)×1μs=10ms • 得x=55536=D8F0 即TH0=D8H,TL0=F0H • (2)方式寄存器TMOD的编程 • (3)初始化程序 • START:MOV TL0,#0F0H • MOV TH0,#0D8H • MOV TMOD,#01H • SETB TR0

  15. 1ms 二、定时器的应用举例 源程序如下: ORG 8000H MOV TL0,#06H MOV TH0,#0F8H SETB TR0 LP1:JBC TF0,LP2 ; AJMP LP1 LP2:MOV TL0,#06H MOV TH0,#0F8H CPL P1.2 SJMP LP1 • 1. 模式0的应用 • 例6-3 选用T0操作模式0,用于定时,由P1.2输出周期为1ms的方波,设晶振fosc=6MHz。采用查询方式编程。 • 解:确定用T0定时500μs。设X为时间初值 • X=213-fosc×t/12=8192-6×500/12=7942=1F06H • 由于作13位计数器使用,TL0的高3位未用,应填0,TH0占高8位,所以13位的二进制表示值应为: • X0=1111100000110B, • TL0=06H,只用到5位,TH0=F8H • 设置模式控制字 • TMOD:00000000 00H 000

  16. 例P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为12MHz。 长定时方法:增加一个软件计数器(如R7), 记录中断 次数,计满n个中断为1秒。 ORG 0000H AJMP MAIN ORG 001BH AJMP PT1INT ORG 0030H START:MOV R7,#00H MOV TMOD,#10H MOV TL1, #0F0H MOV TH1, #0D8H SETB EA SETB ET1 SETB TR1 HERE: SJMP HERE PT1INT: MOV TL1,#0F0H MOV TH1,#0D8H INC R7 CJNE R7,#10, PEND MOV R7, #00H CPL P1.7 PEND: RETI

  17. 本章学习结束!

More Related