ATL/1200サンプルプログラム

友人からの依頼で作成したこのプログラムは,6つのLED集合体(赤/緑2色)を用いたスタートシグナルを駆動するものです。
リセットされるか,またはポートD0(2ピン)に立ち下がりのパルスを与えると端の赤いシグナルが点灯し,10秒前を表します。それから5秒前から1秒前にかけて一秒置きに一つずつ赤シグナルが点灯し,1秒前には全シグナルが赤に点灯し,スタート時には一斉に緑に切り替わります。
そしてスタートから2秒後に全シグナルが消灯し,リセットまたはポートD0のパルス待ちとなります。

割り込みも含めて基本動作は一応一通り入ってはいると思います。ハードウェアの方も動作は確認しています

回路図は以下の通りです。(Cadintosh4.1.2 Carbonで作成)
回路図中,


*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][軽模型飛行機研究室メイン]