at24cxx.c

来自「51单片机驱动2相步进电机程序。 keil 开发软件。」· C语言 代码 · 共 134 行

C
134
字号
#include  "config.h"

/****************************************************/
/****************************************************/ 
#define 	SCL P4_0  					//24C02时序	  6
#define 	SDA P4_1  					//24C02数据线 5 

/****************************************************/
void delay(unsigned int d)
{
	unsigned int i,j;
	for(i=0;i<d;i++)
   for(j=0;j<1000;j++); 
}
/****************************************************/
void DL(void)
{
   unsigned char i;
   for(i=0;i<3;i++);
}
/****************************************************/           
void STARTI2C(void)
{
	SDA=1;   
	SCL=1;
   	DL();
   	SDA=0;    
	DL();
   	SCL=0;
}
/****************************************************/	           
void stop(void)
{
	SDA=0;   
	SCL=1;
   	DL();
   	SDA=1;    
	DL();
   	SCL=0;
} 
/****************************************************/           
void ack(void)
{
  	SDA=0;   
	SCL=1;
   	DL();
   	SDA=1;    
	SCL=0;
}
/****************************************************/            
void output(unsigned char DD)
{
	unsigned char i;
   	for(i=0;i<8;i++)
   	{
     	SCL=0;
        SCL=0;
        DD=DD<<1;
        SDA=CY;
       	DL();
        SCL=1;
        SCL=1;
    	DL();
       	DL();
	}
  DL();
  SCL=0;  
}
/****************************************************/
unsigned char input(void)
{
 	unsigned char i;
 	unsigned char DD;         
 	for(i=0;i<8;i++)
  		{
    		DD=DD<<1;
       		SCL=0;
        	SCL=0;
       		DL();
        	SCL=1;
       		SCL=1;
        	DL();            
         	DD=DD|SDA;
   		}
	SCL=0;
   	return(DD);
}
/****************************************************/ 
void write(unsigned char aDD,unsigned char DData)
{
 	unsigned char head;  
 	head=0xa0; 
  	DL();
  	STARTI2C();
   	output(head);
 	ack();
  	output(aDD);
   	ack();
  	output(DData);
   	SDA=0;
   	ack();
   	DL();
  	stop();
   	delay(1);
}
/****************************************************/  	         
unsigned char read(unsigned char aDD)                     
{
 	unsigned char rhead;
   	unsigned char whead;
  	unsigned char DD;       
 	whead=0xa0;
   	rhead=0xa1; 
   	DL();
   	STARTI2C();
 	output(whead);
   	ack();
   	output(aDD);
   	ack();

   	STARTI2C();
   	output(rhead);
   	ack();
   	DD=input();
  	ack();
  	DL();
 	stop();
   	return(DD);
} 
/****************************************************/



⌨️ 快捷键说明

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