好的,循环体中的任何内容都不会改变控制它的变量,所以这一切都取决于循环本身。
只需写下初始值并在脑海中运行循环:
//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]]);