欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
有限狀態(tài)機(jī)單片機(jī)獨(dú)立按鍵處理程序
[打印本頁]
作者:
bhjyqjs
時(shí)間:
2018-11-7 08:40
標(biāo)題:
有限狀態(tài)機(jī)單片機(jī)獨(dú)立按鍵處理程序
不要誤會(huì),雖然叫簡(jiǎn)化版,功能可一點(diǎn)也不簡(jiǎn)化啊。
程序每10ms調(diào)用一次按鍵掃描程序,由狀態(tài)機(jī)控制程序流程,在按鍵未確認(rèn)前,一旦檢測(cè)到高電平,說明按鍵為抖動(dòng)或干擾,自動(dòng)退回初始狀態(tài),杜絕虛假按鍵動(dòng)作。整個(gè)按鍵處理過程最長(zhǎng)30ms,按鍵按下即執(zhí)行,全部由定時(shí)中斷完成,釋放主程序。
按鍵動(dòng)作干脆利落,爽!抖動(dòng)?那就是一個(gè)傳說!
之所以定時(shí)中斷為2ms,是考慮到2ms定時(shí)可以作為其他應(yīng)用的定時(shí)基準(zhǔn)。
單片機(jī)程序源碼如下:
/***************************************************
工程名 :獨(dú)立按鍵(狀態(tài)機(jī))控制 LED_簡(jiǎn)化版
作者:老芹
本例Key接P1.4
***************************************************/
#include "STC15F2K60S2.H"
#define uchar unsigned char
#define uint unsigned int
sbit K1 = P1^4; //定義按鍵
sbit LED = P0^0;
void KEY_Scan(); //檢測(cè)按鍵
void Timer0_Init(); //定時(shí)器初始化
bit key;
void main()
{
Timer0_Init();
while(1)
{
}
}
void KEY_Scan() //檢測(cè)按鍵
{
static uchar KeyStatus = 0; //按鍵狀態(tài)
switch (KeyStatus)
{
case 0: //初始狀態(tài)下,KeyStatus=0
if(K1==0) //如果有鍵按下轉(zhuǎn)到下一狀態(tài);否則是干擾,直接退回初始狀態(tài)
KeyStatus++;
break;
case 1:
if(K1==0) //鍵仍然按下
{
key = !key;
KeyStatus++; //轉(zhuǎn)到下一狀態(tài),等待按鍵釋放
}
else
KeyStatus = 0; //是干擾,退回初始狀態(tài)
break;
case 2:
if(K1==0) //鍵仍然按下
break;
else //鍵松開
KeyStatus = 0; //退回初始狀態(tài)
break;
}
}
void Timer0_Init() //定時(shí)器初始化
{ //2毫秒@11.0592MHz
AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x9A; //設(shè)置定時(shí)初值
TH0 = 0xA9; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
ET0 =1;
EA = 1;
}
void Timer0() interrupt 1 //定時(shí)器中斷
{ //16位自動(dòng)重裝模式,無需重賦初值
static uchar i;
if(key) //按鍵按下,LED點(diǎn)亮
LED=0; //點(diǎn)亮LED
else
LED=1; //關(guān)閉LED
if(i==0) //每10Ms調(diào)用按鍵掃描程序一次
KEY_Scan();
i++;
if(i==5)
i=0;
}
復(fù)制代碼
作者:
怪怪愛玩
時(shí)間:
2018-11-9 11:02
我仔細(xì)研究一下,謝謝樓主
作者:
怪怪愛玩
時(shí)間:
2018-11-9 11:19
剛剛試了,確實(shí)非常好用,得好好研究一下,謝謝樓主
作者:
維超
時(shí)間:
2018-11-9 18:46
如果加入按鍵長(zhǎng)按呢用起來不是更爽
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1