《接口技术》实验报告
实验二8255并行口接口实验
实验目的
利用8255A实现并行接口实验。
实验内容
1:掌握8255A的编程原理。
2:熟悉计算机并行接口的使用方法。
实验步骤
1连线:8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。B口的
PB0-PB7依次接发光二极管Ll-L8。从CS0-CS7中任选一个与8255A
的片选信号相连,其他线路均已接好。
2:编写程序单步运行并调试程序。
3:调试通过后全速运行并观察实验结果。
实验原理图
程序流程图
源程序清单
ASSUME CS:CODE
CODE SEGMENT PUBLIC
ORG 100H
START: MOV DX,04A6H
MOV AX,90H
OUT DX,AX
START1: MOV DX,04A0H
IN AX ,DX
MOV DX,04A2H
OUT DX,AX
JMP START1
CODE ENDS
END START
运行结果及分析
当读到某个开关处于高电平时,对应的发光二极管就会亮
修改1
A口和B口的工作方式互换。B口输入,A口输出。这样的话程序改成:
START: MOV DX,04A6H
MOV AX,82H
OUT DX,AX
START1: MOV DX,04A2H
IN AX ,DX
MOV DX,04A0H
OUT DX,AX
JMP START1
CODE ENDS
END START
运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。
修改2
B口输入,C口输出,这样的话程序改成:
START: MOV DX,04A6H
MOV AX,82H
OUT DX,AX
START1: MOV DX,04A2H
IN AX ,DX
MOV DX,04A4H
OUT DX,AX
JMP START1
CODE ENDS
END START
运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。
第二篇:实验二_8255并行接口应用实验
实验二 8255并行接口应用实验
一.实验目的
1. 掌握8255工作方式的编程设计。2. 8255与外部设备进行连接的应用。
二.实验设备与材料:
TDN86/88教学实验系统一台,扁平插线若干。
三.实验原理:
INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。可与外设并行进行数据交换。A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。 8255能与许多外部设备连接,例如:键盘、显示器、打印机等。
(a)工作方式控制字 (b)C口按位置位/复位控制字
四.实验内容及步骤
1.8255的一般输入输、出方式
本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图1所示。
图1 8255接口实验中端口地址如表1所示
表1
接口实验单元中的开关和发光二极管电路
按图所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B, 端口A输出线接至一组发光二极管上,通过对8255编程来实现输入输出功能。
实验步骤
l
图2 8255输入输出方式实验接线图
注:圆圈处是要求接的连线。
(1)按图2接线。用扁平线(8头)分别插在8255的A口和发光二极管的插针上。用扁平线 分别插在8255的B口和拨动开关的插针上。
(2)输入源程序,汇编、连接后装入系统。
l 参考程序1
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,82H ;设8255方式字10000010 A位输出,B口位输入。
OUT 63H,AL
A1: IN AL,61H
OUT 60H,AL
JMP A1
CODE ENDS
END START
(3)执行程序后,拨动开关组K0-K7,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7的值是一一对应的变化。
2.8255的选通输入、输出方式
按图3 所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式1并作为输入口。从端口C的PC2成为选通信号输入, 端STBb,PC0成为中断请求信号输出端INTRb。当B口数据就绪后,通过发口STBb信号来请求CPU读取端口B数据并送A口输出显示。
实验步骤
l 图3 8255选通方式实验接线图
(KK1-初态为“1”)
注:圆圈处是要求接的连线。
(1) 按图3接线。用扁平线(8头)分别插在8255的A口和发光二极管的插针上。用扁平线 分别插在8255的B口和拨动开关的插针上。8255的PC0插针接8259的IRQ7插针上, 8255的PC1插针接KK1-插针上。
(2) 输入源程序,汇编、连接后装入系统。
l 参考程序2
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: CLI
MOV AL,0A6H
OUT 63H,AL
MOV AL,05H
OUT 63H,AL
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ7
ADD AX,2000H
MOV SI,003CH
MOV [SI],AX
MOV AX,0000H
MOV SI,003EH
MOV [SI],AX
POP DS
IN AL,21H ;读 IMR
AND AL,7FH ;开IRQ7中断
OUT 21H,AL
A1: STI
HLT ;等待中断请求信号
JMP A1
IRQ7: IN AL,61H ;读开关信息
OUT 60H,AL ;输出开关信息
MOV AL,20H
OUT 20H,AL
IRET
CODE ENDS
END START
(3) 执行程序后,拨动开关组K0-K7(即设定一输入值),按一下拨动开关KK1, 观察发光二极管LED0-LED7变化,它应是与开关组K0-K7D的设定值一一对应 。
3.运用8255设计的键盘及显示接口
图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C口为输入口; PB0—PB7与七段代码显示器连接B口为输出。
程序执行过程如下: 识别是否有键按下,方法是使PA0一PA3输出全0,读C口(行值) 中只要有一位为0,就说明有键按下, 在检测到有键按下后,延迟一段时间 ,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。
实验步骤
l 图4 8255接口的应用键盘及显示接线图
注:圆圈处是要求接的连线。
(1)按图4接线。
(2)输入源程序,汇编、连接后装入系统。
(3)执行程序后, 按一下键盘,7段代码就会显示相应的数字。
l 参考程序3
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,3000H
MOV AL,00H
MOV [SI],AL ;清空存放数据的缓冲区
MOV [SI+1],AL
MOV [SI+2],AL
MOV [SI+3],AL
MOV DI,3003H
MOV AL,81H ;8255方式字定义 选择0方式,A口为输出;
;B口为输出;C口为输入
OUT 63H,AL
BEGIN: CALL DIS ;显示七段代码管数据的子程序
CALL CLEAR ;七段代码管清0子程序
CALL CCSCAN ;检测是否有键按下子程序
JNZ INK1 ;
JMP BEGIN
INK1: CALL DIS
CALL DALLY ;子程序为延时,消抖动
CALL DALLY
CALL CLEAR
CALL CCSCAN
JNZ INK2
JMP BEGIN
INK2: MOV CH,0FEH
MOV CL,00H
COLUM: MOV AL,CH
OUT 60H,AL
IN AL,62H
TEST AL,01H
JNZ LONE
MOV AL,00H
JMP KCODE
LONE: TEST AL,02H
JNZ NEXT
MOV AL,04H
KCODE: ADD AL,CL
CALL PUTBUF
PUSH AX
KON: CALL DIS
CALL CLEAR
CALL CCSCAN
JNZ KON
POP AX
NEXT: INC CL
MOV AL,CH
TEST AL,08H
JZ KERR
ROL AL,1
MOV CH,AL
JMP COLUM
KERR: JMP BEGIN
CCSCAN: MOV AL,00H
OUT 60H,AL
IN AL,62H
NOT AL
AND AL,03H
RET
CLEAR: MOV AL,00H
OUT 61H,AL
RET
DIS: PUSH AX
MOV SI,3000H
MOV DL,0F7H
MOV AL,DL
AGAIN: OUT 60H,AL
MOV AL,[SI]
MOV BX,OFFSET TABLE ;取七段代码首址
AND AX,00FFH
ADD BX,AX
MOV AL,[BX]
OUT 61H,AL
CALL DALLY
INC SI
MOV AL,DL
TEST AL,01H
JZ OUT
ROR AL,1
MOV DL,AL
JMP AGAIN
OUT: POP AX
RET
DALLY: PUSH CX
MOV CX,0010H
T1: MOV AX,0010H
T2: DEC AX
JNZ T2
LOOP T1
POP CX
RET
PUTBUF: MOV SI,DI
MOV [SI],AL
DEC DI
CMP DI,2FFFH
JNZ GOBACK
MOV DI,3003H
GOBACK: RET
CODE ENDS
END START
四 思考题:
1.对照实验1的内容输出该为七段代码显示。编写一段程序,将输入开关K0―― K3设计成 一位十六进制数,输出的值在七段代码上显示出来,即开关K0―― K3为0110时,七段代码上显示“6”。
2.编写一个8255接口的程序。按照实验内容2,8255选通方式触发一次KK1-开关将十六进制1-0FFH分时显示在8个发光二极管上。例:00000001,00000010,00000011,―――11111110,11111111