您当前的位置:五五电子网电子知识单片机-工控设备源码-程序读写24LCxx系列的EEPROM的实例C语言程序 正文
读写24LCxx系列的EEPROM的实例C语言程序

读写24LCxx系列的EEPROM的实例C语言程序

点击数:7217 次   录入时间:03-04 11:36:20   整理:http://www.55dianzi.com   源码-程序
 I2C_Done();      // Clear SSPIF flag

        RestartI2C();                // initiate Restart condition
 I2C_Done();

     WriteI2C(ctrl+1);    // Write Control to EEPROM             
 while(SSPCON2bits.ACKSTAT);    // test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

     f=ReadI2C();    // Enable I2C Receiver & wait BF=1 until received data
 I2C_Done();      // Clear SSPIF flag

     NotAckI2C();    // Genarate Non_Acknowledge to EEPROM
 I2C_Done();   
                   
    StopI2C();                  // send STOP condition
 I2C_Done();      // wait until stop condition is over

     return(f);      // Return Data from EEPROM
}

    //***********************************************
//*        Sequential Read from EEPROM               
//*
//*  - ctrl : Control Byte of EEPROM 
//*  - addr : Location of EEPROM   
//*  - length : Read counter
//*  - *dptr : Store EEPROM data to RAM



www.55dianzi.com


//*
//***********************************************
void EE_SEQU_Read(unsigned char CTRl,unsigned char addr,unsigned char length,unsigned char *dptr)
{
 IdleI2C();                // ensure module is idle
  StartI2C();      // Start condition
 I2C_Done();      // Wait Start condition completed

     

     WriteI2C(ctrl);    // Write Control to EEPROM   
    while(SSPCON2bits.ACKSTAT);    // test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

     WriteI2C(addr);    // Write Address to EEPROM       
    while(SSPCON2bits.ACKSTAT);  // test for ACK condition, if received 
 I2C_Done();      // Clear SSPIF flag

        RestartI2C();                // initiate Restart condition
 I2C_Done();

     WriteI2C(ctrl+1);    // Write Control to EEPROM             
 while(SSPCON2bits.ACKSTAT);    // Test for ACK condition, if received
 I2C_Done();      // Clear SSPIF flag

     while (length!=0)
 {
  *dptr=ReadI2C();  // Enable I2C Receiver & Store EEPROM data to Point buffer
  I2C_Done();
  dptr++;
  length--;
   
  if (length==0) NotAckI2C();
  else AckI2C();    // Continue read next data, send a acknowLEDge to EEPROM
 
  I2C_Done();
 }

        StopI2C();                  // send STOP condition
 I2C_Done();      // wait until stop condition is over
}

    //***********************************************
//*  Check I2C action that is completed        *
//***********************************************
void I2C_Done(void)
{
 while (!PIR1bits.SSPIF);  // Completed the action when the SSPIF is Hi.
 PIR1bits.SSPIF=0;      // Clear SSPIF
}

    //************************************************
//* Initial I2C Master Mode with 7 bits Address  *
//* CLOCk Speed : 100KHz @4MHz      *
//************************************************
void Initialize_I2C_Master(void)
{
 OpenI2C(MASTER,SLEW_ON);
 SSPADD= 9;
}

     



上一页  [1] [2] [3] 


本文关键字:程序  C语言  源码-程序单片机-工控设备 - 源码-程序