PIC单片机数据处理遇到的问题

2020-02-06 10:15发布

代码片段如下:

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
为什么奇数会出现负号???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lcw_swust
1楼-- · 2020-02-07 07:48
PCBBOY1991 发表于 2015-5-12 18:04
那楼主定义成int型数据是不是不太合适呢?
char型数据不是也可以吧?

的确,对于内存较小的单片机来说,能用char就尽量用char。
如果单片机是16位的,也许用int会处理得更快。
PCBBOY1991
2楼-- · 2020-02-07 11:29
lcw_swust 发表于 2015-5-12 20:45
的确,对于内存较小的单片机来说,能用char就尽量用char。
如果单片机是16位的,也许用int会处理得更快。 ...


楼主没有提到用的PIC的多少位单片机,还是觉得楼主的程序好复杂,data的范围在0-149,完全可以用signed char型啊。
xiaohunnanzi
3楼-- · 2020-02-07 15:09
PCBBOY1991 发表于 2015-5-12 21:53
楼主没有提到用的PIC的多少位单片机,还是觉得楼主的程序好复杂,data的范围在0-149,完全可以用signed c ...

哦,我用8位的PIC,我改成unsigned char型了
jiangxingyuan
4楼-- · 2020-02-07 16:52
PCBBOY1991 发表于 2015-5-12 21:53
楼主没有提到用的PIC的多少位单片机,还是觉得楼主的程序好复杂,data的范围在0-149,完全可以用signed c ...

signed char 不是-127到 127 吗? 149怎么用? unsigned char才可以用吧。
PCBBOY1991
5楼-- · 2020-02-07 20:09
 精彩回答 2  元偷偷看……

一周热门 更多>