如有用过,能否为我提供部分程序?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常乱码,如你想用它,我可以把程序传给你