2*3 按键的扫描子程序,救高人指点怎样可以把程序写的最简

[复制链接]
2630|5
 楼主| 110xia 发表于 2007-8-3 10:29 | 显示全部楼层 |阅读模式
    unsigned char key_buf;
    unsigned char key_flag;    
    unsigned char key_edge;

void Detect_Key(unsigned char keycow){
    static unsigned char state=0;           
    switch (keycow){                     
        case 0:
        if((key_buf&0x04)==0){
            if((key_flag&0x80)!=0){
                key_edge|=0x80;
                key_flag&=0x7f;
            }
        }
        else    key_flag|=0x80;
        if((key_buf&0x02)==0){
            if((key_flag&0x40)!=0){
                key_edge|=0x40;
                key_flag&=0xbf;
            }
        }
        else    key_flag|=0x40;
        break;     

        case 1:              
        if((key_buf&0x04)==0){
            if((key_flag&0x20)!=0){
                key_edge|=0x20;
                key_flag&=0xdf;
            }
        }
        else    key_flag|=0x20;
        if((key_buf&0x02)==0){
            if((key_flag&0x10)!=0){
                key_edge|=0x10;
                key_flag&=0xef;
            }
        }
        else    key_flag|=0x10;
        break;
        
        case 2:            
        if((key_buf&0x04)==0){
            if((key_flag&0x08)!=0){
                key_edge|=0x08;
                key_flag&=0xf7;
            }
        }
        else    key_flag|=0x08;
        if((key_buf&0x02)==0){
            if((key_flag&0x04)!=0){
                key_edge|=0x04;
                key_flag&=0xfb;
            }
        }
        else    key_flag|=0x04;
        break;

        default:
        break;
    }    
}
myhmz 发表于 2007-8-3 10:53 | 显示全部楼层

用线反转法

我就是用线反转法
 楼主| 110xia 发表于 2007-8-3 12:49 | 显示全部楼层

我这个程序,可能不适合

这个程序已经完成了按键解析和抖动处理
ayb_ice 发表于 2007-8-3 14:31 | 显示全部楼层

一个按键程序还什么“按键解析和抖动处理”。。。

etual 发表于 2007-8-3 14:57 | 显示全部楼层

一个按键程序为什么不抖动处理......

ayb_ice 发表于 2007-8-3 15:26 | 显示全部楼层

随便说说

看你的程序还要调用多次才能完成扫键功能...
简直太烂了....
费时又费代码...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

522

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部