导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]

* 28913: [求助]at24C64和at24c256的差别

   123456 
123456发表的帖子 

 [求助]
程序如下:不知那里得改啊,~~~~~~~~~~~~~
void Start(void) 
{
 EE_SDA=1;
  delay(10);
 EE_SCL=1;
 delay(10);
    EE_SDA=0;
    delay(10);
    EE_SCL=0;
    delay(10);

}

/***************************************************************************/
void Stop(void) 
{
 EE_SCL=0;
 delay(10);
 EE_SDA=0;
 delay(10);
 EE_SCL=1;
 delay(10);
 EE_SDA=1;
    delay(10);
}

/***************************************************************************/
void Ack(void) 
{
 EE_SDA=0;
 delay(10);
 EE_SCL=1;
 delay(10);
 EE_SCL=0;
 delay(10);
 EE_SDA=1;
    delay(10);
}

/***************************************************************************/
void NoAck(void) 
{
 EE_SDA=1;
 delay(10);
 EE_SCL=1;
 delay(10);
 EE_SCL=0;
    delay(10);
}

/***************************************************************************/
bit TestAck(void) 
{
 bit ErrorBit;
 EE_SDA=1;

 delay(10);
 EE_SCL=1;
 delay(10);
 ErrorBit=EE_SDA;
 EE_SCL=0;
    delay(10);

 return(ErrorBit);
}

/***************************************************************************/
bit Write8Bit(unsigned char input) 
{
 unsigned char temp;

 for(temp=8;temp!=0;temp--) 
 {
  if((input&0x80)==0x80)
     EE_SDA=1;
  else
      EE_SDA=0;
  delay(10);
  EE_SCL=1;
     delay(10);
  EE_SCL=0;
  input = input  <  <1;
 }
 return 1;
}

/***************************************************************************/
void Write_Byte(unsigned int RomAddress,unsigned char Byte)
{
 unsigned int High_Address,Low_Address;

 High_Address = RomAddress;
 High_Address = High_Address>  >  8;
  Low_Address = RomAddress;
 Low_Address &= 0x00ff;

 Start();

 Write8Bit(WriteDeviceAddress);
 TestAck();
 Write8Bit((unsigned char)High_Address);
 TestAck();
 Write8Bit((unsigned char)Low_Address);
 TestAck();
 Write8Bit(Byte);
 TestAck();

 Stop();
 delay(0x3fff);

}

/***************************************************************************/
unsigned char Read8Bit(void) 
{
 unsigned char temp,rbyte=0;
 delay(10);
 DP9_2 = 0;

 delay(10);
 for(temp=8;temp!=0;temp--) 
 {
  EE_SCL=1;
  rbyte = rbyte  <  <1;
     rbyte=rbyte|((unsigned char)(EE_SDA));
   
  delay(10);
  EE_SCL = 0;
  delay(10);

 }
       
 DP9_2 = 1;

 return(rbyte);

}

/***************************************************************************/
unsigned char Read_Byte(unsigned int RomAddress)
{
 unsigned int High_Address,Low_Address;
 unsigned char Get_Byte;
 
 High_Address = RomAddress;
 High_Address = High_Address>  >  8;
  Low_Address = RomAddress;
 Low_Address &= 0x00ff;

 Start();

 Write8Bit(WriteDeviceAddress);
 TestAck();
   Write8Bit((unsigned char)High_Address);
 TestAck();
 Write8Bit((unsigned char)Low_Address);
 TestAck();

 Start();

 Write8Bit(ReadDeviceAddress);
 TestAck();

 Get_Byte = Read8Bit(); 
   
    NoAck();
 Stop();
    return(Get_Byte);

}


发表时间:2007年9月4日20:09:29

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:[求助]有购投币器原理,有谁知道的请与我联系,64714607
[下一篇帖子]:[求助]at24C64和at24c256的差别想把原有的at24C64的程序改成at24c256能用