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

📄 ht1380.c

📁 用51单片机实现的DS1302的驱动程序
💻 C
字号:
//HT1380
sbit scl_ht=0x90;
sbit sda_ht=0x91;
sbit rst_ht=0x92;
sfr p0=0x80;
sfr p2=0xa0;
unsigned char year,month,day,hour,minute,second;

//-------------------d_time------------------
void d_time()
{
 unsigned ii;
   for(ii=0;ii<=4;ii++);
}
//------------- sent_char to ht1380----------
void sent_char(unsigned char sentchar)
{
 unsigned char ii;  

 for(ii=0;ii<8;ii++)
    {
      scl_ht=0;
      if ((sentchar & 1)!=0) sda_ht=1;
      else sda_ht=0;
      scl_ht=1;
      sentchar=sentchar>>1;
    }
}
//------------- get_char from ht1380---------
unsigned char get_char()
{
 unsigned char getchar,ii,temp;
    getchar=0;temp=1;
    for(ii=0;ii<8;ii++)
      {
       scl_ht=0;
       sda_ht=1;
       if(sda_ht==1) getchar=getchar |temp;
       scl_ht=1;
       temp=temp<<1;
      }
    return(getchar);
}

//--------------set_trick-------------------
/*void set_trick()
 {
    rst_ht=1;
    d_time();
    sent_char(0x90);      //10010000b
    sent_char(0xa5);      //10100101b
    scl_ht=0;
    d_time();
    rst_ht=0;
    d_time();
 }*/
//-------------set_wp_off------------------
void set_wp_off()
{
    rst_ht=1;
    d_time();
    sent_char(0x8e);     //10001110b
    sent_char(0);        //00000000b
    scl_ht=0;
    d_time();
    rst_ht=0;
    d_time();
}
//-----------set_wp_on--------------------
void set_wp_on()
{
  rst_ht=1;
  d_time();
  sent_char(0x8e);       //10001110b
  sent_char(0x80);       //10000000b
  scl_ht=0;
  d_time();
  rst_ht=0;
  d_time();
}
//----------read_time --------------------
void read_time()
 {
  unsigned char temp;
    rst_ht=1;
    d_time();
    sent_char(0xbf);      //10111111b
    second=get_char();
    minute=get_char();
    hour=  get_char();
    day=   get_char();
    month= get_char();
    temp=  get_char();   /* week day */
    year=  get_char();
    temp=  get_char();            
    scl_ht=0;
    d_time();
    rst_ht=0;
    d_time();
 }
//--------------set time-----------------
void set_time()
 {
   set_wp_off();
   rst_ht=1;
   d_time();
   second=second & 0x7f;
   sent_char(0xbe);      //10111110b
   sent_char(second);
   sent_char(minute);
   sent_char(hour);
   sent_char(day);
   sent_char(month);
   sent_char(1);         /* week  day */
   sent_char(year);
   sent_char(0);
   scl_ht=0;
   d_time();
   rst_ht=0;
   d_time();
   set_wp_on();
 }
//-------------read second----------------
/*unsigned char read_sec()
 {
  unsigned char sec;
    rst_ht=1;
    d_time();
    sent_char(0x81);     //10000001b
    sec=get_char();
    scl_ht=0;
    d_time();
    rst_ht=0;
    d_time();
    return(sec);
 }
//----------write_second-----------------
void write_second(unsigned char sec)
{
    set_wp_off();
    rst_ht=1;
    d_time();
    sent_char(0x80);     //10000000b
    sent_char(sec);
    scl_ht=0;
    d_time();
    rst_ht=0;
    d_time();
    set_wp_on();
}                 */


main()
{
 year=05;month=03;day=0x27;hour=0x14;minute=0;second=0;
 rst_ht=0;scl_ht=0;
 set_time();
  while(1)
     {
      read_time();
      //second=read_sec();
      p2=1;
      p0=second;//%0x10;
     }
}

⌨️ 快捷键说明

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