找回密码
 立即注册
查看: 767|回复: 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;
                }
        }
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:466
  • 最近打卡:2026-02-08 20:24:31
已绑定手机

23

主题

280

回帖

1854

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:747
  • 最近打卡:2026-03-25 00:01:08
已绑定手机

19

主题

3340

回帖

6935

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:254
  • 最近打卡:2026-03-24 10:16:43
已绑定手机

22

主题

628

回帖

2328

积分

金牌会员

积分
2328
发表于 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();
        }
}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:778
  • 最近打卡:2026-03-24 09:02:14
已绑定手机

16

主题

1401

回帖

4925

积分

论坛元老

积分
4925
发表于 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 | 显示全部楼层
谢谢各位,问题解决了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:383
  • 最近打卡:2026-01-04 11:54:51

5

主题

67

回帖

1263

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-25 01:20 , Processed in 0.108045 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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