|
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 您可以去21IC上找一個(gè)DS12887的資料看一看其它的內(nèi)存單元讀寫也可以使用以上兩個(gè)例程.
|