MSP430串口学习中的疑惑

2019-03-24 10:28发布

..........
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,这个是如何实现的,如何算出来的呢,不太明白,肯请指教,具体说明下算法或实现的原理均可

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
natto
2019-03-24 17:17
MrKingMCU 发表于 2015-2-26 08:07
楼上回复的是正确的,你要明白1&0=0,0&0=0,就行了。最高位是0,所以不管什么数,运算出来高位全是0,这样就一定小于128。低7位全是1,得出的结果低7位数字不变。



噢~明白了,谢谢1楼2楼两位不过现在又有两个疑问,
1、这里要是到了127,再加会是怎么样了,这里又没有IF(VALUE>0X7F)后清零的语句啊,
2、为什么这里一定要这么写了,直接写成 if(value>127) {value=0;} 不更好么

一周热门 更多>

相关问题

    相关文章