Tiny4412之按键驱动
一:按键驱动
按键驱动跟之前的LED,蜂鸣器的方法类似;通过底板,核心板我们可以看到按键的电路图:
通过电路图我们可以看出,当按键按下去为低电平,松开为高电平;所以我们要检测XEINT26的状态,通过芯片手册找到GPX3_2的说明;
有芯片手册可知:GPX3CON为0为检测,GPAC3DAT为1是高电平下面贴出代码:按键KEY1,KEY2,KEY3分别控制输出字符串,KEY4控制退出:
#define GPX3CON (*(volatile unsigned long *)0x11000c60) #define GPX3DAT (*(volatile unsigned long *)0x11000c64) int (*printf)(char *, ...) = 0xc3e114d8; void (*udelay)(int) = 0xc3e25f90;//延时程序 int main() { GPX3CON &= ~(0xffff << 8); while(1) { /*key1*/ if((GPX3DAT & (0x1 << 2)) == 0) { printf("key 1 down\n"); printf("hello world\n"); udelay(250000); } /*key2*/ if((GPX3DAT & (0x1 << 3)) == 0) { printf("key 2 down\n"); printf("good monig\n"); udelay(250000); } /*key3*/ if((GPX3DAT & (0x1 << 4)) == 0) { printf("key 3 down\n"); printf("welcom key 3\n"); udelay(250000); } /*key4*/ if((GPX3DAT & (0x1 << 5)) == 0) { printf("key 4 down\n"); break; } } printf("Over\n"); return 0; }
开发板运行结果如下: