微机接口第11章

上传人:我** 文档编号:115996001 上传时间:2019-11-15 格式:PPT 页数:63 大小:1.08MB
返回 下载 相关 举报
微机接口第11章_第1页
第1页 / 共63页
微机接口第11章_第2页
第2页 / 共63页
微机接口第11章_第3页
第3页 / 共63页
微机接口第11章_第4页
第4页 / 共63页
微机接口第11章_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《微机接口第11章》由会员分享,可在线阅读,更多相关《微机接口第11章(63页珍藏版)》请在金锄头文库上搜索。

1、第11章 可编程定时器/计数器 82548254定时器定时器/ /计数器计数器 计算机中的定时和延时控制、对外部事件或信号的计数 软件方法 固定时间的硬件定时 可编程的硬件定时 计算机系统中采用可编程定时/计数器I8253和I8254 8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计 数初值可设定为二进制或BCD码。最高工作频率10兆。 一.8254内部结构 (24脚) 数据总线 缓冲器 读写 控制 控制字 寄存器 0号 计数器 1号 计数器 2号 计数器 RD WR A0 CS A1 D70 GATE0 OUT0 CLK0 GATE1 OUT1 CLK1 GATE2 OU

2、T2 CLK2 数据总线 缓冲器 读写 控制 控制字 寄存器 0号 计数器 1号 计数器 2号 计数器 RD WR A0 CS A1 D70 GATE0 OUT0 CLK0 GATE1 OUT1 CLK1 GATE2 OUT2 CLK2 数据总线缓冲器: 完成和系统数据线的配接。 对外有8条数据线D70 8254的内部结构 数据总线 缓冲器 读写 控制 控制字 寄存器 0号 计数器 1号 计数器 2号 计数器 RD WR A0 CS A1 D70 GATE0 OUT0 CLK0 GATE1 OUT1 CLK1 GATE2 OUT2 CLK2 读写控制模块: 选择芯片内部的控制寄存器和计数器,

3、在读写 命令的控制下对选中的端口进行读写操作。对外有5条引线。 8254的内部结构 8254的内部结构 数据总线 缓冲器 读写 控制 控制字 寄存器 0号 计数器 1号 计数器 2号 计数器 RD WR A0 CS A1 D70 GATE0 OUT0 CLK0 GATE1 OUT1 CLK1 GATE2 OUT2 CLK2 控制寄存器: 寄存CPU对其初始化编程时写入的控制字, 以决定计数器的工作方式和并设置读出命令。 8254的内部结构 数据总线 缓冲器 读写 控制 控制字 寄存器 0号 计数器 1号 计数器 2号 计数器 RD WR A0 CS A1 D70 GATE0 OUT0 CLK0

4、 GATE1 OUT1 CLK1 GATE2 OUT2 CLK2 计数器: 每个计数器对外有3条线 GATE 控制信号 CLK 计数脉冲输入 OUT 计数器输出 8254的内部结构 口地址 译码器 A9 A2 AEN D7D0 IOR IOW A1 A0 D7D0 RD WR A1 A0 CS 8254 二. 8254与系统总线的连接 I/O口地址分2段 A9A2参加译码,译码 输出负脉冲。使CS=0, 选中8254 A1,A0直接与芯片A1,A0 相连,选择片内寄存器 执行IN时从选中的内部 寄存器读 执行OUT时向选中的内 部寄存器写 三.8254内部寄存器/计数器口地址 在CS=0前提下

5、 A1 A0 选中 0 0 0#计数器 0 1 1#计数器 1 0 2#计数器 1 1 控制寄存器 设8254与系统总线如上图联接: 口地址=40H43H,“选中”8254,则0#2#计 数器口地址=40H42H,控制口地址=43H。 口地址=2FCH2FFH,“选中”8254,则 0#2#计数器口地址=2FCH2FEH,控制口 地址=2FFH。 四.计数器内部结构示意图 内部数据线 计数初值寄存器(16位) 减1计数器(16位) 计数值锁存器(16位) 锁存命令 GATE CLK OUT 内部数据线 初始化编程时: 计数初值 计数初值寄存器 减1计数器 内部数据线 计数初值寄存器(16位)

6、减1计数器(16位) 计数值锁存器(16位) 锁存命令 GATE CLK OUT 内部数据线 计数器的内部结构 当GATA=1时, CLK的下降沿使计数器减1,当计数值减到0 (或某个值由工作方式确定)时, OUT有输出。 内部数据线 计数初值寄存器(16位) 减1计数器(16位) 计数值锁存器(16位) 锁存命令 GATE CLK OUT 内部数据线 计数器的内部结构 计数初值 = f c l k / f o u t 收到锁存命令后, 当前计数值 计数值锁存器(以便读出 检查), 而计数器仍然做减1计数 内部数据线 计数初值寄存器(16位) 减1计数器(16位) 计数值锁存器(16位) 锁存

7、命令 GATE CLK OUT 内部数据线 计数器的内部结构 作用: 选择一个计数器, 确定工作方式, 并规定初 值的写入顺序和计数初值 (一串0, 1代码) 的数制。 五. 8254命令字 / 状态字 D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 D7 D6=00 选择0#计数器, =01 选择1#计数器 =10 选择2#计数器, =11 标志该命令字 是 “读出命令” 1.方式选择命令字 D5 D4=00 标志该命令为 “锁存命令” =01 初值写入时, 只写低8位, 高8位自动 补0;计数值读出时, 只能读低8位 =10 初值写入时,

8、只写高8位, 低8位自动 补0;计数值读出时, 只能读高8位。 =11 初值写入 / 计数值读出的顺序为先 低8位,后高8位。 D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 8254的命令字和状态字 D3 D2 D1 选中的计数器工作在 0 0 0 方式 0 0 0 1 1 1 0 2 1 1 3 1 0 0 4 1 0 1 5 D0=0, 计数初值为二进制数, D0=1, 初值为BCD码数。 D7 D6 D5 D4 D3 D2 D1 D0 计数器选择 读写方式选择 工作方式选择 数制选择 8254的命令字和状态字 2. 锁存命令( D5 D

9、4=00 标志该命令为 “锁存命令”) D7 D6 为锁存对象。 = 0 0,锁存0#当前计数值 = 0 1,锁存1#当前计数值 = 1 0,锁存2#当前计数值 计数器选择 0 0 D7 D6 D5 D4 D3 D0 D7 D611 D5 D4 = 00 8254的命令字和状态字 3.读出命令 读出命令是多通道的锁存命令, 一条命令可以锁存3个计 数器的计数值、计数器状态。 1 1 0 D7 D6 D0 0: 锁存当前计数值 0: 锁存计数器状态 1: 选择0#计数器 D7D6D0=110 是读命令 1: 选择1#计数器 1: 选择2#计数器 8254的命令字和状态字 4. 状态字 与方式选择

10、命令字相同 D7 D6 D5 D0 0: 计数初值已装入计数器 1: 计数初值未装入计数器 0: OUT脚为低电平 1: OUT脚为高电平 8254的命令字和状态字 CPU对8254的初始化编程 例: 设8254的口地址为40H 43H, 要求2#计数器工作在方式3, 计数初值=4000, 写出2#的初始化程序段。 1. 对8254一个计数器的初始化编程步骤: 向控制寄存器写入方式选择命令字 目的: 选择一个计数器, 并确定其工作方式 和计数值(计数初值)的读 / 写顺序。 向选择的计数器写入计数初值。 注意: 如果方式选择命令字D0=0, 则初值 应是二进制, 否则初值应是BCD码数。 解1

11、: 设初值为二进制, 初值写入顺序为先低8位后高8位。 MOV AL, 10110110B OUT 43H, AL MOV AX, 4000 OUT 42H, AL MOV AL, AH OUT 42H, AL 解2: 设初值为二进制, 写入顺序为仅写高8位。 MOV AL, 10100110B OUT 43H, AL MOV AL, 40 OUT 42H, AL 注意: 解2是错误的, 因为:4000=0FA0H, 其低8位不等于0。 8254的初始化编程 解3: 设初值为BCD码, 写入顺序为先低后高。 MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT

12、 42H, AL MOV AL, 40H OUT 42H, AL 解4: 设初值为BCD码, 仅写高8位。 MOV AL, 10100111B OUT 43H, AL MOV AL, 40H OUT 42H, AL 注意: 4000的BCD码数应写成4000H, 解3、解4是正确的。 8254的初始化编程 2. 当计数初值 9999时, “初值”选为二进制或 BCD码都可以; 当计数初值 9999时, “初值”只能选二进制。 3. 程序中如何表示BCD码数? 设初值=(1234)10 则 MOV AX, 1234H 是正确的 写成 MOV AX, 1234 是错误的 4. 方式选择命令, 锁存

13、命令, 读出命令必须写入 控制口。 8254的初始化编程 6. 关于读出命令 读出命令也是锁存命令, 如果在锁存计数值 的同时, 也锁存状态, 那么在随后对计数器读 出时, 先读出的是状态字, 后读的是计数值。 5. 关于锁存命令 当程序员要了解计数器的当前计数值时, 先 向控制口写入锁存命令, 然后从选择的计数 器端口读取当前计数值。 8254的初始化编程 六. 8254工作方式 有6种工作方式, 均在CLK下降沿计数一次。 有2种启动方式: 软件启动, 硬件启动。 软件启动: GATA=1, 初值写入后, 开始计数。 硬件启动: 初值写入后, 不计数。当GATE从 0 1后开始计数。 方式

14、0: 计数结束OUT引脚输出正跃变信号 软件启动, 计数值减到0, OUT从0 1。 WR结束后,第一个CLK完成初值装入 3 2 1 0 1 CLK WR N=3 GATE=1 OUT 8254的工作方式 方式1: (可重触发的) 硬件启动的单脉冲发生器 GATE由0 1, 下一个CLK下降沿, 使OUT由1 0, 且装入计数值 GATE再次从0 1之后, 下一个CLK完成初值自动重装 3 2 3 2 1 0 3 2 1 0 N TCLK CLK WR N=3 GATE=1 OUT GATE OUT TOUT 8254的工作方式 硬件启动(由外部门控信号启动计数) 初值写入后不计数, 当GATE从0 1时, OUT 从1 0。之后每个CLK下降沿计数值减1, 计 数值减到0时, OUT从0 1。 所以: 输出负脉冲的宽度=NTCLK 计数过程中, GATE再次从0 1, 初值自动重 装,从而使OUT输出的负脉冲加宽 ( 即有可重 触发的性能)。 8254的工作方式 方式2: 分频器(脉冲发生器) 软件启动 减1计数, 减到1时OUT从1 0,下一CLK初值 自动重装。所以: OUT为周期性波形, 输出负脉 冲的宽度为一个TCLK, 周期=N TCLK 3 2 1 3 2 1 CLK WR N=3 GATE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号