找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1703|回复: 6
打印 上一主题 下一主题
收起左侧

C51

[复制链接]
跳转到指定楼层
楼主
这个TH0左移8次不就变成0000 0000 了吗是我哪里没理解对吗
求大佬们解答,感谢各位大神

51hei截图_20230123004200.png (330.33 KB, 下载次数: 45)

51hei截图_20230123004200.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:857072 发表于 2023-1-23 07:01 来自手机 | 只看该作者
你觉得它会不会是16位的,左移8位只是后8位变零了前面8位还在。
回复

使用道具 举报

板凳
ID:526108 发表于 2023-1-23 10:37 | 只看该作者
TH0是8位的,左移8位自然是0
回复

使用道具 举报

地板
ID:883242 发表于 2023-1-23 11:13 | 只看该作者
你已经声明返回值是unsigned int,那么处理返回值当然要用同样的数据类型来操作。
回复

使用道具 举报

5#
ID:857072 发表于 2023-1-23 13:31 来自手机 | 只看该作者
返回值是16位的,计算时的零时变量就是16位了。
回复

使用道具 举报

6#
ID:434018 发表于 2023-1-23 15:24 | 只看该作者
返回是16位,TH0 =Hi Byte TL0=Lo Byte
因为要返回16 bits ,所以將 TH0 左移8位 ,再OR(加上) TL0 返回
回复

使用道具 举报

7#
ID:1034262 发表于 2023-1-24 11:14 | 只看该作者
为了可靠,建议 return ((u16)TH0 << 8) | TL0;
虽然返回值是unsigned int但C51可能会在处理过程中直接操作8位而出错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表