在使用RTC外設時,我們常常會接觸 BCD碼的概念,同時魚鷹在介紹 USB 協議版本時也說了 BCD 碼,那么什么是 BCD 碼?
BCD 碼分為多種,今天魚鷹介紹最常用的 8421 BCD碼。
假如我們需要設置 RTC時鐘的秒值為 45 秒,因為一般芯片會使用 BCD碼進行存儲,所以我們需要存儲到芯片寄存器的值就是 0x45,注意這是十六進制表示,如果你寫入寄存器時用十進制表示,那么就是 69。代碼表示如下:
不管你使用哪種方式,最終寫入的二進制都是一樣的,沒有任何區別。不過因為是 BCD碼格式,當寫入的值為立即數時,建議使用十六進制,這樣看起來更直觀一些。
從這個例子中我們其實也可以看出一點規律,那就是所謂的 BCD 碼就是把十六進制的寫法直接認為是十進制的值。
實際上也確實如此。
BCD 碼中,使用4個位(二進制位)來表示一個十進制的值,范圍 0~9。
也就是說,本來十六進制 4 個位可以表示0~15,但因為十進制的范圍是 0~9,所以這四個位的范圍也因此被限制住了。
同時在一個字節中,高四位代表十進制的十位,低四位代表十進制的個位。
了解這一點,你就知道該如何把十進制轉化成BCD碼的形式進行存儲,又該如何將 BCD碼轉化為十進制了。
還是以存儲秒寄存器(BCD碼存儲)為例:
通過以上兩個宏,我們就可以在0 ~ 99 范圍內隨意轉化,當需要更大范圍時,理解原理,修改起來也不就是那么麻煩了。
編輯:lyn
-
寄存器
+關注
關注
31文章
5412瀏覽量
123110 -
RTC
+關注
關注
2文章
605瀏覽量
68209 -
BCD碼
+關注
關注
1文章
52瀏覽量
18613
原文標題:啥是 BDC 碼?
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Aigtek:電壓放大器的實驗技巧與使用方法介紹

Jtti:常用的網絡質量監控方法有哪些
Kali Linux常用工具介紹
ASCII碼在編程中的應用實例
使用MSPM0 MCU為步進電機和有刷直流(BDC)電機實現優化的H橋驅動器控制

生產線用條碼讀碼器介紹

新大陸掃碼器哪款能夠識別DPM碼?新大陸二維碼掃碼器介紹

電磁仿真軟件有哪些常用的方法
步進電機撥碼開關怎樣設置最合理?

評論