这次介绍8255A芯片的使用方法
编程8255A时,只需理解以下三个步骤。
)1)控制端口写入控制字
)2) 8255A端口地址计算
)3)根据端口读写数据。
8255A控制字:
将控制字写入8255A可以理解为构成每个端口的操作方式和输入输出模式。 D7标志位主要用于区分端口c的控制字。
例:
MOV AL,10001001B MOV DX,CRTL_PORT; CRTL_PORT是控制的端口地址OUT DX,AL此程序的目的是将c端口设置为输入模式,将其他端口设置为输出模式,行为和方式0。
举个例子:
关于这个问题,我们最初考虑的组合是8种,在控制字编程中,由于C端口的上位和下位是分别配置的,所以这个问题的答案是16种。
端口设置/复位控制字:
这实际上是设置或清除c端口部分位的操作
向c端口的设置/清除操作也是向控制端口写入数据,D7=0。
示例:
介绍8255A端口的地址计算。
根据本图的连接方式,CS端控制在74154芯片的IO1端,A13~A14控制74154芯片的使能。 选择A1、A2控制端口。
这将导致端口状态表:
A16~A19为了参加地址控制,设置0。 由此可见:
A2=0、A1=0时,选择a端口,a端口的地址为0200H
A2=0、A1=1时,选择b端口,b端口的地址为0202H
A2=1、A1=0时,选择c端口,c端口的地址为0204H
如果A2=1、A1=1,则选择控制端口,控制端口的地址为0206H
例题:
此问题的目的是c端口交换机转发交换机状态,然后在数码管上显示。
先计算端口地址:
由于74LS138 Y4端口控制芯片选择,C B A的状态为10。由于A7~A15由“与”门控制使能端子,因此它仅仅是高电平。 同样,A5需要为低电平。 状态图如下。
根据计算,a端口的地址是FF84H
B端口的地址为FF85H
c端口地址为FF86H
控制端口的地址是FF87H
代码如下所示。
a _ porte qu0ff84 HB _ porte qu0f 85hc _ porte qu0f 86h crtl _ porte qu0f 87 hdatasegmentledtabdb 3fh、06H、5BH、4FH、66H、6dh htdwg地址初始化MOV AL,10001001B MOV DX,CRTL_PORT OUT DX,AL; 8255A写入控制字KEY_PRESS: MOV DX,C_PORT IN AL,DX; C端口的状态为AL寄存器中存储有MOV CL、AL; 将AL的内容发送到CL寄存器,目的是立即取前4位的状态发送到b侧AND AL,0FH; 与操作,清除高位4位,低位4位MOV BX,offset LEDTAB XLAT MOV DX,A_PORT OUT DX,AL; a端口输出低位4比特的值ROR CL,4; 逻辑有移动,前4位变为后4位、MOV AL、CL AND AL、0FH; 操作,清除前4位,取后4位。 此时上位MOV BX,offset LEDTAB XLAT MOV DX,B_PORT OUT DX,AL; b端口输出前4位的值JMP KEY_PRESS; 死循环,一直扫描c端的键状态CODE ENDS END START