代码片段如下:
unsigned int data;
if(data<38)
{
data= 38-data;
data|= 0x80; //最高位增为符号位,温度范围不会超过128度
}
else
{
data= data-38; //(0~149)-38 = -38~+111 °C
}
if (data&0x80 != 0) //温度符号位检测
{
rs232_SendAnswer('-');
data &= ~0x80; //还原为正数
}
......
可我接受到的数据却是 262626262626-27-27-27-27-27-272828282828282828282828282828-29-29-29
为什么奇数会出现负号???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
的确,对于内存较小的单片机来说,能用char就尽量用char。
如果单片机是16位的,也许用int会处理得更快。
一周热门 更多>