Для эксперимента вывожу слово "Initialization..."
При движении справа-налево никаких нареканий нет, все ок...как только слово начинает идти в обратную сторону, дисплей в 0й и 1й ячейке дублирует букву, естественно эти дублеры сохраняются в массиве и при втором цикле вместо надписи "Initialization..." выводится "IInitializtion...", на третьем круге "IIInitialition..." и т.д.
Выкладываю код реализации этой нелогичности
Код: Выделить всё
char text[40] = { "Initialization..." };
if(scroll == 0) //движение справа-налево
{
text[17]=text[0];
for(i=0; i<17; i++)
{
text[i]=text[i+1];
}
}
else //движение в обратную сторону
{
text[0]=text[16];
for(i=17; i>0; i--)
{
text[i]=text[i-1];
}
}
if(scroll_time<8) { scroll_time = scroll_time++; } else { scroll_time = 0; scroll=scroll++; if(scroll>1) scroll = 0; } //при перемещении на 8 ячеек (wh0802) меняется направление движения бегущей строки
lcd_gotoxy(0,0);
lcd_puts(text);
Соответственно ошибка сидит где-то в теле цикла после else, при этом можно заметить, что в первом условии идет запись в 17ю ячейку массива, а во втором условии в 16ю, но как бы это было бы нелогично, но подругому работает еще хуже. Тоже самое с самим циклом, первый цикл работает от 0 до 16, второй цикл от 17 до 1, при задании условия от 16 до -1 становится еще хуже


