⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.c

📁 DS1302时钟芯片的单片机C51程序
💻 C
字号:
sbit dsdat=P1^6;
sbit dsclk=P1^7;
sbit dsrst=P3^3;
void nop(void)
 {unsigned char i;
  for(i=0;i<=1;i++);
 }
void send_byte(unsigned char reg,unsigned char dat)
 {unsigned char i;
  dsrst=0;
  nop();
  dsclk=0;
  nop();
  dsrst=1;
  for(i=0;i<8;i++)
   {if((reg>>i)&0x1)
     dsdat=1;
    else
     dsdat=0;
    nop();
    dsclk=1;
    nop();
    dsclk=0;
   }
  nop();
  for(i=0;i<8;i++)
   {if((dat>>i)&0x1)
     dsdat=1;
    else
     dsdat=0;
    nop();
    dsclk=1;
    nop();
    dsclk=0;
   }
  nop();
  dsrst=0;
 }
unsigned char read_byte(unsigned char reg)
 {unsigned char i,dat;
  dsrst=0;
  nop();
  dsclk=0;
  nop();
  dsrst=1;
  for(i=0;i<8;i++)
   {if((reg>>i)&0x1)
     dsdat=1;
    else
     dsdat=0;
    nop();
    dsclk=1;
    nop();
    dsclk=0;
   }
  nop();
  dat=0;
  for(i=0;i<8;i++)
   {dat>>=1;
    if (dsdat==1)
     dat|=0x80;
    nop();
    dsclk=1;
    nop();
    dsclk=0;
   }
  dsrst=0;
  return dat;
 }
void init_ds1302(void)
 {send_byte(0x8e,0x00);           //关闭写保护
  send_byte(0x90,0xa9);           //涓流充电
  send_byte(0x8e,0x80);           //打开写保护
 }
bit check_ds1302(void)
 {send_byte(0x8e,0x80);
  if (read_byte(0x8e)==0x80)
    return 0;
  else
    return 1;
 }
void set_ds1302(unsigned char *buf)
 {send_byte(0x8e,0x00);             //关闭写保护
  send_byte(0x80,0x80);             //时钟暂停
  send_byte(0x80,*(buf++));         //秒
  send_byte(0x82,*(buf++));         //分
  send_byte(0x84,*(buf++));         //时
  send_byte(0x86,*(buf++));         //日
  send_byte(0x88,*(buf++));         //月
  send_byte(0x8c,*(buf));           //年
  send_byte(0x8e,0x80);             //打开写保护
 }
void read_ds1302(unsigned char *buf)
 {//*(buf++)=read_byte(0x81);       //秒
  //*(buf++)=read_byte(0x83);       //分
  //*(buf++)=read_byte(0x85);       //时
  *(buf++)=read_byte(0x87);       //日
  *(buf)=read_byte(0x89);         //月
  //*(buf)=read_byte(0x8d);       //年
 }
void div(byte *s1,byte *s2)
 {s2[4]=s1[0]%16;
  s2[5]=s1[0]/16;
  s2[6]=s1[1]%16;
  s2[7]=s1[1]/16;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -