1 / 29

8.2 计数器 / 定时器接口芯片 8253

8.2 计数器 / 定时器接口芯片 8253. 微机系统中经常会要求有 一些实时时钟以实现定时或延时控制 ,也要求 有计数器对外部事件计数. 实现上述要求可采用 3 种方法: 1 .硬件定时 用数字逻辑电路来构成, 通用性、灵活性较差 2 .软件定时 利用程序段实现,通过正确挑选指令和安排循环次数很容易改变定时时间,但 软件定时占用了 CPU ,降低了 CPU 的利用率。 3 .采用可编程定时器/计数器 定时时间 与 计数值 可由 软件 来确定和改变,设定后与 CPU 并行工作,不占用 CPU 的时间。. 8.2.1 8253 的内部结构.

Download Presentation

8.2 计数器 / 定时器接口芯片 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. 8.2 计数器/定时器接口芯片8253 微机系统中经常会要求有一些实时时钟以实现定时或延时控制,也要求有计数器对外部事件计数 实现上述要求可采用3种方法: 1.硬件定时 用数字逻辑电路来构成,通用性、灵活性较差 2.软件定时 利用程序段实现,通过正确挑选指令和安排循环次数很容易改变定时时间,但软件定时占用了CPU,降低了CPU的利用率。 3.采用可编程定时器/计数器 定时时间与计数值可由软件来确定和改变,设定后与CPU并行工作,不占用CPU的时间。

  2. 8.2.1 8253的内部结构

  3. 1. 三个独立的计数/定时通道——计数器0,计数器1,计数器2。每个计数器的结构为: (1)16位计数初值寄存器(CR)——存放计数的初值(预置); (2)16位的计数执行部件(CE)——16位减1计数器; (3)16位输出锁存器(OL)——跟随CE变化,但可以锁存,便于CPU读取。 2. 控制寄存器——存放CPU送来的控制字,控制8253的工作方式。有3个,只占用一个地址,不能读。

  4. 2. 读写控制信号RD,WR • 3. 片选及地址线CS,A1,A0——用于芯片及内部寄存器、计数器的寻址。 • 在IBM-PC机中,A9A8A7A6A5=00010选中(CS=0),A4A3A2未用,A1A0接8253的A1A0。 8.2.2 8253的引脚功能 1. 数据线D7~D0——8位,双向、三态,用于8253与CPU之间的数据传送。包括:向8253写控制字,送计数初值及读计数器的现行值。

  5. A9A8A7A6A5A4A3A2A1A0功能 基本地址 • 0 0 0 1 0 × ×× 0 0 选中计数器0 40H • 0 0 0 1 0 × ×× 0 1 选中计数器1 41H • 0 0 0 1 0 × ×× 1 0 选中计数器2 42H • 0 0 0 1 0 × ×× 1 1 选中控制寄存器 43H • (其他) × ×× ×× 芯片禁止 • (说明:8253有32个地址,除基本地址外,其余为影像地址)

  6. 4. 计数器时钟输入CLK0~CLK2——计数/定时的基值信号 • 8253:0~2MHz • 8254-2:0~10MHz 5. 计数器门控输入信号GATE0~GATE2——启动或控制计数/定时信号; 6. 计数器输出信号OUT0~OUT2——计数结束、定时到输出信号或分频输出信号。

  7. 8.2.2 8253的编程 1. 控制字格式

  8. 2. 计数初始值 计数初始值写入对应计数器的计数初值寄存器CR; • 计数初值为8位,则控制字中的RL1、RL0应取01,初值只写入CR的低8位,高8位会自动置0; • 若是16位初值,而低8位是0,则RL1RL0应取10,初值高8位写入CR的高8位,CR的低8位会自动置0; • 若是一般16位初值,则RL1,RL0应取11,应分两次写入初值,先写低8位、再写入高8位(此顺序不能反)

  9. 单个计数器初始化 多个计数器初始化 写方式控制字(计数器0) 写方式控制字 写方式控制字(计数器1) 写计数低字节 写方式控制字(计数器2) 写计数低字节(计数器0) 写计数高字节 写计数高字节(计数器0) 写计数低字节(计数器1) 写计数高字节(计数器1) 写计数低字节(计数器2) 写计数高字节(计数器2) 3. 初始化流程 先写入工作方式控制字,接着写入计数初始值 • 计数器的顺序是任意的,不必一定按照计数器0、l、2的顺序初始化; • 可先写所有计数器的工作方式控制字,再装入各计数器的计数值(但先控制字再计数值的顺序不能错); • 计数值先写低再写高的顺序不能错; • 其他顺序无关紧要

  10. 例:选择计数器0工作于方式3,计数初值为1234,十进制计数方式;计数器2工作于方式2,计数初值为61H,采用二进制计数方式,设8253的端口地址为40~43H。其初始化编程如下:例:选择计数器0工作于方式3,计数初值为1234,十进制计数方式;计数器2工作于方式2,计数初值为61H,采用二进制计数方式,设8253的端口地址为40~43H。其初始化编程如下: MOV AL,00110111B ;对计数器0送工作方式字 OUT 43H,AL MOV AX,1234H ;送计数初值 OUT 40H,AL MOV AL,AH OUT 40H AL MOV AL,10010100B ;对计数器2送工作方式字 OUT 43H,AL MOV AL,61H ;送计数初值 OUT 42H,AL

  11. 8253初始化规则 (1)对计数器设置初值前必须先写入控制字,此时,全部控制逻辑电路复位,输出OUT为初始状态(高电平或低电平); (2)初值写入后,要经过1个时钟CLK的上升沿和1个下降沿后,计数执行部件才开始计数; (3)在CLK的上升沿时,计数器对门控信号GATE进行采样,来决定工作状态(计数、触发、停止、重新置初值); (4)在CLK的下降沿时,计数器执行部件从初值开始作减1计数;其中0是最大初值,1是最小初值; 若以二进制数制计数,则0相当于216=65536 若以BCD(十进制)数制计数,则0相当于104=10000

  12. 读计数值——将某计数器的计数值读到CPU中 读到的是执行输入指令瞬间计数器的现行值。16位计数值要分两次读至CPU,故必须将数据锁存。 有两种办法: • 利用外加控制信号 GATE使计数器暂停计数,然后按照工作方式控制字中RL1RL0的规定读取规定字节 • CPU向8253发出锁存命令字(SC1SC000XXXX)锁存计数器的当前计数值(当前计数值锁存在输出锁存器OL,而减1计数器可以继续计数),再读取输出锁存器的计数值。当CPU读取了规定的字节数后,OL自动解除锁存状态,其值又跟随计数器而变化。

  13. 8.2.4 8253的工作方式 8253有6种工作方式:不同方式下,启动方式、GATE信号的作用、OUT输出波形都有所不同,但以下几条基本规则是相同的: • 工作方式控制字写入计数器时,输出端OUT进入初始状态(高电平或低电平); • 计数初值写入CR后,在下一个 CLK脉冲才装入减 1计数器 CE,因此该 CLK脉冲并不影响计数; • CE的减1计数操作发生在CLK的下降沿; • 计数器对门控信号GATE的采样是在CLK上升沿

  14. WR CLK GATE OUT 1. 方式0——计数结束产生中断 CW N=4 N N 4 3 2 1 0 FF 计数结束 装控制字 计数开始 装初值 说明:①初值装入后,要经过1个CLK的周期(1个上升沿和1个下降沿)后,计数器才开始计数,所以,输出OUT要经过N+1个时钟周期后才有输出; ②输出OUT的有效电平为高电平,并可同时触发中断请求; ③门控GATE的作用:高电平时计数,低电平或下降沿时停止计数; ④CW为写入控制字,N=4表示写入初值。

  15. WR CLK GATE OUT 2. 方式1——可重触发的单稳态触发器 CW N=3 N N 3 2 1 0 FF 3 2 1 0 FF 计数结束 装控制字 计数开始 装初值 说明:①方式字和初值装入后,在门控GATE的上升沿触发下,经过1个CLK的上升沿和1个下降沿后,计数器开始从初值减1计数,同时使OUT=0;当计数结束(归0)时,OUT=1,使输出产生1个宽度为TW=N×TCLK的负脉冲——单稳态触发器。 ②在GATE的上升沿触发下,输出可再次产生1个宽度为TW负脉冲——可重触发。

  16. WR CLK GATE OUT 3. 方式2——分频器 CW N=3 N N 3 2 1 3 2 1 3 2 1 3 说明:①方式字装入后,OUT=1为初始状态。 ②初值装入后,经过1个CLK的周期,计数器开始从初值减1计数,计到1(不是0)时,使输出OUT=0并保持1个CLK周期,然后OUT=1,开始下一个新的计数周期,使输出为CLK的时钟1/N分频信号,占空比q=(N-1)/N。 ③门控GATE的作用:高电平时计数,低电平停止计数;用GATE的上升沿可以触发分频重新开始——称为硬同步;而在GATE=1时,用装初值的方法启动分频开始——称为软同步

  17. WR CLK GATE OUT 4. 方式3——方波发生器 CW N=4 N N 4 3 2 1 4 3 2 1 4 3 2 • 说明:特点与方式2类似,主要区别:输出方波,其占空比q为 • ①当N为偶数时,q=0.5; • ②当N为奇数时,q=(N+1)/2N。

  18. WR CLK GATE OUT 5. 方式4——软件触发的选通信号发生器 N=3 CW N=3 N N 3 2 1 0 FF FE 3 2 1 0 FF 说明:①初值装入后,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。 ②(用指令)重新装入初值后,经过N+1个CLK周期,又可使OUT产生一个选通信号——(用软件)可重触发。 ③门控GATE的作用:高电平时计数,低电平时停止计数;

  19. WR CLK GATE OUT 6. 方式5——硬件触发的选通信号发生器 CW N=3 N N 3 2 1 0 FF FE 3 2 1 0 FF 说明:①初值装入后,在GATE的上升沿的触发下,经过1个CLK的周期,计数器开始从初值减1计数,计数结束(归0)时,使输出OUT产生一个宽度为1个CLK周期的负脉冲——选通信号。 ②用GATE的上升沿可重新触发,使OUT产生一个选通信号——(用硬件)可重触发。

  20. 总结: • 方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。 • 但方式2是连续工作, • 方式4由软件(设置奇数值)触发启动 • 方式5由门控脉冲触发启动 • 写入计数值后才能开始计数 • 方式0、2、3、4在写入计数值后,计数过程就开始了 • 方式1、5需要外部触发启动,才开始计数 • 6种方式中只有方式2、3是连续计数,其他4种方式都是一次计数,要继续工作需要重新启动,方式0、4由写入计数值(软件)启动,方式1、5要由外部信号(硬件)启动。

  21. 8.2.5 8253应用举例

  22. 分析: ①计数器0工作于方式2分频方式,每隔50个CLK0产生一个中断INT;方式控制字为:00010101B(15H),即方式2,只装低8位,BCD数制,初值为50(H)。 ②计数器1工作于方式3方波方式,产生2000Hz喇叭音调,方式控制字为:01110111B(77H),即方式3,先低后高,BCD数制; 初值(分频比)=(1.4×106)/2000=700(H)。

  23. 主程序段: MOV AL,15H;置计数器0方式 • OUT 43H,AL; • MOV AL,50H;装初值 • OUT 40H,AL; • MOV AL,00H;关8255的PC0 • OUT 63H,AL; • MOV AL,77H;置计数器1方式 • OUT 43H,AL; • MOV AL,00H;装初值 • OUT 41H,AL; • MOV AL,07H; • OUT 41H,AL; • STI; • LOP: HLT; • JMP LOP;

  24. 中断服务程序: • INTP: MOV AL,01H;开8255的PC0 • OUT 63H,AL; • CALL DLY5S;调5S延迟子程序 • MOV AL,00H;关8255的PC0 • OUT 63H,AL; • IRET; • (说明:在装入8253计数器的初值时,不管是二进制数制还是BCD数制,初值后均要加“H”。)

  25. 8253在IBM-PC机中的应用 1. 计数器0——向系统提供定时中断:工作于方式3(方波),CLK0=1193181.6Hz,二进制数制,初值=0(即65536),OUT0输出频率为1193181.6/65536=18.2Hz(周期为55ms)的方波控制8259A的IRQ0(日时钟)的中断,即每隔55ms产生一次中断。 2. 计数器1——向DMAC系统提供定时中断,刷新动态RAM:工作于方式2(分频),CLK1=1193181.6Hz,BCD数制,初值=18,OUT1输出频率为1193181.6/18=66.287KHz(周期为15.0857s)的矩形波向DMAC提供定时中断。

  26. 3. 计数器2——提供喇叭的音调:工作于方式3(方波),CLK2=1193181.6Hz,BCD数制,初值=533,OUT2输出频率为1193181.6/533=900Hz的方波作为喇叭的声源。 练习:按上述要求写出8253的初始化程序。

  27. CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 2MHz 5ms 1s 送8259产生INT 练习:用8253设计洗衣机定时程序,设输入频率为2MHz,要求能产生3分、6分和12分的定时,定时到产生中断,试画出8253的连接示意图并编写相应的程序段。 分析:计数器0工作于方式3,初值N=0(10000)(H) 计数器1工作于方式3,N=200(H) 计数器2工作于方式0,初值由3分、6分、12分除1S(减1)得出

  28. MOV AL,00110111B;计数器零 OUT 43H,AL; MOV AL,00H; OUT 40H,AL; OUT 40H,AL; MOV AL,01110111B; OUT 43H,AL; MOV AL,00H; OUT 41H,AL; MOV AL,02H; OUT 41H,AL;

  29. 3分定时:N=180/1=180 MOV AL,10110001B; OUT 43H,AL; MOV AL,80H; OUT 42H,AL; MOV AL,01H; OUT 42H,AL; 6分定时:N=360/1=360 MOV AL,10110001B; OUT 43H,AL; MOV AL,60H; OUT 42H,AL; MOV AL,03H; OUT 42H,AL;

More Related