• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    單片機鍵盤輸入編程

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

    單片機鍵盤輸入編程

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

    /*10mS定時中斷服務子函數(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為無符號字符型局部變量。將當時的P1口、P3口狀態(tài)送i、j暫存。

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

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



    關鍵詞: 單片機 輸入編程

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 康定县| 揭东县| 民乐县| 江安县| 绥江县| 梁河县| 乌兰察布市| 辽中县| 寿光市| 门源| 浮山县| 宿迁市| 盱眙县| 方城县| 上高县| 英吉沙县| 神木县| 牡丹江市| 高青县| 沿河| 徐闻县| 射阳县| 红安县| 奉新县| 宁强县| 抚顺县| 新化县| 无锡市| 扶余县| 芜湖县| 广元市| 东平县| 陈巴尔虎旗| 诸城市| 永城市| 济源市| 沧州市| 武冈市| 台湾省| 梓潼县| 贵州省|