Логично

Примерно так:
//*************
#define DelayUs() { ubyte i; i = 100; do {RE0 = 0; RE0 = 1;} while(--i); }
//-------------
void DelayM(unsigned char cnt)
{
ubyte inn;
do
{
inn = 10;
do
{
DelayUs(); //
}
while(--inn);
}
while(--cnt);
}
//-------------
main()
{
ubyte ind;
for(ind = 0; ind < 16; ind ++)
{
DelayM(100);
Write_DR(fr2[ind]); // байтовый массив
DelayM(100); // --------> слёт
}
}
//***************************
Слетает, когда ind имеет значение 5 (i и inn при этом могут быть разными). При слёте переменная ind сбрасывается в 0. И снова по кругу. Если цикл на уменьшение - ind не сбрасывается, а принимает начальное значение.
асм коду соответствует
------------------------------
Чувствую, что что-то криво, принимаю любые идеи %)
------------------------------
Vic: Про банки спасибо - уже смотрю