关于bcd码和十六进制数的区别
的有关信息介绍如下:在使用RTC外设时,我们常常会接触BCD码的概念,同时鱼鹰在介绍USB协议版本时也说了BCD码,那么什么是BCD码?
BCD码分为多种,今天鱼鹰介绍最常用的8421BCD码。
进制
高四位
低四位
BCD码
4
5
十六进制
4
5
十进制
6
9
假如我们需要设置RTC时钟的秒值为45秒,因为一般芯片会使用BCD码进行存才断身除远微储,所以我们需要存储到芯片360问答寄存器的值就是0x45围织证响用只采,注意这是十六进制表示,如果你写入寄存器时用十进制表示,那么就是69。
代码表示如下:
不管你使用哪种方式,最终写入的二进制都是一样的,没有任何区别。不过因为是BCD码格式,当写入的值为立即数时,建议使用十六进制,这样看起来更直观一些。
从这个例子中我们其实也可以看出一点规律,那就是所谓的BCD码就是把十六进制的写法直接认为是十进制的值。
实际上也确实如此。
BCD码中,使用4个位(二进制位)来表示一个十进制的值,范医觉调就接列台围0~9。
也就是说,本来十六进制4个位可以表示0~15,但因为十进制的范围是0~9,所以这四个位的范围也因此被限制住了。
同时在一个字节中,高四位代表十进制的十位,低四位代表十进制的个位。
了解这一点,你就知合上那欢白打镇补女缩道该如何把十进制转化阶量观班宜烟妒地成BCD码的形式进行批系低洲沿专存储,又该如何将BCD码转化为十进制了。
还是以存储秒寄存器(BCD码存储)为例:
通过以上两个宏,我们就可以在0~99范围内随意转化,当式很粒味酒因流议责高指需要更大范围时,理解原理,修拿改起来也不就是那么麻烦了。