Хорошо, ничто в теле цикла не изменяет переменные, которые его контролируют, поэтому все зависит от самого цикла.
Просто запишите начальные значения и запустите цикл в своей голове:
//keycount = 9
for ( iii = (keycount-1),jii=0; iii>(keycount-8) && jii <8;iii--,jii++)
iii jii iii > 1 jii < 8
--- --- ------- -------
8 0 Y Y iterate 1
7 1 Y Y iterate 2
6 2 Y Y iterate 3
5 3 Y Y iterate 4
4 4 Y Y iterate 5
3 5 Y Y iterate 6
2 6 Y Y iterate 7
1 7 N Y exit loop
Другими словами, он повторяется только семь раз, а не восемь. Я подозреваю, что вы хотели повторить iii
с 8 до 1 (а не 2). Если это так, весь цикл можно заменить на что-то гораздо более простое.
// keycount = 9
for (jii = 0; jii < 8; jii++)
LCD_Data_Write (jii, Digit_Mask[keybuff[8-jii]]);
На самом деле, даже если значения должны быть в диапазоне от 7 до 0, просто изменить вызов на:
LCD_Data_Write (jii, Digit_Mask[keybuff[7-jii]]);