今天,在写代码的时候,发现一个很容易犯的错误。
代码
void main()
{
unsigned int test;
test=0x02;
if(test&0x02==0x02)
{
test=0x02;
}
else
{
test=0x02;
}
}
红色的代码本是判断test变量中的第二位是否为1,但是汇编后发现,这句代码的汇编语言为
C:0x0011 EF MOV A,R7
C:0x0012 30E001 JNB 0xE0.0,C:0016
这明显是在判断test变量的最低位。
后来发现,这句代码必须改为
if((test&0x02)==0x02)
这样汇编的结果就对了