找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求指导单片机程序思路 三个输入IO口,检测低电平

[复制链接]
跳转到指定楼层
楼主
各位好 我是小白
现在情况是这样的,
我有三个输入IO口,检测低电平
1.自动程序(电机自动正反转)
2.电机正转
3.电机饭庄

我在主函数while里边用了三个 if 语句
如果1是低电平  执行循环程序
如果2是低电平  执行电机正转
如果3是低电平  执行电机反转

但是我现在遇到的问题是点完1按钮后他只运行了一个循环就不动了 ,我的想法是要求他一直执行该循环语句  直到断电

我知道问题点出在哪里 但是就是不知道如何解决,请大家帮帮忙 提点一下

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

使用道具 举报

沙发
ID:1093559 发表于 2023-10-28 19:51 | 只看该作者
对了是32单片机
回复

使用道具 举报

板凳
ID:771630 发表于 2023-10-28 23:10 | 只看该作者
if(按钮x按下)
  记录状态为x

if(时间到了)
   switch(x)
     case 正转
     case 反转
     case if(不是反转)反转else正转
时间可以用定时器定时,或者while里面添加一个固定时间的循环,然后记录循环次数
回复

使用道具 举报

地板
ID:624769 发表于 2023-10-29 01:35 | 只看该作者
unsigned char status;

void main()
{
    while(1)
    {
         if(P10 == 0)  status =0;
         if(P11 == 0)  status =1;
         if(P12 == 0)  status =2;
         switch(status)
         {
                case 0:
                //xxxxxxxxxxxxxxxxxxxxx
                break;
                case 1:
                //xxxxxxxxxxxxxxxxxxxxx
                break;
                case 2:
                //xxxxxxxxxxxxxxxxxxxxx
                break;
                default:
                break;
         }
    }
}
回复

使用道具 举报

5#
ID:213173 发表于 2023-10-29 08:11 | 只看该作者
楼主如果用的是普通按钮而不是自锁按钮,就需要用一个变量记忆当前按钮操作状态,用这个变量控制后续运行状态。否则按钮松手就只能运行一个循环。当再次判断3个按钮时就都是高电平,电机就不能持续既定工作状态。另外还需要有退出机制,否则除了断电停不下来。
回复

使用道具 举报

6#
ID:1093559 发表于 2023-10-29 09:41 | 只看该作者
这是我昨天写的另一个(附件) 今天发现新的问题 在没有给B3输入低电平的情况下,循环程序开机就执行了,按下复位功能后,过一会又直接跳入xunhuan这段程序了

1.png (91.14 KB, 下载次数: 36)

1.png

2.png (28.07 KB, 下载次数: 31)

2.png
回复

使用道具 举报

7#
ID:1093559 发表于 2023-10-29 09:44 | 只看该作者
XLinliY.Zhang 发表于 2023-10-28 23:10
if(按钮x按下)
  记录状态为x

和时间没有关系的,就是跳入不了循环程序 后边我自己试着写另一个方法 虽然实验成功了  但是发现了另一个问题 头大了  您可以帮忙看看我下边回复了一个帖子 那是另一种问题
回复

使用道具 举报

8#
ID:195496 发表于 2023-10-29 11:32 | 只看该作者
这个不难,小问题,
回复

使用道具 举报

9#
ID:1093559 发表于 2023-10-30 16:09 | 只看该作者
wulin 发表于 2023-10-29 08:11
楼主如果用的是普通按钮而不是自锁按钮,就需要用一个变量记忆当前按钮操作状态,用这个变量控制后续运行状 ...

是的 是的 我现在想要停下就直接拔电源         您有办法推荐吗  
回复

使用道具 举报

10#
ID:1093559 发表于 2023-10-30 16:10 | 只看该作者
大漠落日 发表于 2023-10-29 11:32
这个不难,小问题,

有解决方案吗 可以给点建议吗
回复

使用道具 举报

11#
ID:123289 发表于 2023-11-1 16:43 | 只看该作者
1、做个10ms中断。
2、每次中断读入三个端口状态存入NEW,与变量LAST(是上次读入的数据,初化设置为全1)做比较。
2.1、NEW = LAST:什么也不做。
2.2、NEW <> LAST (有变化了),按照你的逻辑执行。(改变运行状态,正、反、停。)
3、令 LAST = NEW,为下次比较输入作依据。
更高级一点,加入按键防弹动:(这个不在此详细说明)
加个计次,5次按键组合的数据相同,认为是真实按键状态。低于5次不作数(弹动)。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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