新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM7學(xué)習(xí)---按鍵測(cè)試程序(LPC2103 IO0PIN)

ARM7學(xué)習(xí)---按鍵測(cè)試程序(LPC2103 IO0PIN)

作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
今天一直在學(xué)習(xí)按鍵測(cè)試程序,看上去很簡(jiǎn)單,按鍵嘛誰(shuí)都會(huì)用,很多種單片機(jī)里都是用過(guò)了,但是今天還是遇到了一個(gè)問(wèn)題,而且花了我半天的時(shí)間調(diào)試和找問(wèn)題。剛開(kāi)始我不會(huì)用LPC2103的GPIO,后來(lái)查了數(shù)據(jù)手冊(cè),知道了讀取IO口的方法是讀取IOPIN寄存器,LPC2103使用的是IO0PIN。我程序?qū)懞?,把按鍵通過(guò)串口反饋信息。但是我一直測(cè)試沒(méi)按鍵的時(shí)候輸入按鍵口狀態(tài)不穩(wěn)定,有按鍵的時(shí)候還是很穩(wěn)定的。我以為程序出錯(cuò)了,一直在修改程序,但是還是一樣的情況。后來(lái)靜下心來(lái)想了下,是否IO配置錯(cuò)了?但是檢查了好多遍,IO是配置為輸入,沒(méi)什么問(wèn)題的。后來(lái)終于想起來(lái)了,我沒(méi)在按鍵的IO口加上拉電阻,以前我在51 STC AVR單片機(jī)的按鍵口都不加上拉電阻的,因?yàn)镮O內(nèi)部有上拉可以配置的,結(jié)果我看了下LPC2103,沒(méi)找到。所以我外部加了個(gè)10K的上拉電阻,這回再測(cè)試,OK了,哈哈!真高興!一下是示例程序:我從我整個(gè)程序了挑出了按鍵部分程序,串口通信程序沒(méi)添加上去。

//#include
//#include

本文引用地址:http://m.butianyuan.cn/article/201611/316020.htm

#define K1 (1<<19) //定義按鍵1的引腳

void keytest(void);

void keytest(void) //按鍵測(cè)試程序
{
if((IO0PIN&K1)==0x00) //判斷是否有按鍵按下
{
//按鍵去抖
while((IO0PIN&K1)==0x00) //判斷是否有按鍵放開(kāi)
{
delayms(100);
}
UART0_SendStr("K1");
}
else
{;}
}

////////////主程序///////////////

int mian()

{

PINSEL0 |= 0x00000005; //設(shè)置I/O連接到UART0,其他為普通GPIO口
PINSEL1 |= 0x00000000;
UART0_INT(); //串口初始化

while(1)

{keytest();}//按鍵測(cè)試程序

}



評(píng)論


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

關(guān)閉