第一部分是键盘扫描:
用到8962的所有的按键,扩展了四个IO口,用于LED的显示。UP键按下时,四个灯都亮,液晶显示由OFF变为ON;DOWN按下时,前两个灯灭,后两个灯亮,液晶显示由OFF变为ON;LEFT按下时,后两个灯灭,液晶显示由OFF变为ON;RIGHT按下时,四个灯全灭,液晶显示由OFF变为ON;
大家就可以按照这个程序稍微修改下就可以实现跑马灯。
扩展部分:这里我直接用的是GPIOPinWrite(GPIO_PORTF_BASE, LED0 | LED1, LED0 | LED1 );,大家可以改成按下键时亮,不按时灭,可以用GPIOPinWrite(GPIO_PORTF_BASE, LED0 | LED1, (b & LEFT) ? ~LED0 | ~LED1: LED0 | LED1) ,这样就可以实现按下亮,不按下不亮的功能了。大家还可以在按下按键时,让灯闪烁几下后一直亮,只要加一个延时,就应该可以实现了。
第二部分是键盘中断:
利用中断实现不同按键下输出或者显示不同的按键,我在程序里,是通过灯的闪烁次数显示按键的不同。
扩展部分:在这里大家有没有考虑到arm的优点——嵌套中断,是不是可以用嵌套中断实现这个效果!!
欢迎大家讨论!程序程序可能很简单,但是我们把这个问题扩展开来应该能学到好多的东西!大家还有什么可扩展的想法,大家一起学习!!
对于中断必须在.s声明下,不然肯定不好使,这里已经有人发表中断这方面的文章了,大家可以去看看。具体我就不链接了。
顶》》》》》》》》》
不错的分享,键盘扫描程序用处还是很大的。