📄 tls6.asm
字号:
INTED: LCALL YS60 ;
lcall ys60 ;
lcall ys60 ;
INT02: RET ;
III: AJMP INT ;
;
RDWD: MOV R3, #02H ;
MOV R1, #61H ;
RDWD1: MOV R2, #08H ;
RDWD2: CLR C ;
SETB P1.4 ;
NOP ;
NOP ;
CLR P1.4 ;
NOP ;
NOP ;
NOP ;
SETB P1.4 ;
MOV R4, #09H ;
RDWD3: DJNZ R4, RDWD3 ;
MOV C, P1.4 ;
MOV R4, #23 ;
RDWD4: DJNZ R4, RDWD4 ;
RRC A ;
DJNZ R2, RDWD2 ;
MOV @R1, A ;
DEC R1 ;
DJNZ R3, RDWD1 ;
RET ;
;
FSWD: MOV R2, #08H ;****发送温度或命令
FSWD1: CLR C ;
RRC A ;
JC FSWD2 ;
LCALL FSW_0 ;
AJMP FSWD3 ;
;
FSWD2: LCALL FSW_1 ;
FSWD3: DJNZ R2, FSWD1 ;
LCALL YS60 ;
RET ;
;
FSW_0: CLR P1.4 ;****发送温度_0
LCALL YS60 ;
SETB P1.4 ;
RET ;
;
FSW_1: CLR P1.4 ;****发送温度_1
NOP ;
SETB P1.4 ;
LCALL YS50 ;
RET ;
;
YS500: LCALL WG1 ;
MOV R6, #0E8H ;****500US延时
YS5001: NOP ;
NOP
DJNZ R6, YS5001 ;
RET ;
;
YS300: MOV R6, #0C0H ;****300US延时
YS3001: NOP ;
DJNZ R6, YS3001 ;
RET ;
;
YS50: MOV R6, #1FH ;****50US延时
YS501: NOP ;
DJNZ R6, YS501 ;
RET ;
;
YS60: MOV 0A6H, #0E1H ;喂狗
MOV 0A6H, #1EH ;
MOV R6, #24H ;****60US延时
YS601: NOP ;
DJNZ R6, YS601 ;
RET ;
;
WG: CLR TR0 ;
WG1: MOV 0A6H, #0E1H ;喂狗
MOV 0A6H, #1EH ;
RET ;
;
TO: MOV 0A6H, #0E1H ;喂狗
MOV 0A6H, #1EH ;
;
MOV TH0, #070H ;
MOV TL0, #00H ;
PUSH ACC ;
PUSH B ;
SETB PSW.3 ;
;
MOV A, 4FH ;
JNZ TOJ1 ;
SETB P0.4 ;闪动点亮
JNB 21H.4, TOWD1 ;
JB 21H.3, TOWD1 ;
SETB 21H.3 ;
CLR 21H.4 ;清秒到标志
LCALL CW ;取温度数据
;
CLR C ;
MOV A, 4EH ;
CJNE A, 28H, PMT ;
AJMP TOWD1 ;
PMT: SETB 22H.2 ;温度不同标志
CLR 22H.3 ;
;
TOWD1: JNB 20H.6, TOJ1 ;
JNB 20H.5, TOJ1 ;
CLR 20H.6 ;
MOV A, 2FH ;取闪动指针2FH
;*****闪动处理
CJNE A, #01H, TOX1 ;安全个位
MOV 5DH, 49H ;
MOV 5EH, #49H ;
TOX01: ORL 49H, #0FH ;
TOJ0: AJMP TOXX ;
;
TOJ1: AJMP TO1 ; ;
;
TOX1: CJNE A, #02H, TOX2 ;安全十位
MOV 5DH, 49H ;
MOV 5EH, #49H ;
TOX11: ORL 49H, #0F0H ;
AJMP TOXX ;
;
TOX2: CJNE A, #03H, TOX3 ;安全百位
MOV 5DH, 48H ;
MOV 5EH, #48H ;
TOX21: ORL 48H, #0FH ;
AJMP TOXX ;
;
TOX3: CJNE A, #04H, TOX4 ;安全千位
MOV 5DH, 48H ;
MOV 5EH, #48H ;
TOX31: ORL 48H, #0F0H ;
AJMP TOXX ;
;
TOX4: CJNE A, #05H, TOX5 ;秒个位
JNB 21H.0, TOX41 ;
CLR 21H.1 ;
MOV 5DH, 47H ;
MOV 5EH, #47H ;
TOX41: ORL 47H, #0FH ;
AJMP TOXX ;
;
TOX5: CJNE A, #06H, TOX6 ;秒十位
JNB 21H.0, TOX51 ;
CLR 21H.1 ;
MOV 5DH, 47H ;
MOV 5EH, #47H ;
TOX51: ORL 47H, #0F0H ;
AJMP TOXX ;
;
TOX6: CJNE A, #07H, TOX7 ;分个位
JNB 21H.0, TOX61 ;
CLR 21H.1 ;
MOV 5DH, 46H ;
MOV 5EH, #46H ;
TOX61: ORL 46H, #0FH ;
AJMP TOXX ;
;
TOX7: CJNE A, #08H, TOX8 ;分十位
JNB 21H.0, TOX71 ;
CLR 21H.1 ;
MOV 5DH, 46H ;
MOV 5EH, #46H ;
TOX71: ORL 46H, #0F0H ;
AJMP TOXX ;
;
TOX8: CJNE A, #09H, TOX9 ;时个位
JNB 21H.0, TOX81 ;
CLR 21H.1 ;
MOV 5DH, 45H ;
MOV 5EH, #45H ;
TOX81: ORL 45H, #0FH ;
AJMP TOXX ;
;
TOX9: CJNE A, #0AH, TOXA ;时十位
JNB 21H.0, TOX91 ;
CLR 21H.1 ;
MOV 5DH, 45H ;
MOV 5EH, #45H ;
TOX91: ORL 45H, #0E0H ;
AJMP TOXX ;
;
TOXA: CJNE A, #0BH, TOXB ;星期位
JNB 21H.0, TOXA1 ;
CLR 21H.1 ;
MOV 5DH, 41H ;
MOV 5EH, #41H ;
TOXA1: ORL 41H, #0FH ;
AJMP TOXX ;
;
TOXB: CJNE A, #0CH, TOXC ;日个位
JNB 21H.0, TOXB1 ;
CLR 21H.1 ;
MOV 5DH, 44H ;
MOV 5EH, #44H ;
TOXB1: ORL 44H, #0FH ;
AJMP TOXX ;
;
TOXC: CJNE A, #0DH, TOXD ;日十位
JNB 21H.0, TOXC1 ;
CLR 21H.1 ;
MOV 5DH, 44H ;
MOV 5EH, #44H ;
TOXC1: ORL 44H, #0F0H ;
AJMP TOXX ;
;
TOXD: CJNE A, #0EH, TOXE ;月个位
JNB 21H.0, TOXD1 ;
CLR 21H.1 ;
MOV 5DH, 43H ;
MOV 5EH, #43H ;
TOXD1: ORL 43H, #0FH ;
AJMP TOXX ;
;
TOXE: CJNE A, #0FH, TOXF ;月十位
JNB 21H.0, TOXE1 ;
CLR 21H.1 ;
MOV 5DH, 43H ;
MOV 5EH, #43H ;
TOXE1: ORL 43H, #0F0H ;
AJMP TOXX ;
;
TOXF: CJNE A, #10H, TOXFF ;年个位
JNB 21H.0, TOXF1 ;
CLR 21H.1 ;
MOV 5DH, 42H ;
MOV 5EH, #42H ;
TOXF1: ORL 42H, #0FH ;
AJMP TOXX ;
;
TOXFF: CJNE A, #11H, TO1 ;年十位
JNB 21H.0, TOXFF1 ;
CLR 21H.1 ;
MOV 5DH, 42H ;
MOV 5EH, #42H ;
TOXFF1: ORL 42H, #0F0H ;
;
TOXX: LCALL XSCL ;调用显示处理
;
TO1: ;MOV A, 4FH ;
;JNZ TO01 ;
TO01: MOV A, 4FH ;
JZ TO011 ;
DEC 4FH ;
;
TO011: JB 21H.7, TO02 ;
LCALL READ ;读时钟数据
LCALL RRR ;读安全日数据
;
TO02: CLR C ;
MOV A, 40H ;
SUBB A, 47H ;
JC TO20 ;
MOV A, 47H ;
JZ TO2 ;秒=0
; JNB 21H.6, TO11 ;21H.6=1,安全操作完
CLR 21H.5 ;清零点到标志
CLR 21H.6 ;清安全操作完毕完毕标志
TO11: AJMP TOED ;
;
TO2: SETB 20H.0 ;分到标志
MOV A, 46H ;
JNZ TO21 ;测试分=0?
MOV A, 45H ;
ANL A, #3FH ;
JNZ TO21 ;测试时=0?
JB 21H.5, TO211 ;如果0点=1
JB 21H.6, TO211 ;如果安全=1
SETB 21H.5 ;置0点到标志
CLR 22H.1 ;清写保护标志
AJMP TO22 ;
;
TO21: CLR 21H.5 ;
CLR 21H.6 ;
TO211: AJMP TO22 ;
;
TO20: CLR 20H.0 ;清"0"标志
CLR 21H.3 ;
SETB 21H.4 ;分到,读温度标志
;
TO22: CLR P0.4 ;
MOV 4FH, #19H ;
SETB 20H.6 ;可消隐显示
JNB 20H.5, TO23 ;
MOV R0, 4EH ;
MOV @R0, 4DH ;
MOV A, 2EH ;
JNZ TO221 ;
CLR 20H.5 ;
TO221: DEC 2EH ;
;
TO23: LCALL XSCL ;调用显示处理
MOV 40H, 47H ;
;
TOED: CLR PSW.3 ;
POP B ;
POP ACC ;
RETI ;
;
READ: MOV R7, #07H ;
LCALL ST ;****读数据
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, REED2 ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #30H ;
LCALL SJFS ;
LCALL CACK ;
;
LCALL ST ;
MOV A, #0DFH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, READ ;
;
MOV R0, #47H ;数据存放地址
;
READ1: LCALL SJJS ;
MOV B, A ;
MOV A, R0 ;
CJNE A, #41H, READ2 ;
MOV A, B ;
CJNE A, #00H, READ2 ;
MOV B, #08H ;
READ2: MOV A, B ;
MOV @R0, A ;
DJNZ R7, SACK ;
LCALL MNACK ;
;
REED1: LCALL STOP
LCALL ST ;****读安全数据
MOV A, #0AEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, REED2 ;
MOV A, #00H ;写读操作地址
LCALL SJFS ;
LCALL CACK ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
;
LCALL ST ;
MOV A, #0AFH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, READ ;
;
MOV R7, #04H ;
MOV R0, #48H ;数据存放地址
;
READ21: LCALL SJJS ;
MOV @R0, A ;
DJNZ R7, SACK1 ;
LCALL MACK ;
LCALL SJJS ;读与晶体关联温度21度基准
MOV 50H, A ;保存50H
LCALL MNACK ;
REED2: LCALL STOP ;
RET ;
SACK: LCALL MACK ;*****
DEC R0 ;
AJMP READ1 ;
;
SACK1: LCALL MACK ;*****
INC R0 ;
AJMP READ21 ;
;
RRR: MOV R7, #02H ;
LCALL ST ;****读数据
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, RRRD1 ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #12H ;
LCALL SJFS ;
LCALL CACK ;
;
LCALL ST ;
MOV A, #0DFH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, RRR ;
;
MOV R0, #56H ;数据存放地址
RRR1: LCALL SJJS ;
RRR2: MOV @R0, A ;
DJNZ R7, RSACK ;
LCALL MNACK ;
RRRD1: LCALL STOP ;
RET ;
;
RSACK: LCALL MACK ;*****
INC R0 ;
LJMP RRR1 ;
;
XRR: LCALL XSZT ;
LCALL ST ;
MOV A, #0DEH ;DE
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XRRED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #12H ;12
LCALL SJFS ;
LCALL CACK ;
;
MOV R0, #58H ;
MOV R3, #02H ;
XRR1: MOV A, @R0 ;
LCALL SJFS ;
LCALL CACK ;
INC R0 ;
DJNZ R3, XRR1 ;
;
XRRED: LCALL STOP ;
RET ;
;
XAQ: JNB 21H.5, XAQ00 ;没有"0"点到标志,退出
JB 22H.1, XAQ00 ;有写过保护,退出
XAQG: SETB 22H.1 ;写写过保护
LCALL XSZT ;*****写安全日期
LCALL ST ;
MOV A, #0AEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XAQED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
;
MOV 0A6H, #0E1H ;喂狗
MOV 0A6H, #1EH ;
MOV R0, #48H ;
MOV R3, #02H ;
XAQ1: MOV A, @R0 ;
LCALL SJFS ;
LCALL CACK ;
INC R0 ;
DJNZ R3, XAQ1 ;
;
XAQED: LCALL STOP ;
AJMP XAQ01
XAQ00: CLR 22H.1 ;
XAQ01: RET ;
;
XPM: LCALL XSZT ;*****写PPM
LCALL ST ;细调
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XPMED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #12H ;
LCALL SJFS ;
LCALL CACK ;
;
XPM1: MOV A, 56H ; ;
LCALL SJFS ;
LCALL CACK ;
XPMED: LCALL STOP ;
xpmdd: RET ;
;
XPM20: LCALL XSZT ;*****写PPM
LCALL ST ;粗调0-7
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XPM2ED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #13H ;
LCALL SJFS ;
LCALL CACK ;
;
XPM21: MOV A, 57H ; ;
LCALL SJFS ;
LCALL CACK ;
XPM2ED: LCALL STOP ;
RET ;
;
XBM: LCALL XSZT ;*****写编码
LCALL ST ;
MOV A, #0AEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XBMED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #02H ;
LCALL SJFS ;
LCALL CACK ;
;
MOV R0, #4AH ;
MOV R3, #02H ;
XBM1: MOV A, @R0 ;
LCALL SJFS ;
LCALL CACK ;
INC R0 ;
DJNZ R3, XBM1 ;
;
XBMED: LCALL STOP ;
RET ;
;
XJZ: LCALL XSZT ;*****写编码
LCALL ST ;
MOV A, #0AEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XJZED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #04H ;
LCALL SJFS ;
LCALL CACK ;
;
MOV A, 50H ;
LCALL SJFS ;
LCALL CACK ;
XJZED: LCALL STOP ;
RET ;
;
XSZ: LCALL XSZT ;****写时钟数据
LCALL ST ;
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XSZED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #30H ;
LCALL SJFS ;
LCALL CACK ;
;
MOV R0, #47H ;
MOV R3, #07H ;
XSZ1: MOV A, @R0 ;
LCALL SJFS ;
LCALL CACK ;
DEC R0 ;
DJNZ R3, XSZ1 ;
;
XSZED: LCALL STOP ;
RET ;
;
XSZT: MOV 0A6H, #0E1H ;喂狗
MOV 0A6H, #1EH ;
LCALL ST ;****写时钟数据头
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XSZTED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #3FH ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #02H ;
LCALL SJFS ;
LCALL CACK ;
LCALL STOP ;
;
LCALL ST ;
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, XSZTED ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #3FH ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #06H ;
LCALL SJFS ;
LCALL CACK ;
LCALL STOP ;
LJMP XSZTDD ;
;
XSZTED: LCALL STOP ;
XSZTDD: RET ;
;
XSCL: LCALL WG1 ;
MOV DPTR, #0030H ;****发送显示数据
MOV A, 41H ;星期
MOVC A, @A+DPTR ;
MOV R6, #08H ;
CLR C ;
XSCLX: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLX ;
;
MOV R0, #44H ;年.月.日
MOV R7, #03H ;
;
XSCLR1: MOV R6, #08H ;
MOV A, @R0 ;
MOV B, A ;
MOV A, R0 ;
CJNE A, #45H, XSCLR11 ;
MOV A, B ;
ANL A, #7FH ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -