用下面的程序读写24C02,总是读不出来。不知道什么原因,高手指点一下
#include<reg52.h>
sbit SDA=P1^7;
sbit SCL=P1^6;
sbit WP=P1^5;
void Delay(char delay_cycle)
{
char m=0;
char j=0;
for(j=0;j<delay_cycle;j++)
{m++;m++;m++;m++;}
}
void Start()
{
SDA=1;
Delay(50);
SCL=1;
Delay(51);
SDA=0;
Delay(52);
}
void Stop()
{
SDA=0;
Delay(50);
SCL=1;
Delay(61);
SDA=1;
Delay(52);
}
void ACK()
{
SDA=0;
Delay(60);
SCL=1;
Delay(50);
SCL=0;
}
void Write(char Byte)
{
char m;
char temp;
char Counter=7;
SDA=0;
temp=Byte;
for(m=0;m<=Counter;m++)
{
SCL=0;
if((temp&0x80)==0x80)
SDA=1;
else
SDA=0;
Delay(50);
SCL=1;
Delay(5000);
Byte=Byte<<1;
}
SCL=0;
}
char Read()
{
char i=1;
char temp=0;
char counter=7;
SDA=0;
for(i=0;i<=counter;i++)
{
SCL=0;
Delay(50);
SCL=1;
Delay(50);
if(SDA==1)
temp=temp|0x01;
else
temp=temp&0xFE;
temp=temp<<1;
}
return(temp);
}
char W_ROM(char Byte,char addr)
{
Start();
Write(0xa0);
ACK();
Write(addr);
ACK();
Write(Byte);
Stop();
Delay(20);
}
char R_ROM(char addr)
{
char Byte=0;
Start();
Write(0xa1);
ACK();
Write(addr);
ACK();
Byte=Read();
SCL=0;
Stop();
return(Byte);
}
main()
{
char LED_P[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char Store[10];
char i;
char addr=0x00;
WP=0;
for(i=0;i<=9;i++)
{
W_ROM(LED_P[i],addr);
Store[i]=R_ROM(addr);
addr++;
}
}