• 大小: 9KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-19
  • 语言: 其他
  • 标签: 单片机  24c04  24cxx  

资源简介

本代码是一个完整的24c02,24c04,24cxx系列的读写,除了修改单片机的型号外,不需要做任何改动便可直接使用,有详细的中文注释,方便理解

资源截图

代码片段和文件信息

 /***********************************************************/
 /** 模块功能:24cxx读写  
 /** 说    明:24c02 256x8  (2K bits)
 /**           24c04 512x8  (4K bits)
 /**           24c08 1024x8 (8K bits)
 /**           24c16 2048x8 (16K bits)
 /***********************************************************/
 #include 
 #include 

 /*************** 宏定义*************************************/
 #define uint unsigned int
 #define uchar unsigned char
 #define AddWr 0xa0                        //器件写地址
 #define AddRd 0xa1                       //器件读地址
 #define Num24C02 8                      //24cxx 每一页的字节数
 #define Num24C04 16 
 #define Num24C08 16 
 #define Num24C16 16 
 #define NumByte Num24C04       //24cxx 每一页的字节数

 /*************** 端口定义***********************************/
 sbit Sda=P1^3;                     //定义数据总线
 sbit Scl=P1^4;                //定义时钟总线
 sbit led0=P1^6;   //定义指示灯
 sbit led1=P1^5;
 sbit led2=P3^7;

/*************** 全局变量定义*******************************/
 uint xdata len1;                 //起始地址到本页末能写的字节数
 uint xdata len2;                //中间能够完整写入的页数
 uint xdata len3;               //最后页写入的字节数
 uchar xdata PageBig;          //256个Byte为1个大页24c02:PageBig=0;24c04:PageBig=0~1;24c08:PageBig=0~3;
 uchar xdata Number1[256];
 uchar xdata Number2[300];
 uchar xdata Number3[256];

 /***************************************************************/
 /** 函数:uDelay(uint us)
 /** 功能:延时 100us
 /***************************************************************/
 void uDelay(uint us)
 {
  uint xdata i;
  while(us--)
    for(i=0;i<53;i++);      
  }

 /***************************************************************/
 /** 函数:delay_IIC()
 /** 功能:延时 1us
 /***************************************************************/
void delay_IIC()
{
 _nop_();_nop_();_nop_();_nop_();
 _nop_();_nop_();_nop_();_nop_();
}

 /***************************************************************/
 /** 函数:Start(void)
 /** 功能:IIC总线启动
 /** 说明:Sda由高跳低,且期间Sck保持为高电平
 /***************************************************************/
void Start(void)
  {
   Sda=1;
   Scl=1;
   delay_IIC();
   Sda=0;
   delay_IIC();
  }
 /***************************************************************/
 /** 函数:Stop(void)
 /** 功能:IIC总线停止
 /** 说明:Sda由低跳高,且期间Sck保持为高电平
 /***************************************************************/
void Stop(void)
  {
   Sda=0;
   Scl=1;
   delay_IIC();
   Sda=1;
   delay_IIC();
   }
 /***************************************************************/
 /** 函数:Ack(void)
 /** 功能:应答IIC总线
 /** 说明:Sda拉低表示应答,且在应答脉冲期间,保持稳定低电平
 /***************************************************************/
void Ack(void)
   {
    Sda=0;
delay_IIC();
Scl=1;
delay_IIC();
Scl=0;
delay_IIC();
}
 /***************************************************************/
 /** 函数:NoAck(void)
 /** 功能:非应答IIC总线
 /** 说明:Sda不拉低表示非应答,且在应答脉冲期间,保持稳定低电平
 /****************************************

评论

共有 条评论