微机原理及应用实验-简 - 图文 联系客服

发布时间 : 星期日 文章微机原理及应用实验-简 - 图文更新完毕开始阅读5b5b71eeb8f67c1cfad6b8b2

《微机原理及应用》实验教程

C口位写控制字的格式如下:

其中位地址可以是000—111,分别表示C口的8位D0-D7,内容可以是0、1,该控制字的作用是把内容0或1写入C口指定的位中,所以称为C口位写控制字。

8255A工作方式0是基本I/O工作方式。在输入时,外设只需要把数据传送给端口引脚、CPU就可以相应的端口中读取数据;在输出时,CPU只需要把数据写入端口,就能从相应的端口引脚把数据传送给外设。如果端口A和B都选择方式0,那么端口C的所有8位也都可以作为I/O口使用。并且端口A、B、CH和CL都可以独立选择用作输入口或者输出口,所以一共可以有16种不同的I/O配置。 8255A工作方式1是选通I/O工作方式。这种工作方式除了传送数据外,端口和外设间还需要有一对联络线,用以传送握手信号。另外端口还有一根中断请求线,用于向系统申请中断。这三根线都要从C口借用。所以,当端口A和B有一个选择方式1,另一个选择方式0,C口能独立使用的I/O线只有5根;而当端口A和B都选择方式1,共要从C口借用6根线,C口能独立使用的I/O线就只有两根了。另有一点要注意,端口A在输入和输出两情况下,借用C口不同的位线作为联络线;端口B在输入和输出两种情况下,借用C口相同的位线作为联络线,如图6.2所示。

按方式1工作,输入端口的数据传送过程如下:

(1)外设把数据传送给端口引脚,并发出STB信号(负脉冲);

(2)STB信号把数据锁存到输入数据寄存器内,并使IBF变高,通知外设不可传送下一个数; (3)STB信号使INT变高,向系统申请中断;

(4)CPU响应中断,从端口读取数据,使IBF和INT变低,再从(1)重复进行。

输入缓冲器满信号IBF,高电平有效。当IBF有效时,表示缓冲器中有一个数据尚未被CPU取走。外设可使用此信号来决定是否能送下一个数据。它可以看成是/STB的应答信号。

图7. 2 8255工作方式1的联络线

而输出端口的数据传送过程如下:

(1)CPU把数据写入端口,使OBF和INT变低,OBF输出寄存器满信号,通知外设取数; (2)外设从端口引脚取得数据,并发回ACK响应信号(负脉冲); (3)ACK信号使OBF变高;

(4)ACK信号的上升沿使INT变高,向系统申请中断,CPU响应中断,再从(1)重复进行。 输出缓存器满信号/OBF,低电平有效。该信号通知外设,在规定的端口上已有一个有效数据,外设

31

《微机原理及应用》实验教程 可以取走。

外设响应信号/ACK,低电平有效。有效时表示外设已从该端口取走数据。/ACK有效时使/OBF=1; 8255A工作方式2是双向I/O工作方式,仅适用于端口A。这种工作方式在端口和外设间需要两对联络线,分别用于传送输入和输出时的握手信号;而中断请求线只有一根,输入和输出合用同一个中断请求。这五根线都要从C口借用。所以,当端口A选择方式2,端口B选择方式0,共要从C口借用5根线,C口能独立使用的I/O线只有3根;而且端口A选择方式2,端口B选择方式1,共要从C口借用8根线,C口就没有能独立使用的I/O线了。8255A工作方式2的联络线如图6.3所示。

输入方式 输出方式

图7. 3 8255工作方式2的联络线

端口A按方式2工作,输入数据或输出数据的传送过程基本上与方式1相同,只是输出过程的(2)要改为:

“外设发出ACK=0信号,从端口引脚取得数据,再发出ACK=1信号;”

综上所述,无论是端口A还是B,无论是方式1还是2,都需要从端口C借用联络线和中断请求线,在这些信号中,除了STB和ACK以外,其它所有信号的状态都可以在端口C中读取(端口的位与引脚的位相对应),这给不采用中断方式而采用查询方式进行I/O传送来说是十分方便的。而端口C中的STB和ACK所对应的位(PC2、PC4和PC6)虽然不能用于查询,但却用作中断允许控制位,其中PC6和PC4分别用于端口A输出和输入时的中断允许控制,PC2用于端口B输出或输入时的中断允许控制,均可采用位写控制字进行设置。

7.1 实验1 8255A工作方式0、1的基本应用 一、实验目的

1.学习并掌握8255的0,1工作方式及其应用。 2.学习在系统接口实验单元上构造实验电路。

二、实验仪器、设备

计算机或EPC-1000型嵌入式微机实验仪及IC芯片:8255A。

三、实验内容及步骤

(一)8255工作方式0、1的输入和输出。 A).连线:如图6.4,8255的数据线D0-D7,地址线A0、A1,控制线RESET,RD,WR,分别和总线相连接,电源和地分别连到实验箱的+5V和地。

32

《微机原理及应用》实验教程

8255的CS片选,连接地址译码器输出Y0。注意:Y0输出后经74HC04的两个反相非门后再接入/CS。 300-307地址中,303同307为方式控制字地址,300同304为PA,以后顺延为PB、PC。

PA0-PA7连到逻辑开关输入端K0-K7。 PC4(/STBA)连到单脉冲(负)输出端。

PC5(IBFA) 连到逻辑笔输入端。(检测输出的高低电平信号) B).实验在DEBUG下进行,可以不必编程,直接用DEBUG的I和O进行输入输出即可。 (1)工作方式0、1输入。(在DEBUG环境中,后同)

图7. 4 8255A工作方式0,1输入

74HC04 六反相器,该片的电源和地实验箱上已经接好,可直接使用。 键入O307 9B ;写入方式控制字10011011B,工作方式0

任意拨动开关,键入I304 从端口A输入数据,记录输入数据和开关状态。 重复上步,记录输入数据和开关状态。

键入O307 BB ;写入方式控制字10111011B,工作方式1

任意拨动开关,键入I304 从端口A输入数据,记录输入数据和开关状态。 发单脉冲至/STBA,记录IBFA状态;

键入I304 记录输入数据和IBFA的状态。

重复以上3步。

※方式1下的输入过程。外设将数据送到A口,发出/STB信号。由/STB信号,将数据锁存到A口输入锁存器中。同时,IBF有效(高电平),表示有数据等待被接收。当CPU读取数据后,IBF无效(低电平)。等待下一次的数据输入。

(2)工作方式0、1输出。

33

《微机原理及应用》实验教程

图7. 5 8255A工作方式0,1输出

连线:如图6.5,PA0-PA7改连到逻辑电平显示端(发光二极管)L0-L7(红色R和绿色G均可)。 PC6 (/ACKA)至单脉冲(负)输出端。 PC7 (/OBFA)至逻辑笔输入端。

键入O307 8B 写方式控制字10001011B,工作方式0

键入O304 XX 向端口A输出数据,XX为任意Hex数,记录输出数据的显示状态。 重复上步,记录输出数据和开关状态。

键入O307 AB<CR> 写方式控制字10101011B,工作方式1;

键入O304 XX<CR> 向端口A输出数据,其中XX为任意Hex数,记录显示状态和OBF状态; 发单脉冲至ACKA,记录OBFA状态; 重复以上两步。

※方式字送出后,OBF为高电平,输出寄存器无数据。当有数据送到输出寄存器,OBF变低,输出寄存器满,等待外设取数据。数据被取走后,OBF变高,等待CPU送新的数据。

(二)编程。

要求:A口工作在方式1,输入。B口工作在方式0,输出。输入接拨动逻辑开关,输出接逻辑电平显示灯。

连线:不改变上述方式1时的连线,增加PB口的连线。 参考程序:

CODE SEGMENT

ASSUME CS: CODE START: MOV DX, 307h

MOV AL, 0B0H OUT DX, AL

AA: MOV DX, 304H

IN AL, DX

MOV DX, 305H

OUT DX, AL

MOV AH, 0BH ;检测键盘输入 INT 21H

AND AL, AL JZ AA

MOV AL, 00H ;;退出前关灯 OUT DX, AL MOV AH, 4CH INT 21H

CODE ENDS

END START

34