文章目录
- 一、内部结构、端口地址以及与系统总线的连接
- 1、8255A的内部结构
- 2、8255A的端口地址与读/写操作
- 端口地址
- 读/写操作
- 3、系统总线
- 二、8255A三种工作方式(方式0 ~方式2 )的工作特点和I/O过程
- 工作方式
- 工作特点
- 三、在方式1中C口哪几个引脚作为信号联络线,各信号联络线的含义
- 名词解释
- STB:
- IBF:
- INTR:
- 四、8255A初始化编程
- 注意
- 工作在方式0
- 工作在方式1、2
- 五、8255A应用编程
一、内部结构、端口地址以及与系统总线的连接
1、8255A的内部结构
2、8255A的端口地址与读/写操作
端口地址
读/写操作
3、系统总线
二、8255A三种工作方式(方式0 ~方式2 )的工作特点和I/O过程
工作方式
总结:
A口可以工作在方式0方式1或方式2;
B口可以工作在方式0或方式1;
C口只能工作在方式0。
工作特点
方式0:是基本型输入输出方式,端口 和 外设 之间没有联络信号。
方式1:是选通型输入输出方式,端口与外设之间必须有联络线,CPU与8255A可以用查询方式或中断方式交换信息。
方式2:是双向数据传输方式,只有A口可工作在方式2.
三、在方式1中C口哪几个引脚作为信号联络线,各信号联络线的含义
名词解释
STB:
输入选通信号。由外设发往8255A,外设数据写入相应端口的输入缓冲器中。
IBF:
输入缓冲器满。由8255A发往外设,读数据前,先查询该引脚,只有当IBF=1时,此时CPU才能从A口或B口读取数据,当CPU操作完后,IBF=0。
INTR:
中断请求信号,在中断允许前提下,8255A接收到一个端口数据后(IBF=1),向CPU发出中断信号。
注意:中断方式时,必须要先讲与INTE对齐的C口引脚置1。
四、8255A初始化编程
注意
不管是工作在方式几,当控制口地址超过八位,就要利用DX作为中间值过渡。
工作在方式0
方式选择控制字—>控制口
格式:
MOV AL,方式控制字
OUT 控制口地址,AL
;若超过八位
MOV AL,方式控制字
MOV DX,控制口地址
OUT DX,AL
工作在方式1、2
- 方式选择命令字→控制口
- 允许中断(或禁止中断)的命令字→控制口
MOV AL,方式选择命令字
OUT 控制口地址,AL
MOV AL,允许中断(或禁止中断)的命令字
OUT 控制口地址,AL
五、8255A应用编程
输入查询测试 IBF,输出查询测试 OBF
- 对于输入查询字符
SCAN:IN AL,C口
TEST AL,IBF对应的C的引脚号(二进制)
JZ SCAN
IN AL,A口
例子:
A口查询一个字符,地址在218H~21BH
SCAN:MOV DX,21BH //C口
IN AL,DX
TEST AL,00100000H //因为IBF对应的是PC5,因为要测D5是否为0
JZ SCAN
MOV DX,218H //A口
IN AL,DX
说明:这是一个很经典的例子,由给出的地址可知,它们分别对应的A B C口地址,这里需要注意一个点,若地址超过八位,需要借助DX。
- 对于输出
在上面的代码中,改变测试字和JZ改成JNZ,因为OBF上面有一条杠,是低调平有效,所有当OBF为1时,OBF满。