JNZ H3
CALL MINUTE_SET H3: MOV AL,NUM_BUTTON CMP AL,3 JNZ H4
CALL O_CLOCK_SET H4: MOV AL,NUM_BUTTON CMP AL,4 JNZ H5
CALL DAY_SET H5: MOV AL,NUM_BUTTON CMP AL,5 JNZ H6 MOV AL,0
MOV NUM_BUTTON,AL H6:POP BX POP DX POP AX POPF RET
SET ENDP
SECOND_SET FAR PROC ; PUSHF PUSH AX PUSH DX MOV AL,1
MOV TIME_COUNT,AL
MOV DX,ADDRESS_C IN AL,DX
XOR AL,0FFH TEST AL,2 JZ SECOND_END CALL DELAY10MS IN AX,DX XOR AL,0FFH TEST AL,2
JZ SECOND_END SECOND1: IN AL,DX TEST AL,2 JZ SECOND1 MOV AL,SECOND INC AL
MOV SECOND,AL CMP AL,60
秒设置子程序 15
JB SECOND_END MOV AL,0
MOV SECOND,AL
SECOND_END: CALL DISPLAY POP DX POP AX POPF RET
SECOND_SET ENDP
MINUTE_SET FAR PROC ; PUSHF PUSH AX PUSH DX MOV AL,1
MOV TIME_COUNT,AL
MOV DX,ADDRESS_C IN AL,DX
XOR AL,0FFH TEST AL,2 JZ MINUTE_END CALL DELAY10MS IN AL,DX XOR AL,0FFH TEST AL,2
JZ MINUTE_END MINUTE1:IN AL,DX TEST AL,2 JZ MINUTE1 MOV AL,MINUTE INC AL
MOV MINUTE,AL CMP AL,60
JB MINUTE_END MOV AL,0
MOV MINUTE,AL
MINUTE_END: CALL DISPLAY POP DX POP AX POPF RET
MINUTE_SET ENDP
O_CLOCK_SET FAR PROC ; PUSHF PUSH AX
分钟设置子程序时设置子程序 16
PUSH DX MOV AL,1
MOV TIME_COUNT,AL
MOV DX,ADDRESS_C IN AL,DX
XOR AL,0FFH TEST AL,2 JZ O_CLOCK_END CALL DELAY10MS IN AX,DX XOR AL,0FFH TEST AL,2
JZ O_CLOCK_END O_CLOCK1:IN AL,DX TEST AL,2 JZ O_CLOCK1 MOV AL,O_CLOCK INC AL
MOV O_CLOCK,AL CMP AL,24
JB O_CLOCK_END MOV AL,0
MOV O_CLOCK,AL
O_CLOCK_END: CALL DISPLAY POP DX POP AX POPF RET
O_CLOCK_SET ENDP
DAY_SET FAR PROC ; PUSHF PUSH AX PUSH DX MOV AL,3
MOV TIME_COUNT,AL
MOV DX,ADDRESS_C ; IN AL,DX
XOR AL,0FFH TEST AL,2 JZ DAY_END
CALL DELAY10MS IN AX,DX XOR AL,0FFH TEST AL,2
星期设置子程序星期设置 17
JZ DAY_END DAY1:IN AL,DX TEST AL,2 JZ DAY1 MOV AL,DAY INC AL MOV DAY,AL CMP AL,8
JB DAY_END MOV AL,1 MOV DAY,AL
DAY_END: CALL DISPLAY POP DX POP AX POPF RET
DAY_SET ENDP
DISPLAY FAR PROC ; PUSHF PUSH AX
K0: MOV AL,TIME_COUNT CMP AL,4 JC K1
MOV BYTE PTR TIME_COUNT,0
K1: MOV AL,TIME_COUNT CMP AL,2
JC K2 CALL DISPLAY_DAY JMP K3
K2: CALL DISPLAY_TIME K3: POP AX POPF RET
DISPLAY ENDP
DISPLAY_DAY FAR PROC ; PUSHF PUSH DX PUSH AX
MOV DX,ADDRESS_A ; MOV AL,CLEAR_1 OUT DX,AL
MOV DX,ADDRESS_B ; MOV AL,CLEAR_2
显示子程序 星期显示子程序位清零 段清零 18
OUT DX,AL
XOR BX,BX ;星期显示 MOV BL,DAY
MOV AL,LED_CODE+[BX] OUT DX,AL MOV AL,_DAY
MOV DX,ADDRESS_A OUT DX,AL POP AX POP DX POPF RET
DISPLAY_DAY ENDP
DISPLAY_TIME FAR PROC ; PUSHF PUSH BX PUSH AX PUSH DX
MOV DX,ADDRESS_A ; MOV AL,CLEAR_1 OUT DX,AL
MOV DX,ADDRESS_B ; MOV AL,CLEAR_2
OUT DX,AL XOR AX,AX
MOV AL,SECOND ; MOV BL,10 DIV BL XOR BX,BX MOV BL,AL
MOV AL,LED_CODE+[BX] ; OUT DX,AL
MOV DX,ADDRESS_A MOV AL,SECOND_H OUT DX,AL
MOV DX,ADDRESS_A ; MOV AL,CLEAR_1 OUT DX,AL
MOV DX,ADDRESS_B MOV AL,CLEAR_2
OUT DX,AL MOV BL,AH
MOV AL,LED_CODE+[BX] ; OUT DX,AL
时分秒显示子程序位清零 段清零 秒显示 高位 清零 低位 19