xxw123 发表于 2025-1-1 23:40:32

jxdaya123 发表于 2025-1-1 23:30
按键接的P1口,设置P0口为准双向不对。应该设置P1口为准双向

谢谢提醒

wlhet 发表于 2025-1-2 08:40:43

xxw123 发表于 2025-1-1 23:20
谢谢提醒,原理图用的是8H1K08的

不带这样吧,原理图与实际使用GPIO都是错的....建议别这样会误导

Lkck8210 发表于 2025-1-2 14:51:22

楼主代码弄错了液位开关和NTC的作用
以下代码是根据楼主提供的源代码修改

#include "ai8051u.h"
/*******
电机抽水控制,按启动钮开机抽水,
按停止钮停机抽水(水抽满时LS液位开关接通电机断电或NTC温控开关断开)
*******/
sbit Start = P0^0;    // 定义启动按钮,低电平触发有效
sbit Stop = P0^1;    // 定义停止按钮,低电平触发有效
sbit NTC = P0^2;    // 定义常闭温控开关接地
sbit LS = P0^3;    // 定义常开液位开关接地
sbit Motor = P0^7;
void main(void)
{
      P0M0 = 0x00;
      P0M1 = 0x00; //设置为准双向
      Motor = 0;   // 将P0第7位置低电平,
      while (1)
      {
                if (Stop==0 || LS==0 || NTC==1)// 停止按下/NTC断开/LS接通=电机失电
                        Motor=0;               
                else if(Start==0)   // 启动按下电机得电
                        Motor=1;
      }
}

xxw123 发表于 2025-1-2 18:48:24

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

今天重新试了以前的代码可以正常编译,你这三个括号的也可以,后来查了代码发现是
P1=0x0F初值给错了,应为P1=0x3F

if((P12&&P14==0)&&(P15==1))NG
if((P12==0)&&(P14==0)&&(P15==1)) OK
if(P12==0&&P14==0&P15==1)   OK

xxw123 发表于 2025-1-2 18:50:29

wlhet 发表于 2025-1-2 08:40
不带这样吧,原理图与实际使用GPIO都是错的....建议别这样会误导

不好意思,对不起

xxw123 发表于 2025-1-2 19:08:43

Lkck8210 发表于 2025-1-2 14:51
楼主代码弄错了液位开关和NTC的作用
以下代码是根据楼主提供的源代码修改



非常感谢您辛苦的修改代码,
if (Stop==0 || LS==0 || NTC==1)您这种是或关系吧,明天我好好学习下,还有您的逻辑思维也是我以前的是相反的,真心感谢,明天测试后再向您汇报结果

xxw123 发表于 2025-1-2 19:11:07

wnagming 发表于 2025-1-2 07:56
这样写没问题啊

是的,是我初值给错了,今天15楼的LkCK大佬指点了,用变量名,就不会搞错了,谢谢您

xxw123 发表于 2025-1-4 00:04:23

Lkck8210 发表于 2025-1-2 14:51
楼主代码弄错了液位开关和NTC的作用
以下代码是根据楼主提供的源代码修改



大佬,非常感谢您的指点,我以前的逻辑是错的,用您这个或逻辑才正确,谢谢

欢迎哈哈哈3 发表于 2025-1-4 09:00:02

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

挺细心的{:qiang:}
页: 1 [2]
查看完整版本: 逻辑与控制求助