1. 当数据从8255A的C端口读到CPU时,8255A的控制信号CS、RD、WR、A1、AO
分别是什么电平?
答: 当数据从8255A的C 端口读入CPU时,8255A的片选信号CS=0,A1,A0=10,
WR=1。
RD=0,
2. 某外设如图1所示,8255使用查询方式将缓冲区BUF中的100个字节数据通过A口输
出到外设。当外设的BUSY 为低电平时,表示外设可以接受数据。画出完整的接口图,编写8255的初始化程序和输出程序。设8255端口的地址范围是80H~83H,译码器用74LS 138,请画出详细的译码电路图。
D0~D7
外设
BUSY
图1
答:设8255工作在方式0输出,用PC0查询BUSY,PC0=0,允许输出 MOV AL,81H ;方式字 OUT 83H,AL
MOV BX,OFFSET BUF MOV CX,100 W: IN AL,82H
TEST AL,01H; 查询PC0 JNZ W
MOV AL,BYTE PTR[BX] ;取数据 OUT 80H,AL ;A口输出 INC BX LOOP W HLT
译码器用74LS 138如图:
A4 C Y0 A3 B A2 A A5 G1* A6 G2* A7 G3
3. 现有4种简单外设:①一组8位开关:②一组8位LED指示灯:③一个按钮开关:④一个蜂
鸣器。要求: (1)用8255A作为接口芯片,将这些外设构成一个简单的微机应用系统, 画出接口连接图: (2)编制5种驱动程序,每个程序必须包括至少两种外设共同作用的操作。
给出程序清单。
答:设灯为共阴极,如图2所示,
pa equ 40H Pb equ 41H Pc equ 42H ……
Mov al,10000011B; 方式0,A口输出,B口输入,C口高4位出,低4位入 Out pc+1,al
(1)8位开关分别控制8个灯 A1:in al,pb Out pa,al jmp A1
(2)按扭控制蜂鸣器 A2: in al,pc
Mov cl,4
Ror al,cl; 将PC0位移到PC4的位置 Out pc,al Jmp a2
(3)按钮控制灯 A3: mov al,00h
Out pa,al ; 灯先不亮 In al,pc Test al,01h
Jz A3; 若PC0=1则输出全1到灯 Mov al,ffh
Out pa,al ; 灯亮 Jmp A3
(4)8个开关控制8个灯,按钮为总开关 A4: mov al,00h;
out pa,al; 灯先不亮 In al,pc Test al,01h
Jz A4; 若PC0=1则开关可以控制灯 In al,pb Out pa,al Jmp A4
(5)8个开关控制8个灯,若灯全灭,则蜂鸣器响 A5: in al,pb
Out pa,al
Test al,0FFH Jnz A5
Mov al,10h ; 若灯全灭,则蜂鸣器响 Out pc,al Jmp A5
图2
4. 某PC微机应用系统如图3所示,以8255A作为接口,采集一组开关S7~S0的状态,然后
通过一组发光二极管LED7 ~LED0 显示出来,(Si闭合,对应LEDi亮,Si断开,对应LEDi灭),电路连接如图所示.已知8255A的A,B两组均工作在方式0 .
图3
…… 此处隐藏0字 ……
1) 写出8255A四个端口地址 2) 写出8255A的工作方式字 3) 写出实现给定功能的程序
答案:
1) 由图可知当A9A8A7A6A5A4A3A2=11001000时,74LS138的Y0输出低电平,由此可知各
端口地址为:8255A口(320H), 8255B口(321H), 8255C口(322H), 8255控制口(323H) 2) A口方式0输出,B口方式0输入,方式字为:82H 3) 程序如下:
MOV AL , MOV DX, OUT DX, MOV DX, IN AL, NOT AL MOV AX, OUT DX, HLT
82H ;置方式字 323H ;控制口地址 AL 321H ;B口地址 DX ;读开关状态 ;状态取反 320H ;置A口地址 AL