按键接的P1口,设置P0口为准双向不对。应该设置P1口为准双向
谢谢提醒 xxw123 发表于 2025-1-1 23:20
谢谢提醒,原理图用的是8H1K08的
不带这样吧,原理图与实际使用GPIO都是错的....建议别这样会误导 楼主代码弄错了液位开关和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;
}
} 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 wlhet 发表于 2025-1-2 08:40
不带这样吧,原理图与实际使用GPIO都是错的....建议别这样会误导
不好意思,对不起 Lkck8210 发表于 2025-1-2 14:51
楼主代码弄错了液位开关和NTC的作用
以下代码是根据楼主提供的源代码修改
非常感谢您辛苦的修改代码,
if (Stop==0 || LS==0 || NTC==1)您这种是或关系吧,明天我好好学习下,还有您的逻辑思维也是我以前的是相反的,真心感谢,明天测试后再向您汇报结果 wnagming 发表于 2025-1-2 07:56
这样写没问题啊
是的,是我初值给错了,今天15楼的LkCK大佬指点了,用变量名,就不会搞错了,谢谢您 Lkck8210 发表于 2025-1-2 14:51
楼主代码弄错了液位开关和NTC的作用
以下代码是根据楼主提供的源代码修改
大佬,非常感谢您的指点,我以前的逻辑是错的,用您这个或逻辑才正确,谢谢 wlhet 发表于 2025-1-1 22:18
你的原理图P1.0--P1.3你代码却是 P0.0--P0.3 那肯定不对啊
挺细心的{:qiang:}
页:
1
[2]