什么是bcd码数_什么是BCD码
在使用RTC外设时,我们经常会接触到BCD码的概念,而鱼鹰在介绍USB协议版本时也说过BCD码,那么什么是BCD码呢?BCD码有很多种。今天,鱼鹰推出最常用的8421 BCD码。
高四位低四位的十进制BCD码45十六进制45十进制69如果我们需要将RTC时钟的秒值设置为45秒,因为一般芯片都会使用BCD码进行存储,所以我们需要存储在芯片寄存器中的值是0x45。注意,这是用十六进制表示的。如果用十进制写寄存器,就是69。代码表示如下:
//假设REG_SEC是第二个寄存器REG _ SEC=0x45//十六进制写寄存器REG _ SEC=69//十进制写入寄存器不管用哪种方式,最后写入的二进制都是一样的,没有区别。但是因为是BCD码格式,所以写出来的值是立即数的时候,建议用十六进制,看起来更直观。从这个例子中,我们其实可以看出一点规律,就是所谓的BCD码直接把十六进制写成十进制值。事实上,的确如此。在BCD码中,4位(二进制位)用于表示十进制值,范围从0到9。也就是说,本来十六进制的四位可以代表0~15,但是因为十进制的范围是0~9,所以这四位的范围是有限的。同时,在一个字节中,高四位代表十位小数,低四位代表一位小数。知道了这些,你就知道如何将十进制转换成BCD码存储,以及如何将BCD码转换成十进制。还是以存储第二寄存器(BCD码存储)为例:
//BCD码到decimal #定义BCD _ TO _ DECIMAL(x)(((x)0xf 0)4)* 10((x)0x0f))//BCD码到decimal #定义DECIMAL _ TO _ BCD(x)(((x)///设置为45秒//读取第二个寄存器中的BCD码转换为十进制值,方便处理second=BCD _ TO _ DECIMAL(REG _ SEC);通过以上两个宏,我们可以在0 ~ 99的范围内任意转换。需要更大范围的时候,了解原理,修改就没那么麻烦了。审计彭静
推荐阅读
- alfa romeo车标含义?(阿尔法罗密欧车标)
- 华为鸿蒙os如何操作 华为鸿蒙os2.0系统官网报名入口
- 14款沃尔沃s60l二手车能买吗?(沃尔沃s60为什么贬值厉害)
- power mp3 wma converter(mp3格式转换器)软件介绍(power mp3 wma converter(mp3格式转换器))
- 42岁李贞贤宣布平安生女,网友:歌声击退山贼的那个
- 热火朝天的高铁WiFi迟迟未到(5G能否破局)
- 华为手机性价比最高是哪几款2022? 华为哪款手机性价比高最值得入手
- 进口捷豹全部车型报价?(捷豹报价大全价格表)
- 韩庚江铠同疑相恋,两人同游马尔代夫遭曝光
- 八卦格字帖软件介绍(八卦格字帖)
- 虚拟机 操作系统(操作系统整合:虚拟机管理程序的下一步)
- 比亚迪f6参数配置?(比亚迪f6)
- 奥沙利文获世锦冠军,奥沙利文得了几次世锦赛冠军
- Evel Knievel手游游戏介绍(Evel Knievel手游)
- 索尼wi1000x拆解(SONYNZW-X1000系列高清拆解图集)
- 4座硬顶敞篷跑车都有哪几款?(4门4座硬顶敞篷车推荐)
- 艺术体操团体全能决赛,艺术体操团体全能决赛中国
- 工人物语6通用修改器游戏介绍(工人物语6通用修改器)
- 简述电机换向器的工作原理图(简述电机换向器的工作原理)
- Atheros-AR5007EG无线网卡驱动软件介绍(Atheros-AR5007EG无线网卡驱动)