在使用RTC外設(shè)時(shí),我們常常會(huì)接觸 BCD碼的概念,同時(shí)魚鷹在介紹 USB 協(xié)議版本時(shí)也說了 BCD 碼,那么什么是 BCD 碼?
BCD 碼分為多種,今天魚鷹介紹最常用的 8421 BCD碼。
假如我們需要設(shè)置 RTC時(shí)鐘的秒值為 45 秒,因?yàn)橐话阈酒瑫?huì)使用 BCD碼進(jìn)行存儲(chǔ),所以我們需要存儲(chǔ)到芯片寄存器的值就是 0x45,注意這是十六進(jìn)制表示,如果你寫入寄存器時(shí)用十進(jìn)制表示,那么就是 69。代碼表示如下:
不管你使用哪種方式,最終寫入的二進(jìn)制都是一樣的,沒有任何區(qū)別。不過因?yàn)槭?BCD碼格式,當(dāng)寫入的值為立即數(shù)時(shí),建議使用十六進(jìn)制,這樣看起來更直觀一些。
從這個(gè)例子中我們其實(shí)也可以看出一點(diǎn)規(guī)律,那就是所謂的 BCD 碼就是把十六進(jìn)制的寫法直接認(rèn)為是十進(jìn)制的值。
實(shí)際上也確實(shí)如此。
BCD 碼中,使用4個(gè)位(二進(jìn)制位)來表示一個(gè)十進(jìn)制的值,范圍 0~9。
也就是說,本來十六進(jìn)制 4 個(gè)位可以表示0~15,但因?yàn)槭M(jìn)制的范圍是 0~9,所以這四個(gè)位的范圍也因此被限制住了。
同時(shí)在一個(gè)字節(jié)中,高四位代表十進(jìn)制的十位,低四位代表十進(jìn)制的個(gè)位。
了解這一點(diǎn),你就知道該如何把十進(jìn)制轉(zhuǎn)化成BCD碼的形式進(jìn)行存儲(chǔ),又該如何將 BCD碼轉(zhuǎn)化為十進(jìn)制了。
還是以存儲(chǔ)秒寄存器(BCD碼存儲(chǔ))為例:
通過以上兩個(gè)宏,我們就可以在0 ~ 99 范圍內(nèi)隨意轉(zhuǎn)化,當(dāng)需要更大范圍時(shí),理解原理,修改起來也不就是那么麻煩了。
編輯:lyn
-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129991 -
RTC
+關(guān)注
關(guān)注
2文章
653瀏覽量
71813 -
BCD碼
+關(guān)注
關(guān)注
1文章
52瀏覽量
19089
原文標(biāo)題:啥是 BDC 碼?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
掃碼模組介紹
掃鐳射雕碼用什么掃碼槍?
關(guān)于系統(tǒng)鏈接腳本的介紹
常用硬件加速的方法
使用jQuery的常用方法與返回值分析
shell基本介紹及常用命令之shell基本介紹
條碼掃碼設(shè)備的使用方法
什么是PDA掃碼出入庫系統(tǒng)?功能介紹與真實(shí)應(yīng)用體驗(yàn)
掃碼模塊廠家怎么選?二維碼掃碼模組詳解
工業(yè)物聯(lián)網(wǎng)和自動(dòng)化領(lǐng)域 Node-RED 最常用的 10 大節(jié)點(diǎn),你用過幾個(gè)?
關(guān)于BDC碼的介紹與最常用的方法
評(píng)論