概略
秋月通商から、H8/3664のユニットが発売されていますが、このユニットには2
個のクロックが載っており、16MHzのメインクロックと32Khzのサブクロック
が付いていたので、これに16桁2行表示のLCDをつなげば、簡単に時計を作れるだ
ろうと思いプログラムを書いてみました。
今のところ24時間表示の時計以外の機能はなにも付いていません、そのうち気が向け
ば、カレンダー機能やタイマー機能をつけたり、EEPROMをつけてAD変換機能を
使って、測定値と時間を記録していくデータロガーにしてみたいと考えています。
使用方法
時間の設定は、モードSWとオペレーションSWを使って行います。
電源が入ると、タイトルを約1秒表示して0時0分0秒からスタートします、動作中に
オペレーションSWを押すと、時計動作がストップして秒表示が0になります。停止中
にモードSWを押すと分を合わせるモードになり、分表示のところにカーソルが出てブ
リンク表示になります、この状態でオペレーションSWを押すと1ずつカウントUPし
ます。
分が合えばモードSWを押すと時表示のところにカーソルが移ってブリンク表示になり
ます、前と同様にオペレーションSWを押して時間を合わせます。
次に、モードSWを押すとカーソルのブリンク表示が消えて、時計は停止していますか
ら、時報等に合わせてオペレーションSWを押せば時計がスタートします。
また、時間表示が数秒進んでしまった場合であればオペレーションSWを押して時計を
停止させ、この時秒表示だけが0に戻りますから時報等に合わせてもう一度オペレーシ
ョンSWを押して時計をスタートさせることで合わすことが出来ます。
回路図
プログラムについて
時計のカウンターは割込み処理を使い、BCD(2進化10進)でカウントしています
;---------------------------------------
; タイマー関係
T_second .equ h'f780 ;時計 秒カウンター
T_minute .equ h'f781 ;時計 分カウンター
T_time .equ h'f782 ;時計 時間カウンター
;---------------------------------------
内部レジスターの R6L を時間カウンターの状態をチェックするためのフラグとして使用
しています。
;---------------------------------------
; ユーザーステータス
MyStatus .reg (R6L) ;ユーザーステータス
second_flag .equ 0 ;秒変化フラグ
minute_flag .equ 1 ;分変化フラグ
time_flag .equ 2 ;時間変化フラグ
date_flag .equ 3 ;日付変化フラグ
;---------------------------------------
表示の書換は、このうち秒変化フラグがHighになるのをチェックして、1秒ごとに
書換を行っています。
今のところ second_flag 以外は使用していません、もしカレンダー機能を追加するので
あれば、メインのループの途中に date_flag がHighになるのをチェックして、サブ
ルーチンに飛ばして処理をすれば可能だと思います。ただし設定のサブルーチンも修正
してカレンダーの設定をする必要があると思いますが。また、このフラグを使用したら
自分でリセットをしてください。
カレンダー機能は月ごとに日数がちがったりする上に、閏年があるので処理がかなり大
変だと考えられます。ただし、曜日表示だけ追加するのであれば比較的簡単に機能を追
加出来ると思います。
ソースファイルは秋月のキットに付属のASM38とリンカーを使用しアセンブル、リ
ンクする必要があります。
最後に
疑問点等があればメールをください。出来る限りお答えするようにします。
このプログラムは、フリーウェアーなので、自由に配布可能です。
使用者自身の責任でご使用下さい。
「このソフトによってどのような損害が出ても私は責任を負いかねます。」
* H8/3664 ディジタル時計ソースファイル*−−h8timer1.lzh ( 約12kByt )
ファイル内容
lcdtest4.asm ソースファイル
h8timer1.gif 回路図
readme.txt 説明
戻る