📄 ds1302.asm
字号:
IO BIT P3.0 ;
SCLK BIT P3.1
RST BIT P3.2
ORG 0000H ;
LJMP MAIN ;
MAIN:
CALL SET1302 ;
XSSJ: CALL GET1302 ;
MOV R0,#31H ;
PD: CJNE @R0,#00H,BPD ;
JMP XSRQ ;
BPD: MOV R0,#30H;
MOV R3,#20H ;
LCALL CFXS ;
INC R0 ;
LCALL CFXS ;
INC R0 ;
LCALL CFXS ;
JMP XSSJ ;
;*******************************************************************************************
TIME: DB 00H,45H,09H,22H,06H,03H,05H
DSEG0: DB 0BFH,0B0H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH
;*********************************************************************************************
XSRQ: ;
MOV 39H,#20H
XSRQ1: MOV 38H,#00H ;
XSRQ2: MOV R0,#33H ;
MOV R3,#20H ;
LCALL CFXS ;
INC R0 ;
LCALL CFXS ;
INC R0 ;
INC R0 ;
LCALL CFXS ;
DJNZ 38H,XSRQ2; ;
DJNZ 39H,XSRQ1;
;**************************************************************************************
MOV 39H,#20H ;
XSXQ1: MOV 38H,#00H ;
XSXQ2: MOV R0,#35H ;
MOV R3,#20H ;
LCALL CFXS ;
DJNZ 38H,XSXQ2 ;
DJNZ 39H,XSXQ1;
JMP XSSJ ;
;**************************************************************************************
;
;**************************************************************************************
CFXS: MOV A,R3;
MOV P2,A;
RR A;
MOV R3,A;
MOV A,@R0;
ANL A,#0FH;
MOV DPTR,#DSEG0;
MOVC A,@A+DPTR;
MOV P1,#80H
MOV P1,A;
LCALL YS;
MOV A,R3;
MOV P2,A;
RR A;
MOV R3,A
MOV A,@R0;
ANL A,#0F0H;
SWAP A;
MOV DPTR,#DSEG0;
MOVC A,@A+DPTR;
MOV P1,A;
LCALL YS;
RET
;***********************************************************************************
;
;***********************************************************************************
GET1302: MOV R0,#30H ;
MOV R3,#07H ;
MOV R1,#81H ;
DS1302D: SETB RST ;
NOP
MOV B,R1
LCALL YS;
LCALL INPUTBYTE
LCALL YS;
LCALL OUTPUTBYTE
MOV @R0,A
INC R0 ;
INC R1 ;
INC R1
DJNZ R3,DS1302D ;
RET
;**************************************************************************
;
;**************************************************************************
SET1302: CLR RST
NOP
CLR SCLK;
NOP
SETB RST ;
NOP
MOV B,#08EH ;
LCALL INPUTBYTE
MOV B,#00H ;
LCALL INPUTBYTE
CLR RST;
LCALL YS;
MOV DPTR,#TIME ;
MOV 20H,#00H;
MOV R3,#07H
MOV R0,#80H ;
DS1302: SETB RST ;
NOP
MOV B,R0
LCALL INPUTBYTE ;
MOV A,20H;
INC 20H;
MOVC A,@A+DPTR
MOV B,A
LCALL INPUTBYTE ;
CLR RST
;INC DPTR ;
INC R0 ;
INC R0
DJNZ R3,DS1302 ;
NOP
SETB RST ;
NOP
MOV B,#8EH ;
LCALL INPUTBYTE ;
MOV B,#80H ;
LCALL INPUTBYTE;
CLR RST
RET
;***********************************************************************************
;
;***********************************************************************************
INPUTBYTE: MOV R2,#08H ;
MOV A,B ;
CLR C ;
INBIT: RRC A ;
MOV IO,C ;
NOP
SETB SCLK ;
NOP
NOP
NOP
CLR SCLK ;
DJNZ R2,INBIT ;
RET
;************************************************************************************
;
;************************************************************************************
OUTPUTBYTE: MOV R2,#08H ;
CLR C
CLR A
OUTBIT: CLR SCLK ;
MOV C,IO ;
RRC A
SETB SCLK
NOP ;
NOP
DJNZ R2,OUTBIT ;
CLR SCLK
NOP
NOP
CLR RST ;
RET
;*************************************************************************************
;
;*************************************************************************************
YS: MOV R7,#02H;
YS1MS1: MOV R6,#00H;
YS1MS2: DJNZ R6,YS1MS2
DJNZ R7,YS1MS1;
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -