1 / 45

第三章 可编程定时器 8253

第三章 可编程定时器 8253. 3.1 8253 的工作原理 3.2 8253 的应用举例. 3.1 8253 的工作原理. 一、 8253 的内部结构和引脚信号 二、初试化编程和门控信号的功能 三、 8253 的工作方式. 一、 8253 的内部结构和引脚信号. 功能: 可编程的定时 / 计数器 内部有 3 个 16 位功能相同独立计数器通道 每个计数器可工作在 6 种方式 计数频率 8253 ( 2MHZ ), 8254 ( 5MHZ ). 内部结构. 数据总线缓冲器. CLK0 GATE0 OUT0. 通道 0. D0~D7.

Download Presentation

第三章 可编程定时器 8253

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. 第三章 可编程定时器8253 • 3.1 8253的工作原理 • 3.2 8253的应用举例

  2. 3.1 8253的工作原理 一、8253的内部结构和引脚信号 二、初试化编程和门控信号的功能 三、8253的工作方式

  3. 一、8253的内部结构和引脚信号 • 功能: 可编程的定时/计数器 内部有3个16位功能相同独立计数器通道 每个计数器可工作在6种方式 计数频率8253(2MHZ),8254(5MHZ)

  4. 内部结构 数据总线缓冲器 CLK0 GATE0 OUT0 通道0 D0~D7 CLK1 GATE1 OUT1 RD WR A0 A1 CS 读/写 控制 电路 通道1 CLK2 GATE2 OUT2 控制字寄存器 通道 2 内部总线

  5. 数据总线缓冲器:用于8253和CPU传送数据信息 信息有:CPU向8253写入的控制字 CPU向8253写入的计数初值 从计数器读出的计数值

  6. 读/写控制逻辑:用于接受CPU送来的控制信号 CS片选信号,低电平有效,表示8253被选中。 RD读信号,低电平有效,表示CPU正在读取选定 的计数器通道中的内容。 WR写信号,低电平有效,表示CPU正在将计数初 值写入指定的通道或将控制字写入控制字寄存器。 A1A0 端口选择信号,用于选择8253内部3个计数器 通道和控制字。

  7. 计数器0~2 定时时间=时钟脉冲周期*预置计数初值N 控制 寄存器 计数初值 寄存器 计数 工作单元 输出 锁存器 控制逻辑 状态 锁存器 CLK GATE OUT

  8. 控制字寄存器:是一种只写寄存器,由CPU向它 写入控制字,规定各计数器通道工作方式,读写 格式、计数进制。 SC1 SC0 RL1 RL0 M2 M1 M0 BCD 1 BCD码计数 0 2进制计数 00 通道0 01 通道1 10 通道2 000 方式0 001 方式1 X10 方式2 X11 方式3 100 方式4 101 方式5 00 计数器锁存,供CPU读取 01 只读/写计数器低字节 10 只读/写计数器高字节 11 先读/写低字节, 再读/写低字节

  9. 二、初试化编程和门控信号的功能 • 8253的初始化编程步骤 *写入控制字 *写入计数初值

  10. 假如某微机系统,8253的3个计数器的端口分别 为3F0H,3F2H,3F4H,控制字的端口地址为 3F6H,要求8253的通道0工作于方式3,写入计 数初值1234H MOV AL,00110111B MOV DX,3F6H OUT DX,AL MOV AL,34H MOV DX,3F0H OUT DX,AL MOV AL,12H OUT DX,AL

  11. 门控信号控制功能 工作方式 GATE为低电平或下降沿 GATE上升沿 GATE高电平 方式0 禁止计数 —— 允许计数 从初值开始计数, 方式1 —— 下一个时钟输出 —— 变为低电平 方式2 禁止计数,输出变高 从初值开始计数 允许计数 方式3 禁止计数,输出变高 从初值开始计数 允许计数 方式4 禁止计数 —— 允许计数 方式5 —— 从初值开始计数 ——

  12. 三、8253的工作方式 • 方式0——计数结束中断方式 写入方式字后,OUT信号变低,写入计数初值后,下一个 脉冲开始计数,计到终点(0),OUT信号变高(作为中断 请求信号)。计数过程中,GATE信号为高电平 CLK n=4 WRn 4 3 2 1 0 OUT m=3 WRm GATE 3 2 1 0 OUT

  13. 方式1——可编程单稳态输出方式 写入控制字后,OUT信号立即变高,写入计数值后,不立 即计数,由GATE门低到高触发,并在下一 脉冲的下降沿 开始计数,同时OUT信号由高变低,计到0,OUT由低变高 CLK WRn n=4 GATE 4 3 2 1 0 OUT GATE 4 3 2 4 3 2 1 0 OUT

  14. 方式2——比率发生器 写入控制字后,OUT变高,写入计数值后下一个脉冲,开始 计数,计到1,OUT变低,计到0,OUT变高(OUT输出一 个时钟宽度负脉冲),周而复始。 CLK WRn 4 3 2 1 0(4) 3 2 1 0 OUT(n=4) 0(3) 3 2 1 0(3) 2 1 0(3) OUT(n=3) GATE 计数过程中GATE为高,为低时停止计数,低到高时重新计数

  15. 方式3——方波发生器 写入控制字后,OUT变高,写入计数值后下一个脉冲,开始 计数,OUT输出是对称的方波或基本对称的矩形波。 CLK 4 2 4 2 4 2 4 2 4 2 4 2 OUT(4) 5 4 2 5 2 5 4 2 5 2 5 OUT(5) 计数过程中GATE为高,为低时停止计数, 低到高时重新计数

  16. 方式4——软件触发选通 写入控制字后,OUT信号变高,写入计数值后,下一个脉 冲开始计数,计到0,OUT 信号变低,经过一个时钟周期, 回到高电平(OUT形成一个负脉冲) CLK WR 4 3 2 1 0 OUT WR GATE 4 4 3 2 1 0 OUT 计数过程中GATE为高,为低时停止计数,低到高时继续计数

  17. 方式5——硬件触发方式 写入控制字后,OUT信号变高,写入计数脉冲,不立即计 数,由GATE门低到高触发,并在下一 脉冲的下降沿开始计 数,OUT信号为计数值计到0时,产生一个时钟宽度负脉冲 CLK GATE 4 3 2 1 0 OUT(4) GATE 4 4 3 2 1 0 OUT(4)

  18. 启动方式不同 • OUT波形输出不同 • GATE门控制不同

  19. 3.2 8253的应用举例 8253 的典型应用: 1.用8253产生各种定时波形 2.计时器----时钟 3.实现稳定延时 4.和扬声器一起构成发生器 5.波特率时钟发生器

  20. 1.用8253产生各种定时波形 例:假如在8086系统中使用一块8253芯片,通 道的基地址为310H,所用的时钟频率为1MHZ, 要求3个计数通道完成以下功能 通道0工作于方式3,输出频率为2KHZ 通道1产生宽度为480US的负脉冲 通道2用硬件方式触发,计数到输出1CLK负脉冲, 时间常数为26

  21. 8253 8086CPU 1MHZ方波 CLK0CLK1CLK2 M/IO 74LS138 A9A8A7A6A5 G1 +5V GATE0OUT0 2KHZ方波 G2A G2B GATE1 OUT1 480US单脉冲 Y4 A4 A3 A0 CBA CS GATE2OUT2 负脉冲 A1 A0 RDWR A2A1RDWR D7~D0 D7~D0

  22. 各通道时间常数确定 通道0:=1MHZ/2KHZ=500 通道1:=480US/1US=480 通道2:=26

  23. 通道0初试化程序 MOV DX,316H MOV AL,00110111B OUT DX,AL MOV DX,310H MOV AL,00 OUT DX,AL MOV AL,05H OUT DX,AL

  24. 通道1初试化程序 MOV DX,316H MOV AL,01110011B OUT DX,AL MOV DX,312H MOV AL,80H OUT DX,AL MOV AL,04H OUT DX,AL

  25. 通道2初试化程序 MOV DX,316H MOV AL,10011011B OUT DX,AL MOV DX,314H MOV AL,26H OUT DX,AL

  26. 2.用8253设计实时时钟。 (1)要求:统计时、分、秒并放于固定RAM中供CPU显示。 (2)分析: • 需要确定计时单位,假定8253计数器0的时钟为5MHZ。当8253工作在方式3时,可以在OUT引脚上输出周期性的方波,且具有自动重载计数初值的功能。 • 如果用OUT脚输出的方波做新的计时单位,为了编程方便,可以使方波的周期为10ms. • 硬件连接可以选择图3.10的设计。即8253的OUT引脚每经过10ms向CPU申请一次中断。在中断子程序中统计10ms的个数,到达100个则1秒时间到,秒计数器加1。并判断秒计数器的值是否为60,是,则分计数器加1。依次类推,实现时分秒计数器的更新。到达24小时后,所有计数器清零,新的一天的计时开始。

  27. 8254 8259A CPU +5V GATE IRQ0 IR0 INT INTR OUT0 D0~7 D0~7 CLK0 T=10MS INTA 总线控制器 D Q S2 S1 S0 S2 S1 S0 Q 状态=000 CP PCLK

  28. 初始化程序段如下: Count_10ms DB 0 Count_scend DB 0 Count_minut DB 0 Count_hour DB 0 ………. MOV AL,0 MOV Count_10ms,AL;初期上电,RAM MOV Count_scend,AL;清零。 MOV Count_minut,AL MOV Count_hour,AL

  29. MOV DX,307H MOV AL,00110110B OUT DX,AL ;初始化8253 MOV DX,304H MOV AL,50H ;送计数初值低位 OUT DX,AL MOV AL,0C3H ;送计数初值高位 OUT DX,AL

  30. N 中断服务程序: 有启动标志 10MS单元计数 100次到否? 秒单元计数 60次到否? 秒单元清0 分单元计数 60次到否? 分单元清0 返回 N N N

  31. 系统中的日时钟原理介绍: (1)系统中8253的时钟为1.1931816MHZ。 (2)8253工作在方式3,计数初值设为最大-65536。(设选用8253的计数器0) (3)OUT0引脚输出的方波频率:1.1931816MHZ/65536=18.2HZ 周期为1/18.2HZ×1000ms=54.945ms. (4)计时单位: 54.945ms为一个基准单位,且准确。则: 1天=24×60×60×1000ms/54.954ms=1573040(个计时单位); 1小时= 60×60×1000ms/54.954ms=65543(个计时单位); 1分钟= 60×1000ms/54.954ms=1092(个计时单位); 1秒= 1000ms/54.954ms=18.2(个计时单位)

  32. (5)新的计时单位的计数机构: 利用OUT0引脚向8259申请中断,在中断程序 中进行加1操作,实现对新的计时单位的累计,完成对一天计时的任务。 实现方法:在BIOS数据区开辟两个双字的存储单元作为每次加1操作的RAM。则该双字RAM中存放的就是当前的时间。当低位字=00B0H,高位字=0018H时,则计满24小时,然后清零,重新加1操作,开始第二天的计时。 注:如果要得到当前时间要进行下列计算: A、小时数=RAM中的值除以65543; B、分钟数= A的余数除以1092; C、秒数= B的余数再除以18.2

  33. 使用系统时钟 方法1:8253通道0接入8259的IRQ0(类型码为8), 中断服务入口存在0:32起的4字节。 方法2:利用中断类型1CH,系统定时器0的中断处 理程序要调用INT 1CH,1CH的处理程序只有一条 IRET 方法3: 使用DOS 调用( INT 21H 中2CH,2DH) BIOS调用(1AH)

  34. 3.稳定延时 (1)要求:利用系统硬件定时器延时5秒 (2)分析: A、利用定时器每秒中断18.2此速率不变的特性,通过调用BIOS的软中断INT1AH的0号功能,读取时间计数器的当前值。 B、将延时时间换算成计时单位(即多少个54.954ms)加上时间计数器的当前值,作为定时器的目标值。 C、利用INT1AH的0号功能调用,不断读取时间计数器的值并与目标值比较。相等则定时时间到,不等则继续延时。 D、这样延时的好处在于:定时时间与CPU的主频无关,只与8253的时钟频率有关。延时较稳定。

  35. (3)设计 A、利用系统资源,硬件不需改动。 B、软件编程(延时5秒时,折合成计时单位=91) MOV AH,0H INT 1AH ;中断调用,读取日时钟 ADD DX,91 MOV BX,DX REP: MOV AH,0H INT 1AH CMP DX,BX ;与目标值比较 JNZ REP ;不等,继续延时,相等,延时 结束,程序向下执行

  36. 4.发声器 原理还是利用8253的工作方式3,不断输出一定频率的方波,将此方波接至扬声器,控制发声,方波的频率不同,则扬声器的声音频率就不同。

  37. 5.波特率时钟发生器 (1)要求: 设计一个波特率时钟发生器,其输入时钟CIK=1.19318MHz,波特率因子facbr=16,输出的波特率为8档,它们分别是110b/s,150b/s,300b/s,600b/s,1200b/s,2400b/s,4800b/s,9600b/s。要求利用人-机对话方式选择波特率。按Esc键,退出。

  38. (2)分析: A、波特率的概念:每秒钟传输的二进制数的位数。 B、波特率因子 的概念:每传输1位所需要的时钟脉冲个数,叫做波特率因子 。 C、传输原理:在实际传输中,发送1位或接收1位数据,是在时钟脉冲作用下,进行移位来实现的。发送时,用发送时钟,从发送器移出;接收时,用接收时钟,向接收器移入 D、8253定时常数的计算: 由波特率及波特率因子的概念可得: 串行传输的频率TxC=波特率Baud×波特率因子Factor; 设计要求:串行传输的频率TxC=OUT输出的频率,因此有: OUT=CLK/Tc=Baud×Factor; 所以:定时常数Tc=CLK/Baud×Factor 由此可计算出上述8种波特率下的定时常数分别为:678、497、249、124、62、31、16、8。

  39. (3)设计 A、硬件设计:波特率时钟发生器的硬件包括定时/计数器8253、并行接口芯片8255A及I/O端口地址译码电路等,如图3.14所示。 B、软件编程:图3.15

  40. 8253 74LS92 ÷12 OSC CLK2 OUT2 PC 总线插槽 至8251的TXC,RXC 三总线 GATE2 8255A PC6 波特率时钟发生器电路

  41. PB 1 5 V 8255 8253 PB IRQ (8259A) OUT GATE 0 0 0 0 GATE 5 V 1 GATE 2 D Q DRQ 0 D D D ~ D ~ 7 0 0 7 OUT CLK CLK 1 0 CLK 1.19 MHz 1 CLK 2 IOR RD & 2A 2Y IOW WR OUT 2 75477 A A 0 0 A A 1 1 CS A A 5 V Y 5 2 A B 6 A C 7 74LS138 G A 2A 8 G A 2B 9 AEN 1 G 1 8253在IBM PC/XT机中的应用。

  42. PC机内部计数器结构 通道0 CLK=1.19MHZ 系统计时时间 通道0 40H 通道1 41H 通道2 42H 控制字 43H CLK OUT GATE +5V 通道1 系统存储器刷新 CLK OUT GATE +5V 通道2 驱动喇叭 CLK OUT GATE I/O PORT 61H BIT0

  43. 通道0:用来做系统一般定时器用,其门控 信号接至高电平,使得计数器0一直工作。 通道0的输出接至系统中断控制器9259的 IRQ0输入,BIOS设定为方式3方波产生器, 初值栽入为0,因此正常情况下每秒产生 18.2的中断,BIOS即利用此周期性的中断来 维持电脑的时间计数

  44. 通道1:用来做系统存储器刷新,门控信号 输入接高电平,计数器工作一直有效,PC 的BIOS在启动时设定此通道工作于方式2 做比率产生器用,计数器每15US产生一次 存储器刷新信号,此通道的计数器不允许 被使用者加以利用

  45. 通道2:用做喇叭驱动,门控输入可以由输 出口(I/O地址61H)的位0加以控制启动 或关闭。若启动,设定为工作方式3做方波 产生器可以持续地由此通道送出固定频率 的方波 信号至喇叭,驱动喇叭发出声音

More Related