当前位置:文档之家› 8255并行接口应用实验(优选.)

8255并行接口应用实验(优选.)

8255并行接口应用实验(优选.)
8255并行接口应用实验(优选.)

实验四并行接口实验

一、实验目的

1.掌握通过8255A并行口进行数据传输的方法。

2.控制16位数据灯的相对循环显示。

二、实验设备

PC机一台,TD—PIT/TD—PIT—B实验装置一套。

三、实验内容

1、基本输入输出实验。编写程序,使8255的A口为输出,B口

为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。

2、流水灯显示实验。编写程序,使8255的A口和B口均为输出,

实现16位数据灯的相对循环显示。

四、8255工作原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0--基本输入/出方式、

方式1--选通输入/出方式、

方式2--双向选通工作方式。

8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。

图3-1 8255的内部结构及引脚

图3-2 8255控制字格式

五、实验步骤

I、基本输入输出实验

本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。参考程序流程如图3-3所示。

图3-3 8255并行接口芯片基本输入/输出实验(1)参考程序流程图实验步骤

编写程序,使8255并行接口芯片端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,实现输入输出功能。具体实验步骤如下。

1)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

2)打开实验箱电源,首先运行PCI_BIOS.EXE程序,查看I/O空间始地址。

3)参考图3-4所示连接实验线路。

4)利用查出的地址编写程序,然后编译链接。

5)运行程序,拨动开关,看数据灯显示是否正确

图3-4 8255并行接口芯片基本输入/输出实验参考接线图

==================================================================================== 文件名: A82551.ASM

功能描述: B为输入,A口为输出,将读入的数据输出显示

====================================================== SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:SSTACK

START: MOV DX, 0646H

MOV AL, 82H

OUT DX, AL

AA1: MOV DX, 0642H

IN AL, DX

CALL DELAY

MOV DX, 0640H

OUT DX, AL

JMP AA1

DELAY: PUSH CX

MOV CX, 0F00H

AA2: PUSH AX

POP AX

LOOP AA2

POP CX

RET

CODE ENDS

END START

实验现象:

当拔动B接口对应的开关时候,A接口对应的二极管亮。这样成功演示了A作为输出口,B作为输入口,实现二极管亮和灭的控制。

II、流水灯实验

流水灯显示实验。编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。

1、实验原理

8255工作方式控制字和C口按位置位/复位控制字格式如图2-2所示。8255并行接口芯片分别向A口和B口写入7EH和FEH,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。参考实验程序流程如图3-5所示

图3-5 8255并行接口芯片流水灯实验参考程序流程图

2、实验步骤

编写程序,使8255并行接口芯片端口A端口B均为输出。

实验步骤如下:

1)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

2)打开实验箱电源,首先运行PCI_BIOS.EXE程序,查看I/O空间始地址。

3)参考图3-6所示连接实验线路。

4)利用查出的地址编写程序,然后编译链接。

5)运行程序,看信号灯显示现象。

1.按下图连接硬件线路:

2.编制程序,通过8255A控制发光二极管,使16位数据灯的相对循环显示。

编程提示

首先分别向A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。

3. 打开实验箱电源,运行程序,观察数据灯的显示。

实验现象:

16个二极管相对循环亮,基本通过A、B口,实现了对灯的控制操作。

实验程序:

MY8255_A EQU 0C060H ;设置端口地址

MY8255_B EQU 0C061H

MY8255_C EQU 0C062H

MY8255_MODE EQU 0C063H

DATA SEGMENT ;数据暂存区

LA DB ?

LB DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV DX,MY8255_MODE ;设置工作方式

MOV AL,80H

OUT DX,AL

MOV DX,MY8255_A ;向端口A输入

MOV AL,7FH

OUT DX,AL

MOV LA,AL ;保存A端口的数据

MOV DX,MY8255_B ;向端口B输入

MOV AL,0FEH

OUT DX,AL

MOV LB,AL ;保存B端口的数据

CALL DALLY

A1: MOV AL,LA ;A循环右移动一位,实现流水灯效果 ROR AL,1

MOV LA,AL

MOV DX,MY8255_A

OUT DX,AL

MOV AL,LB ;B循环右移动一位,实现流水灯效果 ROL AL,1

MOV LB,AL

MOV DX,MY8255_B

OUT DX,AL

CALL DALLY

CALL BREAK

JMP A1

DALLY: MOV CX,3FFH

D1: MOV AX,0FFFFH

D2: DEC AX

JNZ D2

LOOP D1

RET

BREAK PROC NEAR

MOV AH,06H

MOV DL,0FFH

INT 21H

JE RETURN

MOV AX,4C00H

INT 21H

RETURN:RET

BREAK ENDP

CODE ENDS

END START

五、思考题

(1)若要实现流水灯不同的流动方向,怎么修改程序?

答:通过将不同的数据写入对应的端口中,如:

MOV AL,LA

ROR AL,1

MOV LA,AL

MOV DX,MY8255_A

为了实现流水灯效果,右循环移动一位,既是修改写入端口的值实现不同流动方向。

(2)若要延长每个二极管亮的时间,怎样修改程序?

答:由于本实验使用了调用CALL DELAY子程序实现延时,而子程序的延时是通过对相关指令占有执行周期来实现延时的,所以可以增长延时程序中的占有周期(占有CPU时间)达到延时的增长。

六、实验小结:

最新文件---------------- 仅供参考--------------------已改成-----------word文本

--------------------- 方便更改

赠人玫瑰,手留余香。

相关主题
文本预览
相关文档 最新文档