原理图如图所示:
查询用户手册得到:
程序例子:(完整代码见“代码下载链接”)
1、轮询的方式查询按键事件
/*main.c*/
核心代码如下:
while(1)
{
dat = GPH2DAT;
if(dat & (1<<0)) // KEY1被按下,则LED1亮,否则LED1灭
GPJ2DAT |= 1<<0; // OFF
else
GPJ2DAT &= ~(1<<0); // ON
if(dat & (1<<1)) // KEY2被按下,则LED2亮,否则LED2灭
GPJ2DAT |= 1<<1;
else
GPJ2DAT &= ~(1<<1);
if(dat & (1<<2)) // KEY3被按下,则LED3亮,否则LED3灭
GPJ2DAT |= (1<<2);
else
GPJ2DAT &= ~(1<<2);
if(dat & (1<<3)) // KEY4被按下,则LED4亮,否则LED4灭
GPJ2DAT |= 1<<3;
else
GPJ2DAT &= ~(1<<3);
}
程序很简单,首先配置GPJ2_0/1/2/3引脚为输出功能以及配置GPH2_0/1/2/3引脚为输入功能,然后使用轮询的方式不断的读GPH2_0/1/2/3引脚的值,当检测到某个按键被按下时,即对应的引脚为低,此时我们点亮对应的LED,否者让LED保持熄灭的状态。
用查询的方式来检测按键太占CPU使用率了,除了检测按键,CPU无法进行其他工作,后面学习中断的知识后,我们将改用中断的方式来检测按键中断,这将大大降低CPU的使用率。
代码下载链接:http://download.csdn.net/detail/klcf0220/5635159
喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你值的拥有哦!