單片機的鍵盤由于介入了人為操作,并不都是機器按流程跑,所以必須考慮到人的操作時長遠(yuǎn)大于機器周期,所以對于鍵盤狀態(tài)的檢測必須是寫在while中,進行循環(huán)檢測,這些需要實時檢測的狀態(tài)是:從沒有按下到按下,和從已經(jīng)按下到松手。而為了可以使while中的循環(huán)可以跳出,進入while的判斷語句中的變量要在while循環(huán)中再次賦值,而這個賦值必須是與新狀態(tài)相關(guān)的。
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
就如最后一個while,這是用來檢測松手操作,沒有松手就會進入while中循環(huán),只有循環(huán)中賦判斷語句中的變量被不停地附松手的值,等到松手是才可以跳出while