在线求助:DS12887的汇编程序
想了解DS12887的用法 问题点数:100、回复次数:13Top
1 楼shuai9595(帅)回复于 2003-05-20 16:38:04 得分 0
我也想看看!Top
2 楼abei11()回复于 2003-05-20 18:59:52 得分 0
很简单的,应该可以找到例程的!它自己的资料很全的!Top
3 楼roseyyj(杨凡)回复于 2003-05-21 10:09:16 得分 0
楼上的:
DALLAS公司所给的资料里面没有例程的,现在我所找到的例程都是C语言的,并且都是一个版本。我自己写了一个汇编,但是,调试的结果是好像不大对头,
哪位老兄有兴趣帮我看看?
Top
4 楼wangluyan(我不知道!所以我问!)回复于 2003-05-21 12:38:41 得分 90
程序贴出来!!!Top
5 楼yharbour(紫牵牛)回复于 2003-05-21 13:10:54 得分 10
到这看看去:
http://www.56789.com/data/805.htmTop
6 楼roseyyj(杨凡)回复于 2003-05-21 13:30:34 得分 0
不好意思,忘啦。程序如下:
org 0000h
ajmp DS12887
ORG 0013H
AJMP INT1
;//////时钟////
DS12887:
mov dptr,#800ah
mov a,#20h
movx @dptr,a
MOV DPTR,#800DH
MOVX A,@DPTR
MOVX A,@DPTR
MOV DPTR,#800AH ;设置寄存器0A,OB,
MOV A,#20H
MOVX @DPTR,A
INC DPTR
MOV A,#0A6H
MOVX @DPTR,A
;;;;;;;;;;
MOV DPTR,#8000H ;设置时间03年5月15日
MOV A,#00H ;11点00分00秒
MOVX @DPTR,A ;
INC DPTR ;8001
MOV A,#0FH ;
MOVX @DPTR,A ;
INC DPTR ;8002
MOV A,#00H
MOVX @DPTR,A ;
INC DPTR ;8003
MOV A,#01H
MOVX @DPTR,A ;
INC DPTR ;8004
MOV A,#0BH
MOVX @DPTR,A ;
INC DPTR ;8005
MOV A,#0FFH
MOVX @DPTR,A;
INC DPTR ;8006
MOV A,#06H
MOVX @DPTR,A ;
INC DPTR ;8007
MOV A,#10H
MOVX @DPTR,A;
INC DPTR ;8008
MOV A,#05H
MOVX @DPTR,A ;
INC DPTR
MOV A,#03H ;8009
MOVX @DPTR,A;
;;;;;
MOV DPTR,#800CH
MOVX A,@DPTR
MOV DPTR,#800BH
MOV A,#26H
MOVX @DPTR,A
;;;;;;;;;
;RET
SETB EA
SETB EX1
AHALT: AJMP $
;;;;;;;;;;;;;;;
READ:
MOV DPTR,#800AH
READ1:
MOVX A,@DPTR
JBC ACC.7,READ1
MOV DPTR,#8000H
MOVX A,@DPTR
MOV R6,A
MOV DPTR,#8002H
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#8004H
MOVX A,@DPTR
MOV R4,A
MOV DPTR,#8006H
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#8007H
MOVX A,@DPTR
MOV R2,A
MOV DPTR,#8008H
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#8009H
MOVX A,@DPTR
MOV R0,A
RET
INT1:
LCALL READ
MOV DPTR,#8001H
MOVX A,@DPTR
ADD A,R6
CJNE A,#3CH,TIME1
MOV A,#00H
SETB PSW.5
AJMP TIME2
TIME1:
JNC TIME2
SUBB A,#3CH
SETB PSW.5
TIME2:
MOVX @DPTR,A
;;;;;;;;;;;;;;;;;;;
MOV DPTR,#8003H
MOVX A,@DPTR
MOV C,PSW.5
ADDC A,R5
CJNE A,#3CH,MINUTE1
MOV A,#00H
AJMP MINUTE2
MINUTE1:
JNC MINUTE2
SUBB A,#3CH
SETB PSW.5
MINUTE2:
MOVX @DPTR,A
MOV DPTR,#800CH
MOVX A,@DPTR ;
RETI
Top
7 楼roseyyj(杨凡)回复于 2003-05-21 13:37:50 得分 0
谢谢yharbour老兄,
那个程序我看了,好像不能用呀,,,Top
8 楼wangluyan(我不知道!所以我问!)回复于 2003-05-21 13:43:09 得分 0
我写的(已经调试通过)
;********************reade time frome 12887*************************good
;T_SEC: save seccond
;T_MIN: save minute
;T_HOUR: save hour
;T_DAY: save day
;T_MON: save month
R12887: ;读12887
MOV DPTR,#0C80AH
MOVX A,@DPTR
ANL A,#80H
JNZ NEXT0
MOV DPTR,#0C800H
MOVX A,@DPTR
MOV T_SEC,A
MOV DPTR,#0C802H
MOVX A,@DPTR
MOV T_MIN,A
MOV DPTR,#0C804H
MOVX A,@DPTR
MOV T_HOUR,A
MOV DPTR,#0C807H
MOVX A,@DPTR
MOV T_DAY,A
MOV DPTR,#0C808H
MOVX A,@DPTR
MOV T_MON,A
NEXT0: RET
;*******************write time into 12887*************************good
;T_SEC: save seccond
;T_MIN: save minute
;T_HOUR: save hour
;T_DAY: save day
;T_MON: save month
W12887: ;写12887
MOV DPTR,#0C80BH
MOV A,#86H
MOVX @DPTR,A
MOV DPTR,#0C80AH
MOV A,#0A0H
MOVX @DPTR,A
MOV DPTR,#0C800H
MOV A,T_SEC
MOVX @DPTR,A
MOV DPTR,#0C802H
MOV A,T_MIN
MOVX @DPTR,A
MOV DPTR,#0C804H
MOV A,T_HOUR
MOVX @DPTR,A
MOV DPTR,#0C807H
MOV A,T_DAY
MOVX @DPTR,A
MOV DPTR,#0C808H
MOV A,T_MON
MOVX @DPTR,A
MOV DPTR,#0C80AH
MOV A,#20H
MOVX @DPTR,A
MOV DPTR,#0C80BH
MOV A,#06H
MOVX @DPTR,A
RET
Top
9 楼roseyyj(杨凡)回复于 2003-05-21 14:05:31 得分 0
wangluyan :
不胜感激,我的源程序根你的思路没有差别呀,我也调试了,可是就是通不过
我在调试的时候,发现在无论怎么读数,所读出来的VRT位使终是0
是不是因为我的片内电池失效,还是因为没有触发?
如何启动电池??Top
10 楼wangluyan(我不知道!所以我问!)回复于 2003-05-21 14:18:05 得分 0
DS12887内部有电池,就算是掉电也能保存数据,因而谈不上如何启动电池??
一般片内电池用的比较久,但我们并不排除片内电池用完!!
最好的办法换一片芯片试试!!Top
11 楼wangluyan(我不知道!所以我问!)回复于 2003-05-21 14:25:27 得分 0
我想你也看过:
当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。Top
12 楼roseyyj(杨凡)回复于 2003-05-21 14:45:56 得分 0
对呀,我也试图往那个RAM里面写过数据啦。能读能写,但我读出来的VRT位却是0
正常情况下,VRT位读出来的数据应该是1呀,,,,,,
有QQ没?Top
13 楼wangluyan(我不知道!所以我问!)回复于 2003-05-21 15:01:17 得分 0
54165018Top



