第一段代码没有问题,发送一个字符,回馈一个字符:
Assembly codeif(rUTRSTAT0 & 0x1)
c = (unsigned char)rURXH0;
while(rUTRSTAT0 & 0x4 == 0);
rUTXH0 = c;
}
第二段代码就有问题了,同样一个意思,发送一个字符,不停地回馈这个字符:
Assembly codewhile(rUTRSTAT0 & 0x1 == 0);
c = (unsigned char)rURXH0;
while(rUTRSTAT0 & 0x4 == 0);
rUTXH0 = c;
或者这样也是一样的:
Assembly codeif(rUTRSTAT0 & 0x1 == 0) continue;
c = (unsigned char)rURXH0;
while(rUTRSTAT0 & 0x4 == 0);
rUTXH0 = c;
&操作符请用括号,看C语言语法
0x01==0永远是FALSE,因此永远也进不了循环
++
== 要比 &按位与的优先级要高
可参看C语言运算符的优先级
遇到不却动优先级的时候,我都是加括号()。