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

📄 24c04.c

📁 擦除DS12C887时钟芯片的内部数据存储空间
💻 C
字号:
/*
这个可以测试2404是否已经可以工作了
欢迎我们一块儿交流
xiaoyudz@tom.com

*/
#include<reg51.H>
#include <intrins.h>
#define uchar unsigned char 
#define uint unsigned int 
sbit SCL=P1^6;
sbit SDA=P1^7;
sbit led=P1^0;
sbit key=P1^2;
sbit led2=P1^1;
//定时函数
void DelayMs(unsigned int number) 
{
	unsigned char temp;
	for(;number>=1;number--) 
	{
		for(temp=112;temp>=1;temp--) ;
	}
}
////////////start//////////////
start_iic()
{
	SDA=1;
	SCL=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA=0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SCL=0;	
}
///////////stop ////////////////
stop_iic()
{
	SDA=0;
	SCL=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();	
}	
//////////ack ///////////////
ack_iic()
{
	SDA=0;
	SCL=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA=1;
	SCL=0;
}									
/////////nack/////////////////
nack_iic()
{
	SDA=1;
	SCL=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA=0;
	SCL=0;
}
/////////write_byte///////////////////
write_byte(uchar c)
{
	uchar i;
	for (i=0;i<8;i++)
		{
		 if(c&0x80)SDA=1;
		 else SDA=0;
		 SCL=1;
		 _nop_();
		 _nop_();
		 _nop_();
	 	 _nop_();
		 _nop_();
		 SCL=0;
		 c=c<<1;
		}
	SCL=0;
	DelayMs(10);
}
/////////read_byte  begin///////////////////
uchar read_byte()
{
	uchar i;
	uchar r=0;
	SDA=1;
	for(i=0;i<8;i++)
	  {
		r=r<<1;
		SCL=1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		if(SDA==1)r++;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
	    SCL=0;
	   }
	SCL=0;
	return r;
}

void main(void)
{ uchar j=0;
 while(1)
 {
  if(!key)
  {
	start_iic();
	write_byte(0xa0);////send  order
    ack_iic();
    write_byte(j);/////send  address
	ack_iic();
   	write_byte(j);////send data
	ack_iic();
  	stop_iic();///////////
    DelayMs(10);
	//////////////////////////////
	start_iic();
	write_byte(0xa0);////send  order
	ack_iic();
    write_byte(j);////send  ADDress 
    ack_iic();
	////////////////read  ready
    start_iic();
    write_byte(0xa1);////send  order
	ack_iic();
	P2=read_byte();/////read 
	SCL=0;
    nack_iic();
	stop_iic();
	while(!key);
	j++;
	}}}
	
	

⌨️ 快捷键说明

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