• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-24
  • 语言: 其他
  • 标签: at24c512  驱动  

资源简介

自己编写的at24c512驱动程序 已调试通过

资源截图

代码片段和文件信息

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

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

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

     文件       7976  2014-03-14 16:34  eeprom\eeprom.c

     文件       1629  2014-03-13 15:43  eeprom\eeprom.h

     目录          0  2014-04-09 11:52  eeprom

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

                 9605                    3


评论

共有 条评论