xxw123 发表于 2025-1-1 11:33:29

逻辑与控制求助



大佬们元旦快乐,有空请帮指点小白以下困难
1,三个逻辑与关系的控制开关如何写代码?if(Start==0 && NTC==0 &&LS==1)没作用
2,常闭温控开关,常开液位开关硬件接到IO口,以判断通断是否正确?





#include "ai8051u.h"
/*******
电机抽水控制,按启动钮开机抽水,
按停止钮停机抽水(水抽满时LS液位开关接通电机断电或NTC温控开关断开)
*******/
sbit Start = P0^0;    // 定义启动按钮,低电平触发有效
sbit Stop = P0^1;    // 定义停止按钮,低电平触发有效
sbit NTC = P0^2;    // 定义常闭温控开关
sbit LS = P0^3;    // 定义常开液位开关

void main(void)
{
        P0M0 = 0x00; P0M1 = 0x00; //设置为准双向
      P0=0x0F;   // 将P0第7位置低电平,
       while (1)
   {
         if(Start==0 && NTC==0 &&LS==1)   // 启动按下电机得电,但NTC,LS不起作用
         P07=1;
               if (Stop==0)// 停止按下电机失电
         P07=0;//P0^7编译报错,P07可以,跟sbit定义P0^7不一致      
   }
}



网老四 发表于 2025-1-1 13:39:47

各个信号状态汇总拼凑到一个变量中,再用switch语句按各个条件判断给出相应处理就行了

wlhet 发表于 2025-1-1 22:18:47

你的原理图P1.0--P1.3你代码却是 P0.0--P0.3 那肯定不对啊

xxw123 发表于 2025-1-1 23:18:29

wnagming 发表于 2025-1-1 13:09
一步一步来,三个开关都测试一下,看看是不是判断到了开关量

if(Start==0 && NTC==0 &&LS==1)这条指令相当于 if(Start==0 ),失去了另二个开关与的功能,
三个开关单独试是能检测到开关量的,但组合时只有Start开关起作用,不知你们大佬写这种功能是怎么写的

xxw123 发表于 2025-1-1 23:20:16

wlhet 发表于 2025-1-1 22:18
你的原理图P1.0--P1.3你代码却是 P0.0--P0.3 那肯定不对啊

谢谢提醒,原理图用的是8H1K08的

C_wolf 发表于 2025-1-1 23:24:49

<p>三个开关量都加上括号再与一下试试</p>
<p>if((Start==0) &amp;&amp;( NTC==0 )&amp;&amp;(LS==1))</p>

xxw123 发表于 2025-1-1 23:24:54

网老四 发表于 2025-1-1 13:39
各个信号状态汇总拼凑到一个变量中,再用switch语句按各个条件判断给出相应处理就行了 ...

大佬,swhitch 我还不会用这种组合功能的,有类似例程请转告下,谢谢

jxdaya123 发表于 2025-1-1 23:30:09

按键接的P1口,设置P0口为准双向不对。应该设置P1口为准双向

xxw123 发表于 2025-1-1 23:31:21

13512240649 发表于 2025-1-1 23:24
三个开关量都加上括号再与一下试试
if((Start==0) &amp;&amp;( NTC==0 )&amp;&amp;(LS==1))
...

这种写法可能真的不一样,太感谢了,我明天去试下,今下午在网上看到这种组合功能可能要结合中断才稳定

C_wolf 发表于 2025-1-1 23:35:59

xxw123 发表于 2025-1-1 23:31
这种写法可能真的不一样,太感谢了,我明天去试下,今下午在网上看到这种组合功能可能要结合中断才稳定
...

先把逻辑关系搞定,再考虑提高稳定性吧
页: [1] 2
查看完整版本: 逻辑与控制求助