📄 1820.asm
字号:
ACALL WRD
MOV A,#0D3H
MOV DAT,A
ACALL WRD
MOV A,#0D0H
MOV DAT,A
ACALL WRD
MOV A,#0CCH
MOV DAT,A
ACALL WRD
MOV A,#0BDH
MOV DAT,A
ACALL WRD
MOV A,#0CDH
MOV DAT,A
ACALL WRD
MOV A,#0B7H
MOV DAT,A
ACALL WRD
MOV A,#20H
MOV DAT,A
ACALL WRD
MOV A,#20H
MOV DAT,A
ACALL WRD
MOV A,#0
;MOV WD,A
MOV 2EH,A
MOV 2FH,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CCS:
ACALL Get1302
ACALL SD1820
ACALL SD1821
ACALL AD16
; MOV A,#2FH
; MOV SBUF,A
; JBC TI,$
; CLR TI
SETB ES
AJMP DISP
AD16:
MOV A,2EH ;十六转十
ANL A,#07H
MOV B,#16
MUL AB
MOV D_H,A
MOV A,2FH
MOV B,#16
DIV AB
MOV D_LL,A
MOV D_L,B
MOV A,D_H
ADD A,D_LL
MOV B,#100
DIV AB
MOV WD,A
MOV A,B
MOV B,#10
DIV AB
MOV WD1,A
MOV WD2,B
MOV A,D_L
MOV B,#6
MUL AB
MOV B,#10
DIV AB
MOV WD3,A
RET
SD1820:
SETB DATAIN ;温度头的检查
NOP
CLR DATAIN
MOV R0,#0FFH
DJNZ R0,$
SETB DATAIN
NOP
NOP
MOV R0,#28H
TSR2:
JNB DATAIN,TSR3
DJNZ R0,TSR2
CLR BP.1
SJMP TSR7
TSR3:
SETB BP.1
MOV R0,#99
DJNZ R0,$
TSR7: SETB DATAIN
RET
SD1821:
JB BP.1,TSS2
NOP
RET
TSS2:
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
LCALL SD1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_1820
RET
WRITE_1820:
MOV R2,#8 ;写
CLR C
WR1:
CLR DATAIN
NOP
RRC A
MOV DATAIN,C
MOV R3,#21
DJNZ R3,$
SETB DATAIN
NOP
DJNZ R2,WR1
SETB DATAIN
RET
READ_1820:
MOV R4,#2 ;;读
MOV R1,#2FH
RE00: MOV R2,#8
RE01: CLR C
CLR DATAIN
NOP
NOP
SETB DATAIN
NOP
MOV C,DATAIN
MOV R3,#15
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
Set1302:
CLR T_RST
NOP
CLR T_CLK
NOP
SETB T_RST
NOP
MOV B, #8EH ;控制寄存器
LCALL RTInputByte
MOV B, #00H ;写操作前WP=0
LCALL RTInputByte
CLR T_RST
NOP
CLR T_CLK
NOP
SETB T_RST
MOV B,#90H
LCALL RTInputByte
MOV B,#0A6H
LCALL RTInputByte
SETB T_CLK
NOP
CLR T_RST
;++++++++++++++++++++++++++++++++++++++++++++
MOV R0, #Second;
MOV R7, #7 ;秒 分 时 日 月 星期 年
MOV R1, #80H ;秒写地址
S13021:
CLR T_RST
CLR T_CLK
NOP
SETB T_RST
MOV B, R1 ;写秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
MOV A, @R0 ;写秒数据
MOV B, A
LCALL RTInputByte
INC R0
INC R1
INC R1
SETB T_CLK
NOP
CLR T_RST
DJNZ R7, S13021
CLR T_RST
NOP
CLR T_CLK
SETB T_RST
MOV B, #8EH ;控制寄存器
LCALL RTInputByte
MOV B, #80H ;控制,WP=1,写保护
LCALL RTInputByte
SETB T_CLK
NOP
CLR T_RST
RET
Get1302:
MOV R0, #Second;
MOV R7, #7
MOV R1, #81H ;秒地
G13021:
CLR T_RST
CLR T_CLK
NOP
SETB T_RST
MOV B, R1 ;秒 分 时 日 月 星期 年 地址
LCALL RTInputByte
LCALL RTOutputByte
MOV @R0, A ;秒
INC R0
INC R1
INC R1
SETB T_CLK
CLR T_RST
DJNZ R7, G13021
RET
;功 能:写1302一字节 (内部子程序)
;**********************************************************
RTInputByte:
MOV R4, #8
Inbit1:
MOV A, B
RRC A
MOV B, A
MOV T_IO, C
SETB T_CLK
NOP
CLR T_CLK
DJNZ R4, Inbit1
RET
;**********************************************************
;功 能:读1302一字节 (内部子程序)
;**********************************************************
RTOutputByte:
MOV R4, #8
Outbit1:
MOV C, T_IO
RRC A
SETB T_CLK
NOP
CLR T_CLK
DJNZ R4, Outbit1
RET
;===========写指令程式==============
WRI:
CLR CS
SETB CS
MOV R0,#8
MOV A,#0F8H
WRI1:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRI1
MOV R0,#8
MOV A,COM
ANL A,#0F0H
WRI2:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRI2
MOV R0,#8
MOV A,COM
SWAP A
ANL A,#0F0H
WRI3:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRI3
RET
;----------写数据子程式-------------------
WRD:
CLR CS
SETB CS
MOV R0,#8
MOV A,#0FAH
WRD1:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRD1
MOV R0,#8
MOV A,DAT
ANL A,#0F0H
WRD2:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRD2
MOV R0,#8
MOV A,DAT
SWAP A
ANL A,#0F0H
WRD3:
RLC A
CLR SCK
MOV SID,C
SETB SCK
DJNZ R0,WRD3
RET
DLAY:
MOV R6,#1FH
DJNZ R6,$
RET
INSS:
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
MOV TH0,#0E2H
MOV TL0,#0FDH
INC D_M
MOV A,D_M
CLR C
SUBB A,#100
JC EXI
MOV D_M,#0
CPL BP.0
EXI:
POP DPH
POP DPL
POP PSW
POP ACC
RETI
SERIAL:
; MOV A,#4
JBC RI,$
MOV A,SBUF
MOV 2DH,A
CLR RI
CLR ES
MOV A,2FH
MOV SBUF,A
JBC TI,$
CLR TI
RETI
TAB:
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 0D2H,0BBH,0B6H,0FEH,0C8H,0FDH,0CBH,0C4H,0CEH,0D5H,0C1H,0F9H,0C8H,0D5H
DB 0A0H,0BBH,62H,32H,39H,34H,24H,0BAH,20H,30H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -