システム設計は前回と全く同じで、XC8でのプログラミングです

ASMとCではプロジェクトそのものから分けますので、ほぼ同じ名前で進行していきます
プロジェクト名は「PIC_START_CPRG01」とでもしておきます

1.MPLAB X IDE(Ver3.51) 起動

(1)XC8用プロジェクトの作成
  「スタートマニュアル2」を参考にXC8用新規プロジェクトを作成します
  プロジェクト名は説明の都合上「PIC_START_CPRG01」
  すると、「MPLABXProjects」フォルダに「PIC_START_CPRG01.X」が生成されます。
  当局の場合は、「MPLABXProjects」フォルダ内の「PIC_BASIC」フォルダ内の「PIC_START」フォルダ内に生成されています
  生成直後は「PIC_START_CPRG01」プロジェクトをオープンしている状態です。


(画像01) 新規プロジェクトオープンした状態

XC8新規ソースファイルの作成
 0)「PICKIT_START_CPRG01」プロジェクトをオープンします。
   (1)からそのまま来た場合は、すでにプロジェクトオープンしています。
 1)左上コマンドバーの「File」の「New File」をクリック、すると「New Project」ウインドウが開く

(画像02)

左上コマンドバーの「File」の「New File」をクリック、すると「New Project」ウインドウが開く

①Step1 Choose File Type
  Projectでは、「PIC_START_CPRG01」を選択
  Categoriesでは、「C」をクリック
  File Typeでは、「C Source File.c」をクリック
  「Next」をクリック

(画像03)

②Step2 Name and Location 
  File Nameでは、「PIC_START_CPRG01」とでもします。
  (実際は好きなソースファイル名でOK)
  Extensionは「c」です
  「Next」をクリック

(画像04)

これで、「PIC_START_CPRG01」フォルダに
「PIC_START_CPRG01.c」が生成されました。
何も書かれていないソースファイルもオープンされていると思います。

「Projects」の「Source Files」に「PIC_START_CPRG01.c」を登録

(画像05) タイトル&インクルードファイル

適当に分かり易いタイトルを記述

最低限必要な、インクルードファイルをまず記述

(画像07) コンフィギュレーション ワードを表示・設定

①ツールバー「Window」をクリック
②「PIC Memory Views」をポイント
③「Configuration Bits」をクリック

これで、右下の「Output」ウインドウに「Configuration Bits」が表示される

ここでコンフィギュレーションワードの設定を行う

(画像08) 設定疑似命令を自動生成

ウインドウ下部の「Generate Source Code Output」をクリック
すると、画像の様にコンフィギュレーションワード設定の命令が生成される
これをコピペします

(画像09) コンフィギュレーションワードをコピペ

ソースファイル画面にコピペしました・・・

不要な文字多すぎ・・・

(画像10) 各種定義

設計に基づき、広域変数の定義を行います

次に定数の定義を行います
ここではCPUの速度を記述、これが無いとウエイト文が使えません

実際は後での追加記述なのですが、関数プロトタイピングも記述

(画像11) メイン関数の記述①

SFR設定

ローカル変数定義

(画像12) メイン関数の記述②

初期動作記述

(画像13) メイン関数の記述③

メインループの記述

(画像14) メイン関数の記述④

メインループ続き

(画像15) 割込み処理関数(ISR)①

タイトルおよび関数宣言

関数名の前に「interrupt」を付与すると、その関数はISRとなるようだ
さらに、関数プロトタイピングは書かなくても、動作する
プロトタイピングとして書いてみても問題無いようだが。

(画像16) 割込み処理関数②

M_CYCが0になった時の、設定値リロード部分
1周期のスタート処理

(画像17) 割込み処理関数③

1周期中の処理

(画像18) 割込み処理関数④

1周期中の処理続き

タイマ0の再設定
関数終了処理(タイマ0割込みフラグのリセット)

(画像19) 発色データ生成関数①

ローカル変数定義

入力値(引値)0~63までの処理

(画像20) 発色データ生成関数②

入力値64~127までの処理

(画像21) 発色データ生成関数③

入力値128~191までの処理

(画像22) 発色データ生成関数④

入力値192~255までの処理

この関数はRGB用各8bitデータを32bit整数に纏めて返します。

受け取った呼び出した側はその32bit整数から8bitデータに分解して使います
今回のXC8ソースファイル

 PIC_START_CPRG01.c


左記に今回のソースファイルがあります

LEDは割とスムーズに変色し、見ていて、さほど疲れないと思います。
ソースファイルもCソースの方が何をしているのかが解り易いと思われます。
コンパイラがどんなコードを吐き出しているのか解りませんが、プログラムメモリの使用率が7%と表示されています。
戻る  実験・製作の記録TOPへ戻る