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

📄 eeprom1.c

📁 lpc2148 programs from NXP
💻 C
字号:
#include <LPC214X.H>
#include "eeprom1.h"
//#include "delay.h"


void i2cInit(void)
{
  PINSEL0  |= 0x50; 						//Switch GPIO to I2C pins
  I2C0SCLH    = 50;						//Set bit rate 14.7456Mhz/VPBDIV+SCLH+SCLL = 14.7456/4+8+8 = 57.6Khz
  I2C0SCLL 	= 50;
}
void putCharE(unsigned char Data,unsigned short Addr)			// 24128,256,512.....
{
unsigned char AddrH,AddrL;
  AddrH=(Addr&0xFF00)>>8;
  AddrL=(Addr&0x00FF);  

  I2C0CONCLR	= 0x000000FF;					//Clear all I2C settings
  I2C0CONSET 	= (1<<I2EN); 					//Enable the I2C interface
  I2C0CONSET 	= (1<<STA); 					//Start condition    
			   
  while(I2C0STAT  != 0x08);  

  I2C0CONCLR = (1<<STA);
  I2C0CONCLR 	= (1<<SI);  
      
  I2C0ADR = SLA_W; 
  I2C0DAT = SLA_W;

  I2C0CONCLR 	= (1<<SI); 
    
  while(I2C0STAT  != 0x18);     

  I2C0DAT = AddrH;		  

  I2C0CONCLR 	= (1<<SI);  
  
  while(I2C0STAT  != 0x28);       

  I2C0DAT = AddrL;	     

  I2C0CONCLR 	= (1<<SI);  
  
  while(I2C0STAT  != 0x28);   
 
  I2C0DAT = Data;  

  I2C0CONCLR 	= (1<<SI);	  
  
  while(I2C0STAT  != 0x28);     

  I2C0CONCLR = (1<<SI) ;
  I2C0CONSET = (1<<STO);  	  

  i2c_delay(); 		 
}


unsigned char getCharE(unsigned short Addr)
{
  unsigned char RxData = 0,AddrH,AddrL;
  
  AddrH=(Addr&0xFF00)>>8;
  AddrL=(Addr&0x00FF);

  I2C0CONCLR 	= 0x000000FF;					//Clear all I2C settings
  I2C0CONSET 	= (1<< I2EN); 					//Enable the I2C interface
  I2C0CONSET 	= (1<< STA); 					//Start condition
  
			   
  while(I2C0STAT  != 0x08);    

  I2C0CONCLR = (1<<STA);
  I2C0CONCLR 	= (1<<SI);  
    
  I2C0ADR = SLA_W;   
  I2C0DAT = SLA_W;

  I2C0CONCLR 	= (1<<SI); 
  
  while(I2C0STAT  != 0x18);     
 
  I2C0DAT = AddrH;		  

  I2C0CONCLR 	= (1<<SI);  

  while(I2C0STAT  != 0x28);       

  I2C0DAT = AddrL;	     

  I2C0CONCLR 	= (1<<SI);  

  while(I2C0STAT  != 0x28);    

  I2C0CONSET = (1<<STA) | (1<<AA); 					//Start condition   
  I2C0CONCLR = (1<<SI);   
    
  while(I2C0STAT  != 0x10);   
 
  I2C0ADR = SLA_R;
  I2C0DAT = SLA_R;

  I2C0CONCLR = (1<<SI);
  I2C0CONCLR 	= (1<<STA);    

  while(I2C0STAT  != 0x40);   
     
  I2C0CONCLR 	= (1<<SI);  

  while(I2C0STAT  != 0x50);
 
  RxData = I2C0DAT;        
 
  I2C0CONCLR 	= (1<<SI);     
  
  i2c_delay();

  I2C0CONCLR = (1<<SI);  	 
  I2C0CONSET = (1<<STO);  	 

  return RxData;
}	

 
void putStrE(unsigned char *str,unsigned short Addr)
{
 unsigned char AddrH,AddrL;
  AddrH=(Addr&0xFF00)>>8;
  AddrL=(Addr&0x00FF);  

  I2C0CONCLR	= 0x000000FF;					//Clear all I2C settings
  I2C0CONSET 	= (1<<I2EN); 					//Enable the I2C interface
  I2C0CONSET 	= (1<<STA); 					//Start condition    
			   
  while(I2C0STAT  != 0x08);  

  I2C0CONCLR = (1<<STA);
  I2C0CONCLR 	= (1<<SI);  
      
  I2C0ADR = SLA_W; 
  I2C0DAT = SLA_W;

  I2C0CONCLR 	= (1<<SI); 
    
  while(I2C0STAT  != 0x18);     

  I2C0DAT = AddrH;		  

  I2C0CONCLR 	= (1<<SI);  
  
  while(I2C0STAT  != 0x28);       

  I2C0DAT = AddrL;	     

  I2C0CONCLR 	= (1<<SI);  
  
  while(I2C0STAT  != 0x28);   
 
  while(*str)
  {
  I2C0DAT = *str++;  

  I2C0CONCLR 	= (1<<SI);	  
  
  while(I2C0STAT  != 0x28);     
  }

  I2C0DAT = NUL;	     

  I2C0CONCLR 	= (1<<SI);  
  
  while(I2C0STAT  != 0x28);

  I2C0CONCLR = (1<<SI) ;
  I2C0CONSET = (1<<STO);  	  

  i2c_delay(); 

}

unsigned char *getStrE(unsigned short Addr)
{
  static unsigned char readAry[15];
  unsigned char i=0; 

do{
  readAry[i]=getCharE(Addr);
   Addr++;
}while(readAry[i++]!='\0');

   readAry[i] = NUL;

  return readAry;
}


void i2c_delay(void)
{
  int i,j;
   for(i=0;i<10;i++)
    for (j=0;j<8255;j++);
  
}

⌨️ 快捷键说明

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