|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yuanyuxixue 于 2023-12-23 12:48 编辑
大佬们救救命
要求如下:
使用proteus画出图
基于8086芯片实现
按键要求能够实现对二极管的点亮与熄灭的控制,用S1~S4组成的键盘分别控制4个发光二极管的点亮,S5按键来熄灭各二极管,按键具有防抖动功能。
例如:S1点亮1号灯,按S5可以将其熄灭。S2点亮2号灯,按S5可以将其熄灭。
请大神改一下代码,简洁一些。
图片网址:
代码如下:
DATA SEGMENT
;U1
IOCON EQU 8006H ;
IOA EQU 8000H ;
IOB EQU 8002H ;
IOC EQU 8004H ;
X0 DB 0FEH
X1 DB 0FDH
X2 DB 0FBH
X3 DB 0F7H
X4 DB 0EFH
X5 DB 0DFH
X6 DB 0BFH
X7 DB 07FH
DISPLAY DB 6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV BX,OFFSET DISPLAY ;
MOV AL,80H ;
MOV DX,IOCON
OUT DX,AL
MOV DX,IOC ;
MOV AL,0FFH
OUT DX,AL
MOV DX,IOA ;
MOV AL,0FFH
OUT DX,AL
MOV AL,0FFH ;
MOV DX,IOB
OUT DX,AL
MOV CX,9 ;
TIMER:
MOV DX,IOC ;
IN AL,DX ;
CMP AL,X0 ;
JE LED0
CMP AL,X1 ;
JE LED1
CMP AL,X2 ;
JE LED2
CMP AL,X3 ;
JE LED3
CMP AL,X4 ;
JE LED4
CMP AL,X5 ;
JE LED5
CMP AL,X6 ;
JE LED6
CMP AL,X7 ;
JE LED7
INC BX ;
DEC CX ;
JZ TIMER ;
CALL DELAY1 ;
JMP TIMER
LED0: MOV AL,X0
MOV DX,IOB
OUT DX,AL
JMP STOP
LED1: MOV AL,X1
MOV DX,IOB
OUT DX,AL
JMP STOP
LED2: MOV AL,X2
MOV DX,IOB
OUT DX,AL
JMP STOP
LED3: MOV AL,X3
MOV DX,IOB
OUT DX,AL
JMP STOP
LED4: MOV AL,X4
MOV DX,IOB
OUT DX,AL
JMP STOP
LED5: MOV AL,X5
MOV DX,IOB
OUT DX,AL
JMP STOP
LED6: MOV AL,X6
MOV DX,IOB
OUT DX,AL
JMP STOP
LED7: MOV AL,X7
MOV DX,IOB
OUT DX,AL
JMP STOP
STOP: MOV DX,IOA
IN AL,DX
CMP AL,X1
JE START
JMP STOP
DELAY1:
PUSH AX
PUSH CX
MOV CX,0004H
DELY2:
CALL DELAY2
LOOP DELY2
POP CX
POP AX
RET
DELAY2:
PUSH CX
MOV CX,0f000H
;--------------------------------------;
MOV DX,IOC ;
IN AL,DX ;
CMP AL,X0 ;
JE LED0
CMP AL,X1 ;
JE LED1
CMP AL,X2 ;
JE LED2
CMP AL,X3 ;
JE LED3
CMP AL,X4 ;
JE LED4
CMP AL,X5 ;
JE LED5
CMP AL,X6 ;
JE LED6
CMP AL,X7 ;
JE LED7
;--------------------------------------;
DELA1:
LOOP DELA1
POP CX
RET
ENDLESS:
JMP ENDLESS
CODE ENDS
END START
|
|