找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 1799 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-10-28 19:51

正文摘要:

各位好 我是小白 现在情况是这样的, 我有三个输入IO口,检测低电平 1.自动程序(电机自动正反转) 2.电机正转 3.电机饭庄 我在主函数while里边用了三个 if 语句 如果1是低电平  执行循环程序 ...

回复

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次不作数(弹动)。
ID:1093559 发表于 2023-10-30 16:10
大漠落日 发表于 2023-10-29 11:32
这个不难,小问题,

有解决方案吗 可以给点建议吗
ID:1093559 发表于 2023-10-30 16:09
wulin 发表于 2023-10-29 08:11
楼主如果用的是普通按钮而不是自锁按钮,就需要用一个变量记忆当前按钮操作状态,用这个变量控制后续运行状 ...

是的 是的 我现在想要停下就直接拔电源         您有办法推荐吗  
ID:195496 发表于 2023-10-29 11:32
这个不难,小问题,
ID:1093559 发表于 2023-10-29 09:44
XLinliY.Zhang 发表于 2023-10-28 23:10
if(按钮x按下)
  记录状态为x

和时间没有关系的,就是跳入不了循环程序 后边我自己试着写另一个方法 虽然实验成功了  但是发现了另一个问题 头大了  您可以帮忙看看我下边回复了一个帖子 那是另一种问题
ID:213173 发表于 2023-10-29 08:11
楼主如果用的是普通按钮而不是自锁按钮,就需要用一个变量记忆当前按钮操作状态,用这个变量控制后续运行状态。否则按钮松手就只能运行一个循环。当再次判断3个按钮时就都是高电平,电机就不能持续既定工作状态。另外还需要有退出机制,否则除了断电停不下来。
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;
         }
    }
}
ID:771630 发表于 2023-10-28 23:10
if(按钮x按下)
  记录状态为x

if(时间到了)
   switch(x)
     case 正转
     case 反转
     case if(不是反转)反转else正转
时间可以用定时器定时,或者while里面添加一个固定时间的循环,然后记录循环次数
ID:1093559 发表于 2023-10-28 19:51
对了是32单片机

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

Powered by 单片机教程网

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