基于单片机的课程设计
{
write_ds1302(addr,*p); p++; addr=addr+2; }
write_ds1302(0x8e,0x80); //写保护,不允许写 }
/*******************************************************/ // 读取当前时间
/*******************************************************/
void read_nowtime(uchar addr,uchar *p,uchar n) {
for(;n>0;n--) {
*p=read_ds1302(addr); p++; addr=addr+2; } }
/*******************************************************/ // 初始化DS1302
/*******************************************************/ void init_ds1302() {
reset=0; sclk=0;
write_ds1302(0x80,0x00); write_ds1302(0x90,0xa6); //一个二极管+4K电阻充电
write_ds1302(0x8e,0x80); //写保护控制字,禁止写 }
/**********************************************************/ // Time0中断函数
/**********************************************************/
void Time0(void) interrupt 1 using 0 {
TH0=0x4c; //50ms定时 TL0=0x00; timecount++; if(timecount>9) {
timecount=0; flag=~flag; } }
/**********************************************************/ // 设定值写入DS1302
/**********************************************************/ void Set_W1302(uchar addr) {
uchar temp;
write_ds1302(0x8e,0x00); temp=(init1[0]<<4)+init1[1]; write_ds1302(addr,temp); write_ds1302(0x8e,0x80); }
void Set_W1302sec(uchar addr) {
uchar temp;
write_ds1302(0x8e,0x00);
temp=((init1[0]<<4)&0x7f)+init1[1]; write_ds1302(addr,temp); write_ds1302(0x8e,0x80); }