微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 写的第一个程序,达不到目的,求老师指点

写的第一个程序,达不到目的,求老师指点

时间:10-02 整理:3721RD 点击:
单片机:stc89c52
编译器: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语言,否则后患无穷。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top