📄 液晶timeend555555xin.txt
字号:
CLC_RUNNING_1: SETB P3.6
CLC_RUNNING_OUT:RET
;3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
CLC_44H: MOV A,JHM_CLC
CJNE A,#0,CLC_441
LCALL CLC_ADHOUR
AJMP CLC_44OUT
CLC_441: CJNE A,#1,CLC_442
LCALL CLC_ADMIN
AJMP CLC_44OUT
CLC_442: MOV JHM_CLC,#0
CLC_44OUT: RET
;---------------------------------------------------------------------------------------------------
CLC_ADHOUR: MOV N0_JZH1,#44H
LCALL JZH_SEE
CJNE R7,#11H,CLC_ADHOUR_OUT
CLC_ADHOUR_1: LCALL JZH_STOP1
LCALL DEL10MS
MOV A,HOUR1_CLC
CJNE A,#2,CLC_ADHOUR_2
MOV A,HOUR2_CLC
CJNE A,#3,CLC_ADHOUR_3
MOV HOUR1_CLC,#0
MOV HOUR2_CLC,#0
AJMP CLC_ADHOUR
CLC_ADHOUR_2: MOV A,HOUR2_CLC
CJNE A,#9,CLC_ADHOUR_3
MOV HOUR2_CLC,#0
INC HOUR1_CLC
AJMP CLC_ADHOUR
CLC_ADHOUR_3: INC HOUR2_CLC
AJMP CLC_ADHOUR
CLC_ADHOUR_OUT: RET
CLC_ADMIN: MOV N0_JZH1,#44H
LCALL JZH_SEE
CJNE R7,#11H,CLC_ADMIN_OUT
CLC_ADMIN_1: LCALL JZH_STOP1
LCALL DEL10MS
MOV A,MIN1_CLC
CJNE A,#5,CLC_ADMIN_2
MOV A,MIN2_CLC
CJNE A,#9,CLC_ADMIN_3
MOV MIN1_CLC,#0
MOV MIN2_CLC,#0
AJMP CLC_ADMIN
CLC_ADMIN_2: MOV A,MIN2_CLC
CJNE A,#9,CLC_ADMIN_3
MOV MIN2_CLC,#0
INC MIN1_CLC
AJMP CLC_ADMIN
CLC_ADMIN_3: INC MIN2_CLC
AJMP CLC_ADMIN
CLC_ADMIN_OUT: RET
CLC_54H: MOV A,JHM_CLC
CJNE A,#0,CLC_541
LCALL CLC_DEHOUR
AJMP CLC_54OUT
CLC_541: MOV A,JHM_CLC
CJNE A,#1,CLC_542
LCALL CLC_DEMIN
AJMP CLC_54OUT
CLC_542: MOV JHM_CLC,#0
CLC_54OUT: RET
CLC_DEHOUR: MOV N0_JZH1,#54H
LCALL JZH_SEE
CJNE R7,#11H,CLC_DEHOUR_OUT
CLC_DEHOUR_1: LCALL JZH_STOP1
LCALL DEL10MS
MOV A,HOUR1_CLC
CJNE A,#0,CLC_DEHOUR_2
MOV A,HOUR2_CLC
CJNE A,#0,CLC_DEHOUR_3
MOV HOUR1_CLC,#2
MOV HOUR2_CLC,#3
AJMP CLC_DEHOUR
CLC_DEHOUR_2: MOV A,HOUR2_CLC
CJNE A,#0,CLC_DEHOUR_3
MOV HOUR2_CLC,#9
DEC HOUR1_CLC
AJMP CLC_DEHOUR
CLC_DEHOUR_3: DEC HOUR2_CLC
AJMP CLC_DEHOUR
CLC_DEHOUR_OUT: RET
CLC_DEMIN: MOV N0_JZH1,#54H
LCALL JZH_SEE
CJNE R7,#11H,CLC_DEMIN_OUT
CLC_DEMIN_1: LCALL JZH_STOP1
LCALL DEL10MS
MOV A,MIN1_CLC
CJNE A,#0,CLC_DEMIN_2
MOV A,MIN2_CLC
CJNE A,#0,CLC_DEMIN_3
MOV MIN1_CLC,#5
MOV MIN2_CLC,#9
AJMP CLC_DEMIN
CLC_DEMIN_2: MOV A,MIN2_CLC
CJNE A,#0,CLC_DEMIN_3
MOV MIN2_CLC,#9
DEC MIN1_CLC
AJMP CLC_DEMIN
CLC_DEMIN_3: DEC MIN2_CLC
AJMP CLC_DEMIN
CLC_DEMIN_OUT: RET
CLC_C4H: MOV N0_JZH1,#0C4H
LCALL JZH_SEE
CJNE R7,#11H,CLC_C4OUT
LCALL JZH_STOP1
LCALL DEL10MS
MOV A,JHM_CLC
CJNE A,#0,CLC_C42
MOV JHM_CLC,#1
AJMP CLC_C4H
CLC_C42: CJNE A,#1,CLC_C43
MOV JHM_CLC,#0
AJMP CLC_C4H
CLC_C43: MOV JHM_CLC,#0
AJMP CLC_C4H
CLC_C4OUT: RET
;44444444444444444444444444444444444444444444444444444444444444444444444444444444444
CLC_40H: MOV N0_JZH1,#40H
LCALL JZH_SEE
CJNE R7,#11H,CLC_40OUT
LCALL JZH_STOP1
LCALL DEL10MS
MOV A,OPEN_CLC
CJNE A,#0,CLC_402
MOV OPEN_CLC,#1
AJMP CLC_40H
CLC_402: CJNE A,#1,CLC_403
MOV OPEN_CLC,#0
AJMP CLC_40H
CLC_403: MOV OPEN_CLC,#0
AJMP CLC_40H
CLC_40OUT: RET
CLC_4CH: MOV A,OPEN_CLC
CJNE A,#1,CLC_4COUT
MOV N0_JZH1,#4CH
LCALL JZH_SEE
CJNE R7,#11H,CLC_4COUT
LCALL CLC_CH
LCALL JZH_STOP0
CLC_4C0: LCALL JHUO_CLC
LCALL CLC_44H
LCALL CLC_54H
LCALL CLC_C4H
MOV N0_JZH1,#4CH
LCALL JZH_SEE
CJNE R7,#11H,CLC_4C0
LCALL JZH_STOP0
CLC_4COUT: RET
CLC_DISP:
MOV P1,#0C5H
LCALL ENABLE
MOV A,HOUR1_CLC
ADD A,#30H
LCALL DISP1
MOV P1,#0C6H
LCALL ENABLE
MOV A,HOUR2_CLC
ADD A,#30H
LCALL DISP1
MOV P1,#0C8H
LCALL ENABLE
MOV A,MIN1_CLC
ADD A,#30H
LCALL DISP1
MOV P1,#0C9H
LCALL ENABLE
MOV A,MIN2_CLC
ADD A,#30H
LCALL DISP1
RET
CLC_CH: MOV P1,#0C0H
LCALL ENABLE
MOV DPTR ,#TABLE7
LCALL DISP
LCALL CLC_DISP
RET
JHUO_CLC: DJNZ TIMER1,JHUO_CLC_1
MOV TIMER1,#0FFH
LCALL CLC_DISP
JHUO_CLC_1: LCALL JUDGE
MOV P1,#0EH
LCALL ENABLE
MOV A,JHM_CLC
CJNE A,#1,JHUO_CLC_2
MOV A,#0C6H
MOV P1,A
LCALL ENABLE
AJMP JHUO_CLC_OUT
JHUO_CLC_2: MOV A,#0C9H
MOV P1,A
LCALL ENABLE
JHUO_CLC_OUT: RET
;55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
DSWD: CLR EA
LCALL RST
JNB F0,OUT0 ;如果没有应答,返回主程序
MOV R0,#0CCH
LCALL SEND_BYTE ;跳过ROM匹配
MOV R0,#44H ;发出温度转换命令
LCALL SEND_BYTE
MOV R7,#1 ;廷时75ms以上准备读
SS2: MOV R6,#255
SS1: MOV R5,#255
SS0: DJNZ R5,SS0
DJNZ R6,SS1
DJNZ R7,SS2
LCALL RST
JNB F0,OUT0
MOV R0,#0CCH ;跳过ROM匹配
LCALL SEND_BYTE
MOV R0,#0BEH ;发出读温度命令
LCALL SEND_BYTE
LCALL READ_BYTE
MOV R2,A
LCALL READ_BYTE
MOV R3,A
LCALL TRANS12
OUT0: SETB EA
RET
SEND_BYTE: MOV A,R0;发送一个字节程序
MOV R5,#8
SEN3: CLR C
RRC A
JC SEN1
LCALL WRITE_0
SJMP SEN2
SEN1: LCALL WRITE_1
SEN2: DJNZ R5,SEN3 ; 循环8次,写一个字节
RET
READ_BYTE: MOV R5,#8 ;读一个字节程序
READ1: LCALL READ
RRC A
DJNZ R5,READ1 ; 循环8次,读一个字节
MOV R0,A
RET
;复位程序,如果复位置位F0,没有就复位F0
RST: SETB DAT
NOP
NOP
CLR DAT
MOV R6,#250 ;主机发复位脉冲持续3μs×200=600μs
DJNZ R6,$
MOV R6,#50
DJNZ R6,$
SETB DAT ;主机释放总线,口线改为输入
MOV R6,#15
DJNZ R6,$
CALL CHCK ;调用应答检查程序
MOV R6,#60
DJNZ R6,$
SETB DAT
RET
CHCK: MOV C,DAT
JC RST0
SETB F0 ;检测到信号,置位F0
SJMP CHCK0
RST0: CLR F0 ;未准备好F0复位
CHCK0: RET
WRITE_0: CLR DAT;写0
MOV R6,#30
DJNZ R6,$
SETB DAT
RET
WRITE_1: CLR DAT ;写1
NOP
NOP
NOP
NOP
NOP
SETB DAT
MOV R6,#30
DJNZ R6,$
RET
;读一位数据程序
READ: SETB DAT ;先复位至少1US产生读起始信号
NOP
NOP
CLR DAT
NOP
NOP
SETB DAT ;置位DAT准备接收数据
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DAT
MOV R6,#23
DJNZ R6,$
RET
TRANS12: MOV A,R2
ANL A,#0F0H
MOV R0,A
MOV A,R3
ANL A,#0FH
ORL A,R0
SWAP A
MOV B,#10
DIV AB
MOV R7,A
MOV R6,B
MOV DPTR,#TABB
MOV A,R2
ANL A,#0FH
MOV B,#2
MUL AB
MOVC A,@A+DPTR
MOV R5,A
MOV A,R2
ANL A,#0FH
MOV B,#2
MUL AB
INC A
MOVC A,@A+DPTR
MOV R4,A
RET
TABB: DB 0,0,0,6,1,2,1,8,2,5,3,1,3,7,4,3,5,0
DB 5,6,6,2,6,8,7,5,8,1,8,7,9,3
;66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
SECRUN: MOV START_SR,#0
MOV N0_JZH1,#80H
LCALL JZH_SEE
CJNE R7,#11H,SECRUN_OUT
LCALL JZH_STOP1
LCALL SR_CLEAR
SECRUN_1: LCALL SR_90H
LCALL SR_98H
LCALL SR_DISP
MOV N0_JZH1,#80H
LCALL JZH_SEE
CJNE R7,#11H,SECRUN_1
LCALL JZH_STOP1
LCALL TIME_AP
LCALL DISP_INIT
LCALL DISPTIME
SECRUN_OUT: RET
SR_CLEAR: MOV P1,#1H
LCALL ENABLE
MOV P1,#80H
LCALL ENABLE
MOV DPTR,#TABLE11
LCALL DISP
MOV P1,#0C0H
LCALL ENABLE
MOV DPTR,#TABLE12
LCALL DISP
RET
SR_DISP: MOV P1,#0C4H
LCALL ENABLE
MOV A,#30H
ADD A,MIN1_SR
LCALL DISP1
MOV P1,#0C5H
LCALL ENABLE
MOV A,#30H
ADD A,MIN2_SR
LCALL DISP1
MOV P1,#0C7H
LCALL ENABLE
MOV A,#30H
ADD A,SEC1_SR
LCALL DISP1
MOV P1,#0C8H
LCALL ENABLE
MOV A,#30H
ADD A,SEC2_SR
LCALL DISP1
MOV P1,#0CAH
LCALL ENABLE
MOV A,#30H
ADD A,MSEC1_SR
LCALL DISP1
MOV P1,#0CBH
LCALL ENABLE
MOV A,#30H
ADD A,MSEC2_SR
LCALL DISP1
RET
TABLE11: DB " RUN_SECOND "
TABLE12: DB " 00:00:00 "
SR_90H: MOV N0_JZH1,#90H
LCALL JZH_SEE
CJNE R7,#11H,SR_90_OUT
LCALL JZH_STOP1
LCALL JZH_STOP1
LCALL JZH_STOP1
MOV START_SR,#0
MOV MIN1_SR ,#0
MOV MIN2_SR ,#0
MOV SEC1_SR ,#0
MOV SEC2_SR ,#0
MOV MSEC1_SR ,#0
MOV MSEC2_SR ,#0
SR_90_OUT: RET
SR_98H: MOV N0_JZH1,#98H
LCALL JZH_SEE
CJNE R7,#11H,SR_98_OUT
MOV A,START_SR
CJNE A,#0,SR_98_1
MOV START_SR,#1
AJMP SR_98_OUT
SR_98_1: CJNE A,#1,SR_98_2
SR_98_2: MOV START_SR,#0
LCALL SR_DISP
LCALL JZH_STOP1
LCALL SR_DISP
LCALL JZH_STOP1
LCALL SR_DISP
LCALL JZH_STOP1
LCALL SR_DISP
LCALL JZH_STOP1
SR_98_OUT: RET
SR_ADMSEC2: MOV A,MSEC2_SR
CJNE A,#9,SR_MSEC21
MOV MSEC2_SR,#0
ACALL SR_ADMSEC1
AJMP SR_MSEC2_OUT
SR_MSEC21: INC MSEC2_SR
SR_MSEC2_OUT: RET
SR_ADMSEC1: MOV A,MSEC1_SR
CJNE A,#9,SR_MSEC11
MOV MSEC1_SR,#0
ACALL SR_ADSEC2
AJMP SR_MSEC1_OUT
SR_MSEC11: INC MSEC1_SR
SR_MSEC1_OUT: RET
SR_ADSEC2: MOV A,SEC2_SR
CJNE A,#9,SR_SEC21
MOV SEC2_SR,#0
ACALL SR_ADSEC1
AJMP SR_SEC2_OUT
SR_SEC21: INC SEC2_SR
SR_SEC2_OUT: RET
SR_ADSEC1: MOV A,SEC1_SR
CJNE A,#5,SR_SEC11
MOV SEC1_SR,#0
ACALL SR_ADMIN2
AJMP SR_SEC1_OUT
SR_SEC11: INC SEC1_SR
SR_SEC1_OUT: RET
SR_ADMIN2: MOV A,MIN2_SR
CJNE A,#9,SR_MIN21
MOV MIN2_SR,#0
ACALL SR_ADMIN1
AJMP SR_MIN2_OUT
SR_MIN21: INC MIN2_SR
SR_MIN2_OUT: RET
SR_ADMIN1: MOV A,MIN1_SR
CJNE A,#5,SR_MIN11
MOV MIN1_SR,#0
AJMP SR_MIN1_OUT
SR_MIN11: INC MIN1_SR
SR_MIN1_OUT: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -