找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机C语言 24位数字,如何依次左移给某个位?

[复制链接]
跳转到指定楼层
楼主
ID:980872 发表于 2021-11-16 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是C8051F330的单片机, 我现在有24位的数据(数据要可加可减,使用unsigned int,如unsigned long temp=0x001f2a3c,但高8位不需要),要依次把后24位(1f2a3c)发送给某个位(sdi),
我用的是_crol_(temp,1)的函数,但是这个函数貌似只是循环左移后八位的数,而<<貌似只能左移后16位的数,
请教大家,有没有什么办法,谢谢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:950257 发表于 2021-11-16 10:02 | 只看该作者
(temp & (1<<n)) 就是取出temp的每一位, n 就是你要取得第几位(可以使你说的0-23 就是24位数据)
回复

使用道具 举报

板凳
ID:397211 发表于 2021-11-16 10:20 | 只看该作者
这个问题我这几天正好弄过相似的,我是将这些每一位取出来放到数组里,然后通过数组就得到了想用的数
回复

使用道具 举报

地板
ID:824490 发表于 2021-11-16 10:46 | 只看该作者
用“_irol_”就能4字节32位环移了。就差一个字母
回复

使用道具 举报

5#
ID:980872 发表于 2021-11-16 11:36 | 只看该作者
用这个_lrol_,就可以对long进行操作了,谢谢
回复

使用道具 举报

6#
ID:123289 发表于 2021-11-18 15:07 | 只看该作者
把它分成四个部分,每个部分一个字节,传送时,最高字节不送就可以了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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