📄 tls6.asm
字号:
MOV B, A ;
XSCLR11:MOV A, B ;
ANL A, #0FH ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLR2: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLR2 ;
MOV A, B ;
ANL A, #0F0H ;
SWAP A ;
MOV R6, #08H ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLR3: RRC A ;
MOV P0.2, C ;
CLR P0.1 ;
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLR3 ;
DEC R0 ;
DJNZ R7, XSCLR1 ;
;
XSCLN1: MOV R6, #08H ;
MOV A, #20H ;
MOV B, A ;
XSCLN11:MOV A, B ;
ANL A, #0FH ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLN2: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLN2 ;
MOV A, B ;
ANL A, #0F0H ;
SWAP A ;
MOV R6, #08H ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLN3: RRC A ;
MOV P0.2, C ;
CLR P0.1 ;
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLN3 ;
;
MOV R0, #47H ;时.分.秒
MOV R7, #03H ;
;
XSCL1: MOV R6, #08H ;
MOV A, @R0 ;
MOV B, A ;
MOV A, R0 ;
CJNE A, #45H, XSCL11 ;
MOV A, B ;
ANL A, #7FH ;
MOV B, A ;
XSCL11: MOV A, B ;
ANL A, #0FH ;
MOVC A, @A+DPTR ;
CLR C ;
XSCL2: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCL2 ;
;
MOV A, B ;
ANL A, #0F0H ;
SWAP A ;
MOV B, A ;
;
MOV A, R0 ;
CJNE A, #45H, XSCL21 ;
MOV A, B ;
CLR C ;
SUBB A, #03H ;
JC XSCL21 ;
MOV A, #0FFH ;
AJMP XSCL23 ;
;
XSCL21: MOV A, B ;
MOVC A, @A+DPTR ;
;
XSCL23: MOV R6, #08H ;
CLR C ;
XSCL3: RRC A ;
MOV P0.2, C ;
CLR P0.1 ;
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCL3 ;
DEC R0 ;
DJNZ R7, XSCL1 ;
;
MOV A, 4EH ;温度
ANL A, #0FH ;
MOVC A, @A+DPTR ;
MOV R6, #08H ;
CLR C ;
XSCLS: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLS ;
MOV A, 4EH ;温度
ANL A, #0F0H ;
SWAP A ;
MOVC A, @A+DPTR ;
MOV R6, #08H ;
CLR C ;
XSCLS1: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLS1 ;
MOV R0, #49H ;安全日期
MOV R7, #02H ;
;
XSCLW1: MOV R6, #08H ;
MOV A, @R0 ;
MOV B, A ;
MOV A, R0 ;
CJNE A, #45H, XSCLW11 ;
MOV A, B ;
ANL A, #7FH ;
MOV B, A ;
XSCLW11:MOV A, B ;
ANL A, #0FH ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLW2: RRC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟操作
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLW2 ;
MOV A, B ;
ANL A, #0F0H ;
SWAP A ;
MOV R6, #08H ;
MOVC A, @A+DPTR ;
CLR C ;
XSCLW3: RRC A ;
MOV P0.2, C ;
CLR P0.1 ;
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R6, XSCLW3 ;
DEC R0 ;
DJNZ R7, XSCLW1 ;
CLR P0.3 ;所存数据
NOP ;
NOP ;
SETB P0.3 ;
RET ;
;
FSS: MOV R3, #013H ;****发送显示数据
MOV R0, #30H ;
FSS1: MOV R4, #08H ;
MOV A, @R0 ;
FSS2: RLC A ;
MOV P0.2, C ;发送数据
CLR P0.1 ;时钟处理
NOP ;
NOP ;
SETB P0.1 ;
DJNZ R4, FSS2 ;
INC R0 ;
DJNZ R3, FSS1 ;
;
CLR P0.3 ;写入锁存器,并显示
NOP ;
SETB P0.3 ;
RET ;
;
JSJ0: AJMP JSED ;
;
JS: CLR ES ;*****串行通信数据接收
CLR TR0 ;禁止定时中断
CLR RI ;清接收标志
MOV A, SBUF ;收第一数据
CJNE A, #61H, JSJ0 ;"a"
;
JNB RI, $ ;接受第二字节
CLR RI ;
MOV A, SBUF ;
CJNE A, #61H, JS1 ;"a"****接受时钟修改****
MOV R4, #0DH ;接受长度(13字符)
MOV R0, #30H ;通信缓存
JS01: JNB RI, $ ;
CLR RI ;
MOV A, SBUF ;
MOV @R0, A ;
INC R0 ;
DJNZ R4, JS01 ;
;时钟数据处理
MOV R4, #03H ;年,月,日
MOV R0, #30H ;
MOV R1, #42H ;
JS02: MOV A, @R0 ;
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
INC R0 ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, B ;
MOV @R1, A ;
INC R0 ;
INC R1 ;
DJNZ R4, JS02 ;
;
MOV A, @R0 ;时
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
INC R0 ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, B ;
ORL A, #80H ;
MOV @R1, A ;
INC R1 ;
INC R0 ;
MOV A, @R0 ;分
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
INC R0 ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, B ;
MOV @R1, A ;
INC R1 ;
INC R0 ;
MOV A, @R0 ;秒
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
INC R0 ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, B ;
MOV @R1, A ;
INC R0 ;
;
MOV A, @R0 ;周
ANL A, #0FH ;
CJNE A, #07H, JS03 ;
MOV 41H, #00H ;
AJMP JS04 ;
JS03: MOV 41H, A ;
JS04: LCALL WG1 ;
LCALL XSZ ;
AJMP JSED1 ;
JSJ2: AJMP JS2 ; ;
JSJ3: AJMP JS12 ;
JS1: CJNE A, #62H, JSJ2 ;***接受呼叫地址
MOV R6, #04H ;
MOV R0, #30H ;
JS11: JNB RI, $ ;
MOV A, SBUF ;
MOV @R0, A ;
CLR RI ;
INC R0 ;
DJNZ R6, JS11 ;
MOV A, 30H ;
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
MOV A, 31H ;
ANL A, #0FH ;
ORL A, B ;
MOV 34H, A ;
;
MOV A, 32H ;
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
MOV A, 33H ;
ANL A, #0FH ;
ORL A, B ;
MOV 35H, A ;
CLR C ;
MOV A, 4AH ;
CJNE A, 34H, JSJ3 ;
MOV A, 4BH ;
CJNE A, 35H, JSJ3 ;
CLR TI ;地址符合,应答
MOV A, #62H ;B
SETB P0.7 ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV A, #62H ;B,发送应答标志
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV R0, #4AH ;发送时钟编号
MOV R2, #02H ;
JS13: MOV A, @R0 ;
ANL A, #0F0H ;
SWAP A ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
INC R0 ;
DJNZ R2, JS13 ;
;
MOV R0, #42H ;发送年月日
MOV R2, #06H ; 时分秒
JS14: MOV A, @R0 ;
CJNE R0, #45H, JS141 ;小时判断
ANL A, #70H ;
AJMP JS142 ;
JS141: ANL A, #0F0H ;
JS142: SWAP A ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
INC R0 ;
DJNZ R2, JS14 ;
;
MOV A, 41H ;发送星期
CJNE A, #00H, JS143 ;
MOV A, #30H ;
AJMP JS144 ;
JS143: ORL A, #30H ;
JS144: MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
;
MOV R0, #48H ;发送安全日
MOV R2, #02H ;
JS15: MOV A, @R0 ;
ANL A, #0F0H ;
SWAP A ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV A, @R0 ;
ANL A, #0FH ;
ORL A, #30H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
INC R0 ;
DJNZ R2, JS15 ;
CLR P0.7 ;
JS12: AJMP JSED ;
;
JS2: CJNE A, #64H, JS3 ;****接受安全日
MOV R6, #04H ;
MOV R0, #30H ;
JS21: JNB RI, $ ;
MOV A, SBUF ;
MOV @R0, A ;
CLR RI ;
INC R0 ;
DJNZ R6, JS21 ;
;
MOV A, 30H ;
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
MOV A, 31H ;
ANL A, #0FH ;
ORL A, B ;
MOV 48H, A ;
;
MOV A, 32H ;
ANL A, #0FH ;
SWAP A ;
MOV B, A ;
MOV A, 33H ;
ANL A, #0FH ;
ORL A, B ;
MOV 49H, A ;
LCALL XAQG
AJMP JSED1 ;
;
JS3: CJNE A, #65H, JS4 ;****PPM加1点
MOV A, 56H ;
JZ JS21 ;
DEC 56H ;
LCALL XPM ;
AJMP JSED ;
;
JS4: CJNE A, #66H, JS5 ;****PPM减1点
MOV A, 56H ;
CLR C ;
SUBB A, #1FH ;
JNC JS41 ;
INC 56H ;
LCALL XPM ;
JS41: AJMP JSED ;
;
JS5: CJNE A, #67H, JS6 ;****写时钟编号
JNB RI, $ ;
CLR RI ;
MOV A, SBUF ;
MOV 30H, A ;
JNB RI, $ ;
CLR RI ;
MOV A, SBUF ;
MOV 31H, A ;
CLR C ;
MOV A, 30H ;
MOV B, #0AH ;
DIV AB ;
SWAP A ;
ORL A, B ;
MOV 4AH, A ;
CLR C ;
MOV A, 31H ;
MOV B, #0AH ;
DIV AB ;
SWAP A ;
ORL A, B ;
MOV 4BH, A ;
LCALL XBM ;
AJMP JSED ;
;
JS6: CJNE A, #68H, JS7 ;****FSBM
SETB P0.7 ;
MOV A, 4AH ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
MOV A, 4BH ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
CLR P0.7 ;
AJMP JSED ;
;
JS7: CJNE A, #69H, JS8 ;
SETB P0.7 ;
MOV A, 56H ;
MOV SBUF, A ;
JNB TI, $ ;
CLR TI ;
CLR P0.7 ;
AJMP JSED ;
;
JS8:
JSED1: MOV 40H, #00H ;
MOV 4FH, #00H
CLR 21H.4
JSED: SETB ES ;允许串行中断
CLR 20H.7 ;置串行通信接收数据标志
SETB TR0 ;开定时中断
RETI ;
;
SZCS:; CLR TR0 ;****时钟初始化
LCALL XSZT ;
;
LCALL ST ;
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, SZED1 ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #32H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, B ;
LCALL SJFS ;
LCALL CACK ;
LCALL STOP ;
;
LCALL ST ;
MOV A, #0DEH ;
LCALL SJFS ;
LCALL CACK ;
JNB ACK, SZED1 ;
MOV A, #00H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #11H ;
LCALL SJFS ;
LCALL CACK ;
MOV A, #08H ;
LCALL SJFS ;
LCALL CACK ;
LCALL STOP ;
AJMP SZCSED ;
;
SZED1: LCALL STOP ;
SZCSED: LCALL YSK ;
SETB TR0 ;
RET ;
;
ST: SETB SDA ;****
NOP ;
SETB SCK ;
LCALL YSK ;
CLR SDA ;
LCALL YSK ;
CLR SCK ;
NOP ;
RET ;
;*****停止管理
STOP: CLR SDA ;数据位=0
NOP ;
SETB SCK ;
LCALL YSK ;
SETB SDA ;
LCALL YSK ;
RET ;
;
MACK: CLR SDA ;****
NOP ;
NOP ;
SETB SCK ;
LCALL YSK ;
CLR SCK ;
NOP ;
NOP ;
RET ;
;
MNACK: SETB SDA ;
NOP ;
NOP ;
SETB SCK ;
LCALL YSK ;
CLR SCK ;
NOP ;
NOP ;
RET ;
;
CACK: SETB SDA ;****
NOP ;
NOP ;
SETB SCK ;
CLR ACK ;
NOP ;
NOP ;
MOV C, SDA ;
JC CEND ;
SETB ACK ;
CEND: NOP ;
CLR SCK ;
NOP ;
RET ;
;
SJFS: MOV R2, #08H ;*****数据发送
;
SJFS1: RLC A ;左移数据
MOV SDA, C ;向数据口传送数据
NOP ;
SETB SCK ;
LCALL YSK ;
CLR SCK ;
DJNZ R2, SJFS1 ;循环处理
NOP ;
RET ;
;
SJJS: CLR A ;*****数据接收
MOV R2, #08H ;
;
SJJS1: SETB SDA ;
NOP ;
SETB SCK ;
NOP ;
MOV C, SDA ;
CLR SCK ;
RLC A ;
LCALL YSK ;
DJNZ R2, SJJS1 ;
RET ;
;
YSK: MOV R4, #01H ;*****延时
YSK1: NOP
DJNZ R4, YSK1 ;
RET ;
;
YSQ: MOV R6, #25H ;
YSQ1: MOV R5, #0FFH ;
YSQ2: NOP
DJNZ R5, YSQ2 ;
DJNZ R6, YSQ1 ;
RET ;
END ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -