主题:键盘中断例程

  共有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()就可以了,对吗?非常感谢!

  单帖管理 | 引用 | 回复 回到顶部

返回首页

键盘中断例程

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: