主题:键盘中断例程 共有53820人关注过本帖 |
---|
yaqun_zhao |
1楼 |
![]() |
键盘中断例程 ![]()
既然键盘中断例程也是用的定时中断,那我能否不用keyisr例程,直接在定时中断ISR中假如if(kbhit()) char c=getchar();语句来判断是否有按键和按的什么键,系统支持吗?
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
2楼 |
![]() |
![]()
不能在ISR中调用系统的函数!否则会造成函数重入而crush。
key的ISR的部分需要完全保留,对应用定时只需要cnt++或发一个消息即可,如果使用了事件驱动机制的话。 |
单帖管理 | 引用 | 回复 ![]() |
yaqun_zhao |
3楼 |
![]() |
![]()
也就是说我只需在keyISR程序中加个 IRQ12cnt++;在主程序中判断 IRQ12cnt值和i = GetKeyCode( )即可使用定时中断和键盘中断了,对吗?
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
4楼 |
![]() |
![]()
是的,你现在用的键盘读取程序是i=GetKeyCode()吗,我记得应当可以直接调用PC标准函数,如getch(), kbhit()等。
|
单帖管理 | 引用 | 回复 ![]() |
yaqun_zhao |
5楼 |
![]() |
![]()
对了,开始还这样想过的,后来晕乎了,那我只需定时中断就可以了,在主程序中判断IRQ12cnt和定时判断kbhit()和getchar()就可以了,对吗?非常感谢!
|
单帖管理 | 引用 | 回复 ![]() |