proteus截图: 数码管的输出可以改变吗?怎么改变?程序实现了什么功能?
代码:
ORG 100H
CT8255SET EQU 86H ;CPU-8255控制寄存器
PORTA EQU 80H ;8086 A1接8255 A0;A2 接 A1; A3,A4,A5控制片选 ,A7控制E门
PORTB EQU 82H
PORTC EQU 84H
CTAIBO EQU 90H ;A IN, B OUT
;8259地址 ,设置奇偶地址
CT8259_EVEN EQU 88H ;片选A3=1.100010A0 ;A1负责奇偶地址
CT8259_ODD EQU 8AH
;----SET 8255-------------------------------------------
MOV DX,CT8255SET ;pc to 8255 control byte;设置8255工作方式
MOV AL,CTAIBO ;control byte addr
OUT DX,AL
MOV AL,10
MOV BX,OFFSET LED
XLATB
MOV DX,PORTB
OUT DX,AL
;-----------------------------------------------------
;--------------------------------
;设置8259
MOV AL,13H
MOV DX, CT8259_EVEN ;ICW1 偶地址 ;单片;边缘触发方式
OUT DX,AL
MOV AL, 80H
MOV DX,CT8259_ODD ; ICW2 基地址;设置中断号80-87H
OUT DX,AL
MOV AL, 03H
OUT DX,AL ;定义ICW4,非级联,非缓冲 ,自动EOI
;定义OCW2 中断嵌套方式
MOV AL,00000000B
MOV DX, CT8259_EVEN ;OCW2 普通EOI方式
OUT DX,AL
;----------------------------------------------
S
ti
;----------------------------------------------
;25h, 设置中断向量
; 把由AL指定的中断类型的中断向量DS:DX放在中断向量表中
;预置:AH=25H
; AL=中断类型号
; DS:DX=中断向量
;执行:INT 21H
PUSH DS ;调用21H中断的25H子功能
MOV AX ,SEG INT80 ;取基地址
MOV DS ,AX
MOV DX ,OFFSET INT80 ;取偏移地址
MOV AH ,25H
MOV AL ,80H
INT 21H
POP DS
;------------------------------------------------------
PUSH DS ;调用21H中断的25H子功能
MOV AX ,SEG INT81
MOV DS ,AX
MOV DX ,OFFSET INT81
MOV AH ,25H
MOV AL ,81H
INT 21H
POP DS
;------------------------------------------------------
PUSH DS ;调用21H中断的25H子功能
MOV AX ,SEG INT82
MOV DS ,AX
MOV DX ,OFFSET INT82
MOV AH ,25H
MOV AL ,82H
INT 21H
POP DS
G1:
;-------------
PUSH CX
MOV CX,40H ;延时
DELAY: LOOP DELAY
POP CX
;-------------------
; MOV DX,PORTB
; OUT DX,AL
JMP G1
HLT
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;////共阴数码管段码表,0-9,A-F
;中断
;-----------------------------------------------
INT80 PROC ;INT 18H
PUSH AX
PUSH DX
MOV DX,CT8255SET ;pc to 8255 control byte;设置8255工作方式
MOV AL,CTAIBO ;control byte addr
OUT DX,AL
MOV AL,1
MOV BX,OFFSET LED
XLATB
MOV DX,PORTB
OUT DX,AL
POP DX
POP AX
IRET
INT80 ENDP
;------------------------------------------------
INT81 PROC
PUSH AX
PUSH DX
MOV DX,CT8255SET ;pc to 8255 control byte;设置8255工作方式
MOV AL,CTAIBO ;control byte addr
OUT DX,AL
MOV AL,2
MOV BX,OFFSET LED
XLATB
MOV DX,PORTB
OUT DX,AL
POP DX
POP AX
IRET
INT81 ENDP
;------------------------------------------------
INT82 PROC
PUSH AX
PUSH DX
MOV DX,CT8255SET ;pc to 8255 control byte;设置8255工作方式
MOV AL,CTAIBO ;control byte addr
OUT DX,AL
MOV AL,3
MOV BX,OFFSET LED
XLATB
MOV DX,PORTB
OUT DX,AL
POP DX
POP AX
IRET
;------------------------------------------------
INT82 ENDP
RET
这是不是任务切换?
一周热门 更多>