今日一向在学习按键测验程序,看上去很简单,按键嘛谁都会用,很多种单片机里都是用过了,可是今日仍是遇到了一个问题,并且花了我半响的时刻调试和找问题。刚开始我不会用LPC2103的GPIO,后来查了数据手册,知道了读取IO口的办法是读取IOPIN寄存器,LPC2103运用的是IO0PIN。我程序写好,把按键经过串口反应信息。可是我一向测验没按键的时分输入按键口状况不安稳,有按键的时分仍是很安稳的。我认为程序出错了,一向在修正程序,可是仍是相同的状况。后来静下心来想了下,是否IO装备错了?可是查看了好多遍,IO是装备为输入,没什么问题的。后来总算想起来了,我没在按键的IO口加上拉电阻,曾经我在51 STC AVR单片机的按键口都不加上拉电阻的,由于IO内部有上拉能够装备的,成果我看了下LPC2103,没找到。所以我外部加了个10K的上拉电阻,这回再测验,OK了,哈哈!真快乐!一下是示例程序:我从我整个程序了挑出了按键部分程序,串口通讯程序没增加上去。
//#include
//#include
#define K1 (1<<19) //界说按键1的引脚
void keytest(void);
void keytest(void) //按键测验程序
{
if((IO0PIN&K1)==0x00) //判别是否有按键按下
{
//按键去抖
while((IO0PIN&K1)==0x00) //判别是否有按键铺开
{
delayms(100);
}
UART0_SendStr(“K1”);
}
else
{;}
}
////////////主程序///////////////
int mian()
{
PINSEL0 |= 0x00000005; //设置I/O连接到UART0,其他为一般GPIO口
PINSEL1 |= 0x00000000;
UART0_INT(); //串口初始化
while(1)
{keytest();}//按键测验程序
}