1
微机原理及应用
主讲:谢维成
http://xweicheng.ys168.com
scxweicheng@yahoo.com.cn
2
(1)方式2的基本功能
这是一种双向工作方式,使外设在单一的
8位数据总线上,既能发送数据,也能接收数
据,实现与CPU的双向通信。
只有端口A具有双向工作方式,并占用C端
口的5位作控制联络线。
(2)方式2工作时的控制信号,如下图示:
10.5 方式
方式
2
3
PC
3
PC
7
PC
6
PC
4
PC
5
PC
2~0
PA
7
~PA
0
INTE
1
INTE
2
>1
&
&
8
STB
A
ACK
A
OBF
A
(新书有错 )
INTR
A
IBF
A
WR
RD I/O
图10-10 方式2工作时的控制信号
4
各个信号的意义如下:
各个信号的意义如下:
a.INTR 中断请求,高电平有效,在输入或
输出时,都可以用来作为向CPU发中断请求信
号。
b.OBF 输出缓冲器满信号,低电平有效,
当其有效,表示CPU将一个数据写入到8255A
的A端口。
c.ACK 这是外设对OBF的响应信号,ACK的
上升沿是数据已输出的回答信号。
5
d.INTE1 中断允许信号,当PC
6
设置为1,则
INTE1=1,表示允许8255A由INTR向CPU发中断
请求信号,以通知CPU现可往8255A的端口A输
出一个数据。若INTE1=0,则屏蔽了中断请求。
e.STB 外设给8255A的选通信号,低电平
有效,此信号将外设送到8255A的数据打入输
入锁存器。
6
f.IBF 输入锁存器满信号,这是8255A
送给CPU的状态信号,高电平有效,表示当
前已有一个新数据送到输入锁存器,等待
CPU取走。
g.INTE2 中断允许信号,当PC
4
设置为1,
则INTE2=1,表示端口A的输入处于中断允
许状态。
(2)方式2的时序
请参阅P297的图7-27,它相当于方式1
的输入时序和输出时序的组合,不再详述。
7
(3)方式2的控制字
当端口A工作在方式2时,端口B可工作
在方式0,亦可工作在方式1,既可作输入
口也可作输出口。而端口C剩下3位视B口
而定,若B口工作在方式0,C口剩下3位可
工作在方式0,若B口工作在方式1,则C口
剩下3位作B口的联络线。
8
例1: 设A端口工作于方式2,B端口工作
于方式0输出,PC
2
~PC
0
工作在方式0输入。
则控制字为:
D7 D 0
1 1 ╳ ╳ ╳ 0 0 1 =C1H
设为0
9
例2: 设A端口工作在方式2,B端口工作
于方式1输入。
允许方式2中断:
允许输出中断(置位PC
6
)00001101B→0DH
允许输入中断(置位PC
4
)00001001B→09H
1 1 ╳ ╳ ╳ 1 1 ╳ =C6H
B B
方式 1 入
10
10.6 8255A应用举例
应用举例
8255A作为打印机接口,工作于方式1,采用中
断方式向打印机输出数据,如下图示:
一个宽行打印机需要一个数据选通信号,现由
CPU控制PC
0
来产生选通脉冲,打印机的ACKNLG连
到PC
6
端作ACK,OBF在这里没有用,将它悬空。设
把PC
3
连到PC总线的IRQ
7
上,对应于中断类型号
0FH,其中断向量存在0:003CH开始的4个单元中。
11
打印机
8255A
D
7
~D
0
WR
CPU
A口
PC
3
PC
7
PC
6
PC
0
驱动器
PA
7
~PA
0
INTR至系统
总线的 IRQ
7
ACKNLG
DATA
STROBE
RD
A
1
ACK
A
0 OBF
CS
设为 F4~F7H
图10-11 8255A应用举例
12
设8255A的端口地址为:
A端口 00F4H
B端口 00F5H
C端口 00F6H
控制口 00F7H
方式控制字为:
PC
4
PC
5
10101/O╳ ╳ 0→A0H
13
程序的构成:中断服务子程序完成字符输出,主程序完
成初始化、设置方式控制字及中断的准备工作等。此后
CPU就可执行其它操作,如有中断请求,则去完成字符的
输出。程序段如下(设中断服务程序的入口地址51000H)
主程序段:
SUB AX,AX
MOV DS,AX
MOV AX,1000H
MOV WORD PTR[003CH],AX ;设置偏址
MOV AX,5000H
MOV WORD PTR[003EH],AX ;设置段址
MOV AL,0A0H ;置方式控制字
OUT 0F7H,AL
14
IN AL,21H ;读中断屏蔽字
AND AL,7FH ;置相应位为0
OUT 21H,AL
MOV AL,0DH ;置位PC
6
OUT 0F7H,AL ;允许输出中断(A口)
MOV AL,20H ;送一空格至A口
OUT 0F4H,AL
MOV AL,00 ;发选通脉冲
OUT 0F7H,AL
MOV AL,01
OUT 0F7H,AL ;打印机收到数后打印,发ACK信号,
STI 其上升沿使INTR有效,发中断请求
┇ 进入中断服务程序
15
②方式1的输出时序如下图示 : (参见P295图7-25)
?
?
?
t
WOB
t
AOB
t
AK
t
AIT
WR
OBF
ACK
数据有效
INTR
t
WIT
t
WB
送往外设的数据
图10-9 方式1的输出时序
16
中断服务程序(装在5000:1000H处)
PRINT: PUSH AX
MOV AL,[DI] ;DI为打印字符缓冲器指针
OUT 0F4H,AL
MOV AL,00 ;使PC
0
为0
OUT 0F7H,AL
MOV AL,01 ;使PC
0
为1,
OUT 0F7H,AL 发选通脉冲
INC DI
MOV AL,20H ;清除中断请求
OUT 20H,AL
POP AX
IRET ;中断返回