求单片机高手解答!

求单片机高手解答!为什么我把程序这样写会导致开发板的LED灯全亮,且没有正常情况下那么亮?

你先定义一个变量a,但是没给变量a赋值啊,所以默认是0,然后单片机直接运行主程序main函数,所以直接执行第一行代码,即把a的值给P1,那么P1=a=0;所以全亮了,然后再把0x55的赋给了a,但是这时候程序早就输出了啊,而且你没有写while循环,所以程序只做了一遍,你的赋值没软用,应该写在第一行,两个调换一下,即可,或者直接在定义变量的时候直接赋值就好了嘛。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-03
一个变量如果没有初始化,一般为0,程序这样写,相当于初始时,P1=0;所以LED全亮。追问

最下一行就是初始值啊!

本回答被网友采纳
第2个回答  2017-10-03
在elseif(GdTempPowerdBm>(-70)&&GdTempPowerdBm<0)里面已经限定了GdTempPowerdBm的值是-70到0之间,所以不会溢出。执行GdTempPowerdBm*100时数据保存在堆中。就是临时变量中,具体看汇编代码即可。
第3个回答  2017-10-04
因为没有循环,单片机程序要有循环才可以,不过要看你的LED接在那个端口,底下是假设接在P1口
main()
{
a=0x55; // 赋值
P1=a; // 对P1口赋值
while(1); // 等待在此
}
第4个回答  推荐于2017-11-25
你初始化参数与赋值给P1口顺序弄反了,按如下写法就对了。
main()
{
a=0x55;
P1=a;
while(1);
}本回答被网友采纳
相似回答