凌陽61單片機之按鍵無延時消抖(采用狀態(tài)機編程思想
在學習FPGA時,覺得狀態(tài)機這種編程思想非常好,可以很充分地利用CPU的資源。
大的單片機工程,或者實時性較強的工程,采用狀態(tài)機編程思想可以很好解決一些問題,例如:
鍵盤掃描,蜂鳴器報警,LED燈閃爍等等。
下面是小弟昨晚用狀態(tài)機編程思想寫的基于凌陽61單片機之下,按鍵無延時消抖程序。
程序的按鍵還是有點小抖動,主要是因為主程序執(zhí)行的任務少,跳入鍵盤掃描時間短。
現(xiàn)在才發(fā)現(xiàn)C里面的枚舉類型可以用來干嘛、、、
放于狀態(tài)機這塊剛剛好。
#include "SPCE061A.H"
enum State {Init, Press, Free};
enum State Key_State; //按鍵狀態(tài)
unsigned char Key_Press; //按鍵值
void Keyscan(void)
{
switch (Key_State)
{
}
}
void Board_Init(void)
{
//設置A口為帶下拉電阻的輸入 IO初始化開始
*P_IOB_Dir=0xFFFF; //output
*P_IOB_Attrib=0xFFFF;
*P_IOB_Data=0xFFFF;
Key_Press = 1;
Key_State = 0;
}
int main()
{
Board_Init();
while(1)
{
Keyscan();
*P_Watchdog_Clear = C_WDTCLR;
}
return 0;
}
評論