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

📄 ds130.c

📁 实时时钟芯片DS1302在ATMEGA128上的C语言源代码
💻 C
字号:
#include <iom128.h>
#include <comp_a90.h>
#define  ds1302_RST    0x04
#define  ds1302_IO     0x02
#define  ds1302_SCLK   0x01
//写一个字节的数据到1302
void write_cmd(unsigned char cmd)
{
   unsigned char i,j;
   DDRE|=ds1302_IO;
   for(i=0;i<8;i++)
     {
       PORTE&=~ds1302_SCLK;
       j=cmd&1;
       if(j)
         PORTE|=ds1302_IO;
       else
         PORTE&=~ds1302_IO;
       PORTE|=ds1302_SCLK;
       cmd>>=1;
      }

}
//从1302中读一个字节的数据
unsigned char read_cmd(void)
 {
   unsigned char i,jj,dd;
   DDRE&=~ds1302_IO;
   PORTE|=ds1302_IO;
   for(i=0;i<8;i++)
       {
        dd>>=1;
        PORTE&=~ds1302_SCLK;
        PORTE&=~ds1302_SCLK;
        jj=PINE;
        jj&=ds1302_IO;
        PORTE|=ds1302_SCLK;
        PORTE|=ds1302_SCLK;
        if(jj==ds1302_IO)
            dd|=0x80;
        else
            dd&=~0x80;
        }

   DDRE|=ds1302_IO;//shu ru
   return dd;
}

//写数据
void write_1302(unsigned char cmd,unsigned char dd)
{
 DDRE|=ds1302_SCLK;
 DDRE|=(ds1302_RST|ds1302_IO);

 PORTE&=~ds1302_SCLK; //ds1302_SCLK=0;
 PORTE|=ds1302_RST;
 write_cmd(cmd);
 write_cmd(dd);
 PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
 PORTE&=~ds1302_RST;
 }
//读数据
unsigned char read_1302(unsigned char cmd)
{
 unsigned char dd;
 PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
 PORTE|=ds1302_RST;
 write_cmd(cmd);
 dd=read_cmd();
 PORTE&=~ds1302_SCLK;//ds1302_SCLK=0;
 PORTE&=~ds1302_RST;
 return dd;
 }
void readtime(unsigned char buf[])
{
    unsigned char year;
    buf[0] = '2';
    buf[1] = '0';

    year = read_1302(0x8d);
    buf[2] = year/16 + '0';
    buf[3] = year%16 + '0';
}



⌨️ 快捷键说明

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