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

📄 ds1302.c

📁 DS1302 18B20程序第一版
💻 C
字号:
#include "DS1302.h"

volatile char datetime[]={0,0,12,26,4,4,12};	//SEC,MIN,HR,DATE,MONTH,DAY,YEAR   12年4月26日星期四12:00:00 

void write_byte(dat)
{
  unsigned char i;
  ACC=dat;
  for(i=8;i>0;i--)
  {
    SCLK=0;
    IO=ACC0;
	ACC=ACC>>1;	
	SCLK=1;	
  }
}

unsigned char read_byte()
{
  unsigned char i;
  for(i=8;i>0;i--)
  {
    ACC=ACC>>1;
    SCLK=0;
	ACC7=IO;
    SCLK=1;  		
  }
  return(ACC);
}


void write_DS1302(address,dat)
{
  RST=0;
  SCLK=0;
  RST=1;
  write_byte(address);
  write_byte(dat);
  RST=0;
  SCLK=1;
}


unsigned char read_DS1302(address)
{
  unsigned char temp;
  RST=0;					 
  SCLK=0;
  RST=1;
  write_byte(address);
  temp=read_byte();
  RST=0;
  SCLK=1;
  temp=temp/16*10+temp%16;
  return(temp);
}

/*void init_DS1302()	//全部初始化
{
  unsigned char i,j=0x80;
  for(i=0;i<7;i++)
  {
    datetime[i]=datetime[i]/10*16+datetime[i]%10;
  }
  write_DS1302(0x8e,0x00);
  for(i=0;i<7;i++)
  {
    write_DS1302(j,datetime[i]);
    j+=2;
  }
  write_DS1302(0x8e,0x80);
} */ 


void init_DS1302()			//部分初始化
{
  unsigned char i,j=0x80;
  for(i=0;i<7;i++)
  {
    datetime[i]=datetime[i]/10*16+datetime[i]%10;
  }
  write_DS1302(0x8e,0x00);		  //写保护关闭
  write_DS1302(0x80,datetime[0]); //秒清零,主要是bit7=0,使ds1302时钟启动
  write_DS1302(0x8c,datetime[7]); //年设置,为12年
  write_DS1302(0x8e,0x80);        //写保护
}


void read_RTC()
{
  unsigned char i,j=0x81;
  for(i=0;i<7;i++)
  {
    datetime[i]=read_DS1302(j);
	j+=2;
  }
}

⌨️ 快捷键说明

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