资源简介

自己写的eeprom驱动函数。包含了字节写,读,页写,多页写,连续读函数。已调试通过 只要更改宏定义即可使用

资源截图

代码片段和文件信息

/*******************************************************************************
** 文件名称:eeprom.c
** 功    能:
** 修改日志:
********************************************************************************/
#include “includes.h“

/*******************************************************************************
** 函数名称:void I2cInit(void)
** 功   能: 将总线拉高以释放总线
** 修改日志:
*******************************************************************************/
void I2cInit(void)
{
  SCL_DIR_OUTPUT;
  SDA_DIR_OUTPUT;
  SCL_OUT_HIGH;
  delay_us(10);
  SDA_OUT_HIGH;
  delay_us(10);
}
/*******************************************************************************
** 函数名称:void I2cStart(void)
** 功   能: SCL在高电平期间,SDA一个下降沿启动信号
** 修改日志:
*******************************************************************************/
void I2cStart(void)
{
    SCL_DIR_OUTPUT;
    SDA_DIR_OUTPUT;
    SDA_OUT_HIGH;
    delay_us(10);
    SCL_OUT_HIGH;   
    delay_us(10);
    SDA_OUT_LOW;
    delay_us(10);
}
/*******************************************************************************
** 函数名称:void I2cStop(void)
** 功   能: SCL在高电平期间,SDA一个上升沿停止信号
** 修改日志:
*******************************************************************************/
void I2cStop(void)
{
    SDA_DIR_OUTPUT;    
    SDA_OUT_LOW;
    delay_us(10);
    SCL_OUT_HIGH; 
    delay_us(10);
    SDA_OUT_HIGH; 
    delay_us(10);
}
/*******************************************************************************
** 函数名称:void I2cAck_Eeprom()
** 功   能: SCL在高电平期间,SDA被从设备拉为低电平表示应答 Eeprom应答
** 修改日志:
*******************************************************************************/
void I2cAck_Eeprom(void)
{
    uchar i =0;
    SDA_DIR_INPUT;
    SCL_OUT_HIGH; 
    delay_us(10);
    while(SDA_READ&&(i<255))  i++;  
    SCL_OUT_LOW;
    delay_us(10);
}
/*******************************************************************************
** 函数名称:void I2cAck_Cpu()
** 功   能: SCL在高电平期间,SDA输出低电平表示应答 CPU应答
** 修改日志:
*******************************************************************************/
void I2cAck_Cpu(void)
{
    SCL_OUT_HIGH;
    delay_us(10);
    SDA_DIR_OUTPUT;
    SDA_OUT_LOW;
    delay_us(10);
    SDA_OUT_HIGH;
    SCL_OUT_LOW;
}
/*******************************************************************************
** 函数名称:void I2cWriteByte(unsigned char wbyte)
** 功   能: 
** 修改日志:
*******************************************************************************/
void I2cWriteByte(unsigned char wbyte)
{
    SDA_DIR_OUTPUT;   
    for(unsigned char i=0; i<8; i++){
        SCL_OUT_LOW;
        delay_us(10);
        if(wbyte & 0x80){
          SDA_OUT_HIGH;
        }
        else{
          SDA_OUT_LOW;
        }
         wbyte <<=1;
         SCL_OUT_HIGH;
         delay_us(10);
     }
    SCL_OUT_LOW;
    delay_us(10);
    SDA_OUT_HIGH;
    delay_us(10);
}
/*******************************************************************************
** 函数名称:unsigned 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7820  2013-12-12 11:21  eeprom.c

     文件       1607  2013-12-12 11:17  eeprom.h

----------- ---------  ---------- -----  ----

                 9427                    2


评论

共有 条评论