跳到主要内容

BCD 编码 (bcd)

BCD(Binary-Coded Decimal)与二进制之间的转换接口,用于 RTC 芯片等使用 BCD 编码的硬件交互。

原理

BCD 编码用 4 位二进制表示 1 位十进制数。一个字节的高 4 位表示十位,低 4 位表示个位。

十进制 25 → BCD 0x25 (0010 0101)
十进制 59 → BCD 0x59 (0101 1001)
十进制二进制BCD
00x000x00
120x0C0x12
590x3B0x59
990x630x99

注意:BCD 值 0x59 不等于十进制 89,它表示十进制 59

API

unsigned char bcd2bin(unsigned char x);

BCD 转二进制。例如 0x5959

unsigned char bin2bcd(unsigned char x);

二进制转 BCD。例如 590x59

两个函数均为 static inline,零额外调用开销。输入范围 0~99。

使用示例

读取 RTC 时间

unsigned char bcd_sec = rtc_read_sec();
unsigned char sec = bcd2bin(bcd_sec);

写入 RTC 时间

unsigned char sec = 30;
rtc_write_sec(bin2bcd(sec));