好的,沒有什麼你循環體更改控制它的變量,所以它都歸結於循環本身。
簡單地寫下來的初始值,並在你的腦袋上運行的循環:
//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