void Start_2401() { //2401开始信号
SDA_2401 = 1;
SCL_2401 = 1;
SDA_2401 = 0;
SCL_2401 = 0;
}
void Stop_2401() { //2401结束信号
SDA_2401 = 0;
SCL_2401 = 1;
SDA_2401 = 1;
}
bit TestAck() { //检测反馈信号
bit ack;
SCL_2401 = 1;
ack = SDA_2401;
SCL_2401 = 0;
return(ack);
}
Send_2401(uchar a) { //2401单字节发送
uchar i;
for(i=0;i <8;i++) {
SDA_2401 = (bit)(a&0x80);
a < <= 1;
SCL_2401 = 0;
delay(3);
SCL_2401 = 1;
}
}
uchar Receive_2401() { //2401单字节接收
uchar i;
uchar ReceiveByte = 0;
for(i=0;i <8;i++) {
SCL_2401 = 1;
ReceiveByte = (ReceiveByte < <1)|SDA_2401;
SCL_2401 = 0;
}
return ReceiveByte;
}
Write_2401(uchar input_data,uchar RomAddress) {
uchar DeviceAddress = 0xa0;
Start_2401();
Send_2401(DeviceAddress);
if(~TestAck())
Send_2401(RomAddress);
if(~TestAck())
Send_2401(input_data);
if(~TestAck())
Stop_2401();
}
uchar Read_2401(uchar address) {
uchar Dout;
uchar DeviceAddress_Write = 0xa0;
uchar DeviceAddress_Read = 0xa1;
Start_2401();
Send_2401(DeviceAddress_Write);
if(~TestAck())
Send_2401(address);
if(~TestAck())
Start_2401();
Send_2401(DeviceAddress_Read);
if(~TestAck())
Dout = Receive_2401();
Stop_2401();
delay(10);
return Dout;
}
请问大家:为什么
Write_2401(66,1);
a = Read_2401(1);可以读出来a=66
按说应该再次执行a = Read_2401(1);就算不write都应该可以读出地址1的数据(66),
可是不行,感觉好象没有真正的存进去,不知道是怎么回事呢?请大家帮忙看看程序有什么问题,谢谢大家了!