DSC12887與單片機(jī)接口的匯編例程
;**********************************
; 寫時(shí)間子程序
;向DS12887回寫時(shí)間信息,包括年月日,時(shí)分秒;
;**********************************
WRITE_TIME
MOV DS_ADDR,#0BH
MOV A,#0A2H
LCALL WRITE_DS
;寫秒信息,在60H,61H中
MOV DS_ADDR,#0
MOV A,61H
ANL A,#0FH
SWAP A
ANL 60H,#0FH
ORL A,60H
LCALL WRITE_DS
;分信息,在62,63H中
MOV DS_ADDR,#2
ANL 62H,#0FH
ANL 63H,#0FH
MOV A,63H
SWAP A
ORL A,62H
LCALL WRITE_DS
;時(shí)信息,在64,65H中
MOV DS_ADDR,#4
ANL 64H,#0FH
ANL 65H,#0FH
MOV A,65H
SWAP A
ORL A,64H
LCALL WRITE_DS
;周信息,在66H中
MOV DS_ADDR,#6
MOV A,66H
LCALL WRITE_DS
;日信息,在67,68H中
MOV DS_ADDR,#7
ANL 67H,#0FH
ANL 68H,#0FH
MOV A,68H
SWAP A
ORL A,67H
LCALL WRITE_DS
;月信息,在69,6AH中
MOV DS_ADDR,#8
ANL 69H,#0FH
ANL 6AH,#0FH
MOV A,6AH
SWAP A
ORL A,69H
LCALL WRITE_DS
;年信息,在6B,6CH中
MOV DS_ADDR,#9
ANL 6BH,#0FH
ANL 6CH,#0FH
MOV A,6CH
SWAP A
ORL A,6BH
LCALL WRITE_DS
;世紀(jì)信息,在6D,6EH中
MOV DS_ADDR,#0EH
ANL 6DH,#0FH
ANL 6EH,#0FH
MOV A,6EH
SWAP A
ORL A,6DH
LCALL WRITE_DS
;********以下重新初始化時(shí)鐘
MOV DS_ADDR,#0AH
MOV A,#2FH
LCALL WRITE_DS
MOV DS_ADDR,#0BH
MOV A,#42H
LCALL WRITE_DS
MOV DS_ADDR,#0CH
LCALL READ_DS
MOV DS_ADDR,#0DH
LCALL READ_DS
RET
;************************************
; 讀時(shí)間信息例程,包括年月日,時(shí)分秒
; 分別放入60H-6DH的內(nèi)存字節(jié)中,一個(gè)
; 字節(jié)中只存放一位數(shù),低位在前
;************************************
READ_TIME:
MOV DS_ADDR,#0AH
LCALL READ_DS
JBC ACC.7,READ_TIME 更新標(biāo)志
;秒信息送60H,61HNDEFINED SYMBOL (PASS-2)
MOV DPTR,#0 讀秒信息
MOVX A,@DPTR
MOV 60H,A
SWAP A
MOV 61H,A
ANL 60H,#0FH
ANL 61H,#0FH
;分信息送62,63H
MOV DPTR,#2
MOVX A,@DPTR
MOV 62H,A
SWAP A
MOV 63H,A
ANL 62H,#0FH
ANL 63H,#0FH
SWAP A
CLR BZ_M00 清整點(diǎn)標(biāo)志
CJNE A,#00,RT_H10
SETB BZ_M00 整點(diǎn)標(biāo)志
;時(shí)信息送64,65H
RT_H10:
MOV DPTR,#4
MOVX A,@DPTR
MOV 64H,A
SWAP A
MOV 65H,A
;周信息送66H
H_14:
MOV DS_ADDR,#6
LCALL READ_DS
MOV 66H,A
ANL 66H,#0FH
;月日期送67,68H
MOV DS_ADDR,#7
LCALL READ_DS
MOV 67H,A
SWAP A
MOV 68H,A
;月計(jì)數(shù)送69,6AH
D_01:
MOV DS_ADDR,#8
LCALL READ_DS
MOV 69H,A
SWAP A
MOV 6AH,A
SWAP A
;年信息送6B,6C時(shí)
MOV DS_ADDR,#9
LCALL READ_DS
MOV 6BH,A
SWAP A
MOV 6CH,A
;世紀(jì)信息送6D,6E
CJNE A,#98H,RT_1
RT_1: JC RT_2
MOV A,#19H 判斷世紀(jì),大于98是19,小于
是20
AJMP RT_3
RT_2: MOV A,#20H
RT_3: MOV 6DH,A
SWAP A
MOV 6EH,A
;*****以下程序累加安全天數(shù),64H=時(shí)
JNB BZ_M00,RT_10 不是整點(diǎn)
MOV A,64H
CJNE A,#00H,RT_END 0點(diǎn)累加安全天數(shù)
JB BZ_ADD,RT_END 已經(jīng)加過了
SETB BZ_ADD
LCALL ADD_DAY 累加安全天數(shù)
RT_6:
AJMP RT_END
;*****以上程序累計(jì)產(chǎn)量*******
RT_10:
CLR BZ_ADD
; CLR BZ_ADM
; CLR BZ_ADN
RT_END:
; MOV DS_ADDR,#0CH
; LCALL READ_DS
RET
;***************************************
;從DS12887中讀寫數(shù)據(jù),地址在DS_ADDR中
;***************************************
READ_DS:
; CLR P3.3
MOV DPH,#0H
MOV DPL,DS_ADDR
MOVX A,@DPTR
RET
WRITE_DS:
MOV DPH,#0H
MOV DPL,DS_ADDR
MOVX @DPTR,A
RET