实验目的:
- 掌握流行的软硬件仿真软件Proteus的使用方法,从实践、应用的角度学习8086最小系统的工作。
- 熟悉Proteus调用外部编译器,熟悉Proteus的程序编写环境。
- 掌握8255A和8086CPU接口方法,掌握8255A的工作方式和编程原理。
实验内容
利用8086最小系统和8255A接口芯片设计系统电路并编程实现:端口A作为输入端口,接有拨码开关;端口B作为输出端口,接有8个LED;不断检测拨码开关是否闭合,控制响应的LED灯的亮灭。
实验步骤
- 利用 Proteus+emu8086 平台软件,实现软硬件系统的联调。启动 Proteus 软件,完成硬件电路图的连接,确定8255A 端口地址。
- 启动emu8086 软件,编写.asm 源程序,编译生成.exe可执行文件。
- 在Proteus中双击8086CPU,加载.exe可执行文件。
- 单步执行程序,查看每一条指令的运行结果。
proteus原理图
程序代码
CODE SEGMENT
START:
MOV AL,10010000B
; A口方式0,A口检测拨码开关输入,B口LED输出,C口默认
OUT 76H,AL
;0111 0110 写控制字
T:
IN AL,70H
;A口按键输入,送给AL
OUT 72H,AL
;B口LED输出AL的内容
MOV CX,100 ;循环100次
DELAY:LOOP DELAY
JMP T
MOV AH,4CH
INT 21H
CODE ENDS
END START
实现的功能:8255A的PA口是输入功能,读取拨码开关的状态,读取高低电平(0还是1),PB口是输出功能,接的是LED,并且接了限流电阻,代码里逻辑很清晰,读取PA口数据,将PA口数据输出到PB口,这样就实现了拨码开关控制LED状态
这一段是延时程序,CX=100 ,LOOP语句是CX减1,直到减到0为止,跳出循环,执行下一次程序,从T:开始继续扫描拨码开关的状态,将这个状态输出送给LED
T:
IN AL,70H
;A口按键输入,送给AL
OUT 72H,AL
;B口LED输出AL的内容
MOV CX,100 ;循环100次
DELAY:LOOP DELAY
JMP T