新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機鍵盤輸入編程

單片機鍵盤輸入編程

作者: 時間:2012-09-29 來源:網(wǎng)絡(luò) 收藏

單片機鍵盤輸入編程

下面為判斷按鍵輸入的T1定時中斷服務(wù)子程序,序號為解釋方便而加。

/*10mS定時中斷服務(wù)子函數(shù)*/

序號 1:void zd1(void) interrupt 3

2:{

3:uchar i,j;i=P1;j=P3;

4:TH1=-(5000/256);

5:TL1=-(5000%256);

6:if(m==1)n++;

7:if(n>=30){n=0;m=0;}

8:P3_7=0;

9:P1=0xff;

10:if(P1!=0xff)

11:{

12:if(n==0)m=1;

13:{if(n==1)

14:{

15:if(P1_0==0){set++;left=0;}

16:if(set>=4)set=0;

17:if(set==1)flag=0x55;

18:if(P1_1==0)left++;

19:if(left>=4)left=0;

20:if(P1_2==0){up++;

21:switch(left)

22:{

23:case 0:{if(up>=10)up=0;}break;

24:case 1:{if(up>=6)up=0;}break;

25:case 2:{if(up>=10)up=0;}break;

26:case 3:{if(up>=3)up=0;}break;

27:default:break;

28:}

29:}

30:if(P1_2==0){

31:switch(set)

32:{case 0:break;

33:case 1:x[left]=up;break;

34:case 2:{y[left]=up;if(P1_3==0)o_f1=!o_f1;}break;

35:case 3:{z[left]=up;if(P1_3==0)o_f2=!o_f2;}break;

36:default:break;

37:} }

38:else {

39:switch(set)

40:{case 0:break;

41:case 1:up=x[left];break;

42:case 2:{up=y[left];if(P1_3==0)o_f1=!o_f1;}break;

43:case 3:{up=z[left];if(P1_3==0)o_f2=!o_f2;}break;

44:default:break;}

45 :}}

46:}}

47:P1=i;P3=j;

48:}

序號1(程序解釋,以下同):聲明定時1中斷函數(shù)。

序號2:定時1中斷函數(shù)開始。

序號3:定義i、j為無符號字符型局部變量。將當(dāng)時的P1口、P3口狀態(tài)送i、j暫存。

序號4、5:定時器T1重新載入10mS初值。

序號6:如變量m等于1,則變量n遞增。說明:m、n為整個程序開始時定義的無符號字符型全局變量。



關(guān)鍵詞: 單片機 輸入編程

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉