单片机if语句格式

我想问一下,我想但P1.0输入低电平时P2.0输出高电平,P1.0输入高电平时,P2.0输出低电平,
我定义
#include<reg52.h>
sbit P2^0=A1;
sbit P1^0=A2;
void main()

{
while(1)

if(A1=0)

A2=1;

esle;

A2=0;

}
程序能正常刻录,但单片机没反应,外围电路没问题,请指导程序有什么错

sbit P2^0=A1;
sbit P1^0=A2;
sbit 语句等号后边应该是地址。
sbit P2^0=A1;能通过编译码?本人试一下:test.C(6): error C141: syntax error near '^', pected '='
很遗憾,没通过。
如果改成 sbit A1=P2^0; sbit A2=P1^0;试试。注意分号,语句只能使用英文字符。
还有if(A1=0) 也不妥吧,比较应为== 即 if(A1==0)才好。

另外else 后边不应有分号。
修改后的代码如下:
#include<reg52.h>
sbit A1=P2^0; //sbit P2^0=A1;
sbit A2=P1^0;//sbit P1^0=A2;
void main()

{
while(1)
{
if(A1==0)
{
A2=1;
}
else//esle;//单词也不对。
{
A2=0;
}
}
}
仅供参考。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-30
#include<reg52.h>
sbit A1=P1^0;//定义反了
sbit A2=P2^0;//
void main()
{
    A1=0; //A1没给值.
    while(1)
    {//大括号
        if(A1==0)//双等号才是判断
            A2=1;
        esle;
        A2=0;
    }//
}

第2个回答  2013-09-30
#include<reg52.h>

sbit A1 = P2^0;

sbit A2 = P1^0;    //这里你定义反了,能编译通过么?

void main()


{

    while(1)
    {              //这里加个大括号,循环执行括号内的语句


        if(A1==0)


            A2=1;


        esle;


            A2=0;
    }


}

第3个回答  2013-09-30
网友“听不清啊”回答的对的,你格式少了一对括号,少了括号程序应该就在不断跑while(1)这个语句了所以没有反应,其实好多程序在上单片机前可以在keil里面自己调试下看看觉得哪块有问题可以一句一句的跑
第4个回答  2013-09-30
你试一下:
#include<reg52.h>
sbit P2^0=A1;
sbit P1^0=A2;
void main()

{
while(1)
{
if(A1=0)

A2=1;

esle

A2=0;
}
}
相似回答