578896817fyt的个人空间 https://passport2.21ic.com/?634174 [收藏] [复制] [RSS]

日志

按键代码 (红金龙前辈的代码)

已有 758 次阅读2014-12-5 13:17 |个人分类:单片机|系统分类:单片机| 红金龙, 定时器, 主程序

这样写不错
我一般是这么处理的。
定时器设置为10ms中断一次,中断中有一个标志bTimeOn
中断发生时 bTimeOn = TRUE ;
主程序中
if(TRUE == bTimeOn )
{
    bTimeOn = FALSE ;
    byKeyTemp = KeyScan() ;
    switch(byKeyState)
    {
        case KEY_WAIT : if( NOKEY != byKeyTemp )
                        {
                             byKeyState = KEY_DOWN ;
                        }
                        else
                        {
                             byKeyState = KEY_WAIT ;
                             byKeyValue = NOKEY ;
                        }
        break ;
        case KEY_DOWN : if( NOKEY != byKeyTemp )
                        {
                             byKeyState = KEY_CONFIRM ;
                        }
                        else
                        {
                             byKeyState = KEY_WAIT ;
                             byKeyValue = NOKEY ;
                        }
        break ;
        case KEY_CONFIRM :if( NOKEY != byKeyTemp )
                        {
                             byKeyState = KEY_DOWN_YES ;
                        }
                        else
                        {
                             byKeyState = KEY_WAIT ;
                             byKeyValue = NOKEY ;
                        }
       break ;
       case KEY_DOWN_YES :if( NOKEY != byKeyTemp )
                        {
                             byKeyValue = byKeyTemp ;
                             byKeyState = KEY_WAIT;
                        }
                        else
                        {
                             byKeyState = KEY_WAIT ;
                             byKeyValue = NOKEY ;
                        }
       break ;
       default : break ;

    }
    return byKeyValue ;
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)