📄 ok.txt
字号:
CJNE A,#3,NOT_DELL_LED4
JB S_Flash,NOT_DELL_LED4
MOV A,#10
RET
NOT_DELL_LED4:
MOV R1,SHOW_PC
INC R1
INC R1
MOV A,@R1
DIV AB
RET
DELL_LED5: ;-------------------------------------------------DELL_LED5
MOV A,SHOW_MODEL
CJNE A,#3,NOT_DELL_LED5
JB S_Flash,NOT_DELL_LED5
MOV A,#10
RET
NOT_DELL_LED5:
MOV R1,SHOW_PC
INC R1
INC R1
MOV A,@R1
DIV AB
MOV A,B
RET
;*****************************
;***********************TABLE************************
LED_DELL_DATA : DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;'0,1,2,3,4,5,6,7,8,9,-'
LED_DELL_BIT: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH
;*****************************
;**********DELAY PROGRAM****************
DELAY3:
MOV DELAY_ADDR1,#1
DELAY4:
MOV DELAY_ADDR2,#2
DELAY5:
MOV DELAY_ADDR3,#0
DJNZ DELAY_ADDR3,$
DJNZ DELAY_ADDR2,DELAY5
DJNZ DELAY_ADDR1,DELAY4
RET
;*****************************************
;*********DELLSET PROGRAM***************
DELLSET:
;-----------------------------------DELL_KEY3
CJNE A,#3,GO_NEXT4
DJNZ R3,DELL_EXIT
MOV R3,#2
SJMP DELL_EXIT
GO_NEXT4:
;----------------------------------------------DELL_KEY4
CJNE A,#4,G0_NEXT5
SJMP DELL_EXIT
G0_NEXT5:;------------------------------------DELL_KEY5
CJNE A,#5,G0_NEXT6
G0_NEXT6:;-------------------------------------DELL_KEY7
CJNE A,#6,GO_NEXT7
CLR DELLFLAG
MOV R3,#0
SJMP DELL_EXIT
;----------------------------------------------DELL_KEY8
GO_NEXT7:
CJNE A,#7,DELL_EXIT
CLR DELLFLAG
MOV R3,#0
DELL_EXIT:
RET
;********TIMERCOMPARE PROGRAM*********
TIMERCMP:
RET
;****************
;---------------------------------------------------
GETKEY: ;PRESS A KEY THEN GET A FIGURE TO ACC
MOV A,P1
CJNE A,#0FEH,GOTO_KEY2 ;DO KEY 1 (TIME SET)PRESS
MOV A,#1 ;THEN GET '1' TO A
RET
GOTO_KEY2:
CJNE A,#0FDH,GOTO_KEY3 ; DO KEY 2 (DELL SET) PRESS
MOV A,#2 ; THEN GET '2' TO A
RET
GOTO_KEY3:
CJNE A,#0FBH,GOTO_KEY4 ; DO KEY 3 (MOVE BIT) PRESS
MOV A,#3 ; THEN GET '3' TO A
RET
GOTO_KEY4:
CJNE A,#0F7H,GOTO_KEY5 ; DO KEY 4(SUBT) PRESS
MOV A,#4 ; THEN GET '4' TO A
RET
GOTO_KEY5:
CJNE A,#0EFH,GOTO_KEY7 ; DO KEY 5 (ADD)PRESS
MOV A,#5 ; THEN GET '5' TO A
RET
GOTO_KEY7:
CJNE A,#0BFH,GOTO_KEY8 ; DO KEY 7 (OK) PRESS
MOV A,#6 ; THEN GET '6' TO A
RET
GOTO_KEY8:
CJNE A,#7FH,KEY_EXIT ; DO KEY 8 (CANCEL) PRESS
MOV A,#7 ; THEN GET '7' TO A
RET
KEY_EXIT:
MOV A,#0 ;NONE KEY PRESS
RET ;RETURN
;---------------------------------------------------
INT_T1: ;INT_T1
PUSH DPH ;PROTECT DATA
PUSH DPL
PUSH ACC
PUSH PSW
CLR TR1
MOV TL1,#0B0H ;50mS
MOV TH1,#3CH
SETB TR1
MOV A,TIMECOUNT
CJNE A,#10,COUNT_EXIT
MOV TIMECOUNT,#0
CPL S_Flash
MOV C,S_Flash
MOV P3.1,C
JB S_Flash,COUNT_EXIT
MOV A,SECOND0
CJNE A,#9H,SEC0_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 9 ?
MOV SECOND0,#0
MOV A,SECOND1
CJNE A,#5H,SEC1_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 5 ?
MOV SECOND1,#0
MOV A,MINUTER0
CJNE A,#9H,MIN0_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 9 ?
MOV MINUTER0,#0
MOV A,MINUTER1
CJNE A,#5H,MIN1_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 5 ?
MOV MINUTER1,#0
MOV A,HOUR0
CJNE A,#3H,HOU0_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 3 ?
MOV HOUR0,#0
MOV A,HOUR1
CJNE A,#2H,HOU1_CHANG ;IS SECOND HIGH BYTE EQUATE WITH 2 ?
MOV HOUR1,#0
HOU1_CHANG:
INC HOUR1 ;HOUR HIGH BYTE ADD 1
SJMP COUNT_EXIT
HOU0_CHANG:
INC HOUR0 ;HOUR LOW BYTE ADD 1
SJMP COUNT_EXIT
MIN1_CHANG:
INC MINUTER1 ;MINUTE HIGH BYTE ADD 1
SJMP COUNT_EXIT
MIN0_CHANG:
INC MINUTER0 ;MINUTE LOW BYTE ADD 1
SJMP COUNT_EXIT
SEC1_CHANG:
INC SECOND1 ;SECOND HIGH BYTE ADD 1
SJMP COUNT_EXIT
SEC0_CHANG:
INC SECOND0 ;SECOND ADD 1
COUNT_EXIT:
INC TIMECOUNT
POP PSW
POP ACC
POP DPL
POP DPH
RETI ;RETURN AND CLEAR SIGNAL
;;---------------------------------------------------
;***MODEL0 : 正常显示时间模式
;***MODEL1 : 秒显示一下时间,显示一下" -- "
;***MODEL2 : 分显示一下时间,显示一下" -- "
;***MODEL3 : 小时显示一下时间,显示一下" -- "
;*********TIME DISPLAY MAJOR PROGRAM**********************
DISPLAY:
MOV R2,#6
ROTATE_SCAN:
MOV A,R2
LCALL GET_LED_DATA
MOV DPTR,#LED_DATA ;DIPLAY DATA
MOVC A,@A+DPTR
MOV P2,0FFH
MOV P0,A ;SCAN FROM SECOND0 TO HOUR1
MOV A,R2
DEC A
MOV DPTR,#LED_DATA_BIT
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
DJNZ R2,ROTATE_SCAN
MOV P2,#0FFH
RET
;****************************
GET_LED_DATA:
MOV DPTR,#TABLE
DEC A ;A-1
RL A ;A*2
JMP @A+DPTR
TABLE:
SJMP SHOW_LED5 ;TO SHOW HOUR HIGH BIT
SJMP SHOW_LED4
SJMP SHOW_LED3
SJMP SHOW_LED2
SJMP SHOW_LED1
SJMP SHOW_LED0 ;FROM SHOW SECOND LOW BIT
SHOW_LED0: ;-------------------------------------------------TIME_LED0
MOV A,SHOW_MODEL
CJNE A,#1,NOT_SHOW_LED0
JB S_Flash,NOT_SHOW_LED0
MOV A,#10
RET
NOT_SHOW_LED0:
MOV R0,SHOW_PC
MOV A,@R0
RET
SHOW_LED1: ;-------------------------------------------------TIME_LED1
MOV A,SHOW_MODEL
CJNE A,#1,NOT_SHOW_LED1
JB S_Flash,NOT_SHOW_LED1
MOV A,#10
RET
NOT_SHOW_LED1:
MOV R0,SHOW_PC
INC R0
MOV A,@R0
RET
SHOW_LED2: ;-------------------------------------------------TIME_LED2
MOV A,SHOW_MODEL
CJNE A,#2,NOT_SHOW_LED2
JB S_Flash,NOT_SHOW_LED2
MOV A,#10
RET
NOT_SHOW_LED2:
MOV R0,SHOW_PC
INC R0
INC R0
MOV A,@R0
RET
SHOW_LED3: ;-------------------------------------------------TIME_LED3
MOV A,SHOW_MODEL
CJNE A,#2,NOT_SHOW_LED3
JB S_Flash,NOT_SHOW_LED3
MOV A,#10
RET
NOT_SHOW_LED3:
MOV R0,SHOW_PC
INC R0
INC R0
INC R0
MOV A,@R0
RET
SHOW_LED4: ;-------------------------------------------------TIME_LED4
MOV A,SHOW_MODEL
CJNE A,#3,NOT_SHOW_LED4
JB S_Flash,NOT_SHOW_LED4
MOV A,#10
RET
NOT_SHOW_LED4:
MOV R0,SHOW_PC
INC R0
INC R0
INC R0
INC R0
MOV A,@R0
RET
SHOW_LED5: ;-------------------------------------------------TIME_LED5
MOV A,SHOW_MODEL
CJNE A,#3,NOT_SHOW_LED5
JB S_Flash,NOT_SHOW_LED5
MOV A,#10
RET
NOT_SHOW_LED5:
MOV R0,SHOW_PC
INC R0
INC R0
INC R0
INC R0
INC R0
MOV A,@R0
RET
;*****************************
;**********DELAY PROGRAM****************
DELAY:
MOV DELAY_ADDR1,#1
DELAY2:
MOV DELAY_ADDR2,#2
DELAY1:
MOV DELAY_ADDR3,#0
DJNZ DELAY_ADDR3,$
DJNZ DELAY_ADDR2,DELAY1
DJNZ DELAY_ADDR1,DELAY2
RET
;***********TABLE**************
LED_DATA_BIT: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH ;SECOND LOW BIT HOUR,SECOND HIGH BIT
;MINUTER LOW BIT,MINUTER HIGH BIT
;HOUR HIGH BIT,HOUR LOW BIT
LED_DATA: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;'0,1,2,3,4,5,6,7,8,9,-'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -