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

📄 ds1302.txt

📁 时钟芯片
💻 TXT
字号:
#include<intrins.h>   //头文件,包含_nop_函数
sbit ds_clk=P2^0;
sbit ds_dat=P2^1;
sbit ds_ret=P2^2;
#define ds_sec 0x80
#define ds_min 0x82
#define ds_hour 0x84
#define ds_date 0x86
#define ds_month 0x88
#define ds_day 0x8a
#define ds_year 0x8c
#define ds_baohu 0x8e
#define ds_chd  0x90
#define ds_tufa 0xbe
uchar code year_data;
uchar code month_data;
uchar code data_data;
uchar code day_data;
uchar code hour_data;
uchar code min_data;
uchar code sec_data;

void start_ds()
{
 ds_dat=1;
 ds_rst=0;     //复位引脚低电平,终止数据传输
 ds_clk=0;
 ds_rst=1;    //复位引脚高电平,开始
 _nop_();
 _nop_();
}
void ds_write(uchar reg,uchar data)
{
 uchar i;
 start_ds();
 for(i=0;i<8;i++)
   {
     if(reg&0x01)
        ds_dat=1;
     else
        ds_dat=0;
     ds_clk=1;
     _nop_();
     _nop_();
     ds_clk=0;
     reg=reg>>1;
   }
  for(i=0;i<8;i++)
   {
     if(data&0x01)
        ds_dat=1;
     else
        ds_dat=0;
     ds_clk=1;
     _nop_();
     _nop_();
     ds_clk=0;
     data=data>>1;
   }
   ds_rst=0;   //结束数据的传送  
   _nop_();
}
uchar ds_read(uchar reg)
{
 uchar i,uchar data;
 reg=reg+1;
 start_ds();
 for(i=0;i<8;i++)
   {
     if(reg&0x01)
        ds_dat=1;
     else
        ds_dat=0;
     ds_clk=1;
     _nop_();
     _nop_();
     ds_clk=0;
     reg=reg>>1;
   }
 for(i=0;i<8;i++)
  {
   _nop_();
   _nop_();
   if(ds_dat==1) data=data|0x01;
   else  data=data&0x7f;
   ds_clk=1;
   _nop_();
   ds_clk=0;
  }
 ds_ret=0;
 _nop_();
 _nop_();
 return(data);
}
void ds_init()
{
 ds_write(ds_baohu,0x00);   //关闭写保护
 ds_write(ds_sec,0x80);    //时钟暂停
 ds_write(ds_min,0x32);
 ds_write(ds_hour,0x11);
 ds_write(ds_day,0x05);
 ds_write(ds_data,0x26);
 ds_write(ds_month,0x04);
 ds_write(ds_year,0x07);
 ds_write(ds_chd,0xa8);
 ds_write(ds_sec,0x00);    //时钟开始计时
}
void ds_read()
{
 uchar data;
 data=ds_read(ds_year);
 year_data=data;
 data=ds_read(ds_month);
 month_data=data;
 data=ds_read(ds_data);
 data_data=data;
 data=ds_read(ds_day);
 day_data=data;
 data=ds_read(ds_hour);
 hour_data=data;
 data=ds_read(ds_min);
 month_min=data;
 data=ds_read(ds_sec);
 sec_data=data;
}

 












   
 

⌨️ 快捷键说明

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