蓝桥杯单片机类DS1302驱动

//自己看时序图写的,一般可以直接放在我的代码里作为引用,后几届的写的比较稚嫩,驱动可能不太符合,但是都大同小异。记得.c和.h分开搞

 

#include
#include
#define u8 unsigned char
#define u16 unsigned int
u8 shijian[]={0x00,0x30,0x08,0x01,0x01,0x01,0x01};
void write(u8 add,u8 dat )
{
 u8 i;
  P13=1;
 _nop_();
 for(i=0;i<8;i++)
 {
   P23=add&0x01;
   _nop_();
  add>>=1;
   _nop_();
  P17=1;
   _nop_();
  P17=0;
   _nop_();
 }
  for(i=0;i<8;i++)
 {
   P23=dat&0x01;
   _nop_();
  dat>>=1;
   _nop_();
  P17=1;
   _nop_();
  P17=0;
   _nop_();
 }
 P13=0;
 _nop_();
}
u8 read(u8 add)
{
 u8 i,dat,dat1;
  P13=1;
 _nop_();
 for(i=0;i<8;i++)
 {
   P23=add&0x01;
   _nop_();
  add>>=1;
   _nop_();
  P17=1;
   _nop_();
  P17=0;
   _nop_();
 }
 
 for(i=0;i<8;i++)
 {
    dat1=P23;
  _nop_();
  dat=dat>>1|dat1<<7;
  _nop_();
  P17=1;
  _nop_();
  P17=0;
  _nop_();
 }
 
 P23=0;
 _nop_();
 P13=0;
 _nop_();
  return dat;
}
void wr()
 
{
  u8 i,add;
 add=0x80;
 write(0x8e,0x00);
 for(i=0;i<7;i++)
 {
    write(add,shijian[i]);
  add+=2;
 }
 
 write(0x8e,0x80);

}

void re()
{
  u8 i,add;
 add=0x81;
 for(i=0;i<7;i++)
 {
    shijian[i]=read(add);
  add+=2;
 }
}
 
 
 
 
 
 
 
// .h
#ifndef _1302_h
#define _1302_h
#include
#include
#define u8 unsigned char
#define u16 unsigned int
u8 shijian[];
void wr();
void re();
#endif

你可能感兴趣的:(蓝桥杯单片机类DS1302驱动)