メディア
連載
» 2021年12月06日 10時00分 公開

BCD(2進化10進数)って何?Q&Aで学ぶマイコン講座(67)(3/3 ページ)

[STマイクロエレクトロニクス,EDN Japan]
前のページへ 1|2|3       

実際のBCDの使用例

 STマイクロエレクトロクス(以下、ST)の汎用32ビットマイコン「STM32F405シリーズ*2)」では、RTCでBCDが使用されています。

 RTCで使われている秒、分、時(12時間または24時間形式)、曜日、日、月、年を示すレジスタはBCDで表現されます。

 図2に、STM32F405シリーズのRTC時刻レジスタ(RTC_TR)の仕様をリファレンスマニュアル*3)から抜粋しました。

図2:STM32F405シリーズのRTCのBCDレジスタ[クリックで拡大]

 各ビットはAM/PM、時、分、秒を表します。時刻を表すビットは、ビット16からビット21の6ビットです。ビット16からビット19の4ビットが1の位を表し、ビット20からビット21が10の位を表します。時刻の場合、10の位は0から2までしかないので、2ビットで十分です。

 分を表すビットは、ビット8からビット14の7ビットです。ビット8からビット11の4ビットが1の位を表し、ビット12からビット14が10の位を表します。秒を表すビットは、ビット0からビット6の7ビットです。ビット0からビット3の4ビットが1の位を表し、ビット4からビット6が10の位を表します。分と秒は最大値が59です。そのため10の位は5まで表現できれば良いので、3ビットで十分です。

 ユーザーは、RTC_TRを32ビットで読み出し、AM/PM、時、分、秒に該当するビットを切り出します。時、分、秒のビットはBCDになっていますので、外部に表示する際は10進数として扱うことができ、ユーザーが変換する必要はありません。曜日、日、月、年もBCDなので、同様にそのまま10進数として扱えます。

 これにより、秒、分、時、のレジスタ値を10進数に変換するソフトウェアの負荷を軽減できます。

*2)STM32F405シリーズ
*3)STM32F405シリーズのリファレンスマニュアル

次の記事を読む

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.