实验一 流水灯实验
一、实验目的及要求
1、通过对并行接口8255编程、调试,掌握仿真工具软件Proteus的使用方法,掌握8255的基本编程及调试方法,掌握编写控制并行接口程序的方法。
2、学生在实验前必须认真预习教材与资料中的相关内容,绘制流程图,编写源程序,为实验做好充分准备,实验后撰写实验报告。
二、实验设备
PC机一台、DOSBox 0.74、masm 5、EditPlus 5.2、Proteus 8 Professional
三、实验内容
实现8255控制8个指示灯,循环点亮(瞬间只有一个灯亮)。
四、实验原理图
图1.1 8086CPU最小模式
图1.2 地址总线
图1.3 译码电路
图1.4 8255接口流水灯实验原理图
五、实验步骤
1、建立实验工程文件,绘制实验的原理图方案;
2、编写程序源代码,实现8255控制8个指示灯,循环点亮(瞬间只有一个灯亮)。
3、观察验证实验结果。
六、程序参考流程图
图1.5 8255接口流水灯程序流程图
七、参考源程序
PORT_8255_A EQU 9000H
PORT_8255_B EQU 9002H
PORT_8255_C EQU 9004H
CONTROL_PORT_8255 EQU 9006H
DELAY_NUM1 EQU 0BH
DELAY_NUM2 EQU 1FFFH
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,10000000B ;A Port,Mode 0,Output
OUT DX,AL
MOV DX,PORT_8255_A
MOV AL,0FFH
OUT DX,AL ;Close LED
MOV AL,0FEH ;11111110B 字模
NEXT:OUT DX,AL
CALL DELAY
ROL AL,1 ;11111101--11111011
JMP NEXT
DELAY PROC NEAR
PUSH BX
PUSH CX
MOV CX,DELAY_NUM1 ;Delay Times=DELAY_NUM1*DELAY_NUM2
AGAIN2:MOV BX,DELAY_NUM2
AGAIN1:NOP
NOP
DEC BX
JNZ AGAIN1
DEC CX
JNZ AGAIN2
POP CX
POP BX
RET
DELAY ENDP
CODE ENDS
END BEGIN
八、实验结果及思考问题(可扩展)
1.如何使LED闪亮的顺序反向?
2.如何调整LED闪亮的时间间隔?