凌陽61單片機(jī)之按鍵無延時(shí)消抖(采用狀態(tài)機(jī)編程思想
在學(xué)習(xí)FPGA時(shí),覺得狀態(tài)機(jī)這種編程思想非常好,可以很充分地利用CPU的資源。
大的單片機(jī)工程,或者實(shí)時(shí)性較強(qiáng)的工程,采用狀態(tài)機(jī)編程思想可以很好解決一些問題,例如:
鍵盤掃描,蜂鳴器報(bào)警,LED燈閃爍等等。
下面是小弟昨晚用狀態(tài)機(jī)編程思想寫的基于凌陽61單片機(jī)之下,按鍵無延時(shí)消抖程序。
程序的按鍵還是有點(diǎn)小抖動(dòng),主要是因?yàn)橹鞒绦驁?zhí)行的任務(wù)少,跳入鍵盤掃描時(shí)間短。
現(xiàn)在才發(fā)現(xiàn)C里面的枚舉類型可以用來干嘛、、、
放于狀態(tài)機(jī)這塊剛剛好。
#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)
{
//設(shè)置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;
}
評(píng)論