Ваш оператор if уменьшает число с 5 до 4, но цикл for затем увеличивает значение обратно до 5. Как только count
достигает 5, это будет повторяться вечно. Вам нужно будет перестроить логику, чтобы получить поведение с повышением / понижением (с циклом от 0 до 5). Попробуйте что-то вроде этого:
void main()
{
unsigned char count=0;
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
TRISC=0;
bool increment = true;
while(1) {
PORTC=table[count];
delay_ms(59);
// Increment or decrement.
count += increment ? 1 : -1;
// Switch from incrementing to decrementing (or vice versa).
if (count >= 5 || count <= 0) {
increment = !increment;
}
}
}
Это определяет логический флаг increment
, чтобы указать, увеличиваем ли мы или уменьшаем переменную count
. Когда count
достигает верхней или нижней границы, флаг increment
инвертируется.