找回密码
 立即注册
查看: 191|回复: 6

一个小问题 | 已解决

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:75
  • 最近打卡:2025-01-05 14:16:57

30

主题

132

回帖

214

积分

中级会员

积分
214
发表于 2024-10-30 13:56:34 | 显示全部楼层 |阅读模式
用STC32G12K128的试验箱写程序,按下再松开P33,P60亮,按下再松开P33,P60灭,一直循环下去,但是最后结果有些奇怪,有知道的吗


#include <STC32G.H>
void main()
{
        unsigned int a=1,b=1;
        P3M0=0X00;
        P3M1=0X00;
        P4M0=0X00;
        P4M1=0X00;
        P6M0=0X00;
        P6M1=0X00;
        P40=0;
        while(1)
        {
                if(P33==0&&P60==1)
                {
                        a=2;
                }
                if(P33==1&&a==2)
                {
                        P60=0;
                }
                if(P33==0&&P60==0)
                {
                        a=3;
                }
                if(P33==1&&a==3)
                {
                        P60=1;
                }
        }
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

907

积分

高级会员

积分
907
发表于 2024-10-30 14:11:06 来自手机 | 显示全部楼层
试一下
if(!P33)
{
  10ms延时;//消抖
  if(!P33)
  {
    while(!P33);
    P60=!P60;
  }
}
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-10-30 14:14:30 来自手机 | 显示全部楼层
这个ai写都可以实现的。不用怎么复杂
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-10-30 14:29:30 | 显示全部楼层
#include <STC32G.H>
void main()
{
        unsigned int a=0;
        P3M0=0X00;
        P3M1=0X00;
        P4M0=0X00;
        P4M1=0X00;
        P6M0=0X00;
        P6M1=0X00;
        P40=0;
        while(1)
        {
                        if (a == 0)
                        {
                                if (!P33)
                                {
                                        a = 1;
                                }
                        }
                        else
                        if (a == 1)
                        {
                                if (P33)
                                {
                                        a = 0;
                                        P60 = !P60;
                                }
                        }
                        else
                        {
                                a = 0;
                        }
                       
                        Delay10ms();
        }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-10-30 14:30:59 | 显示全部楼层
先不说讨论写的逻辑是否最优。

结果没有达到预期,应该是while(1)中没有加延迟进行防抖处理,按下、抬起的“毛刺”被正常处理了,可以加10ms左右的延迟效果应该有改善。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:75
  • 最近打卡:2025-01-05 14:16:57

30

主题

132

回帖

214

积分

中级会员

积分
214
发表于 2024-10-30 15:00:29 | 显示全部楼层
谢谢各位,问题解决了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:176
  • 最近打卡:2025-05-03 15:03:06

5

主题

69

回帖

351

积分

中级会员

积分
351
发表于 2024-11-4 10:44:41 | 显示全部楼层
没记错的话,普通的按键都是要加消抖的
截图202411041044407813.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 15:09 , Processed in 0.170879 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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