[求助]
程序如下:不知那里得改啊,~~~~~~~~~~~~~
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