标题:
请教各位大神,进制转换问题
[打印本页]
作者:
稻草人008
时间:
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时间信息按此格式发给主机,需要怎么操作,请给位老师给个建议或思路。谢谢
作者:
Hephaestus
时间:
2023-12-4 17:30
这里面没有进制转换,只有移位操作。
作者:
gracture
时间:
2023-12-4 17:36
uint32_t FormatTimeData(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) {
uint32_t data = 0;
data |= ((year % 100) & 0x3F) << 26; // 年,使用6位,左移26位
data |= (month & 0x0F) << 22; // 月,使用4位,左移22位
data |= (day & 0x1F) << 17; // 日,使用5位,左移17位
data |= (hour & 0x1F) << 12; // 时,使用5位,左移12位
data |= (minute & 0x3F) << 6; // 分,使用6位,左移6位
data |= (second & 0x3F); // 秒,使用6位
return data;
}
复制代码
作者:
稻草人008
时间:
2023-12-4 20:31
gracture 发表于 2023-12-4 17:36
强!明天我在研究,不懂还有麻烦你
作者:
稻草人008
时间:
2023-12-4 20:32
Hephaestus 发表于 2023-12-4 17:30
这里面没有进制转换,只有移位操作。
谢谢!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1