目次PIC回路集サインボード 2ソフトウェアメイン処理


サインボード 2 メイン処理
処理説明




タイトル

;********************************************************
;
;           The signboard control 2 processing
;
;                                 Author : Seiichi Inoue
;********************************************************

    コメント(;)を使用してプログラムのタイトルを書きました。



LIST および INCLUDE疑似命令

        list            p=pic16f84a
        include         p16f84a.inc
    PICの種類を指定するためにLISTコマンド(疑似命令)を使用します。
    PIC16F84Aの標準ラベル定義をINCLUDEコマンドで組み込みます。
    includeファイルの変更については「サインボード ソフト処理説明」を参照して下さい。
    または、ERRORLEVELコマンドで警告メッセージを表示しないようにすることができます。



コンフィギュレーションワード

 __config _hs_osc & _wdt_off & _pwrte_on & _cp_off
    コンフィギュレーション・ワードはライターでプログラムを書き込む際にも指定できますが、CONFIG疑似命令を使用すると自動的に設定することができます。
    オペランドの内容については「サインボード ソフト処理説明」を参照して下さい。

    項目設定内容フィールド名称ビット
    コードプロテクションOFFCP1111111111
    パワーアップタイマーONPWRTE(inv)0
    ウォッチドッグタイマーOFFWDTE0
    クロック発振器指定HSFOSC1およびFOSC010




デバックモード定義

;**************  Debugging mode setting  ****************
;For debugging mode, ";" of next line should be removed.
;#define  _debug
    ソフトウェアをデバッグするときに処理ステップの一部を変更した方が良い場合があります。
    今回の場合には、デバッグ時にタイマー処理をスキップしてデバッグが行い易くしています。その都度、ソースプログラムの内容を変更しても良いのですが、今回は'_debug'のラベルが定義されているかいないかでアッセンブルする内容が変わるようにしました。
    詳細は「ソフトデバック説明」のページを参照して下さい。



ラベル定義

;**************** Label Definition ********************
    共通に使用されるラベルを定義しています。



プログラム開始

;**************** Program Start ***********************
    電源投入/リセット時はプログラムメモリアドレスは h'0000' からスタートします。また、割り込み処理のスタート番地は h'0004' です。



初期化処理

;**************** Initial Process *********************
    今回の処理では以下のような初期化処理を行っています。
    PORTAおよびPORTBを全て出力モードに設定
    周囲LEDを右回転に設定
    表示部のLEDを全て消灯



メイン処理
;****************** Main Process **********************
    メイン処理では各種の表示効果サブルーチンを順番に呼び出します。
    最後は先頭に戻して連続して表示されるようにします。



表示効果処理
;********************************************************
;*    Required effect processings are put below.        *
;********************************************************


;********************************************************
;*    Required effect processings are put above.        *
;********************************************************
    上記の2つのタイトルで挟まれた部分に表示効果処理を書きます。
    このように書く必要はないのですが、他のページで紹介している表示効果処理はこの間に挿入するようにしています。
    表示効果処理で使用するラベル定義もこの中で行っています。



割り込み処理
;*************** Interruption processing **************
    今回は割り込み処理を使用していないのでRETFIE命令で割り込み終了させています。



LED点灯制御サブルーチン
;************* LED control Subroutine *****************
    スクリーンテーブルの内容を右から左に点灯制御します。
    PORTBの制御は8ビット同時に行われるので、RB7(周囲LED回転情報)を保持したまま、7ビットのデータだけを書き換えています。
    PORTBおよびPORTAにデータを設定した後、ハードウェアの動作時間を保証するために約100μ秒の待ちを入れています。この待ち時間はCPLDの動作時間によってはもっと短くてもかまいません。



タイマーサブルーチン
;       <<< Timer  Subroutine for 10MHz clock  >>>
    ソフトウェアタイマーサブルーチンとしては以下のタイマーを設けています。
    LED制御待ち時間タイマー
    1ミリ秒タイマー
    100ミリ秒タイマー
    500ミリ秒タイマー
    1秒タイマー

    タイマーサブルーチンについては「LEDフラッシャー ソフト処理説明」のタイマーサブルーチンを参照して下さい。




コーディングの終了

;********************************************************
;          END of signboard control processing
;********************************************************

        end
    コーディングの最後は end命令 で終了します。endが無いとアッセンブラはコーディングの最後を検出できず。エラーになります。