找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2300|回复: 14
打印 上一主题 下一主题
收起左侧

单片机按键程序,弄了几天了,实在搞不出来才问的

[复制链接]
跳转到指定楼层
楼主
ID:777834 发表于 2020-9-30 22:47 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,帮忙写个简单的按键程序,我弄了几天了,实在搞不出来才问的,新手,哈哈。谢谢啦。
要求是这样的:S1表示检测开关,S2表示按键开关。当S1检测到0时,S2可以按3次,按了3次之后如果S1还检测到0,那S2还是可以再按3下。如果S1不为0了,那么S2就不能按了,只有S1再次为0,S2才能再按3下...
大家帮帮忙,谢谢啦~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:777834 发表于 2020-9-30 22:51 来自手机 | 只看该作者
版主,网络问题,把前面一样的帖子删啦,谢谢
回复

使用道具 举报

板凳
ID:777834 发表于 2020-9-30 23:00 来自手机 | 只看该作者
版主,网络问题,重发帖了几遍,把前边的帖子删啦,谢谢
回复

使用道具 举报

地板
ID:332444 发表于 2020-10-1 05:24 | 只看该作者
while(!s1)if(!s2)...试看
回复

使用道具 举报

5#
ID:777834 发表于 2020-10-1 12:36 来自手机 | 只看该作者
xianfajushi 发表于 2020-10-1 05:24
while(!s1)if(!s2)...试看

您好,不能用while
回复

使用道具 举报

6#
ID:825088 发表于 2020-10-1 13:14 | 只看该作者
令s2按得计数为i.while(s1==0),if(i<6),i++(响应)else(不响应)
回复

使用道具 举报

7#
ID:777834 发表于 2020-10-1 14:29 来自手机 | 只看该作者
大家帮帮忙咯
回复

使用道具 举报

8#
ID:777834 发表于 2020-10-1 15:03 来自手机 | 只看该作者
SaPmon 发表于 2020-10-1 13:14
令s2按得计数为i.while(s1==0),if(i

可以帮写出来一下吗,谢谢啦
回复

使用道具 举报

9#
ID:777834 发表于 2020-10-1 16:40 来自手机 | 只看该作者
大家路过帮帮啦
回复

使用道具 举报

10#
ID:160500 发表于 2020-10-1 16:57 | 只看该作者
  int S2_AN = 0;//按下S2次数
  while (1)
  {
    if (S1 == 0)
    {
      S2_AN = 0;
      while (S2_AN < 3) //按下3次退出
      {
        if (S2 == 0)  S2_AN++;
      }
    }
  }
回复

使用道具 举报

11#
ID:777834 发表于 2020-10-1 23:39 来自手机 | 只看该作者
liuzx66 发表于 2020-10-1 16:57
int S2_AN = 0;//按下S2次数
  while (1)
  {

您好,试了下,不行哟,可以不用while吗?程序会卡住
回复

使用道具 举报

12#
ID:213173 发表于 2020-10-2 07:10 | 只看该作者
本帖最后由 wulin 于 2020-10-2 07:37 编辑

        基本逻辑关系

        unsigned char num=0;
        bit sign=0;

        if(S1==0)
        {
                sign=1;
        }
        if(S2==0 && sign==1 && num<3)
        {
                num++;
                if(num==1)
                        //任务1
                if(num==2)
                        //任务2
                if(num>=3)
                {
                        //任务3
                        sign=0;       
                        num=0;
                }
                while(!S2);//S2松手
        }
回复

使用道具 举报

13#
ID:149799 发表于 2020-10-2 08:13 | 只看该作者
把S2_AN改为S2-AN试试,有师傅说可以。
回复

使用道具 举报

14#
ID:584814 发表于 2020-10-2 09:53 | 只看该作者
按表述的逻辑分析,S1=0时S2可按3下,再次测S1=0时S2还可以按3下,只有S1非0时S2不可按......
所以就是S1非0时S2不事按,其他都是脑筋急转弯
你甚至可以写成S1=0时S2可按5下,再次测S1=0时S2还可以按1下,再次测S1=0时S2还可以按9下,........
回复

使用道具 举报

15#
ID:160500 发表于 2020-10-2 11:53 | 只看该作者
jianuli 发表于 2020-10-1 23:39
您好,试了下,不行哟,可以不用while吗?程序会卡住

你的按键处理程序没有处理好,这个只是给你参考,是不能直接拿来用的。要根据你的实际情况改一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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