8255接口电路设计实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六8255接口电路设计实验
实验目的
(1)掌握8255的工作方式级应用编程。
(2)掌握8255的典型应用电路接法。
实验设备
PC微机一台、TD-PIT实验系统一套。
实验内容
(1)基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。
(2)流水灯显示实验。编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。
实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在一下三种方式下工作:方式0—基本输入/输出方式、方式2—选通输入/输出方式、方式2—双向选通工作方式。
实验说明
1、基本输入输出实验
本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程实现输入输出功能。
8255并行接口应用实验接线图
程序流程图:
部分程序:MOV DX,MY8255_MODE ;初始化8255工作方式
MOV AL,82H ;工作方式0,A口输出,B口输入
OUT DX,AL
MOV DX,MY8255_B ;读B口
IN AL,DX
MOV DX,MY8255_A ;写A口
OUT DX,AL
2、流水灯显示实验
首先分别向A口和B口写入80H和01H,然后分别将该数左移和右移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。
8255并行应用实验接线图
程序流程图:
部分程序:DATA SEGMENT
LA DB ? ;定义数据变量
LB DB ?
DATA ENDS
……
MOV DX,MY8255_MODE ;定义8255工作方式 MOV AL,80H ;工作方式0,A口和B口为输出 OUT DX,AL
MOV DX,MY8255_A ;写A口发出的起始数据
MOV AL,80H
OUT DX,AL
MOV LA,AL
MOV DX,MY8255_B ;写B口发出的起始数据
MOV AL,01H
OUT DX,AL
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
用键盘控制实现流水灯的左循环、右循环、间隔闪烁程序:
;****************根据查看端口资源修改下列符号值******************* IOY0 EQU 0E400H ;片选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 ?
A0 DB 'shu ru ning de xuan ze:',0DH,0AH,'$'
A1 DB 'press 1:zuo yi',0DH,0AH,'$'
A2 DB 'press 2:you yi',0DH,0AH,'$'
A3 DB 'press 3:jian ge shang shuo',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE ;定义8255工作方式
MOV AL,80H ;工作方式0,A口和B口为输出
OUT DX,AL
MOV DX,MY8255_A ;写A口发出的起始数据
MOV AL,80H
OUT DX,AL
MOV LA,AL
MOV DX,MY8255_B ;写B口发出的起始数据
MOV AL,01H
OUT DX,AL
MOV LB,AL
D0: MOV DX,OFFSET A0
MOV AH,09H
INT 21H
MOV DX,OFFSET A1
INT 21H
MOV DX,OFFSET A2
INT 21H
MOV DX,OFFSET A3
INT 21H
MOV AH,1
INT 21H
CMP AL,'1'
JE LOOP1
CMP AL,'2'
JE LOOP2
CMP AL,'3'
JE LOOP3
JMP D0
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口 ROL AL,1
MOV LB,AL
MOV DX,MY8255_B
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1
JNZ QUIT ;无按键则跳回继续循环,有则退出
LOOP2: CALL DALLY
MOV AL,LA ;将A口起始数据右移再写入A口 ROR AL,1
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL