找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教各位大神,进制转换问题

[复制链接]
跳转到指定楼层
楼主
ID:761175 发表于 2023-12-4 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手请教下,我要用单片机RS485给主机模拟发送报文,其中时间信息,主机协议格式是原报文   39 C0 01 FB D7 64 54 01 00 00 01 14 00 00 00 E6 0E 40 DC 05 2B C7
报文协议  FB D7 64 54 年、月、日、时、分、秒-b5~b0:秒(111011),b11~b6:分(011111),b16~b12:时(01101),b21~b17:日(10010),b25~b22:月(0001),b26~b31:年(10101)(低在前)
低位在前计算 54 64 D7 FB        01010100011001001101011111111011
54 64 D7 FB                            010101     0001    10010     01101       011111      111011
计算显示时间                                 21           1           18           13              31                59我现在想把单片机的RTC时间信息按此格式发给主机,需要怎么操作,请给位老师给个建议或思路。谢谢





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-12-4 17:30 | 只看该作者
这里面没有进制转换,只有移位操作。
回复

使用道具 举报

板凳
ID:745085 发表于 2023-12-4 17:36 | 只看该作者
  1. uint32_t FormatTimeData(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) {
  2.     uint32_t data = 0;
  3.     data |= ((year % 100) & 0x3F) << 26;  // 年,使用6位,左移26位
  4.     data |= (month & 0x0F) << 22;          // 月,使用4位,左移22位
  5.     data |= (day & 0x1F) << 17;            // 日,使用5位,左移17位
  6.     data |= (hour & 0x1F) << 12;           // 时,使用5位,左移12位
  7.     data |= (minute & 0x3F) << 6;          // 分,使用6位,左移6位
  8.     data |= (second & 0x3F);               // 秒,使用6位

  9.     return data;
  10. }
复制代码
回复

使用道具 举报

地板
ID:761175 发表于 2023-12-4 20:31 来自手机 | 只看该作者
gracture 发表于 2023-12-4 17:36

强!明天我在研究,不懂还有麻烦你
回复

使用道具 举报

5#
ID:761175 发表于 2023-12-4 20:32 来自手机 | 只看该作者
Hephaestus 发表于 2023-12-4 17:30
这里面没有进制转换,只有移位操作。

谢谢!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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