[an error occurred while processing this directive]
|
/*
Модуль pаботы с flash-memory 24C01, 24С02.
Версия 02.00.
File 24C01.c
*/
//--------------------------------
// Вспомогательная процедура для сокращения объема программы
void BeginWrite24C01 ( unsigned char Addr )
{
Forever
{
I2CStartStop ();
I2CSend ( SlaveAddr24C01 + DevAddr24C01 * 2 ); // Slave Address + write
if ( FlagAsk ) continue;
I2CSend ( Addr );
if ( FlagAsk ) continue;
return;
}
} // BeginWrite24C01
//--------------------------------
// Подпрограмма записи вo flash. Данные в I2CData
void Write24C01 ( unsigned char Addr, unsigned char Quant )
{
unsigned char i;
for ( i = 0; i < Quant; i++ )
{
Forever
{
BeginWrite24C01 ( Addr + i );
I2CSend ( I2CData [ i ] );
if ( FlagAsk ) continue;
I2CStop ();
break;
}
}
} // Write24C01
//--------------------------------
// Подпрограмма чтения из flash (начиная с текущего адреса). Данные в I2CData
void SeqRead24C01 ( unsigned char Quant )
{
unsigned char i;
Forever
{
I2CStartStop ();
// Читаем
I2CSend ( SlaveAddr24C01 + DevAddr24C01 * 2 + 1 ); // Slave Address + read
if ( FlagAsk ) continue;
// Очистим для того, чтобы выдали и следующий байт
FlagAsk = 0;
for ( i = 0; i < Quant; i++ )
{
if ( i == Quant - 1 ) FlagAsk = 1; // Последний байт
I2CData [ i ] = I2CRead ();
}
I2CStop ();
return;
}
} // SeqRead24C01
//--------------------------------
// Подпрограмма чтения из flash. Данные в I2CData
void Read24C01 ( unsigned char Addr, unsigned char Quant )
{
BeginWrite24C01 ( Addr );
SeqRead24C01 ( Quant );
} // Read24C01