求大神帮忙看AT89C51从AT24C02连续读取数据,为什么读不出来,好着急!
这是24C02.h
#include <i2c.h>
#define WRITE 0xA0
#define READ 0xA1
//**********数据存储读写部分**************//
//描述:地址写入函数
//功能:向24C02写入器件地址和一个指定的字节地址。
//****************************************//
bit E_Address(uchar Address){
I_start();
if(I_send(WRITE))
return (I_send(Address));
else
return (FALSE);
}
//************5ms延时*******************//
void wait_5ms(void){
int I;
for ( I=0 ;I<1000 ;I++){
;
}
}
//描述:数据写入函数
//功能:将数据写入到24C04指定地址开始的BLOCK_SIZE个字节,采用字节写方式
//每次写入都要指定片内地址
//****************************************//
bit E_write_block(uchar start, uint dataNumber, uchar* transfer){
uchar i;
for ( i = 0; i < dataNumber ; i++ ){
if ( E_Address(i+start) && I_send(transfer[i])){
I_stop();
wait_5ms();
}
else
return(FALSE);
}
return(TRUE);
}
//描述:数据读取函数
//功能:从24C04中读取BLOCK_SIZE个字节的数据,转存于51片内RAM,采用序列读操作方式连续读取数据
//****************************************//
bit E_read_block(uchar start, uint dataNumber, uchar* transfer){
uchar i;
if (E_Address(start)){
I_start();
if (I_send(READ)){
for (i = 0; i < dataNumber; i++ ){
transfer[i] = (I_recieve());
if (i!=dataNumber-1)
I_Ack();
else{
I_clock();
I_stop();
}
}
return TRUE;
}
else{
I_stop();
return (FALSE);
}
}
else
I_stop();
return (FALSE);
}
#endif
~~~~~~~~~~~~~~通过按键存储和按键读取七次的数据
void keyScan(){
if (0 == writeData)
{
delay_ms(10);
enableFlag = 0;
if (0 == writeData)
{
writeFlag += 1;
if (writeFlag > 8)
{
writeFlag = 0;
}
readOrWrite = 1;
}
while(!writeData);
if (writeFlag>0)
{
calTotalTime();
calTotalSteps();
I_init();
E_write_block(addr+(writeFlag-1)*16, 9, totalTime2Char);
E_write_block(addr+(writeFlag-1)*16 + 9, 7, steps2Char);
led = ~led;
}
}
if (0 == readData)
{
delay_ms(10);
if (0 == readData)
{
readFlag += 1;
if (readFlag > 8)
{
readFlag = 0;
}
readOrWrite = 0;
}
while(!readData);
if (readFlag>0)
{
I_init();
E_read_block(addr+(readFlag-1)*16, 9, totalTime2Char);
E_read_block(addr+(readFlag-1)*16 + 9, 7, steps2Char);
GotoXY(0,0);
Print("Time:");
Print(totalTime2Char);
Print(" ");
GotoXY(0,1);
Print("Steps:");
Print(steps2Char);
led2 = ~led2;
}
}