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

📄 1302.h

📁 单片外围电路中常用的小无件
💻 H
字号:
 #define uchar unsigned char

 sbit  clk=p3^4;
 sbit   io=p3^3;
 sbit   ret=p3^5;
   

sbit ACC_0=ACC^0;
sbit ACC_1=ACC^1;
sbit ACC_2=ACC^2;
sbit ACC_3=ACC^3;
sbit ACC_4=ACC^4;
sbit ACC_5=ACC^5;
sbit ACC_6=ACC^6;
sbit ACC_7=ACC^7;


void Read(void)	;
void Write();
uchar readram_b(uchar address);   //从RAM中读出一	  字
uchar readrtc_b(uchar address);
uchar writeram_b(uchar address,uchar number); //写RAM
uchar writertc_b (uchar address,uchar number);  //写1302
void readram(uchar data*buffer,uchar size);
void  readrtc(uchar data*buffer,uchar size);  //读多个字节
void  writeram 	(uchar data*buffer,uchar size); 
void  writertc	(uchar data*buffer,uchar size);  //写多个字节 
uchar readsec();
uchar readmin();
uchar readhr();
uchar readday();
uchar readweek();
uchar readmonth();
uchar readyear();
void writesec(uchar number);
void writemin(uchar mumber);
void writehr(uchar mumber);
void writeday(uchar mumber);
void writeweek(uchar mumber);
void writemonth(uchar mumber);
void writeyear(uchar mumber);
void enablewp()	 ;
void disadlewp();
   

void  write()  //写1302	 操作 
{
 ACC=address;
 ACC<<=1;
 ACC|=0x80;
 dat=ACC_0;
 clk=1;
 clk=0;
 
 dat=ACC_1	;
 clk=1;clk=0;
 dat=ACC_2	;
 clk=1;clk=0;
 dat=ACC_3	;
 clk=1;clk=0;
 dat=ACC_4	;
 clk=1;clk=0;
 dat=ACC_5	;
 clk=1;clk=0;
 dat=ACC_6	;
 clk=1;clk=0;
 dat=ACC_7	;
 clk=1;clk=0;
}
  
  void read()		 //读1302
  {
  ACC_0=dat;
  clk=1;			//上升沿发送  
  clk=0;			//清零  
  ACC_1=dat;
  clk=1;clk=0;
  ACC_2=dat;
  clk=1;clk=0;
  ACC_3=dat;
  clk=1;clk=0;
  ACC_4=dat;
  clk=1;clk=0;
  ACC_5=dat;
  clk=1;clk=0;
  ACC_6=dat;
  clk=1;clk=0;
  ACC_7=dat;
  clk=1;clk=0;
  }
  uchar readram_b(uchar address) //读ram
  {
  rst=0;
  clk=0;
  rst=1;
  ACC=address;
  write();
  dat=1;
  read();
  return ACC;
  }

  uchar readrtc_b(uchar address)//读1302
  {
    rst=0;
  clk=0;
  rst=1;
  ACC=address;
  write();
  dat=1;
  read();
  return ACC;
	
	}
 uchar writeram_b(uchar address,uchar number)//写RAM一个字节
 {
  clk=0;
rst=0;
rst=1;
ACC=address;
write();
ACC=number;
write();
rst=0;
clk=1;
  }

uchar writertc_b(uchar address,uchar number)//写入1302
 {
  clk=0;
rst=0;
rst=1;
ACC=address;
write();
ACC=number;
write();
rst=0;
clk=1;
  }
void readram(uchar data *buffer,uchar size)//从RAM 中读多个字节
{
register uchar a,b;
clk=0;
rst=0;
rst=1;
ACC=0xff;    //命令字为FFH
write();
dat=1;
for (a=0;a<size;a++)
{
ACC_0=dat;
clk=1;clk=0;ACC_1=dat;
clk=1;clk=0;ACC_2=dat;
clk=1;clk=0;ACC_3=dat;
clk=1;clk=0;ACC_4=dat;
clk=1;clk=0;ACC_5=dat;
clk=1;clk=0;ACC_6=dat;
clk=1;clk=0;ACC_7=dat;
b=ACC;
*(buffer+a)=b;
clk=1;
clk=0;
}
rst=0;
clk=1;
}

void readrtc(uchar data *buffer,uchar size)//从1302中读多个字节

{
register uchar a,b;
clk=0;
rst=0;
rst=1;
ACC=0xbf;    //命令字为BFH
write();
dat=1;
for (a=0;a<size;a++)
{
ACC_0=dat;
clk=1;clk=0;ACC_1=dat;
clk=1;clk=0;ACC_2=dat;
clk=1;clk=0;ACC_3=dat;
clk=1;clk=0;ACC_4=dat;
clk=1;clk=0;ACC_5=dat;
clk=1;clk=0;ACC_6=dat;
clk=1;clk=0;ACC_7=dat;
b=ACC;
*(buffer+a)=b;
clk=1;
clk=0;
}
rst=0;
clk=1;
}

void writeram(uchar data *buffer,uchar size)//向RAM中写多个字节

{
register uchar a,b;
clk=0;
rst=0;
rst=1;
ACC=0xfe;    //命令字为FEH
write();
for (a=0;a<size;a++)
{
ACC=*(buffer+a);
write()    //写数据
}
rst=0;
rst=1;

}
void writertc(uchar data *buffer,uchar size)//向1302中写多个字节
{
register uchar a,b;
clk=0;
rst=0;
rst=1;
ACC=0xbe;    //命令字为BEH
write();
for (a=0;a<size;a++)
{
ACC=*(buffer+a);
write()    //写数据
}
rst=0;
rst=1;
}

uchar readsec()//从1302中读秒字节
{
return readrtc_b(0x81);
}


uchar readmin()//从1302中读分字节
{
return readrtc_b(0x83);
}

uchar readhr()//从1302中读小时字节
{
return readrtc_b(0x85);
}


uchar readday()//从1302中读日字节
{
return readrtc_b(0x87);
}


uchar readmonth()//从1302中读月字节
{
return readrtc_b(0x89);
}


uchar readweek()//从1302中读星期字节
{
return readrtc_b(0x8b);
}


uchar readyear()//从1302中读年字节
{
return readrtc_b(0x8d);
}

void writesec(uchar number) //向1302中写入秒字节
{writertc_b(0x80,number);}


void writesec(uchar number) //向1302中写入分字节
{writertc_b(0x82,number);}


void writesec(uchar number) //向1302中写入时字节
{writertc_b(0x84,number);}


void writesec(uchar number) //向1302中写入日字节
{writertc_b(0x86,number);}


void writesec(uchar number) //向1302中写入月字节
{writertc_b(0x88,number);}


void writesec(uchar number) //向1302中写入星期字节
{writertc_b(0x8a,number);}


void writesec(uchar number) //向1302中写入年字节
{writertc_b(0x8c,number);}

void disablewp()//禁止写保护
{writertc_b(0x8e,0);}


void enablewp()//允许写保护
{writertc_b(0x8e,0x80);}

⌨️ 快捷键说明

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