PIC16F84電子遊戯(98) |
最終更新日:2003年4月27日 |
2CH ON・OFF装置を作ろう (1ページ)へ (2ページ)へ (3ページ) |
|
2CH ON・OFF装置のEEPROMで設定値を記憶する |
久しぶりの更新です。この製作を完結しておかないといけませんので、今回はPIC内蔵のEEPROMの使用方法を中心に説明します。
EEPROMのデータは電源を切っても消えることはありませんので、書き換えが出来る設定値などを記憶しておくと便利です。
このON・OFF装置は2CH分のON時間、OFF時間を個別に設定出来ます。
電源を入れて起動するたびに初期値に設定しなおされますので、これをEEPROMに記憶することにしましょう。
EEPROMに記憶するRAMの内容は次の通りです。 |
RAM |
内容 |
EEPROMアドレス |
ch1_on_set1 |
CH1 ON時間設定値(1) |
10H |
ch1_on_set10 |
CH1 ON時間設定値(10) |
11H |
ch2_on_set1 |
CH2 ON時間設定値(1) |
12H |
ch2_on_set10 |
CH2 ON時間設定値(10) |
13H |
ch1_off_set1 |
CH1 OFF時間設定値(1) |
14H |
ch1_off_set10 |
CH1 OFF時間設定値(10) |
15H |
ch2_off_set1 |
CH2 OFF時間設定値(1) |
16H |
ch2_off_set10 |
CH2 OFF時間設定値(10) |
17H |
|
電源ON時にこのEEPROMデータを読み出し、RAMに設定します。
もちろんEEPROMにデータが無いときは読み出さないようにして逆に初期値をEEPROMに設定するようにしておきます。その判定にひとつEEPROMを使用します。 |
内容 |
EEPROMアドレス |
EEPROMデータ有り判定用 |
00H |
|
後のソースを見て頂くと判ると思いますが、この値が「96H」のときはEEPROMに設定されているデータが有効とみなして「10H〜17H」までのEEPROMデータを読み出してRAM設定します。それ以外のときは無効とみなして初期値を設定するようにします。 |
2CH ON・OFF装置のEEPROMの書き込み |
EEPROMの書き込みについて手順を説明します。次の例を見て下さい。 |
movlw 96h
movwf ee_data
movlw 00h
call eeprom_write |
まず「ee_data」のRAMに書き込みたいデータをセットします。
次にWレジスタにEEPROMのアドレスをセットして書き込みルーチン「eeprom_write」を呼び出せばOKです。1バイトずつ書き込みますので、この手順を繰り返せばOKです。 |
1バイト書き込みルーチンは次のようになっています。 |
eeprom_write
movwf EEADR
movf ee_data,0
movwf EEDATA
bsf STATUS,RP0
bsf EECON1,WREN
movlw 55h
movwf EECON2
movlw 0aah
movwf EECON2
bsf EECON1,WR
eeprom_write2
btfsc EECON1,WR
goto eeprom_write2
bcf STATUS,RP0
return |
順を追って簡単に説明します。
Wレジスタの値(EEPROMのアドレス)を「EEADR」にセットします。
「ee_data」の値(書き込むデータ)を「EEDATA」にセットします。
ページ1に切り換え。「WREN」(書き込みイネーブル)を「1」(許可)にセット。
「EECON2」(書き込みシーケンス)に特定の値を設定。
「WR」(書き込み開始制御)を「1」(スタート)にセット。
書き込みが終わる(「WR」が「0」になるまで)待つ。ページ0に切り換え。
以上で書き込み完了です。
これはPICで決まっている手順なのでこの通りにすればOKです。意外と簡単でしたね。 |
2CH ON・OFF装置のEEPROMの読み出し |
EEPROMの読み出しについてです。次の例を見て下さい。 |
movlw 11h
call eeprom_read |
WレジスタにEEPROMのアドレスをセットして読み出しルーチン「eeprom_read」を呼び出せばOKです。1バイトずつ読み出します。読み出した結果はWレジスタに入ります。 |
1バイト読み出しルーチンは次のようになっています。 |
eeprom_read
movwf EEADR
bsf STATUS,RP0
bsf EECON1,RD
bcf STATUS,RP0
movf EEDATA,0
return |
順を追って簡単に説明します。
Wレジスタの値(EEPROMのアドレス)を「EEADR」にセットします。
ページ1に切り換え。「RD」(読み出し開始制御)を「1」(許可)にセット。
ページ0に切り換え。「EEDATA」の値をWレジスタに設定。
以上で読み出し完了です。超簡単でしたね。 |
2CH ON・OFF装置の全ソースリストと全HEXコード |
毎度おなじみのソースリストとHEXコードです。
一緒に圧縮していますので、ダウンロードしてからじっくり眺めて下さい。
(今回もXP標準のZIPにしています。)
ソースリストとHEXコードはこちらです。 |
2CH ON・OFF装置の大完成 |
では大完成した雄姿とその中身を見て下さい。 |
|
(ちょっとピンボケですいません) |
|
(設定中とカウント中のLCD表示状態です) |
|
(リレーの出力端子は配線しやすいようにネジ止め式にしました) |
以上で2CH ON・OFF装置は完成しました。私はこの装置を使ってある製品の電池寿命を測定しました。定期的に製品のボタンを電気的に押すようにして電池電圧がどのように変化するのを調べたのでした。
ひさひさぶりに実用的は製作が出来たと考えております。 |
今回の収穫としてはLCDモジュールの制御とEEPROMの制御です。
今後はこれらの制御もどんどん製作に取り入れていきたいと考えています。 |
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。 |
|
不明点などあればメールお願いいたします。nonchansoft@nifty.com |
|
|