После вынужденного перерыва вернулся к проблеме, теперь даже этот топик нашел

Вход в режим программирования проходит, но если не передать команду "Стирание", то память не очищается. Значит, вход не произошел?
Отдельной командой память очищается, но не удается записать ни одного байта в память программ.
Прошу помощи - в чем может быть проблема?
Запрограммировать пытаюсь Tiny26...
Код
char mark = 0;
char temp = 0;
char low_abyte = 0;
char high_abyte = 0;
DELAYMS( 20 );
while ( mark == 0 ) // будем добиваться входа в синхронизацию
{
// вход в режим программирования
CLEARBIT( DDRE, 6 ); // Reset = High
DELAYMS( 1 );
// Reset = Low
CLEARBIT( PORTE,6 );
SETBIT( DDRE, 6 );
CLEARBIT( PORTE,6 );
DELAYMS( 20 );
// вход в синхронизацию
SEND_SPI( 0xAC );
SEND_SPI( 0x53 );
temp = SEND_SPI( 0xAA ); // любое значение
if( temp == 0x53 )
{
SEND_SPI( 0xAA ); // любое значение
mark = 1;
}
}
// стирание кристалла
SEND_SPI( 0xAC );
SEND_SPI( 0x80 );
SEND_SPI( 0x00 );
SEND_SPI( 0x00 );
DELAYMS( 20 ); // задежка
// Команда «Запись страницы памяти программ»
SEND_SPI( 0x4C );
SEND_SPI( high_abyte );
SEND_SPI( low_abyte );
SEND_SPI( 0x00 );
temp = 0xAA;
if( temp != 0xFF )
{
// Команда «Загрузка страницы памяти программ - младший байт»
SEND_SPI( 0x40 );
SEND_SPI( high_abyte );
SEND_SPI( low_abyte );
SEND_SPI( temp );
}
DELAYMS( 20 ); // задежка между байтами
temp = 0xBB;
if( temp != 0xFF )
{
// Команда «Загрузка страницы памяти программ - старший байт»
SEND_SPI( 0x48 );
SEND_SPI( high_abyte );
SEND_SPI( low_abyte );
SEND_SPI( temp );
}
DELAYMS( 20 ); // задежка между страницами
SETBIT( PORTC, 3 );// откл. разр. прогр. Tiny
CLEARBIT( DDRE, 6 ); // Reset = High
Всегда не хватает времени, чтобы выполнить работу как надо, но на то, чтобы ее переделать, время находится. (Закон Мескимена.)