EDN首页   博客首页

日志档案

发表于 2008-8-30 14:21:28

0

标签: 无标签

DSC12887汇编源代码

;**********************************
;  
写时间子程序
;
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 ;
判断世纪,大于9819,小于
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
您可以去21IC上找一个DS12887的资料看一看其它的内存单元读写也可以使用以上两个例程.

系统分类: DSP   |   用户分类: 51单片机   |   来源: 转贴   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(100)    回复(0)  

投一票您将和博主都有获奖机会!