<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR main.c/基于狀態(tài)機的按鍵

AVR main.c/基于狀態(tài)機的按鍵

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
/**********************************************************************
* 文件名稱(chēng): main.c/基于狀態(tài)機的按鍵
* 程序作者: Kevin Chin
* 程序版本: V1.0
* 編制日期: 2010/07/14
* 功能描述: 按一個(gè)K20(PD7),LED燈亮(PB1),松開(kāi)熄滅
* 編譯器:WinAVR-20090313
* 芯片:ATmega16,外部11.0592MHZ晶振
* 技術(shù)支持:http://bbs.cepark.com
**********************************************************************/
#include<avr/io.h>
#include

#defineKEY_Value PIND&0x80//定義按鍵所在的引腳PD7

#defineLED_OPEN PORTB&=~(_BV(PB1))//PB1口的LED燈點(diǎn)亮

#defineLED_CLOSE PORTB|=_BV(PB1)//PB1口的LED燈熄滅

#defineKEY_STATE_0 0//狀態(tài)0

#defineKEY_STATE_1 1//狀態(tài)1

#defineKEY_STATE_2 2//狀態(tài)2


uint8_tKeyScane(void)//按鍵掃描函數

{
staticuint8_tkeystate=0,keyreturn=0;//定義靜態(tài)變量

uint8_tkeypress;


keypress=KEY_Value;//讀取按鍵的狀態(tài)賦給keypress


switch(keystate)
{
caseKEY_STATE_0:if(!keypress)//如果是狀態(tài)1并且按鍵按下去了。

{
keystate=KEY_STATE_1;//狀態(tài)切換到1

keyreturn=0;
}
break;
caseKEY_STATE_1:if(!keypress)//如果10ms后按鍵按下?tīng)顟B(tài)再次確認

{
keystate=KEY_STATE_2;//按鍵狀態(tài)切換到2

keyreturn=1;//返回值為1

}
elsekeystate=KEY_STATE_0;
break;
caseKEY_STATE_2:if(keypress)//判斷按鍵是否松開(kāi)

{
keystate=KEY_STATE_0;//切換到狀態(tài)0

keyreturn=0;
}
break;
default:break;
}

returnkeyreturn;//返回鍵值


}

intmain(void)
{

uint8_tkeydata;

PORTB=0xff;
DDRB=0xff;

PORTD=0x80;
DDRD=0x00;

while(1)
{
_delay_ms(10);//延時(shí)10ms

keydata=KeyScane();//調用按鍵掃描函數


if(keydata)//如果按鍵掃描函數返回為1,執行下面的語(yǔ)句

{
LED_OPEN;//LED點(diǎn)亮

}
elseLED_CLOSE;//LED熄滅

}
}


關(guān)鍵詞: AVR狀態(tài)機的按

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>