写的第一个程序,达不到目的,求老师指点
编译器:keil
目的是 用P1_0 ,P1_1口做输入,P1_2,P1_3口做输出 控制玩具电机开关 (不是步进电机)
设计的逻辑为,当P1_0有输入电压(输入高电平)时,P1_2输出高电平。否则P1_2输出低电平。
当P1_1有输入电压(输入高电平)时,P1_,3输出高电平。否则P1_3输出低电平。
程序如下:
#include <reg52.h>
char i;
sbit p1_0=P1^0;
sbit p1_1=P1^1;
sbit p1_2=P1^2;
sbit p1_3=P1^3;
main(void)
{
p1_0=0;//初始化IO口
p1_1=0;//初始化IO口
p1_2=0;//初始化IO口
p1_3=0;//初始化IO口
while(1)//循环开始
{
if(p1_0=1) p1_2=1;
if(p1_1=1) p1_3=1;
}
}
下载到单片机用LED测试了下,P1_2,P1_3根本不受控制。
程序部分我试过
if(p1_0=1);
p1_2=1;
if(p1_1=1);
p1_3=1;
也不行,所以请大侠指点。
你错在这里。
while(1)//循环开始
{
if(p1_0==1) p1_2=1;
if(p1_1==1) p1_3=1;
}
}
你C语言没学好,if语句中的条件错了。注意:“=”号是赋值号,“==”才是等号。
while(1)
{
if(p1_0==1) p1_2=1;
if(p1_0==0) p1_2=0;
if(p1_1==1) p1_3=1;
if(p1_1==0) p1_3=0;
}
}
按照楼上老师的指点,已经搞定,谢谢楼上。
while(1)
{
if(p1_0==1) p1_2=1;
else p1_2=0;
if(p1_1==1) p1_3=1;
else p1_3=0;
}
}
经过2楼指导,我感觉会了 我高兴了几天。
3楼写的语句,我烧进单片机测试也成功。
我就学else,过程中先是 感觉头发胀 然后感觉呼吸困难。最后终于得出了结论:
if(p1_0==1) p1_2=1;//如果括号里面的条件成立 那么p1_2=1
else p1_2=0; //如果括号里面的条件不成立 那么p1_2=0
对比: if(p1_0==1) p1_2=1;
else p1_2=0;
与
if(p1_0==1) p1_2=1;
if(p1_0==0) p1_2=0; 的区别,本来感觉懂了的!疑问却越来越多!看来要准确的概括区别,真不容易。
if()括号里面可不可以写多个条件。 可不可以写成这样: if(p1_0==1,p1_1==1) p1_2=1,p1_3=1;
else p1_2=0,p1_3=0;
另外我在初始化IO口的时候 我赋值: p1_0=2 KEIL也能顺利编译,可是我已经定义p1_0=P1^0,那么P1—0口会不会输出2呢!
先好好学学C语言,否则后患无穷。