搜索
bottom↓
123
返回列表 发新帖
楼主: raosibin

4*4按键,状态机思想:定时扫描+多键组合+连_发功能(具有实际应用意义)

  [复制链接]

出0入0汤圆

发表于 2013-1-4 00:06:44 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2013-1-4 00:56:26 来自手机 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-2-3 22:38:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-2-20 20:27:49 | 显示全部楼层
keep it for referance

出0入0汤圆

发表于 2013-2-28 19:06:39 | 显示全部楼层
个人更改的简单版矩阵键盘读键程序static BYTE key_state = 0,key_press;
        BYTE key_return = key_no,Key_Read_Data = 0;

   // 读按键I/O电平
        sw5 = 1;
        sw6 = 0;
        Nop();
        Nop();
        set_keyport();      //读IO口 矩阵排1
        Key_Read_Data = key_port.portbits;
        Key_Read_Data = Key_Read_Data<<4;
        key_press = Key_Read_Data&key_mask;
        //-------------------------------------       
        sw5 = 0;
        sw6 = 1;
        Nop();
        Nop();
        set_keyport();    //读IO口 矩阵排2
        Key_Read_Data  += key_port.portbits;
        key_press = Key_Read_Data&key_mask;       
        //********************************************
    switch (key_state)  
    {  
        case key_state_0:                    // 按键初始态  
            if (key_press != key_mask)  key_state = key_state_1;    // 键被按下,状态转换到键确认态   
            break;  

        case key_state_1:                    // 按键确认态
            if (key_press == (Key_Read_Data&key_mask))        // 与原电平比较(消抖处理)
            {
                                        if(key_press == 0b11111110)   key_return = key_1;   
                                        if(key_press == 0b11111101)   key_return = key_2;
                                        if(key_press == 0b11111011)   key_return = key_3;
                                        if(key_press == 0b11110111)   key_return = key_4;
   
                                        if(key_press == 0b11101111)   key_return = key_5;
                                        if(key_press == 0b11011111)   key_return = key_6;
                                        if(key_press == 0b10111111)   key_return = key_7;
                                        if(key_press == 0b01111111)   key_return = key_8;
                key_state = key_state_2;        // 状态转换到判键释放态  
            }  
            else  
                key_state = key_state_0;        // 按键已抬起,转换到按键初始态(消抖)  

            break;

        case key_state_2:  
            if (key_press == key_mask)  
                                key_state = key_state_3;
            break;

                case key_state_3:  
                        if(key_press == key_mask)  
                                key_state = key_state_0;
                        break;
    }  
    return key_return;

出0入0汤圆

发表于 2013-3-6 15:27:54 | 显示全部楼层
收下看看,谢谢楼主

出0入0汤圆

发表于 2013-4-11 16:24:14 | 显示全部楼层
mark!

出0入0汤圆

发表于 2013-4-13 10:43:28 | 显示全部楼层
挺不错的,刚接触状态机思想

出0入0汤圆

发表于 2013-4-13 11:11:50 来自手机 | 显示全部楼层
留名马可…

出0入0汤圆

发表于 2013-7-12 14:48:50 | 显示全部楼层
有用,记下

出0入0汤圆

发表于 2013-8-12 11:03:59 | 显示全部楼层
好东西   mark!

出0入0汤圆

发表于 2013-8-12 11:34:19 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2013-9-3 13:15:41 | 显示全部楼层
学习了……

出0入0汤圆

发表于 2013-9-3 13:21:32 | 显示全部楼层
来学习的!

出0入0汤圆

发表于 2013-9-5 16:24:54 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2013-9-10 10:11:11 | 显示全部楼层
先记号~,谢谢

出0入0汤圆

发表于 2013-9-10 13:46:51 | 显示全部楼层
好复杂,好强大啊~

出0入0汤圆

发表于 2013-9-25 16:50:19 | 显示全部楼层
老帖了  学习 一下                              

出0入0汤圆

发表于 2013-11-9 23:35:17 | 显示全部楼层
记号

出0入0汤圆

发表于 2013-11-10 14:07:55 | 显示全部楼层
mark mark mark

出0入0汤圆

发表于 2013-11-12 13:16:53 | 显示全部楼层
支持支持

出0入0汤圆

发表于 2014-3-20 16:06:26 | 显示全部楼层
标记学习一下

出0入0汤圆

发表于 2014-3-20 16:19:36 | 显示全部楼层
mark.....

出0入0汤圆

发表于 2014-7-31 15:41:08 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2014-8-27 21:38:58 | 显示全部楼层
mark,学习!

出0入0汤圆

发表于 2014-9-25 13:50:10 | 显示全部楼层
mark   ddddddd

出0入85汤圆

发表于 2014-9-25 13:54:56 | 显示全部楼层
学习~~~~~

出0入0汤圆

发表于 2014-11-10 16:45:01 | 显示全部楼层

出0入0汤圆

发表于 2014-11-11 10:38:57 | 显示全部楼层
mark~~~~~~

出0入0汤圆

发表于 2014-12-11 16:25:12 | 显示全部楼层
有没有在工程中应用过啊,实际效果咋样?

出0入0汤圆

发表于 2014-12-11 16:59:22 | 显示全部楼层
看来需要仔细研读下

出0入0汤圆

发表于 2018-11-3 10:10:17 | 显示全部楼层
马克,感谢分享!!!

出10入12汤圆

发表于 2018-11-3 11:18:02 | 显示全部楼层
这个有用!!!!!

出0入0汤圆

发表于 2019-1-6 11:00:49 | 显示全部楼层
学习了,谢谢!~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 19:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表