- 这次实验内容根据B站一个老师录制的讲解视频,老师通过导入emu8086编译好的EXE文件到8086中进行仿真,实际上可以在Proteus中直接通过构建工程编译源程序。接口芯片的内容比较复杂,建议先学习完内存读写操作和简单IO接口再来看这部分内容。
微处理器实验4-Proteus+8086+8255仿真
- 实验内容为利用可编程并行接口芯片8255,用PA口读取开关状态输入,译码后在PB口连接的数码管上显示。8255工作在方式0直接输入和输出,一般考试也是直接考这种方式,更复杂的联络和中断可以去查查书。
- 端口地址如下所示,当A4A3A0=000时138选中Y0,当A6=A5=1时通过与门输出1,138的E1有效,A7=0时138的E2有效。8255数据线D0~D7接在8086的低八位数据线上,A0=0,8255的A1A0接在A1A2上,用来产生8255内4个寄存器的端口地址。
- 初始化8255的时候首先写方式控制寄存器,端口地址为66H,PA和PB均工作在方式0则D6D5=00,D2=0,PA为输入则D4=1,PB为输入则D1=0。D7=1,PC口未用到设置为0。
- 选取的数码管为共阴极数码管,即公共端接地,7SEG-COM-CATHODE。对应的码表在数据段中定义,使用XLAT直接将开关中的数据比如1001转换为数码管显示中的数字,再通过PB口送给数码管。
DATA SEGMENT
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
PORTA EQU 60H
PORTB EQU 62H
PORTC EQU 64H
DATA ENDS
CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
; 设置方式控制字,A口工作方式0 输入 B口工作方式0 输出
MOV DX, 66H
MOV AL, 10010000B
OUT DX, AL
M_LOOP:
MOV DX, PORTA
IN AL, DX
AND AL, 0FH
MOV BX, OFFSET LED
XLAT
CALL DELAY
MOV DX, PORTB
OUT DX, AL
JMP M_LOOP
DELAY PROC
PUSH CX
LOOP $
POP CX
RET
DELAY ENDP
CODE ENDS
END START
|