单片机中if(temp=0xff)是错误的吗?

比如chartemp;voidmain(){temp=0xbf;while(1){P1=temp;temp=temp>>1;if(temp==0xff){temp=0xb... 比如
char temp;
void main()
{
temp=0xbf;
while(1)
{
P1=temp;
temp=temp>>1;
if(temp==0xff)
{
temp=0xbf;
}
}
}
这个函数中的if(temp=0xff)并不能使temp进入if语句
我调试过了,temp依次等于0xbf,0xdf,0xef,0xf7,oxfb,0xfd,0xfe,0xff 。。
而且if(P1==0xff)能让temp进入if,但是if(temp==0xff)就不好使 ,我想问的就是if(temp==0xff)错误的原因
展开
 我来答
hychyc_2008
2009-09-20 · TA获得超过9740个赞
知道大有可为答主
回答量:1099
采纳率:100%
帮助的人:673万
展开全部
我刚才在Keil里调试了一下,确实进不去。
改成if(temp^0xff==0) 就可以。
C51里把0X表示的16进制数默认为无符号数,而此题中TEMP是有符号数,所以总是不相等。
P1是按无符号数处理的。
南窗倚
2009-09-20 · TA获得超过467个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:0
展开全部
首先你要说明你的这个程序是要做什么.你没有说明,也不太好分析.
temp=0xbf;
while(1)
{
P1=temp; //P1 =10111111
temp=temp>>1; //temp=11011111
if(temp==0xff) //如果temp=111111
上面这句程序好像你是要等待P1成为0xff?那应该是
if(P1==0xff) 才对.如果你是if(temp==0xff)这个temp的值永远都不会变的.怎么能进入if语句呢?
{
temp=0xbf;//temp=10111111
}
}
好好的学一下C语言之后再编程.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式