さて、あなたのループ本体ではそれを制御する変数を変更するものは何もないので、それはすべてループ自体にかかっています。
初期値を書き留めて、頭の中でループを実行するだけです。
//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
つまり、8 回ではなく 7 回だけ反復します。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]]);