打印

单片机字符搞蒙了求解答,谢谢了

[复制链接]
1182|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baochen123456|  楼主 | 2017-3-27 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初学单片机,求帮忙解答小弟的疑问,谢谢了。
        int  temp = 0;
        uchar tmh, tml;
        Ds18b20ChangTemp();               
        Ds18b20ReadTempCom();                       
        tml = Ds18b20ReadByte();        //读取低八位
        tmh = Ds18b20ReadByte();        //读取高八位       
        temp = tmh;
        temp <<= 8;                          //向左移八位
        temp |= tml;
        return temp;

我把第一行的int  改成char了,不说int是16位的,char是八位的吗?为什么char还可以装下16位的?我用单片机跑程序没有问题。

相关帖子

沙发
xtajmhfhn| | 2017-3-27 09:54 | 只看该作者
如果把int类型修改成char类型,temp <<= 8;//向左移八位,那temp变量的值为0,最后temp变量值等于tml。之所以程序跑起来正常,应该和你现在室内的温度有关系,你现在室内的温度应该不超度20度是不是?

使用特权

评论回复
板凳
mcu5i51| | 2017-3-27 10:23 | 只看该作者
因为temp是int的

使用特权

评论回复
地板
baochen123456|  楼主 | 2017-3-27 10:26 | 只看该作者
xtajmhfhn 发表于 2017-3-27 09:54
如果把int类型修改成char类型,temp

您好谢谢了,温度可以跑过20度,但是你的回答确实给我了一个思路,谢谢了

使用特权

评论回复
5
baochen123456|  楼主 | 2017-3-27 10:29 | 只看该作者

int16这个我清楚,但是我把他改成了char,char 是8的,谢谢你的回答,我现在在考虑,一楼的说法,我觉得他说的有道理

使用特权

评论回复
6
xtajmhfhn| | 2017-3-27 10:33 | 只看该作者
@baochen123456 ,拿杯开水显示温度应该就不正常了!

使用特权

评论回复
7
baochen123456|  楼主 | 2017-3-27 10:37 | 只看该作者
xtajmhfhn 发表于 2017-3-27 10:33
@baochen123456 ,拿杯开水显示温度应该就不正常了!

是的,我刚才把高把位还有移位都给注释掉了,和之前一样,说明高八位暂时没有用到,谢谢您的解答,麻烦了。

使用特权

评论回复
8
@若水| | 2017-3-27 13:54 | 只看该作者
学习了

使用特权

评论回复
9
laocuo1142| | 2017-3-27 16:42 | 只看该作者
int变char相当于只取了低8位,因为你的温度比较低,所以没问题,超过FF就有问题了

使用特权

评论回复
10
山东电子小菜鸟| | 2017-3-27 23:36 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝