📄 ess1302f.asm
字号:
; 这是被CALLDS07.c调用的DS1302汇编程序,文件名为
; ESS1302F.ASM; 这是DS1302时间和RAM读写程序
; 用 P1.5,P1.6,P1.7;
NAME SS1302B
?PR?_a_func2?SDS1302B SEGMENT CODE
?DT?_a_func2?SDS1302B SEGMENT DATA OVERLAYABLE
?DT?SDS1302B SEGMENT DATA
PUBLIC chai2
PUBLIC ?_a_func2?BYTE
PUBLIC _a_func2
RSEG ?DT?_a_func2?SDS1302B
?_a_func2?BYTE:
aa:DS 1
bb:DS 1
cc:DS 1
RSEG ?DT?SDS1302B
chai2:DS 1
RSEG ?PR?_a_func2?SDS1302B
_a_func2:
SCLK BIT P1.5
IO BIT P1.6
RST BIT P1.7
SW5 BIT 0D5H
SEC DATA 60H
MIN DATA 61H
HR DATA 62H
DATE DATA 63H
MONTH DATA 64H
DAY DATA 65H
YEAR DATA 66H
RA1 DATA 67H
RA2 DATA 68H
RA3 DATA 69H
RA4 DATA 6AH
RA5 DATA 6BH
RA6 DATA 6CH
RA7 DATA 6DH
RA8 DATA 6EH
RA9 DATA 6FH
MOV aa,R7
MOV bb,R5
MOV cc,R3
MOV A,R7 ;IF R7=0FFH,THEN SET SW5=1,READ DS1302
JNZ CAT ;IF R7=00H, THEN SET SW5=0,WRITE DS1302
CLR SW5
SJMP DOG
CAT: SETB SW5
DOG: NOP
MOV A,R5 ;IF R5=0C1H,THEN MAKE RAM
CJNE A,#0C1H,PIG ;IF R5=081H,THEN MAKE CLOCK
MOV R0,#SEC
MOV R7,#16
LCALL RWRTC
RET
PIG: MOV R0,#SEC
MOV R7,#7
LCALL RWRTC
RET
RWRTC: MOV R5,bb
MOV R3,cc
MOV B,R5 ;0C1==READ RAM-- 081==READ CLOCK
JB SW5,RWRTC1
MOV B,R3 ;0C0==WRITE RAM-- 080==WRITE CLOCK
RWRTC1:CLR SCLK
NOP
SETB RST
MOV R6,#08
MOV A,B
RWRTC2:CLR SCLK
RRC A
MOV IO,C
NOP
SETB SCLK
DJNZ R6,RWRTC2
MOV R6,#8
JNB SW5,RWRTC4
RWRTC3:CLR SCLK
NOP
MOV C,IO
RRC A
SETB SCLK
DJNZ R6,RWRTC3
MOV @R0,A
SJMP RWRTC6
RWRTC4:MOV A,@R0
RWRTC5:CLR SCLK
RRC A
MOV IO,C
NOP
SETB SCLK
DJNZ R6,RWRTC5
RWRTC6:INC R0
MOV A,B
ADD A,#02H
MOV B,A
CLR RST
NOP
CLR SCLK
DJNZ R7,RWRTC1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -