⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds12887.txt

📁 在网上找了好长时间DS12887的汇编程序
💻 TXT
字号:
 在网上找了好长时间DS12887的汇编程序,发现这方面的资料太少,所以现在将这个DS12887时钟芯片的汇编程序发出来,以供大家参考。(转载请注明出处:http://mcljc.blog.163.com)

;**********************************

;  写时间子程序

;向DS12887回写时间信息,包括年月日,时分秒;

;**********************************

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

;时信息,在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

;世纪信息,在6D,6EH中

MOV DS_ADDR,#0EH

ANL 6DH,#0FH

ANL 6EH,#0FH

MOV A,6EH

SWAP A

ORL A,6DH

LCALL WRITE_DS

;********以下重新初始化时钟

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

;************************************

;  读时间信息例程,包括年月日,时分秒

;  分别放入60H-6DH的内存字节中,一个

;  字节中只存放一位数,低位在前

;************************************

READ_TIME:

MOV DS_ADDR,#0AH

LCALL READ_DS

JBC ACC.7,READ_TIME ;更新标志

;秒信息送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 ;清整点标志

CJNE A,#00,RT_H10

SETB BZ_M00 ;整点标志

;时信息送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

;月计数送69,6AH

D_01:

MOV DS_ADDR,#8 

LCALL READ_DS 

MOV 69H,A

SWAP A

MOV 6AH,A

SWAP A

;年信息送6B,6C时

MOV DS_ADDR,#9 

LCALL READ_DS

MOV 6BH,A

SWAP A

MOV 6CH,A

;世纪信息送6D,6E

CJNE A,#98H,RT_1 

RT_1: JC RT_2

MOV A,#19H ;判断世纪,大于98是19,小于

是20

AJMP RT_3

RT_2: MOV A,#20H

RT_3: MOV 6DH,A

SWAP A

MOV 6EH,A

;*****以下程序累加安全天数,64H=时

JNB BZ_M00,RT_10 ;不是整点

MOV A,64H

CJNE A,#00H,RT_END ;0点累加安全天数

JB BZ_ADD,RT_END ;已经加过了

SETB BZ_ADD

LCALL ADD_DAY ;累加安全天数

RT_6:

AJMP RT_END

;*****以上程序累计产量*******

RT_10:

CLR BZ_ADD

; CLR BZ_ADM

; CLR BZ_ADN

RT_END:

; MOV DS_ADDR,#0CH

; LCALL READ_DS

RET

;***************************************

;从DS12887中读写数据,地址在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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -