标题:
void interrupt Keyboard_ISR( void )
[打印本页]
作者:
微毫度十分个扩大飞机公婆
时间:
2007-1-24 19:21
标题:
void interrupt Keyboard_ISR( void )
#if defined ( KB_INT )
/*
* Keyboard Interrupt Module Interrupt Service Routine
*/
void interrupt Keyboard_ISR( void )
{
// disable key interrupts
KBIntSetup( false );
// Allow other interrupts, assuming only other interrupt is MAC
EnableInts;
// Wait to avoid the key bouncing
osal_set_event( OnBoard_TaskID, KEYPRESS_DEBOUNCE_EVT );
// Disable interrupts before returning from ISR
DisableInts;
}
#endif // KB_INT
作者:
seuafu2005
时间:
2007-1-25 10:18
有什么问题?
作者:
微毫度十分个扩大飞机公婆
时间:
2007-1-25 14:06
关于处理按键过程
(1)用中断的方式
1。开按键中断
2。若有键被按下,则自动进入
#if defined ( KB_INT )
/*
* Keyboard Interrupt Module Interrupt Service Routine
*/
void interrupt Keyboard_ISR( void )
{
// disable key interrupts
KBIntSetup( false );
// Allow other interrupts, assuming only other interrupt is MAC
EnableInts;
// Wait to avoid the key bouncing
osal_set_event( OnBoard_TaskID, KEYPRESS_DEBOUNCE_EVT );
产生event,这儿DEBOUNCE怎么翻译?是按键削抖用的吗?
// Disable interrupts before returning from ISR
DisableInts;
}
#endif // KB_INT
3。进而void OnBoard_ProcessEvent( byte task_id, UINT16 events )
#if defined ( KB_INT )
if ( events & KEYPRESS_SETUP_INT_EVT )
KBIntSetup( true );
if ( events & KEYPRESS_DEBOUNCE_EVT )
osal_start_timerEx( OnBoard_TaskID, KEYPRESS_POLL_EVT, 50 );
#endif
我对osal_start_timerEx的功能不是很清楚,50ms后接下来的处理过程是哪样的呢??
(2)用查询的方式
1。关按键中断
#if defined ( KB_INT )
// This is to avoid interrupts until normal processing
osal_set_event( task_id, KEYPRESS_SETUP_INT_EVT );
#else
// Start the key polling
osal_set_event( task_id, KEYPRESS_POLL_EVT );
#endif
2。处理KEYPRESS_POLL_EVT
if ( events & KEYPRESS_POLL_EVT )
{
gb60_read_keys();
#if defined ( KB_INT )
osal_set_event( task_id, KEYPRESS_SETUP_INT_EVT );
#else
osal_start_timerEx( OnBoard_TaskID, KEYPRESS_POLL_EVT, 100 );
#endif
}
同样进入osal_start_timerEx,100ms后接下来的处理过程是哪样的呢??
我一直在这儿弄不大清楚,感觉处理按键都应按以下步骤,这儿怎么体现??
1》判断有键按下
2》判断是哪个键按下
3》消抖
4》确认键
5》判断按键释放
请斑竹指正,谢谢!!
作者:
seuafu2005
时间:
2007-1-25 21:21
debounce是去抖,
gb60_read_keys();就是判断哪个按键按下
作者:
微毫度十分个扩大飞机公婆
时间:
2007-1-25 21:38
gb60_read_keys();这个函数的原函数在哪个.c文件里?
cw里有没有方法能够立即找到一个函数的原函数在哪儿??
作者:
seuafu2005
时间:
2007-1-29 10:56
在CW中,对着函数按下右键,有go to function definition...可以跳到原函数
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0