ブルーブリッジカップマイクロコントローラのトレーニング[4] --- DS1302クロックチップ


DS1302は、細かいトリクル充電電流容量を有する米国DALLAS低消費電力のリアルタイムクロックチップによって起動されます。これは、年、月、日、週、時間、分、秒クロノグラフのためのもの、およびうるう年補正などの機能を持っていることがあります。

主催者は、SPIドライバを提供しますので、SPIプロトコル通信を経由してSCMとDS1302は、LSBまず、我々は唯一、このチップを使用する方法については、以下の焦点を当て、ないここでは具体的にSPIプロトコルについては、タイミングを読み書きすることは非常に明確です。

次のようにRTCを登録します。

画像


注:
BCDコード(1)DS1302は、書き込みと読み込み時に変換が必要とされ、採用!
(2)CHクロック休止フラグが0クロックが開始に設定されている
データを書き込むことができる0〜(3)WPライトプロテクトビット、セット


私たちは、簡単な関数は、2つの上で実装する必要があります

   1.初期化時間

   2.読書の時間


1.私たちは、分、秒はそれを書くための適切な時間を登録するときに、あなたが楽しみを持つことができ、最も高い位置8Ehゼロに対処するために約、オフ、その後、上記RTCレジスタに細心の注意を払う(WP)ライトプロテクトするためにまず、最初の時間を設定したいです私たちの数はBCDコードに変換する必要がありますので、BCDコードデータは、保存されています。

栗のために、我々は通常小数点数23に連絡して、20 + 3に相当し、これは直接0x23 BCDコードであり、それぞれ、高いおよび低いニブルに、10を置くことです。

次のように初期化コードは次のとおりです。

ボイド Ds1302_write(U8 H、m個のU8、U8のS)
{ 
	Write_Ds1302_Byte(0x8Eが、$ 00);      //閉じるライトプロテクト 
	Write_Ds1302_Byte(0x84の、H / H 10 * 16 + 10%); //時間 
	Write_Ds1302_Byte(0x82と、M / 10 16%10 + M *); //サブ 
	Write_Ds1302_Byte(0x80を、S / S 10 * 16 + 10%); //第 
	Write_Ds1302_Byte(0x8Eが、0x80を);     //書き込み保護を開きます 
}

書き込みデータにBCDコードは、おそらくまた、上記の時間を実行して、私たちは常にされてBCD、非常に不便、一度全体の機能を持ったレジスタ後ろから読む時間を持っています:

bcd_to_dat U8(N-U8)//戻り着信BCDコード小数 
{ 
	U8 T1、T2、
	T1 = N / 16、N-T2 = 16%; 
	T1 + T2 = 10 * T1、戻り T1; 
}
	

まあ、その上に初期化時間の後、我々は時間を読んで楽しみを持つことができ、ここで毎分は、グローバル変数、コールの側面に保存されたときに、それです。

ボイド read_Ds1302()
{ 
	H = bcd_to_dat(Read_Ds1302_Byte(0x85))。
	M = bcd_to_dat(Read_Ds1302_Byte(0x83の))。
	S = bcd_to_dat(Read_Ds1302_Byte(0x81と))。

}


上記だけ読書のための単純なリアルタイムクロックの使用、時間を十分に説明





おすすめ

転載: www.cnblogs.com/masterwayne/p/12369982.html