具體要求:基于8086芯片實現(xiàn)。按鍵要求能夠?qū)崿F(xiàn)對二極管的點亮與熄滅的控制,用S1~S4組成的鍵盤分別控制4個發(fā)光二極管的點亮,S5按鍵來熄滅各二極管。按鍵具有防抖動功能,例如:S1點亮1號燈,按S5可以將其熄滅。S2點亮2號燈,按S5可以將其熄滅。這是我網(wǎng)上找的其他魔改的,只能到這一步了,請各位大哥門請教指正一下看看圖,看看代碼能不能簡化,小弟拜上。
代碼如下:CODE SEGMENT ASSUME CS:CODE
IOCON EQU 8006H IOA EQU 8000H IOB EQU 8002H
START:
MOV AL, 90H ; MOV DX, IOCON ; OUT DX, AL ;
MOV DX, IOA ; MOV AL, 0FFH OUT DX, AL
MOV AL, 0FFH ; MOV DX, IOB OUT DX, AL
MOV BL,0FFH TIMER: MOV DX, IOA ; IN AL, DX ;
CALL DELAY_MS ; IN AL, DX ;
CMP AL, 0FEH ; JE LED0 CMP AL, 0FDH JE LED1 CMP AL, 0FBH JE LED2 CMP AL, 0F7H JE LED3 CMP AL, 07FH JE LED_OFF
JMP TIMER ; LED0: AND AL, BL MOV DX, IOB OUT DX, AL MOV BL,AL JMP TIMER
LED1: AND AL, BL MOV DX, IOB OUT DX, AL MOV BL,AL JMP TIMER
LED2: AND AL, BL MOV DX, IOB OUT DX, AL MOV BL,AL JMP TIMER
LED3: AND AL, BL MOV DX, IOB OUT DX, AL MOV BL,AL JMP TIMER
LED_OFF: MOV AL, 0FFH MOV BL,0FFH MOV DX, IOB OUT DX, AL JMP TIMER DELAY_MS: PUSH CX MOV CX, 1000 JMP DELAY_LOOP
DELAY_LOOP: DEC CX ; JNZ DELAY_LOOP
POP CX RET ; CODE ENDS END START
|