找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机独立按键单用可以,两个一起用就不行了?

  [复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:624696 发表于 2020-4-6 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
独立按键单用可以,两个一起用就不行了???

我这代码是逻辑有问题吗???

独立按键默认接上拉电阻高电平,按下低电平

//全局变量
u8 start1=1;
u8 start2=1;



//按键检测函数
void keypros()
{
        while(k1==1)                         //开始正转
        {
                delay(1000);
                if(k1==1)
                {
                        start1=0;               
                }
                        delay(1000);
                while(!k1);//(不能要)
        }
        while(k2==1)                          //开始反转
        {
                delay(1000);
                if(k2==1)
                {
                        start2=0;               
                }
                        delay(1000);
                while(!k2);
        }
         
}

void main()
{
   P1=0X00;
        while(1)
        {
                keypros();
                if(start1==0)
                {
                         dianjizhengzhuan();  
                }
                if(start2==0)
                {
                         dianjifanzhuan();         
                }                        
        }               
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:562338 发表于 2020-4-6 21:35 | 只看该作者
//正反电机?
//全局变量
bit start1=1;
bit start2=1;  //0执行



//按键检测函数
void keypros()
{
        while(k1==1)                         //开始正转
        {
                delay(1000);
                if(k1==1)
                {
                        start2=1;                                start1=0;         
                }
                        delay(1000);
                while(!k1);//(不能要)
        }
        while(k2==1)                          //开始反转
        {
                delay(1000);
                if(k2==1)
                {
                        start1=1;
                        start2=0;                 
                }
                        delay(1000);
                while(!k2);
        }
         
}

回复

使用道具 举报

板凳
ID:624696 发表于 2020-4-7 10:14 | 只看该作者
汇源科技 发表于 2020-4-6 21:35
//正反电机?
//全局变量
bit start1=1;

是正反电机,
按你这样也不行啊。。。。。
回复

使用道具 举报

地板
ID:586438 发表于 2020-4-7 10:57 | 只看该作者
不能用两个while
回复

使用道具 举报

5#
ID:624696 发表于 2020-4-7 11:18 | 只看该作者

那这个按键的检测判断要怎样写啊,能稍微说一下不,感谢
回复

使用道具 举报

6#
ID:624696 发表于 2020-4-7 11:41 | 只看该作者

给个思路就行,感谢
回复

使用道具 举报

7#
ID:723934 发表于 2020-4-7 11:42 | 只看该作者
按下低电压‘干嘛不给低电平信号检测呢
回复

使用道具 举报

8#
ID:478073 发表于 2020-4-7 11:49 | 只看该作者
网上一大把的,为什么不用一下
回复

使用道具 举报

9#
ID:724138 发表于 2020-4-7 16:41 | 只看该作者
你这个是想按键按动一次变换一次状态,对吧
回复

使用道具 举报

10#
ID:722795 发表于 2020-4-7 17:51 | 只看该作者
TRX007 发表于 2020-4-7 11:18
那这个按键的检测判断要怎样写啊,能稍微说一下不,感谢

用if应该行吧
回复

使用道具 举报

11#
ID:697884 发表于 2020-4-8 16:34 | 只看该作者
没有明白你的描述,单按可以,是不是2个按键,单独按可以,2个按键同时按下就不行了。看代码应该只有K1是有作用的,K2应该没有作用吧。
回复

使用道具 举报

12#
ID:592807 发表于 2020-4-9 13:23 | 只看该作者
TRX007 发表于 2020-4-7 11:18
那这个按键的检测判断要怎样写啊,能稍微说一下不,感谢

用if和elseif(key1 == 1 && key2 == 0)
{start1 = 1;}
else if(key1 == 0 && key2 == 1)
{start2 = 1;}
else
{}




回复

使用道具 举报

13#
ID:718890 发表于 2020-4-9 14:55 | 只看该作者
我现在在做这个课题,可以用

while(q!=0xff)
  switch(q) //
{
    {case  :   break }
}
来做,
完全可以同时按两个按键实现功能的

回复

使用道具 举报

14#
ID:723626 发表于 2020-4-9 17:34 | 只看该作者
两个按键要同时起作用,就要同时判断。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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