1 / 45

第 7 章 可编程 定时 / 计数器

第 7 章 可编程 定时 / 计数器. 7.1 可编程 定时 / 计数器 8253. 掌握 : 引线功能及计数启动方法 6 种工作方式及其输出波形 8253 的使用 : 芯片与系统的连接 芯片的初始化编程. 定时 / 计数器的用途. 可以实现 定时 与 计数 两个功能,可用于 系统时钟 DRAM 刷新定时 定时采样 实时控制 脉冲的计数. 定时. 计数. 如何实现定时?. 软件方法: 用一段程序实现延时 利用 程序循环 延迟指定的时间 缺点: CPU 占用率?延时精度?兼容? 硬件方法: 定时 / 计数器电路

sarila
Download Presentation

第 7 章 可编程 定时 / 计数器

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. 第7章 可编程定时/计数器

  2. 7.1 可编程定时/计数器8253 掌握: • 引线功能及计数启动方法 • 6种工作方式及其输出波形 • 8253的使用: • 芯片与系统的连接 • 芯片的初始化编程

  3. 定时/计数器的用途 • 可以实现定时与计数两个功能,可用于 • 系统时钟 • DRAM刷新定时 • 定时采样 • 实时控制 • 脉冲的计数 • . . . . . . 定时 计数

  4. 如何实现定时? • 软件方法:用一段程序实现延时 • 利用程序循环延迟指定的时间 • 缺点:CPU占用率?延时精度?兼容? • 硬件方法:定时/计数器电路 • 利用脉冲计数在设定的时间输出定时信号 ● 8253是一种硬件定时/计数器芯片

  5. 定时:标准频率CLK/计数 累加或递减(计算频率:周期内计数)。 例 减法CNTER:先计数值预置计数值寄存器减法计数器,计数脉冲经CLK输入端时使计数器进行减法计数。计数器的当前内容--计数器输出寄存器CPU不会干扰计数过程(缓冲)。计数值=零的状态OUT引脚和状态寄存器的某一位(查询式I/O或中断式I/O来检测零值状态)。有到零停计/不停两种。 可硬件( GATE输入端)或软件控制定时/计数器的动作。 写 2个地址 定时/计数器基本工作原理 写 定时/计数脉冲 1 读 门控信号 对输入CLK信号(脉冲)加法或减法计数 读 输出信号 东南大学 5 典型T/C框图

  6. 一、外部引线及内部结构 • 8253概貌 • 3个16位的定时/计数器(通道) • 24引脚双列直插式 • 最高计数频率2MHz • TTL电平兼容 • 单电源+5V供电

  7. 外部引线及内部结构 CLK0 GATE0 OUT0 DB D7-D0 通道0 A1 A0 A1 8253 CLK1 GATE1 OUT1 A0 通道1 WR IOW IOR 片选信号 RD CLK2 GATE2 OUT2 CS 通道2

  8. 外部引线及内部结构 连接微机系统端的主要引线: • D7~D0 • CS • RD • WR • A1,A0 • 用于选择四个编址部件之一 A1 A0选 择 0 0 计数通道0 0 1 计数通道1 1 0 计数通道2 1 1 控制寄存器

  9. 外部引线及内部结构 计数通道的主要引线(每通道均相同): • CLKn时钟脉冲输入,计数器的计时基准。 • GATEn 门控信号输入,控制计数器的启停。 • OUTn计数器输出信号,不同工作方式下 产生不同波形。 (n = 0~2)

  10. 编址部件0 编址部件1 编址部件3 编址部件2 定时与计数有何区别? 8253的内部结构 16位\减1 16位\减1 8位 16位\减1

  11. 编程结构—程序员的观点 • 计数器(3个)——包括 • 控制寄存器(1个)—— 存放控制命令字(8位)(只写) • 占用4个地址— 3个计数器,1个控制寄存器 16位初值寄存器(只写) 16位计数寄存器 (减1计数器) 16位锁存寄存器(只读) (当前计数初值)

  12. 定时/计数的工作过程 1. 设置8253的工作方式(6种) 2. 设置计数初值到初值寄存器 3. 设置GATE门控信号,把‘门’打开,使CLK可通过之送入计数寄存器计数 4. 第一个CLK信号使初值寄存器的内容置入计数寄存器 5. 以后每来一个CLK信号,计数寄存器减1 6. 减到0时,OUT端输出一特殊波形的信号 注:不同的工作方式,GATE门控信号的开关‘门’的信号可能不同。

  13. 二、计数启动方式 程序指令启动————软件启动 外部电路信号启动——硬件启动 软件启动过程 硬件启动过程 GATE端保持为高电平 写入计数初值后的第2个 CLK脉冲的下降沿开始计数 软件启动过程 硬件启动过程 GATE端有一个上升沿 对应CLK脉冲的下降沿开始计数 GATE端有一个上升沿 对应CLK脉冲的下降沿开始计数

  14. 三、工作方式 • 方式0——计数结束中断 • 方式1——可重复触发的单稳态触发器 • 方式2——频率发生器 • 方式3——方波发生器 • 方式4——软件触发选通 • 方式5——硬件触发选通 一次工作:计数器工作一次,计数值减到0,即停止 工作状态 循环工作:计数器循环工作,计数值减到0,将计 数初值复制到计数器,继续工作

  15. 软件启动,不自动重复计数。 装入初值后OUT端变低电平, 计数结束OUT输出高电平。 (计数结束中断) 方式0

  16. 硬件启动,不自动重复计数。 装入初值后OUT端变高电平,计数开始OUT端变为低电平,计数结束后又变高电平。 方式1 (单稳态触发器)

  17. 软、硬件启动,自动重复计数。 装入初值后OUT端变高电平,计数到最后一个CLK时OUT输出负脉冲,并连续重复此过程。 方式2 (频率发生器) (软启动)

  18. 软、硬件启动,自动重复计数。 装入初值后OUT端变高电平,然后OUT连续输出方波 方式3 前 N/2或(N+1)/2 个CLK,OUT为高,后N/2或(N-1)/2 个CLK, OUT为低。 (方波发生器)

  19. 软件启动,不自动重复计数。 装入初值后输出端变高电平, 计数结束输出一个CLK宽度的负脉冲 (软件触发选通) 方式4

  20. 硬件启动,不自动重复计数。 OUT端波形与方式4相同 方式5 (硬件触发选通)

  21. 各种工作方式特点 • 方式0(计数结束中断) • 计数过程中,GATE端应保持高电平。 • 每写入一次初值计数一个周期,然后停止计数。 • OUT端输出是一个约(N+1)TCLK宽度的负脉冲。 • 计数过程中可随时修改初值重新开始计数。 • 方式1(单稳态触发器) • 门控信号GATE端的跳变触发计数,可重复触发。 • 若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和。 • 计数过程中写入新初值不影响本次计数。

  22. 各种工作方式特点 • 方式2(频率发生器) • GATE为计数的控制信号:GATE变低计数停止,再变高时的下一个CLK下降沿,从初值开始重新计数。 • 每个计数周期结束时(减到1时),OUT端输出一个TCLK宽度的负脉冲。 • 计数过程自动重复进行。 • 计数过程中修改初值不影响本轮计数过程。 • 方式3(方波发生器) • OUT输出方波,前半周期为高,后半周期为低。 • 计数过程中修改初值不影响本半轮计数过程。 • 其余的与方式2 类似。

  23. 各种工作方式特点 • 方式4(软件触发选通) • 计数过程中,GATE端应保持高电平。 • 每写入一次初值,计数一个周期,然后停止计数。 • 每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。 • 计数过程中修改初值不影响本轮计数过程。 • 方式5(硬件触发选通) • 写入初值时,GATE端应保持低电平。 • GATE每出现一次正脉冲,计数一个周期,然后停止计数。 • 每个计数周期结束时(减到0时),OUT端输出一个TCLK宽度的负脉冲。 • 计数过程中修改初值不影响本轮计数过程。

  24. 8253编程:6种工作模式 Mode0 软件触发,到0不自动重复(计数输出) Mode4 软件触发, 选通信号(负脉冲) Mode1 硬(GATE)触发单稳,不自动重复启动 Mode5 硬件触发, 选通信号(负脉冲) Mode2、3 软硬触发,自动重装(分频/方波) Gate控制 控制字 CW 计数初值 CLK输入 Counter OUT输出

  25. 四、控制字 • 用于确定各计数器的工作方式。 • 8253必须先初始化才能正常工作。 • 每个计数器都必须初始化一次。 • CPU通过OUT指令把控制字写入控制寄存器 OUT DX,AL OUT n,AL SC1 SC0 RW1 RW0 M2 M1 M0 BCD 1--计数值为BCD码格式 0--计数值为二进制格式 M2 M1 M0模式选择 0 0 0 模式0 0 0 1 模式1  1 0 模式2  1 1 模式3 1 0 0 模式4 1 0 1 模式5 ? 0 0---对计数器进行锁存 0 1---只读/写低8位字节 1 0---只读/写高8位字节 1 1---先读/写低8位字节, 再读/写高8位字节. 0 0---选计数器0 0 1---选计数器1 1 0---选计数器2 1 1---无意义

  26. 例: 使1号定时器,工作在方式0,计数初值0FF5h,二进制计数。试写出8253初始化程序段。 8253端口地址:40H,41H,42H,43H MOV AL,01110000B ;1号定时器,方式0 OUT 43H,AL MOV AX,0FF5H OUT 41H,AL ; 1号数据口 MOV AL,AH OUT 41H,AL

  27. 五、8253的应用 • 与系统的连接 • 设置工作方式 • 置计数初值 编程

  28. 与系统的连接示意图 CLK0 DB D0~D7 GATE0 D0~D7 OUT0 IOW WR 8253 CLK1 IOR 3组 RD GATE1 低位地址 A1-A0 A1 OUT1 A1 A0 A0 CLK2 高位地址 A15-A2 GATE2 译码器 CS OUT2 (决定8253的基地址) 8253占用4个接口地址: 计数器0 计数器1 计数器2 控制寄存器 线选法 全译码 部分译码

  29. 初始化程序流程 • 写入顺序: • 可按计数器分别写入控制字和初值。 •  也可先写所有计数器控制字,再写入它们的初值 写控制字 写计数值低8位 非必须 * 写计数值高8位

  30. 8253应用举例 • 采用8253作定时/计数器,其接口地址为0120H~0123H (计数器0、1、2及控制寄存器) • 输入8253的时钟频率为2MHz -----T=1/f=0.5us • 计数器0: 每10ms输出1个CLK脉冲宽的负脉冲--方式2 计数器1:产生10KHz的连续方波信号 --方式3 计数器2:启动计数5ms后OUT输出高电平 --方式0 • 画线路连接图,并编写初始化程序。

  31. 8253应用举例(续) SC1 SC0 RW1 RW0 M2 M1 M0 BCD • 确定计数初值 CNT0 (口地址0120H) :10ms/0.5us =20000 CNT1 (口地址0121H) : 2MHz/10KHz = 200 CNT2 (口地址0122H) : 5ms/0.5us =10000 • 确定控制字(口地址0123H) CNT0:方式2,16位计数值 00 11 010 0 B = 34 H CNT1:方式3,低 8位计数值 01 01 011 0 B = 56 H CNT2:方式0, 16位计数值 10 11 000 0 B = B0 H

  32. 8253应用举例(续) 软件启动 +5V 线路连接图: 8253 GATE0 GATE1 DB D0~D7 2MHz GATE2 WR IOW A15~A2 ? CLK0 IOR RD CLK1 CLK2 A1 A1 OUT0 A0 A0 OUT1 译码器 CS OUT2 0120 H ~ 0123H = 0000 0001 0010 0000B ~ 0000 0001 00100011 B

  33. 8253应用举例 初始化程序 MOV DX, 0123H MOV AL, 34H OUT DX, AL MOV DX, 0120H MOV AX, 20000 OUT DX, AL MOV AL, AH OUT DX, AL CNT0: CNT1: …… CNT2: …… 请同学们写出其它程序!

  34. 8253-5的应用举例 (一)用8253-5监视一个生产流水线 图中工件从光源与光敏电阻之间通过时,在晶体管的发射极上会产生一个脉冲,此脉冲作为8253计算器0的计数输入CLK0,当通道0计数满50后,由OUT0输出负脉冲,经反相后作为8259A的一个中断请求信号,在中断服务程序中,启动8253通道1计算器工作,由OUT1连续输出2000Hz的方波,持续5秒后停止输出。

  35. 设:8253的端口地址为40H、41H、42H和43H,8255A的端口地址为80H、81H、82H和83H。设:8253的端口地址为40H、41H、42H和43H,8255A的端口地址为80H、81H、82H和83H。 主程序为: MOV AL,15H ;通道0控制字00010101 OUT 43H,AL;通道0工作在方式2,BCD计数 MOV AL,50H ;计数初值 OUT 40H,AL STI ;开中断 LOP:HLT ;等待中断 JMP LOP

  36. 中断服务程序为: MOV AL,01H;通道1的GATE1置1,启动计数 OUT 80H,AL MOV AL,77H;通道1控制字01110111 OUT 43H,AL;通道0工作在方式3,BCD计数 MOV AL,50H OUT 41H,AL;计数初值低位 MOV AL,12H OUT 41H,AL;计数初值高位 CALL DL5S ;延时5S MOV AL,00H OUT 80H,AL;通道1的GATE1置0,停止计数 IRET

  37. (二)8253在IBM-PC机中的应用

  38. 工作原理分析 ⑴计数器0用来产生实时日时钟信号,工作于方式3,计数初值为0,采用二进制计数方式,输出端OUT0作为中断请求信号IRQ0。 ⑵计数器1用来产生动态存储器刷新操作的定时控制信号。它工作于方式2,计数初值为18,OUT1端输出一个负脉冲序列,其脉冲周期约为18÷1.1931816MHz=15.08(μs)。 ⑶计数器2用于为系统中的扬声器发声时提供一个约为900Hz的方波信号。它也工作于方式3,计数初值为0533H(1331),GATE2接入一个来自系统板上8255A的PB0,作为扬声器发声时间的控制信号 。

  39. 2. 8253的初始化程序段 ⑴对计数器0的初始化程序: MOV AL,00110110B OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL ⑵对计数器1的初始化程序: MOV AL, 01010100B OUT 43H,AL MOV AL,18 OUT 41H,AL

  40. ⑶对计数器2的初始化程序: MOV AL,10110110B OUT 43H,AL MOV AX,0533H OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR AL,03H OUT 61H,AL

  41. (三)8253在实时控制系统中的应用 将8253的两个计数器串联起来,使其中的一个计数器作为定时器,当分频器使用,将其OUT输出信号作为另一个计数器的CLK脉冲信号;而另一计数器只起计数作用,其OUT输出端作为中断请求信号。

  42. MOV DX,233H MOV AL,00010100B OUT DX,AL MOV AL,230H MOV AL,00H OUT DX,AL MOV DX,233H MOV AL,01110110B OUT DX,AL MOV DX,231H

  43. MOV AL,BYTE PTR TIME OUT DX,AL MOV AL,BYTE PTR TIME + 1 OUT DX,AL MOV DI,28H MOV AX,OFFSET RTIME CLD STOSW MOV AX,CS STOSW …

  44. 8253小结 • 包含3个16位计数器通道 • 4个编址部件:CNT0/1/2和控制寄存器 • 每个计数器通道工作前必须初始化: -- 控制字CW和计数初值n • 6种工作方式 -- 每种工作方式:启动方式、输出波形、是否可重复计数等各不相同

More Related