電子產業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 1684|回復: 0
收起左側

單片機C語言實例-340-獨立式鍵盤的按鍵功能擴展:以一當四

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2022-3-30 16:13:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機C語言實例-340-獨立式鍵盤的按鍵功能擴展:以一當四

//實例74:獨立式鍵盤的按鍵功能擴展:"以一當四"
#include<reg51.h>        //  包含51單片機寄存器定義的頭文件
unsigned char ID;    //儲存流水燈的流動速度
sbit S1=P1^4;          //位定義S1為P1.4

/**************************************************************
函數(shù)功能:延時子程序
**************************************************************/
void delay(void)    //因為僅對一個按鍵掃描,所以延時時間較長約200ms
{
  unsigned char i,j;
  for(i=0;i<200;i++)
   for(j=0;j<100;j++)
           ;
}


/**************************************************************
函數(shù)功能:主函數(shù)
**************************************************************/
void main(void)
{
   TMOD=0x02;     //使用定時器T0的模式2
          EA=1;          //開總中斷
        ET0=1;         //定時器T0中斷允許
        TR0=1;         //定時器T0開始運行
        TH0=256-200;   //定時器T0賦初值,每200微妙來1次中斷請求
        TL0=256-200;

  ID=0;
   while(1)
          {
                  switch(ID)
            {
              case 0: P3=0xfe;
                      break;
                                  case 1: P3=0xfd;
                      break;
                                  case 2: P3=0xfb;
                      break;
                                  case 3: P3=0xf7;
                      break;            
            }
     }
   }
/**************************************************************
函數(shù)功能:定時器T0的中斷服務子程序,進行鍵盤掃描
**************************************************************/
void intersev(void) interrupt 1 using 1
{
  TR0=0;  //關閉定時器T0
  P1=0xff;
  if(S1==0)       //如果是按鍵S1按下
    {
           delay();       //延時20ms,軟件消抖
            if(S1==0)       //如果是按鍵S1按下
                   ID=ID+1;
          }   
        if(ID==4)
           ID=0;       

          TR0=1;               //啟動定時器T0

}

更多詳情參考附件文檔

游客,如果您要查看本帖隱藏內容請回復






                 

回復

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關注微信 下載APP 返回頂部 返回列表