MYマイコンを作る(12)
ポートON/OFFプログラム
MYマイコンComet2eをプログラムで動かしてみましょう。
本来はちゃんとデバッグを済ましてからアプリケーションを実行するのですが、待ち遠しいので実行しました。


上:実験の状況写真です。
デザインウエーブマガジン 2003-10 付属の
基板に4MHzのクロックを接続しています。
左:シンクロスコープで確認した出力波形
コードと解説を纏めてここに置きます。
・Comet2e用プログラム Soft31_LedOnOff1.casl
・PrgLenOnOffWaveシミュレーション波形
・PrgLenOnOffWaveシミュレーション波形拡大
・シンクロスコープの波形
QuartusHDLUコードは修正がありますので修正しからにします。
●ポートON/OFFプログラムのコード
LED点滅でお馴染みのプログラムです。
小ループカウンタと大ループカウンタカウントします。それぞれのループカウンタは、それぞれのループマスク用定数と比較してループを抜けます。ループを抜けると出力レジスタを更新します。
********************************************************
; MYマイコン Comet2e 動作確認プログラム
;Soft31_LedOnOff1
;
KAISI START
;汎用レジスタに数値を設定
NOP ;no operation:これは実行されない
NOP ;no operation:これは実行されない
NOP ;no operation:これは実行されない
NOP ;no operation:これは実行されない
;ここから実行
XOR GR1,GR1 ;GR1←0:出力ポートデータ
XOR GR4,GR4 ;GR4←0:0の定数
LAD GR5,1 ;GR5←1:1の定数
LAD GR6,4 ;GR6←4:小ループマスク用定数
LAD GR7,4 ;GR6←4:大ループマスク用定数
LOOP1 XOR GR2,GR2 ;GR2←0:小ループカウンタ 約65ms
XOR GR3,GR3 ;GR3←1:大ループカウンタ
LOOP2 ADDL GR2,GR5 ;GR2+1:小ループカウンタ+1
CPL GR2,GR6 ;GR2とループマスク用定数を比べる
JNZ LOOP2 ;小ループマスク用定数と不一致で jump
XOR GR2,GR2 ;GR2←0:小ループカウンタをクリア
ADDL GR3,GR5 ;GR3+1:大ループカウンタ+1
CPL GR3,GR7 ;GR3とループマスク用定数を比べる
JNZ LOOP2 ;大ループマスク用定数と不一致で jump
SVC #0052
ADDL GR1,GR5 ;GR1+1:出力ポートデータ+1
JUMP LOOP1 ;unconditional jump
END
●ポートON/OFFプログラムの実行と確認
プログラムの実行と確認は、ModelSim と実機で行い正常動作を確認しました。
実は、問題点を解決しながらの動作確認でした。コーディングして基本的な命令の確認だけでアプリケーションの実行とは大胆ですね。四苦八苦するのは当たり前ですね。コーディング抜けが有ったり考え間違いがありました。しかし基本的な問題は無かったので一安心です。
文章でプログラムの実行と確認の説明では出来ないので上記の「PrgLenOnOffWaveシミュレーション波形」「PrgLenOnOffWaveシミュレーション波形拡大」「シンクロスコープの波形」を参照ください。
ホームへ戻る