找回密码
 立即注册
查看: 607|回复: 21

求助!关于独立按键检测的问题(问题解决了,但是疑问还在)

[复制链接]
  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
    发表于 2024-2-27 21:06:32 | 显示全部楼层 |阅读模式
    本帖最后由 ly1350 于 2024-2-28 09:35 编辑

    我用8H8K64U的P3.2口,连接按键到地,想通过程序读取P3.2口的状态,来控制变量f,我写的语句如下:


    void main()
    {
            uchar i=0,f=0;
            P3M0 &= ~0x04; P3M1 &= ~0x04;         //设置P32为标准io口
            EX0=0;
            P32=1;
            Timer1_Init();

            while(1)
            {


              if(P32==0)
              {        
    //                Delay10ms();               去掉这个语句,程序运行正常,加上后就死机;在uv4里调试,进入软件延时函数里的循环,电脑就死机。
                    if(P32==0)
                    {
                             f++;
                            while(!P32);
                        
                    }
              }
              if(f>=3) f=0;
    。。。。。。

    是按键检测的软件去抖思路有问题吗?请教大家,这个去抖该如何实现?
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
     楼主| 发表于 2024-2-27 21:08:59 | 显示全部楼层
    开始我怀疑是P32口触发了外部中断,已经将外部中断关了,问题依旧。
            EX0=0;

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9560

    回帖

    1万

    积分

    管理员

    积分
    14043
    发表于 2024-2-27 21:19:38 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    5 小时前
  • 签到天数: 175 天

    [LV.7]常住居民III

    26

    主题

    842

    回帖

    2138

    积分

    金牌会员

    积分
    2138
    发表于 2024-2-27 22:13:19 | 显示全部楼层
    不是你延时函数的问题?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
     楼主| 发表于 2024-2-27 22:27:02 | 显示全部楼层
    jwd 发表于 2024-2-27 22:13
    不是你延时函数的问题?

    不是。软件延时函数是stc工具生成的。我用了2个,一个是1ms的,用来刷新数码管,去残影;一个是10ms,用来软件除抖。
    不调用延时函数,运行是正常的,就是视频上那样;
    只要加上延时函数,程序就死了。
    我也换成调用1ms的试过,问题依旧。1ms在数码管刷新里也调用了,没问题。
    说明问题不在延时函数本身。不知道是不是这种去抖思路有问题。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
     楼主| 发表于 2024-2-27 22:54:40 | 显示全部楼层
    神农鼎 发表于 2024-2-27 21:19
    【分享】按键程序,大道至简,按键扫描 + 累计主循环次数去抖动/不占用定时器 - I/O读写及点灯,外部中断 ...

    这个我要好好学习一下。
    我的这种处理办法,以前学stc89c52时候,是没有问题的。不知道现在问题出在哪里。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
     楼主| 发表于 2024-2-27 23:37:49 | 显示全部楼层
    这个是stc的工具生成的软件延时函数
    void Delay10ms(void)        //@24.000MHz
    {
            unsigned char data i, j;

            i = 234;
            j = 115;
            do
            {
                    while (--j);
            } while (--i);
    }
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 157 天

    [LV.7]常住居民III

    18

    主题

    604

    回帖

    679

    积分

    高级会员

    打工人

    积分
    679
    发表于 2024-2-28 05:31:02 | 显示全部楼层
    代码能全发出来么?不全不好找问题啊
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 102 天

    [LV.6]常住居民II

    41

    主题

    1018

    回帖

    7001

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    7001
    QQ
    发表于 2024-2-28 08:01:17 | 显示全部楼层
    晚点我给你发一个好的按键检测函数
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    3 小时前
  • 签到天数: 91 天

    [LV.6]常住居民II

    14

    主题

    225

    回帖

    778

    积分

    高级会员

    积分
    778
     楼主| 发表于 2024-2-28 08:11:25 | 显示全部楼层
    昨日菜鸟 发表于 2024-2-28 08:05
    试验一一下延时正常吗

    确定是正常的
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-21 12:00 , Processed in 0.070301 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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