如有用過,能否為我提供部分程序?huxhua@163.com 我在此先謝過了各位。
---------------------------------------------------------------
好象有個pcf8583,帶ram的,蠻不錯的,試試看。
---------------------------------------------------------------
用1302做過系統,感覺體積小、接口線少,缺點是沒有中斷輸出,還需外接電池。
---------------------------------------------------------------
---------------------------------------------------------------
---------------------------------------------------------------
大家好多都在用DS12887,你也試試吧。
---------------------------------------------------------------
;========================時鐘讀寫程序=============================
; ----------D1302充電程序---------------------------
CD: LCALL ST02 ; D1302充電程序
MOV A,#90H
LCALL WR02
MOV A,#0A5H
LCALL WR02 RET ;---------將秒分時日月年分別從F9~FF這7個寄存器寫入時鐘芯片中程序-------
WRCLOCK: MOV R0, #0F9H LCALL ST02 ; 起動D1302
MOV A, #80H ;寫入秒 ;寫入日期
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
LCALL ST02 ;寫入分
INC R0
MOV A,#82H
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
LCALL ST02 ;寫入小時
INC R0
MOV A,#84H
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
LCALL ST02 ;寫入日
INC R0 MOV A,#86H
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
LCALL ST02 ;寫入月
INC R0
MOV A,#88H
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
LCALL ST02 ;寫入年
INC R0
INC R0
MOV A,#8CH
LCALL WR02
MOV A, @R0
LCALL WR02
LCALL STOP02
RET ;----------------;將秒分時日月周年分別讀入到F9~FF這7個寄存器中--------------
CSCLOCK1:LCALL ST02 ;起動D1302
MOV A, #0BFH ;BFH為突發寄存器,可一次性讀
LCALL WR02 ;寫D1302
MOV R0, #0F9H ;秒,分,時地址
MOV R6, #07H
LP: LCALL RD02 ;調讀D1302
MOV @R0, A
INC R0
DJNZ R6, LP
LCALL STOP02 ;停止D1302
RET ; ------------起動D1302子程序--------------
ST02: CLR P2.5
CLR CL
NOP
NOP
SETB P2.5
RET ; ------------寫D1302子程序----------------
WR02: MOV R7, #08H
LP02: CLR CL
RRC A
MOV SD, C
NOP
NOP
SETB CL
NOP
NOP
DJNZ R7, LP02 RET ; --------- 讀D1302子程序-----------------
RD02: MOV R7, #08H
SETB SD
LP021: CLR CL
NOP
MOV C, SD
RRC A
SETB CL
NOP
NOP
DJNZ R7, LP021
RET ; --------- 結束D1302子程序-----------------
STOP02: CLR P2.5 ;停止D1302 NOP NOP RET
---------------------------------------------------------------
---------------------------------------------------------------
---------------------------------------------------------------
#include #define uchar unsigned char #define uint unsigned int sbit led=P0^0; sbit rst=P1^2; sbit clk=P1^0; sbit io=P1^1; uchar temp; void delay1(uchar x) { /*空*/ uchar i; for(i=0;i>1; clk=1;delay1(2);clk=0;delay1(2);} } uchar read(){ /*讀操作*/ uchar tmp; register uchar i;bit x; tmp=0; for(i=0;i<8;i++){x=io;clk=1;delay1(2);clk=0;delay1(2); if(x==1)tmp+=1<>1; clk=1;delay1(2);clk=0;delay1(2);} rst=0; }
---------------------------------------------------------------
我正在改用別的的時鐘芯片,DS1302常亂碼,如你想用它,我可以把程序傳給你