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