1 / 28

第 8 章 单片机的 定时 / 计数器

第 8 章 单片机的 定时 / 计数器. 第二部分 微机原理. 主讲教师:喻红. 主要内容. 概述 8.1 定时 / 计数器的结构和工作原理 8.2 定时 / 计数器的寄存器 8.3 定时 / 计数器的工作方式 8.4 定时 / 计数器的应用程序设计. 计数器. 输入脉冲. 预置数. 概述. 实现定时一般有三种方法: 利用软件实现(延时程序) ; 优点: 简单,控制方便; 缺点: CPU 效率低。 硬件实现,专门设计一个单稳态定时器 优点: CPU 效率高; 缺点: 修改参数麻烦。 利用计数器实现. 1us. 8 位.

baylee
Télécharger la présentation

第 8 章 单片机的 定时 / 计数器

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. 第8章 单片机的定时/计数器 第二部分 微机原理 主讲教师:喻红

  2. 主要内容 概述 8.1 定时/计数器的结构和工作原理 8.2 定时/计数器的寄存器 8.3 定时/计数器的工作方式 8.4 定时/计数器的应用程序设计

  3. 计数器 输入脉冲 预置数 概述 实现定时一般有三种方法: • 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 • 硬件实现,专门设计一个单稳态定时器 优点:CPU效率高;缺点:修改参数麻烦。 • 利用计数器实现 1us 8位 256us 溢出 计算机一般利用第三种方法实现

  4. 机器周期 T0 片内计数器 外来脉冲 单片机 8051内部设有两个16位的定时器/计数器,可用软件控制。 定时器:对机器周期计数,每过一个机器周期,计数器内容加1 ; 计数器:对外来脉冲进行计数,T0、T1引脚上从高电平到低电平跳变时,计数器内容加1。

  5. 8.1 定时/计数器的结构和工作原理 一、定时/计数器的结构

  6. C/T=0 最短的定时周期=12/fosc 二、定时/计数器工作原理 1.定时方式

  7. 2.计数方式 C/T=1 要求:计数频率≤fosc/24,输入脉冲的高电平与低电平的持续时间在一个机器周期以上。

  8. 8.2 定时/计数器的寄存器 GATE M1 M0 GATE C/T* M1 M2 C/T* 7 6 5 4 3 2 1 0 1.定时/计数器方式寄存器TMOD TMOD 89H T1控制 T0控制 • GATE:门控信号。GATE=0,TR0=1时刻启动定时/计数器工作,是自启动方式;GATE=1,TR0=1,/INTO=1时才可启动定时/计数器工作,使外启动方式。 • C/T*:定时、计数选择位。 C/T*=1,计数工作方式; C/T*=0,定时工作方式。

  9. GATE M1 M0 GATE C/T* M1 M2 C/T* 7 6 5 4 3 2 1 0 TMOD 89H T1控制 T0控制 • M1M0:工作方式选择位。定时/计数器的4种工作方式由M1M2设定。 M1M0=00 工作方式0(13位方式) M1M0=01 工作方式1(16位方式) M1M0=10 工作方式2(8位自动装入计数初值方式) M1M0=11 工作方式3(T0为2个8位方式)

  10. TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 7 6 5 4 3 2 1 0 2.定时器控制寄存器TCON T1溢出中断标志 T1起/停控制位 TCON A8H 外部中断INT1触发方式控制位 外部中断INT1中断标志位

  11. 8.3 定时/计数器的工作方式 一、工作方式0 T0和T1工作在13位的定时/计数器方式,由TH的高 8 位和TL的低 5 位组成。

  12.   方式0的计数长度:M = 213   方式0的初值:13位二进制数(高8位赋值给TH0,低5位前面补足3个0凑成8位赋给TL0)。   例如,如要求计数值为1000,则初值为 x=M-1000=8192-1000    =1C18H=1 1100 000 1 1000B   则赋初值时,TH0=0E0H,TL0=18H。

  13. 二、工作方式1   方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作在方式1时是16位的计数/定时器。   方式1时的计数长度M是2的16次方。16位的初值直接拆成高低字节,分别送入TH和TL即可。

  14. 三、工作方式2 工作方式2具有自动重装载功能,它将16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器。初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,由预置寄存器TH0以硬件方法自动给计数器TL0重新加载。

  15. 四、工作方式3   在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和TH0。

  16. TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TL0既可以作计数器使用,也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。 • TH0只能作为简单的定时器使用,借用定时/计数器1的控制位TR1和TF1。 •  定时/计数器1只能工作在方式0、方式1或方式2下,如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR1=0。 • T0处于方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。

  17. (1)T1工作在方式0 (2)T1工作在方式1

  18. (3)T1工作在方式2

  19. 8.4 定时/计数器的应用程序设计 一、计算定时/计数初值 计数方式: 定时方式: 其中: N与工作方式有关: 方式0时,N=13; 方式1时,N=16; 方式2、3时,N=8。 机器周期与主振频率有关:机周时间=12/fosc fosc=12MHZ时,1机周=1S; fosc=6MHZ时,1机周=2S。

  20. 【例】 已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式0、方式1、方式2、方式3时的定时初值。 解:(1)工作方式0: 213–500S/2S=8192-250=7942=1F06H 1F06H化成二进制: 1F06H=0001 1111 0000 0110B =000 1111100000110 B 其中:低5位00110前添加3位000送入TL0 TL0=000 00110B=06H; 高8位11111000B送入TH0 TH0=11111000B=F8H。

  21. (2)工作方式1: T0初值=216-500s/2s=65536–250=65286=FF06H TH0=FFH;TL0=06H。 (3)工作方式2: T0初值=28-500s/2s=256-250=6 TH0=06H;TL0=06H。 (4)工作方式3: T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入TL0,另一个装入TH0。因此: TH0=06H;TL0=06H。   从上例中看到,方式0时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式1,且方式0计数范围比方式1小,方式0完全可以用方式1代替,方式0与方式1相比,无任何优点。

  22. 二、定时/计数器应用步骤 (1)合理选择定时/计数器工作方式 (2)计算定时/计数器定时初值(按上述公式计算) (3)编制应用程序 ①定时/计数器的初始化   包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。 ②正确编制定时/计数器中断服务程序   注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。

  23.   如图所示,P1中接有八个发光二极管,编程使八个管轮流点亮,每个管亮100ms,设晶振为6MHz。  如图所示,P1中接有八个发光二极管,编程使八个管轮流点亮,每个管亮100ms,设晶振为6MHz。

  24. 分析 利用T1完成100ms的定时,当P1口线输出“1” 时,发光二极管亮,每隔100ms”1”左移一次,采用定时方式1,先计算计数初值: MC=2μs 100ms/2μs =50000=C350H (C350H)补=10000H-C350H=3CB0H

  25. ①查询方式如下: ORG 0030H MOV A,#01H:置第一个LED亮 NEXT:MOV P1,A MOV TMOD,#10H ;T1工作于定时方式1 MOV TH1,#3CH MOV TL1,#0B0H; 定时100ms SETB TR1 AGAI:JBC TF1,SHI; 100ms到转SHI,并清TF1 SJMP AGAI SHI:RL A SJMP NEXT

  26. ②中断方式 ORG 0000H AJMP MAIN ;单片机复位后从0000H开始执行 ORG 001BH AJMP IV1 ;转移到IV1 ORG 0030H ;主程序 MAIN:MOV A,#01H MOV P1,A ;置第一个LED亮 MOV TMOD,#10H ;T1工作于定时方式1 MOV TH1,#3CH MOV TL1,#0B0H ;定时100ms SETB TR1 ;启动T1工作 SETB ET1 ;允许T1中断 WAIT:SJMP WAIT ;等待中断

  27. IV1:RL A ;中断服务程序,左移一位 MOV P1,A ;下一个发光二极管亮 MOV TH1,#3CH MOV TL1,#0B0H ;重装计数初值 RETI ;中断返回 以上程序进入循环执行,八个LED一直循环轮流点亮。

  28. 本章结束

More Related