好的,没有什么你循环体更改控制它的变量,所以它都归结于循环本身。
简单地写下来的初始值,并在你的脑袋上运行的循环:
//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下降到1(而不是2)迭代iii
。如果是这样的话,整个循环可以用更简单的东西代替。
// 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]]);
iii>(keycount-8)这里存在你的问题。试试这个iii =>(keycount-8) – XepterX 2012-03-16 09:58:42
这意味着循环计数器iii从8开始,并且在0结束,当iii = 0时该循环也不应该迭代,因为条件还表示迭代iii => 0? – TiOLUWA 2012-03-16 10:08:44
但您的keycount-8 = 1不等于0 – XepterX 2012-03-17 06:05:10