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

📄 ds1302_402.c

📁 DS1302的程序 简单但是非常实用易懂的程序
💻 C
字号:

/*-----------------头文件------------*/
#include <reg52.h>

/*----------------宏定义------------*/
#define uchar unsigned char
#define uint unsigned int

sbit DS1302_SCLK=P1^5;
sbit DS1302_IO=P1^6;
sbit DS1302_RST=P1^7;

sbit beep=P3^5;

uchar data_buffer[20];

/*---------------延时程序--------------*/
void delayus(void)
{
 uint i;
 for(i=0;i<250;i++){;}
}
/*-----------------向DS1302写数据或地址------------*/

void write(uchar aa)
{
   uint i;
   for(i=8;i>0;i--)
    {
      if((aa&0x01)==0x01)
       DS1302_IO=1;
      else
       DS1302_IO=0;
      DS1302_SCLK=1;
      DS1302_SCLK=0;
      aa>>=1;
    }
}
/*-----------------从DS1302读数据或地址------------*/
read(void)
{
  uint i;
  uchar date=0;
  for(i=8;i>0;i--)
   {
      date>>=1;
    if(DS1302_IO==1)
     date|=0x80;
    else
     date&=0x7f;
    DS1302_SCLK=1;
    DS1302_SCLK=0;

    }
  return date;
}
/*-----------------写数据和地址------------*/
void write_1302(uchar address,uchar date)
{
   DS1302_RST=0;
   delayus();
   DS1302_SCLK=0;
   DS1302_RST=1;
   write(address);
   write(date);
   DS1302_RST=0;
}
/*-----------------读数据和地址------------*/
read_1302(uchar address)
{
   DS1302_RST=0;
   delayus();
   DS1302_SCLK=0;
   DS1302_RST=1;
   write(address);
   data_buffer[0]=read();
   DS1302_RST=0;
}
/*-----------------写液晶初值------------*/
void write_init()
{
 write_1302(0x8e,0);
 write_1302(0x8c,0x09);
 write_1302(0x88,0x04);
 write_1302(0x86,0x02);
 write_1302(0x84,0x11);
 write_1302(0x82,0x58);
 write_1302(0x80,0x20);
 write_1302(0x8e,0x80);
}
/*-----------------主函数------------*/
main()
{
 P1=0xff;
 P3=0xff;
 write_init();
 while(1)
   {
     read_1302(0x85);
     data_buffer[1]=data_buffer[0];
     read_1302(0x83);
     data_buffer[2]=data_buffer[0];
     read_1302(0x81);
     data_buffer[3]=data_buffer[0];
     if(data_buffer[1]==0x12)
      {
        beep=0;
      }
    }
}

⌨️ 快捷键说明

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