|
按K5按鍵 P0口LED等會變化 每按一次 變化一次
單片機源程序如下:
- //獨立式鍵盤的按鍵功能擴展:"以一當(dāng)四"
- #include<reg52.h> // 包含51單片機寄存器定義的頭文件
- unsigned char ID; //儲存按鍵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: P0=0xfe;
- break;
- case 1: P0=0xfd;
- break;
- case 2: P0=0xfb;
- break;
- case 3: P0=0xf7;
- break;
- }
- }
- }
- /**************************************************************
- 函數(shù)功能:定時器T0的中斷服務(wù)子程序,進(jìn)行鍵盤掃描
- **************************************************************/
- void intersev(void) interrupt 1 using 1
- {
- TR0=0; //關(guān)閉定時器T0
- P1=0xff;
- if(S1==0) //如果是按鍵S1按下
- {
- delay(); //延時20ms,軟件消抖
- if(S1==0) //如果是按鍵S1按下
- ID=ID+1;
- while(!S1);
- }
- if(ID==4)
- ID=0;
- TR0=1; //啟動定時器T0
- }
復(fù)制代碼
所有資料51hei提供下載:
獨立式鍵盤的按鍵一鍵多功能程序.rar
(10.41 KB, 下載次數(shù): 63)
2018-5-24 18:05 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|