8255并行接口实验
- 实验目的:
1.学习并掌握8255的工作方式及其应用。
2.掌握8255典型应用电路的接法。
二、实验环境:
PC机一台,TD-PITD实验装置一套。
三、实验内容:
- 基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。
- 流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7~
D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
实验步骤
1. 基本输入输出实验
本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:
- 实验接线图如图3-1-4所示,按图连接实验线路图。
- 根据实验内容,编写实验程序,编译、链接。
运行程序,改变拨动开关,同时观察LED灯的显示,验证程序功能。
实验程序清单(T8255-1.ASM)
IOY0 EQU 0C000H ;8255的CS引脚连接IOY0对应的端口始地址
MY8255_A EQU IOY0+00H*2 ; ;8255的端口A地址
MY8255_B EQU IOY0+01H*2 ;8255的端口B地址
MY8255_C EQU IOY0+02H*2 ;8255的端口C地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
CODE SEGMENT ;定义代码段
ASSUME CS:CODE
START: MOV DX,MY8255_MODE ;8255控制端口地址为3006H
MOV AL,82H ;设置8255方式控制字,A、B口工作方式0,A口输出,B口输入
OUT DX,AL
LOOP1: MOV DX,MY8255_B ;读B口发出的起始数据,B口输入
IN AL,DX
MOV DX,MY8255_A ;写A口发出的起始数据,A口输出
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
2. 流水灯显示实验
使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,
循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图3-1-5所示。实验步骤如下所述: (1) 实验接线图如图3-1-5所示,按图连接实验线路图。
- 根据实验内容,编写实验程序,编译、链接。
- 运行程序,观察LED灯的显示,验证程序功能。
自己改变流水灯的方式,编写程序。
实验程序清单(T8255-2.ASM)
IOY0 EQU 0C000H ;8255的CS引脚连接IOY0对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255的端口A地址
MY8255_B EQU IOY0+01H*2 ;8255的端口B地址
MY8255_C EQU IOY0+02H*2 ;8255的端口C地址
MY8255_MODE EQU IOY0+03H*2 ;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控制端口地址为3006H
MOV AL,80H ;设置8255方式控制字,A、B口工作方式0,A、B口输出
OUT DX,AL
MOV DX,MY8255_A ;写A口发出的起始数据
MOV AL,80H
OUT DX,AL ;点亮数据灯D7
MOV LA,AL
MOV DX,MY8255_B ;写B口发出的起始数据
MOV AL,01H
OUT DX,AL ;点亮数据灯D8
MOV LB,AL
LOOP1: CALL DALLY
MOV AL,LA ;将A口起始数据右移再写入A口
ROR AL,1
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
MOV AL,LB ;将B口起始数据左移再写入B口
ROL AL,1
MOV LB,AL
MOV DX,MY8255_B
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
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
3. 控制8段数码管显示实验
由8255的A口输出控制一个8段LED数码管,由B口PB3~PB0接入4位开关,
编写一段程序,用数码管显示开关状态。从题目可以得到:A口作为方式0输出,B口低端用作输入,C口没有使用,可以做为输出。则方式控制字为: 10000 010 B。开关状态:4位——16种,用LED数码管显示:0~9,A~F十六进制数显示。
实验接线图如图3-1-6所示。实验步骤如下所述: (1) 实验接线图如图3-1-6所示,按图连接实验线路图。
- 根据实验内容,编写实验程序,编译、链接。
运行程序,观察LED数码管的显示,验证程序功能。
实验程序清单(T8255-3.ASM)
IOY0 EQU 0C000H ;8255的CS引脚连接IOY0对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255的端口A地址
MY8255_B EQU IOY0+01H*2 ;8255的端口B地址
MY8255_C EQU IOY0+02H*2 ;8255的端口C地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
DATA SEGMENT ;定义LED段码表
TAB_LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV AL,82H ;1000 0010 A端口方式0输出,B方式0输入
MOV DX,MY8255_MODE
OUT DX,AL
LOOP1: MOV DX,MY8255_B
IN AL,DX ;读入开关状态
AND AL,0FH ;屏蔽高四位
MOV BX,OFFSET TAB_LED ;取LED段码表首地址
XLAT ;查出AL对应的LED段控制码
MOV DX,MY8255_A ;8255的A端口是LED段码输出口
OUT DX,AL ;输出段控制信号
CALL DALLY
JZ LOOP1
DALLY PROC NEAR ;软件延时子程序 MOV CX,0070H
D1: MOV AX,000FH
D2: DEC AX JNZ D2
LOOP D1
RET
DALLY ENDP
CODE ENDS END START