8255并口控制器应用实验报告

  • 格式:docx
  • 大小:1.35 MB
  • 文档页数:10

HUNAN UNIVERSITY

课程实验报告

实验名称 8255并口控制器应用实验

学生姓名

学生学号

专业班级

指导老师 2014-12-10

实验二 8255并口控制器应用实验

一、 实验目的

1. 掌握8255的工作方式及应用编程;

2. 掌握8255的典型应用电路接法。

二、 实验内容

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

2. 基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。

三、 实验原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。

图 1 8255内部结构及引脚图

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、

B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图 1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图 2所示。

图 2 8255控制字

四、 实验步骤及结果

1、 流水灯显示实验

图 3 流水灯显示程序流程图

首先分别向A口和B口写入80H和01H,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。参考实验程序流程如图

3所示。

图 4 流水灯显示接线图

a) 实验接线图如图 4所示,按图连接实验线路图,连接好的实物图如图 5所示。

图 5 8255连接实物图

b) 运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接,代码如下:

IOY0 EQU 3000H ;片选IOY0对应的端口始地址

MY8255_A EQU IOY0+00H*4 ;8255的A口地址

MY8255_B EQU IOY0+01H*4 ;8255的B口地址

MY8255_C EQU IOY0+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

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 ;定义8255工作方式

MOV AL,89H ;工作方式0,A口和B口为输出

OUT DX,AL

MOV DX,MY8255_A ;写A口发出的起始数据

MOV AL,01H

OUT DX,AL

MOV LA,AL

MOV DX,MY8255_B ;写B口发出的起始数据

MOV AL,80H

OUT DX,AL

MOV LB,AL

LOOP1: CALL DALLY

MOV AL,LA ;将A口起始数据右移再写入A口

ROL AL,1

MOV LA,AL

MOV DX,MY8255_A

OUT DX,AL

MOV AL,LB ;将B口起始数据左移再写入B口

ROR AL,1

MOV LB,AL

MOV DX,MY8255_B

OUT DX,AL

MOV AH,1 ;判断是否有按键按下

INT 16H

JZ LOOP1 ;无按键则跳回继续循环,有则退出

QUIT: MOV AX,4C00H ;结束程序退出

INT 21H

DALLY PROC NEAR ;软件延时子程序

PUSH CX

PUSH AX

MOV CX,0FFFH

D1: MOV AX,0FFFFH

D2: DEC AX

JNZ D2

LOOP D1

POP AX

POP CX

RET

DALLY ENDP

CODE ENDS

END START

c) 运行程序,观察LED灯的显示,验证程序功能程序结果。程序下载后,运行效果为左、右的流水灯各自向右、左移动,如图 6所示。

图 6 流水灯效果图图 6

2、 方式1输入输出实验

本实验是在上一个实验基础上改造而成。实验使8255端口A、B工作在方式0并作为输出口,端口C为输入口。在左右流水灯流动的时候,不断检测端口C输入是否为0,不为0则显示在A口,B口停止流水显示。具体步骤如下:

(1) 电路图在图 4上进行改动,改动时参考了图 7(改动只是添加了线连接PB[7…0]和K[7…0],实物图参考图 5)。

图 7 8255输入线路图

(2) 运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接,实验代码也在上一个实验基础上改动,代码如下(改动部分标为红色);

IOY0 EQU 3000H ;片选IOY0对应的端口始地址

MY8255_A EQU IOY0+00H*4 ;8255的A口地址

MY8255_B EQU IOY0+01H*4 ;8255的B口地址

MY8255_C EQU IOY0+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

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 ;定义8255工作方式

MOV AL,89H ;工作方式0,A口和B口为输出

OUT DX,AL

MOV DX,MY8255_A ;写A口发出的起始数据

MOV AL,01H

OUT DX,AL

MOV LA,AL

MOV DX,MY8255_B ;写B口发出的起始数据

MOV AL,80H

OUT DX,AL

MOV LB,AL

LOOP1: CALL DALLY

MOV AL,LA ;将A口起始数据右移再写入A口

ROL AL,1

MOV LA,AL

MOV DX,MY8255_A

OUT DX,AL

MOV AL,LB ;将B口起始数据左移再写入B口

ROR AL,1

MOV LB,AL

MOV DX,MY8255_B

OUT DX,AL

MOV DX,MY8255_C ;读C口

IN AL,DX

DEC AL

JZ LOOP2

MOV AH,1 ;判断是否有按键按下

INT 16H

JZ LOOP1 ;无按键则跳回继续循环,有则退出

LOOP2: MOV DX,MY8255_C ;读C口

IN AL,DX

MOV DX,MY8255_A ;写A口

OUT DX,AL

AND AL,255

JNZ S

JMP LOOP1

S: MOV AH,1 ;判断是否有按键按下

INT 16H

JZ LOOP2 ;无按键则跳回继续循环,有则退出

QUIT: MOV AX,4C00H ;结束程序退出

INT 21H

DALLY PROC NEAR ;软件延时子程序

PUSH CX

PUSH AX

MOV CX,0FFFH

D1: MOV AX,0FFFFH

D2: DEC AX

JNZ D2

LOOP D1

POP AX

POP CX

RET

DALLY ENDP

CODE ENDS

END START

图 8 8255输入输出图

(3) 运行程序,然后改变拨动开关,准备好后,按动KK1,同时观察数据灯显示,显示达到预期效果,如图 8所示。

五、 实验总结

汇编指令不是分熟悉,在8255输入输出实验时,检测C口是否为0遇到了一点小问题。后经过摸索,问题解决。