📄 ok.txt
字号:
S_FLASH EQU 00H ;SECOND LCD FLASH
KEYFLAG EQU 01H ;IF NONE KEY PRESS,SET KEYFLAG
TIMEFLAG EQU 02H ;IF TIME KEY PRESS ,SET TIMEFLAG
DELLFLAG EQU 03H ;IF DELL KEY PRESS ,SET DELLFLAG
SHOW_PC EQU 21H ;SHOW
SECOND0 EQU 22H ;DEFINE SECOND LOW BYTE ADDRESS
SECOND1 EQU 23H ;DEFINE SECOND HIGH BYTE ADDRESS
MINUTER0 EQU 24H ;DEFINE MINUTER LOW BYTE ADDRESS
MINUTER1 EQU 25H ;DEFINE MINUTER HIGH BYTE ADDRESS
HOUR0 EQU 26H ;DEFINE HOUR LOW BYTE ADDRESS
HOUR1 EQU 27H ;DEFINE HOUR HIGH BYTE ADDRESS
TIMECOUNT EQU 28H ;TIME COUNT
DELAY_ADDR1 EQU 29H ;DELAY ADDRESS 1
DELAY_ADDR2 EQU 30H ;DELAY ADDRESS 2
DELAY_ADDR3 EQU 31H ;DELAY ADDRESS 3
SHOW_MODEL EQU 32H ;SHOW MODEL
BEFOREKEY EQU 33H ;BEFORE KEY
NOWKEY EQU 34H ;KEY NOW
DELLCOUNTER EQU 35H ;DELL COUNTER
DELL0 EQU 36H
DELL1 EQU 37H
;********************************
ORG 0000H
MOV SP,#60H
SJMP START
ORG 001BH ;INT_T1 ENTER ADDRESS
LJMP INT_T1
ORG 0040H
START: ;PROGROM START
MOV SECOND0,#0H ;FRIST SETTING
MOV SECOND1,#0H
MOV MINUTER0,#0H
MOV MINUTER1,#0H
MOV HOUR0,#2H
MOV HOUR1,#1H
MOV DELLCOUNTER,#0H
MOV DELL0,#0H
MOV DELL1,#0H
MOV TMOD,#10H ;INTERRUPT T1
MOV TL1,#0B0H ;50MS
MOV TH1,#3CH
SETB TR1 ;ALLOW INTERRUPT
SETB EA ;CPU ALLOW INTERRUPT
SETB ET1 ;T1 ALLOW INTERRUPT
MOV R3,#0H
CLR TIMEFLAG
CLR DELLFLAG
;**********MAJOR PROGRAM********
BEGIN:
MOV SHOW_MODEL,R3
JB DELLFLAG,ACROSS1
MOV SHOW_PC,#SECOND0
LCALL DISPLAY
JNB DELLFLAG,CROSS0
ACROSS1:
MOV SHOW_PC,#DELLCOUNTER
LCALL DELLSHOW
CROSS0:
LCALL TIMERCMP
LCALL CHECK_KEYBROAD
SJMP BEGIN
;*************************************
;***********CHECK_KEYBROAD PROGRAM***
CHECK_KEYBROAD:
MOV BEFOREKEY,NOWKEY
LCALL GETKEY ;BEFOREKEY IS EQUATE WITH NOWKEY AND KEYFLAG IS '1'
MOV NOWKEY,A ;THEN EFFECT
CJNE A,NOWKEY,BEGIN
CJNE A,#0,GO_TO_NEXT1
SETB KEYFLAG
RET
GO_TO_NEXT1: ;------------------------------------TIME_KEY1
JNB KEYFLAG,GO_TO_EXIT
CLR KEYFLAG
JB TIMEFLAG,CONTINUE_TIMESET ;IF TIMEFLAG IS '1' ,CONTINUTE TIMESET
CJNE A,#1,GO_TO_NEXT2
MOV R3,#3H ;FRIST CHANG HOUR BYTE
SETB TIMEFLAG
CONTINUE_TIMESET:
LCALL TIMESET
SJMP GO_TO_EXIT
GO_TO_NEXT2: ;----------------------------------------DELL_KEY2
JB DELLFLAG,CONTINUE_DELLSET ;IF DELLFLAG IS '1' ,CONTINUTE DELLSET
CJNE A,#2,GO_TO_EXIT
MOV R3,#2H
SETB DELLFLAG
CONTINUE_DELLSET:
LCALL DELLSET
GO_TO_EXIT:
RET
;*******************************************
;**********TIMESET PROGRAM****************
TIMESET:
;-----------------------------------------------------------TIME_KEY3
CJNE A,#3,GO_TO_NEXT4
DJNZ R3,LONG_JUMP ;IT CAN'T JUMP SO LONG,SO SET ANOTHER
MOV R3,#3
LJMP TIMESET_EXIT
LONG_JUMP:
LJMP TIMESET_EXIT
;-------------------------------------------------------TIME_KEY4
GO_TO_NEXT4:
CJNE A,#4,GO_TO_NEXT5
MOV A,R3
CJNE A,#3,CHANG1_MIN ;ADD HOUR OR MINUTER OR SECOND
MOV A,HOUR1
CJNE A,#2,ADD_TEN ;FOUR ADD
INC HOUR0 ;HOUR HIGH BIT IS '2' ?
MOV A, HOUR0 ;IT IS '2',FOUR ADD
CJNE A,#4,SHORT_JUMP
MOV HOUR0,#0
MOV HOUR1,#0
LJMP TIMESET_EXIT
ADD_TEN:
INC HOUR0
MOV A,HOUR0
CJNE A,#0AH,SHORT_JUMP ;IT IS NOT '2',TNE ADD
MOV HOUR0,#0 ;TEN ADD
INC HOUR1
LJMP TIMESET_EXIT
CHANG1_MIN:
CJNE A,#2,CHANG1_SEC
INC MINUTER0
MOV A,MINUTER0
CJNE A,#0AH,SHORT_JUMP ;MINUTER ADD
MOV MINUTER0,#0
INC MINUTER1
MOV A,MINUTER1
CJNE A,#6,SHORT_JUMP
MOV MINUTER0,#0
MOV MINUTER1,#0
LJMP TIMESET_EXIT
CHANG1_SEC:
INC SECOND0
MOV A,SECOND0
CJNE A,#0AH,SHORT_JUMP
MOV SECOND0,#0 ;SECOND ADD
INC SECOND1
MOV A,SECOND1
CJNE A,#6,SHORT_JUMP
MOV SECOND0,#0
MOV SECOND1,#0
LJMP TIMESET_EXIT
SHORT_JUMP:
LJMP TIMESET_EXIT
;-------------------------------------------------TIME_KEY5
GO_TO_NEXT5:
CJNE A,#5,GO_TO_NEXT7
MOV A,R3
CJNE A,#3,CHANG2_MIN ;SUB HOUR OR MINUTER OR SECOND
MOV A, HOUR1
CJNE A,#0,SUB_HOUR
MOV A,HOUR0
CJNE A,#0,LENGTH_JUMP
DEC HOUR0
MOV HOUR0,#3
MOV HOUR1,#2
SJMP TIMESET_EXIT
LENGTH_JUMP:
DEC HOUR0
SJMP TIMESET_EXIT
SUB_HOUR:
DEC HOUR0
MOV A,HOUR0
CJNE A,#0,SHORT_JUMP
MOV HOUR0,#9
DEC HOUR1
SJMP TIMESET_EXIT ;HOUR SUB COMPLETE
CHANG2_MIN:
CJNE A,#2,CHANG2_SEC
MOV A,MINUTER1
CJNE A,#0,SUB_MINUTER
MOV A,MINUTER0
CJNE A,#0,LENGTH1_JUMP
DEC MINUTER0
MOV MINUTER0,#9
MOV MINUTER1,#5
SJMP TIMESET_EXIT
LENGTH1_JUMP:
DEC MINUTER0
SJMP TIMESET_EXIT
SUB_MINUTER:
DEC MINUTER0
MOV A,MINUTER0
CJNE A,#0,SHORT_JUMP
MOV MINUTER0,#9
DEC MINUTER1
SJMP TIMESET_EXIT ;MINUTER SUB COMPLETE
CHANG2_SEC: ;
MOV A,SECOND1
CJNE A,#0,SUB_SECOND
MOV A,SECOND0
CJNE A,#0,LENGTH2_JUMP
DEC SECOND0
MOV SECOND0,#9
MOV SECOND1,#5
SJMP TIMESET_EXIT
LENGTH2_JUMP:
DEC SECOND0
SJMP TIMESET_EXIT
SUB_SECOND:
DEC SECOND0
MOV A,SECOND0
CJNE A,#0,SHORT_JUMP
MOV SECOND0,#9
DEC SECOND1
SJMP TIMESET_EXIT ;SECOND SUB COMPLETE
;----------------------------------------------------------TIME_KEY7
GO_TO_NEXT7:
CJNE A,#6,GO_TO_NEXT8
CLR TIMEFLAG
MOV R3,#0
SJMP TIMESET_EXIT
;--------------------------------------------------------TIME_KEY8
GO_TO_NEXT8:
CJNE A,#7,TIMESET_EXIT
CLR TIMEFLAG
MOV R3,#0
TIMESET_EXIT:
RET ;TIMESET KEYBROAD COMPLETE
;*****************************************
;***********************************
DELLSHOW:
MOV R4,#6
DELL_SCAN:
MOV A,R4
LCALL GET_DELL_DATA
MOV DPTR,#LED_DELL_DATA ;DIPLAY DATA
MOVC A,@A+DPTR
MOV P2,0FFH
MOV P0,A ;SCAN FROM
MOV A,R4
DEC A
MOV DPTR,#LED_DELL_BIT
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY3
DJNZ R4,DELL_SCAN
MOV P2,#0FFH
RET
;****************************
GET_DELL_DATA:
MOV DPTR,#TABLE1
DEC A ;A-1
RL A ;A*2
MOV B,#10
JMP @A+DPTR
TABLE1:
SJMP DELL_LED5 ;TO SHOW DELL HIGH BIT
SJMP DELL_LED4
SJMP DELL_LED3
SJMP DELL_LED2
SJMP DELL_LED1
SJMP DELL_LED0 ;FROM SHOW DELL LOW BIT
DELL_LED0: ;-------------------------------------------------DELL_LED0
MOV A,SHOW_MODEL
CJNE A,#1,NOT_DELL_LED0
JB S_Flash,NOT_DELL_LED0
MOV A,#10
RET
NOT_DELL_LED0:
MOV R1,SHOW_PC
MOV A,@R1
DIV AB
RET
DELL_LED1: ;-------------------------------------------------DELL_LED1
MOV A,SHOW_MODEL
CJNE A,#1,NOT_DELL_LED1
JB S_Flash,NOT_DELL_LED1
MOV A,#10
RET
NOT_DELL_LED1:
MOV R1,SHOW_PC
MOV A,@R1
DIV AB
MOV A,B
RET
DELL_LED2: ;-------------------------------------------------DELL_LED2
MOV A,SHOW_MODEL
CJNE A,#2,NOT_DELL_LED2
JB S_Flash,NOT_DELL_LED2
MOV A,#10
RET
NOT_DELL_LED2:
MOV R1,SHOW_PC
INC R1
MOV A,@R1
DIV AB
RET
DELL_LED3: ;-------------------------------------------------DELL_LED3
MOV A,SHOW_MODEL
CJNE A,#2,NOT_DELL_LED3
JB S_Flash,NOT_DELL_LED3
MOV A,#10
RET
NOT_DELL_LED3:
MOV R1,SHOW_PC
INC R1
MOV A,@R1
DIV AB
MOV A,B
RET
DELL_LED4: ;-------------------------------------------------DELL_LED4
MOV A,SHOW_MODEL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -