1、7.1.47.1.4方式控制字及状态字方式控制字及状态字(配电箱(配电箱/配电盘开关状态)配电盘开关状态)图图7.10 82557.10 8255方式控制字格式方式控制字格式1.8255的控制字的控制字(1) 方式控制字方式控制字方式控制字方式控制字:10100011MOV AL , 10100011BMOV DX , 控口地址控口地址OUT DX , AL例例1 使使8255A其各口工作于方式其各口工作于方式0,A口作输出,口作输出,B口作输入,口作输入,C口高口高4位作输出,位作输出,C口的低口的低4位作输入。先写出其工作方式控制位作输入。先写出其工作方式控制字,并写出初始化程序。字,并写
2、出初始化程序。(控制端口地址为(控制端口地址为63H)D7D6D5D4D3D2D1D01000001标志位标志位端口端口A为为工作方式工作方式0 定义端口定义端口A为输出为输出端口端口B为为工作方式工作方式0 C口高口高4位输出位输出C口低口低4位输入位输入定义端口定义端口B为输为输入入工作方式控制字为工作方式控制字为83HMOV DX, 63H ; 指向控制口指向控制口MOV AL, 83H ;10000011BOUT DX, AL ;8255初始化初始化MOV AL, 83H ;10000011BOUT 63H, AL ;8255初始化初始化图图7.11 82557.11 8255端口端口
3、C C置位置位/ /复位控制字格式复位控制字格式(2) 端口端口C置位置位/复位控制字复位控制字置位复位控制字置位复位控制字:00001011MOV AL , 00001011BMOV DX , 控口地址控口地址OUT DX , AL例如例如: PC5=1例例2:把把C口的第口的第0位位PC0置置1,控制端口地址为,控制端口地址为203H。MOV DX, 203H;控制口地址控制口地址DXMOV AL, 01H ;控制字控制字ALOUT DX,AL ; 控制字控制字控制口控制口解:相应的控制字为解:相应的控制字为:00000001B01HMOV AL, 01H ;控制字控制字ALOUT 203
4、H,AL ; 控制字控制字控制口控制口 (2)只能用)只能用累加器累加器作为输入作为输入/输出过程的机构,不能用其他输出过程的机构,不能用其他寄存器代替。寄存器代替。 注意注意: (1)当端口地址大于)当端口地址大于255时必须使用间接的输入输出指令。时必须使用间接的输入输出指令。将端口地址先写入将端口地址先写入DX中,然后执行输入中,然后执行输入/输出操作输出操作OUT 203H,ALOUT DX,CL 例例3:使使C口的第口的第0位位PC0发出负脉冲,控制端口地址为发出负脉冲,控制端口地址为203H。MOV DX, 203H;控制端口地址控制端口地址DXMOV AL, 01H ;控制字控制
5、字ALOUT DX,AL ; 控制字控制字控制端口控制端口解:置解:置1相应的控制字为相应的控制字为:00000001B01H置置0相应的控制字为相应的控制字为:00000000B00HMOV AL, 00H ;控制字控制字AOUT DX,AL ; 控制字控制字控制端口控制端口CALL DELAYMOV AL, 01H ;控制字控制字AOUT DX,AL ; 控制字控制字控制端口控制端口2.8255的状态字的状态字图图7.12 A、B口均为方式口均为方式1输入时的状态字输入时的状态字图图7.13 A、B口均为方式口均为方式1输出时的状态字输出时的状态字当当8255的的A口、口、B口工作在方式口
6、工作在方式1或或A口工作在方式口工作在方式2,通过,通过读读C口的数据口的数据,可以,可以检测检测A口和口和B口的状态。口的状态。图图7.14 A口在方式口在方式2工作时的状态字工作时的状态字7.1.57.1.582558255与与CPUCPU的连接的连接 图图7.15 计算机中计算机中8255的连接的连接80888088:8位数据总线,位数据总线,8255A的的A1和和A0直接与系统地址总线直接与系统地址总线的的A1和和A0相接。相接。8086:16位数据总线,位数据总线,低低8位数据线位数据线 偶地址偶地址高高8位数据线位数据线 奇地址奇地址 一般,将一般,将8255A的的D7D0和和CP
7、U低低8位数据线相连。位数据线相连。要求要求CPU访问访问8255A的的4个端口地址均为偶地址。个端口地址均为偶地址。8255A自身规定其自身规定其4个片内端口地址个片内端口地址A1和和A0应为应为00,01,10和和11。 系统总线的系统总线的A0总为总为0。将。将8255A的的A1,A0和系统地址总线和系统地址总线的的A2,A1分别相连。从而得到四个连续的偶地址。分别相连。从而得到四个连续的偶地址。图图 8086与与8255A连接连接RDWRA1A08255A+5VPB0PB7PA0PA7CSD0-D7门门电电路路A2A1A0A3A4A5A9A10A15IORIOW8086CPU图图 无条
8、件传送方式无条件传送方式1、方式、方式 02、B口方式口方式 1输入:输入:PC2=STBPC27.1.67.1.682558255应用举例应用举例 图图7.16 采用方式采用方式0的查询方式的查询方式例例7.1:现将现将A口作为传送字符的通道,工作于方式口作为传送字符的通道,工作于方式0,输出方式,输出方式,B端口未用,端口未用,端端口口C也工作于方式也工作于方式0,PC2作为作为BUSY信号的输入端,故信号的输入端,故PC3PC0为输入方式,为输入方式,PC6作为作为STROBE信号输出端信号输出端,故故PC7PC4为输出方式,为输出方式,准备传送的字符已在准备传送的字符已在CL中。中。设
9、设8255A的端口地址为:的端口地址为:A端口端口 380H ; B端口端口 381HC端口端口 382H ; 控制口控制口 383H具体程序段如下:具体程序段如下:PP: MOV AL , 10000001BOUT DX , AL MOV AL , 00001100BOUT DX , AL;初始化初始化PC6=0LPST:IN AL , DX;测;测PC2 AND AL , 04H JNZ LPST;忙,等待;忙,等待MOV AL , CLOUT DX , AL;输出字符;输出字符MOV AL , 0DH;=00001101BOUT DX , AL;PC6=1打印打印CALL DELAYDE
10、C AL;PC6=0OUT DX , AL;关打印;关打印MOV DX , 383HMOV DX , 380HMOV DX , 382HMOV DX , 383H1 0 0 0 0 0 0 1图图7.17 采用方式采用方式1的查询方式的查询方式PP: MOV AL , 10101000BOUT DX , AL MOV AL , 00001101B;初始化初始化PC6=1允许中断允许中断OUT DX,AL;书上有错!书上有错!P276 MOV DX , 383HINTEAPA7 PA0PC6PC7PC3PC4, PC5ACKAOBFAINTRAI / OOWR图图7.4 端口端口A方式方式 1
11、输出输出&具体输出过程:具体输出过程:1 0 1 0 1 0 0 0图图7.13 A、B口均为方式口均为方式1输出时的状态字输出时的状态字PC6图图7.18 8255采用中断方式与打印机的连接采用中断方式与打印机的连接A例例7.3 采用中断方式传送数据采用中断方式传送数据,电路的连接形式如下图电路的连接形式如下图.设设8255A的端口地址为:的端口地址为:A端口端口 00C0H ; B端口端口 00C2HC端口端口 00C4H ; 控制口控制口 00C6HDI为打印字符缓冲区指针。为打印字符缓冲区指针。PRINTDI设中断类型号是设中断类型号是0BH0BH中断向量表的偏移地址为中断向量表的偏移
12、地址为:0BH*4=2CH因此因此,应在主程序中应在主程序中,把中断处理程序的入口地址存放到中断向量表把中断处理程序的入口地址存放到中断向量表0000:002CH开始的四个字节中。开始的四个字节中。MAIN: MOV AL ,10100000BOUT DX , AL MOV AL , 00001001BOUT DX , AL;初始化初始化PC4=1具体程序段如下:具体程序段如下:XOR AX , AXMOV DS , AXMOV AX , 2000HMOV 2CH , AX;装载中断向量装载中断向量MOV AX , 1000HMOV 2EH , AXMOV AL , 0DH;=00001101
13、OUT DX , AL;允许允许A口中断口中断STITINTR:MOV AL,DI;取字符;取字符OUT DX, AL MOV AL , 00001000BOUT DX , AL;开始输出开始输出INC ALOUT DX,AL;PC4=1关输出关输出IRETMOV DX , 0C6HMOV DX , 0C6H;PC6=1MOV DX , 0C0HMOV DX , 0C6H;PC4=0设中断处理程序的入口地址设中断处理程序的入口地址为为:1000H:2000H主程序:主程序:子程序:子程序:1 0 1 0 0 0 0 0图图7.13 A、B口均为方式口均为方式1输出时的状态字输出时的状态字PC6