可编程定时计数器 8253
- 可编程芯片:可以通过软件命令,控制芯片的工作方式
- 数据传输方向
- 输入 / 输出方式
- 时钟脉冲由外部时钟电路提供
- 给定计数初值,芯片启动后,开始数脉冲个数
-
外部引线及内部结构
CS:片选信号
- 两位片内地址 A0,A1,说明片内有 4 个端口
- GATE:输入信号,启动计数的控制信号
- OUT:输出信号,在定时时间到,或定时过程中,OUT 端呈现波形特点
- 三组 CLK、GATE、OUT 信号,说明芯片内部有三个完全独立的定时计数器
- 三个计数器可以独立工作
- 因为每个计数器内部有 2 个 16 位的寄存器,两个寄存器共用一个地址,所以每个计数器占用一个端口地址
- 16 位的初值寄存器:用来存初值,不变化
- 16 位的计数寄存器:用来计数,一开始是存初值,然后开始递减
- 控制寄存器:8 位,占一个端口地址,存放控制命令字
- 综上,8253 接口芯片占 4 个端口地址
- 方式 0 是软件启动,GATE 端需要输入高电平
- 不自动重复计数,意味着计数器中的计数寄存器减到 0,这一计数过程就结束
WR:由图知,有两个写入信号,也就是两条 OUT 指令被执行
- 第一个 OUT 指令写入命令字,写完后,OUT 端一定变成低电平
- 命令字:告诉 IO 接口芯片如何工作,其中有一个信息就是工作在方式几,该命令字存到 IO 接口中的控制寄存器
- 第二个 OUT 指令写入初值,写完后,OUT 端一定变成低电平
- 初值:存到 IO 接口芯片中的计数器
- 第一个 OUT 指令写入命令字,写完后,OUT 端一定变成低电平
- 必须先写命令字,再写初值
- 当初值写完,开始计数,每过一个 CLK 脉冲,值减 1,直至 0,计数结束后,OUT 端变成高电平,
- 其输出信号 (高电平),可用于外部可屏蔽中断请求信号,方式 0 也称为计数结束产生中断请求的一种工作方式
控制字
- 0000:将计数器 0 中的计数寄存器内容读入 CPU
最大计数初值为 0:若选择 16 位 BCD 数,则 0-1=9999;若选择 16 位二进制数,则 0-1=FFFF
8253 的应用
硬件设计
与系统的连接
每一次启动计数,需有两次写操作:
初始化程序流程
- 写入控制字
- 置计数初值
【例】8253 芯片应用
- CNT0:“每”,说明输出连续波形,不是方式 2 就是方式 3,方式 3 是输出对称方波,方式 2 是每次计数结束,输出一个低电平,所以是方式 2
- CNT1:能输出连续波形的只有方式 23,方式 3 是输出对称方波,所以是方式 3
- CNT2:定时时间到,输出高电平,可以是方式 01,区别是方式 0 软件启动,方式 1 硬件启动,由于题目没有其他要求,所以选择方式 0 软件启动,线路简单
- 时钟频率 2MH=1/2MH=0.5 微秒,CNT0 要求每 10ms 输出一个负脉冲,所以,计数初值为 10ms/0.5us=20000
- 00:计数器 0;11:先读计数器低 8 位,再读高 8 位;010:方式 2;0:二进制计数
- GATE 端高电平:软件启动
- CLK 端连接外部时钟电路
- OUT 端连接外部设备
- A0 和 A1 区分 3 个计数器和控制寄存器
- 0123H=0000 0001 0010 0011,说明 0123H 是控制寄存器的地址
- 0120H=0000 0001 0010 0000,说明 0120H 是计数器 0 的地址
- 上面已经得到控制字 0011 0100=34H
- 前三句:将控制字写入控制寄存器
- CNT0 计数初值:20000
- 第六句:先将低 8 位写入计数器 0
- 第七句:因为 OUT 指令不需要操作数是 AH,所以要先将 AH 送入 AL
可编程并行接口 8255
并行接口芯片 8255 特点
- 8253 是一个非通道型的接口,用来控制外部设备
- 8255 是一个通道型的接口,用来控制外部设备,可以用来做数据的输入和输出
8255 接口芯片结构
引线
- A0 和 A1 是两个低位地址信号,选择 3 个端口和控制寄存器
-
工作方式
基本输入 / 输出方式 (方式 0)
相当于三个独立的 8 位简单接口
- 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出
- C 端口可以是一个 8 位的简单接口,也可以分为两个独立的 4 位端口
- 常用于连接简单外设,适于无条件或查询方式
方式 0 的应用:
- 习惯上:
- A 端口和 B 端口作为 8 位数据的输入或输出口
- C 口的某些位作为状态输入
- 注:
- 若使 C 端口低 4 位中某一位作为输入口,则低 4 位中其他位都应作为输入口
- 同时可设高 4 位作为输出
- 假设外设状态信息 (打印机缓冲区是否空闲) 连接到 PC0
- 若外设当前状态适合传输数据,则通过 A 端口 (PA0-PA7) 输出数据到外设
- 同时,B 口可作为其他外设的输入
若 B 口连接的外设也可以提供状态信息,则可以用 C 口的高位读入第二个外设的状态信息
选通工作方式 (方式 1)
利用一组选通控制信号控制 A 端口和 B 端口的数据输入输出
- A 口、B 口作输入或输出口,C 口的部分位用作选通控制信号
- A 口、B 口在作为输入和输出时的选通信号不同
- A 端口工作在方式 1,输出时,C 端口的 PC367 作为选通信号
- B 端口工作在方式 1,输出时,B 端口的 PC012 作为选通信号
- 综上,若 AB 端口同时工作在方式 1 输出时,C 端口只有 PC45 空余
- IBF 信号通知外部设备数据已经准备好,可以取走了
- INTR 是外部可屏蔽的中断请求信号,告诉 CPU,数据已经被读走,可以继续发来数据
方式 1 的应用:
双向输入输出方式
- 可以既作为输入口,又作为输出口
- 不需要通过软件控制字命令来改变数据传输方向,只需要时钟脉冲就可以改变数据传输方向
- 只有 A 端口可工作在方式 2 下
- 因为选通信号有限
- PC34567 作为 A 端口的选通控制信号
- IOW:A 口作为输出
- STB 信号有效:外部设备将数据写入 A 口,A 口作为输入
方式 2 的应用:
- 可使 A 端口作为双向端口所有
- 用于中断控制方式
- 当 A 口工作于方式 2 时:
- B 口可工作于方式 1
- 此时 C 口的所有位都用作选通控制信号的输入输出
- B 口也可工作于方式 0
- 此时 C 口的剩余 3 位也可工作于方式 0
- B 口可工作于方式 1
8255 的 ABC 三个端口都可以工作在方式 0,AB 端口可以工作在方式 1,只有 A 端口可以工作在方式 2
方式控制字及位控制字
方式控制字:
- 用于确定 3 个端口的工作方式及数据传送方向;
- 位控制字
- 仅用于 C 端口
- 可设置 C 口某位的初始状态(为高电平或低电平)
- 当其工作于方式 0 下且作为输出口时,一般需要对作为输出的位设置初始状态(即初始化)
- 方式控制字最高位一定为 1
- 最高位后面的 4 位控制 A 组,A 组中包含 A 端口,A 端口有 3 种工作方式,所以用高 2 位进行工作方式选择
- 8255 内部的 3 个端口在控制逻辑上分为 A 组和 B 组
- A 组:A 端口 8 位和 C 端口高 4 位
- B 组:B 端口 8 位和 C 端口低 4 位
- 由于 C 端口不能工作在方式 12,所以 01、1x 对 C 端口无意义
- 8255 内部的 3 个端口在控制逻辑上分为 A 组和 B 组
- 低三位控制 B 组,B 组中包含 B 端口,B 端口有 2 种工作方式,所以用高 1 位进行工作方式选择
-
8255 芯片的应用
芯片与系统的连接
- 芯片的初始化
- 相应的控制程序
【例】8255 应用
- 地址信号低 2 位 A0、A1 是片内寻址,不参与译码
- 1023H:控制寄存器地址
- 10010000:方式控制字
- 1021H:B 端口地址
- 80H:1000 0000,PB7 位保证为高电平
- 1020H:A 端口地址
- 3:计数,亮灭 3 次
- 1022H:C 端口地址
- 1:0000 0001,PC0 为高电平