ATL/1200サンプルプログラム
友人からの依頼で作成したこのプログラムは,6つのLED集合体(赤/緑2色)を用いたスタートシグナルを駆動するものです。
リセットされるか,またはポートD0(2ピン)に立ち下がりのパルスを与えると端の赤いシグナルが点灯し,10秒前を表します。それから5秒前から1秒前にかけて一秒置きに一つずつ赤シグナルが点灯し,1秒前には全シグナルが赤に点灯し,スタート時には一斉に緑に切り替わります。
そしてスタートから2秒後に全シグナルが消灯し,リセットまたはポートD0のパルス待ちとなります。割り込みも含めて基本動作は一応一通り入ってはいると思います。ハードウェアの方も動作は確認しています。
回路図は以下の通りです。(Cadintosh4.1.2 Carbonで作成)
回路図中,
- LEDアレイは鈴商で購入した赤5個/緑10個入りのもので,24V電源ですからこのようなトランジスタを入れた定電流回路になっています,LED単体で良い場合は,単に200Ωの抵抗をLEDに直列につなげてGNDに落とすだけでOKです。
- 緑の回路は,1ポート辺りの吐き出し電流が15mAなので1ポートに3回路並列×2にします。
*GO [H18=Z [H18.6=1 [H18.7=1 green signal *SIGNAL X=.H14 1/20:1sec ;T=.H0A [H18.0=1 red signal ;T=.H05 [H18.1=1 ;T=.H04 [H18.2=1 ;T=.H03 [H18.3=1 ;T=.H02 [H18.4=1 ;T=.H01 [H18.5=1 ;T=.H00 #GO ;T=.HFE [H18=Z switch off the signals ;T~.HFE T-- **INTR R=.H10 [H32=R X-- ;X=.H00 #SIGNAL *MAIN R=.H00 [H3F=R disable GIE R=.HFF [H17=R reset timer [H12.0=1 R=.B00000101 [H33=R prescaler 1/1024 R=.H10 up-counter! [H32=R 1/240:50msec Z=.H00 T=.H0A #SIGNAL R=.B00000010 [H39=R set TOIE0 R=.B10000000 set GIE [H3F=R ( )[H10.0=1 do while no pulse on PORTD.0
V1.1時追加:EEPROMを利用すると以下のようなプログラムになります。*GOルーチンが消え,*SIGNALルーチンおよびTの初期値に変更が加えられています。
(友人からの依頼による仕様変更で,カウントダウン時はポート入力リセットを無効にしています。)*SIGNAL X=.H14 1/20:1sec [H1E=T [H1C.0=1 A=[H1D [H18=A ;T=.H00 S=.H00 ;T~.H00 T-- **INTR R=.H10 [H32=R X-- ;X=.H00 #SIGNAL *MAIN R=.H00 [H3F=R disable GIE R=.HFF [H17=R reset timer [H12.0=1 R=.B00000101 [H33=R prescaler 1/1024 R=.H10 up-counter! [H32=R 1/240:50msec Z=.H00 T=.H0C #SIGNAL R=.B00000010 [H39=R set TOIE0 R=.B10000000 set GIE [H3F=R S=.H01 ( ( )S~.H00 )[H10.0=1 do while no pulse on PORTD.0(EEPROM)
.H00 .HC0 .HC0 .H3F .H1F .H0F .H07 .H03 .H01 .H01 .H01 .H01 .H01
[Library][軽模型飛行機研究室メイン]