..........
void main(void)
{
unsigned char value=0;
..........
while(1)
{
while (!(IFG1 & UTXIFG0));
TXBUF0 = value++;
value &= 0x7f; // 保证value的数值小于128
while (!(IFG1 & UTXIFG0));
TXBUF0 = '
';
Delays();
}
}
请问:在做MSP430单片机与PC的UART的实验中,MSP430单片机向PC写ASCII码的过程中,以上程序中的那个value&0x7f;就可以保证value的数值小于128,这个是如何实现的,如何算出来的呢,不太明白,肯请指教,具体说明下算法或实现的原理均可
此帖出自
小平头技术问答
value最高位恒为0,所以value最大为(0111 1111)B=(127)D,必然小于128
噢~明白了,谢谢1楼2楼两位不过现在又有两个疑问,
1、这里要是到了127,再加会是怎么样了,这里又没有IF(VALUE>0X7F)后清零的语句啊,
2、为什么这里一定要这么写了,直接写成 if(value>127) {value=0;} 不更好么
一周热门 更多>