十进制转8421BCD码详解

tech2025-10-15  2

如题 思路来源:将一个时间数晚上23点18分(2318)转化为8421BCD码写入到设备中。 那自然想得到2318的转换码是:0010 0011 0001 1000; 那采用最原始的按位解析得到各个数字即可。

uint16 GetWordValue_Dec2BCD(uint16 u16Value) { uint16 u16ValueTotal = 0; uint16 Word1, Word2, Word3, Word4; Word1 = ((u16Value / 1000) <<12) & 0xF000; Word2 = ((u16Value / 100 %10) <<8) & 0x0F00; Word3 = ((u16Value / 10 %10) <<4) & 0x00F0; Word4 = (u16Value %10) & 0x000F; ValueTotal = (Word1 | Word2 | Word3 | Word4); printf("BCD = %x", u16ValueTotal); return u16ValueTotal ; }
最新回复(0)