一、实验目的及要求
1、通过对并行接口8255编程、调试,进一步熟悉仿真软件Proteus的使用方法,掌握8255的基本编程及调试方法,掌握编写程序控制硬件接口。
2、学生在实验课前必须认真预习教材与资料中的相关内容,绘制流程图,编写源程序,为实验做好充分准备,实验后撰写实验报告。
二、实验设备
Proteus 8 Professional、DOSBox 0.74、masm 5、EditPlus 5.2、PC机一台
三、实验内容
实现8255A口控制8个指示灯,循环点亮(瞬间只有一个灯亮)
- 实验原理图
图1.1 8086CPU最小模式
图1.2 地址总线
图1.3 译码电路
图1.4 8255接口流水灯实验原理图
四、实验步骤
1、建立实验工程文件,绘制实验的原理图方案;
2、编写程序源代码,实现8255A口控制8个指示灯,循环点亮(瞬间只有一个灯亮)。
2、观察验证实验结果。
五、程序参考流程图
图1.5 8255接口流水灯程序流程图
-
参考源程序
;FILE:8255.ASM
;This program is used for test output of 8255'S A port
;CHIP:8255
;CS -->9000H
;PA0--PA7-->LED
PORT_8255_A EQU 9000H
PORT_8255_B EQU 9002H
PORT_8255_C EQU 9004H
CONTROL_PORT_8255 EQU 9006H
DELAY_NUM EQU 0FFFFH
STACK SEGMENT PARA STACK 'STACK'
STA DB 1024 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
BEGIN:MOV DX,CONTROL_PORT_8255
MOV AL,00000001B ;A口,模式零,端口输出
OUT DX,AL
MOV DX,PORT_8255_A
MOV AL,0FFH
OUT DX,AL ;关灯
MOV AL,0FEH ;11111110B 字模
NEXT:OUT DX,AL
CALL DELAY
ROR AL,1 ;11111101--11111011
JMP NEXT
DELAY PROC NEAR
PUSH CX
MOV CX,DELAY_NUM ;Delay Times=DELAY_NUM
AGAIN :NOP
NOP
LOOP AGAIN
POP CX
RET
DELAY ENDP
CODE ENDS
END BEGIN
六、实验结果及思考问题
1.如何使LED闪亮的顺序反向?
答:将11111110,逻辑左移,如果CF=1,则将循环左移的数加1,再这基础上重复循环上一步骤。
2.如何调整LED闪亮的时间间隔?
答:改变NOP指令的个数;改变延时子程序中的CX值。