楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

SIM

シミュレーター 5

 シミュレーター 3 に続いて、MPLABがアセンブルした結果、プログラム・メモリーに書いた様子を見ながら、「main.asm 簡単な説明」に書いたアセンブラーの動きを確認してみます。 

[View]→[Program Memory] を選択します。

program_memory


Run の後で Halt したことで、プログラム・カウンターが 0104H になっています。
0100H番地から0106H番地までがFFFFHとは異なる値が書き込まれていて、値の右側にディスアセンブルした結果が表示されています。

program_memory1


上にスクロールすると、0000H番地から0002H番地までがFFFFHと異なっています。

program_memory2

書きかえられた値を逆アセンブルしたものと、ソース・プログラムを見比べてみると、「PICに対して何かを指示するプログラムをプログラム・メモリーに書くように」と指示された内容と一致すると思います。

一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



main.asm 簡単な説明

 「シミュレーター 2」からダウンロードできるソースファイル(main.asm)について簡単に説明します。

main_asm01

; (セミコロン)で始まり、改行で終わる部分はコメントです。 PICの動作には何ら関係がなく、人の理解を助ける為に使います。 コメントの中には日本語が使えます。

3行目(#INCLUDE <P18F2320.INC>)はアセンブラーに対して、MPLABの標準ヘッダーファイルを指定(インクルード)するように指示しています。 標準ヘッダーファイルはPICデバイス毎に準備されていて、[Microchip]ディレクトリーの下の[MPASM Suite]フォルダーにあります。 拡張子 .inc が全て標準ヘッダーファイルです。
標準ヘッダーファイルをインクルードしない場合は、SFRなど全てのラベルを自分で定義する必要が生じます。 余程特殊な目的でない限り標準ヘッダーファイルの指定が得策だと思います。

11~12行目でアセンブラーに対して自前のラベル定義を指示しています。 000H番地にreg0 001H番地にreg1と言う名前を付けました。

18行目でアセンブラーに対してプログラム・メモリーの0番地からプログラムを書き始めることを指定しています。 PICは電源投入後のリセット直後にプログラム・メモリーの0番地から命令を読み出して実行する為、0番地から書き始めます。

20行目で「PICに対してラベルHOTSから命令を読み出して実行する(ジャンプする)ように指示するプログラムをプログラム・メモリーに書くように」とアセンブラー指示しています。 折角0番地から動き始めたばかりですが、この先には割り込み時に実行を始めるプログラムを記述しければならない領域がある為、その分を飛ばして(HOTS)から実行を始めるようにしています。

23行目でアセンブラーに対してプログラム・メモリーの100H番地からプログラムを書き始めることを指定しています。 100Hと言う値は割り込み時の領域を避けて私が勝手に決めた値です。 200Hでも1000Hでもかまいません。

25行目でアセンブラーに対してラベルHOTSを定義、「このアドレスに」HOTSと言う名前を付けています。 先程100Hから書き始めると宣言した直後ですから、100H番地にHOTSと言う名前を付けたことに成ります。 この定義と20行目の指示を合わせることでアセンブラーはPICに対して100H番地から命令を読み出して実行する(ジャンプする)ように指示するプログラム」を0番地に書きます。

26~27行目はPICに対して何かを指示するプログラムをプログラム・メモリーに書くように」とアセンブラーに指示しています。 内容については「データ・メモリーに値を書く」で説明します。

30行目でアセンブラーに対してラベルHOTZを定義、「このアドレスに」HOTZと言う名前を付けています。 26~27行目までのプログラムの直後の番地にHOTZと言う名前を付けたことに成ります。

31行目で「PICに対してラベルHOTZから命令を読み出して実行する(ジャンプする)プログラムをプログラム・メモリーに書くように」とアセンブラー指示しています。 PICはラベルHOTZから命令を読み出す動作を繰り返すことになります。

33行目でアセンブラーに対してプログラムを書く作業を終わるように指示しています。

アセンブラーに対して」をクドクドと繰り返し、読み難かったかも知れませんが、アセンブラーのソース・プログラムは(当然ながら)アセンブラーに指示を出すものです。 PICは、「MPLABがアセンブル(ビルド)を実行した結果プログラム・メモリーに書かれたもの」を実行します。 「プログラム・メモリーに書かれたもの」を記録したものがHEXファイルです。

「シミュレーター 5」では「プログラム・メモリーに書かれたもの」を確認します。

一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



シミュレーター 4

 新しいプロジェクトを作成してビルドした結果、以下の Output を経験しました。

select_tool0

Couldn't locate build tool. Check tool locations.  BUILD FAILED とあります。

私の場合はボリュームH:にMPLABをインストールしたのが災いしているようです。 C:ドライブにインストールしたPCでは問題が見られません。 Webで調べて、次の対処でビルド出来るようになりました。


1. [Project]→[Select Language Toolsuite]を選択
select_tool

下図のような赤色バッテン印が付いた画面が現れます。

select_tool1

3つ各々について Browse ボタンを押してファイルを選択します。

select_tool2

mplink.exe はアンダースコアで始まる _mplink.exe を選ばないように注意して下さい。

select_tool3

上図のように赤色バッテン印が取れたら、Store tool locations in project にチェックを入れてOKボタンをクリックします。

私の場合は、これで問題なくビルドできるようになりました。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。


シミュレーター 3

 MPLABのインストールからプロジェクト作成まで、初心者には退屈な作業が続きましたが、やっとアセンブル(ビルド)してみることが出来そうです。 シミュレーター 2の続きです。

<<< 9. ビルド >>>
ここまで来たら、下図の右から2番目のボタンをクリックします。
( [Project]→[Build All] を選択しても同じです。)

build

プロジェクトを作って最初のビルドの時だけ、以下のダイアログが出ますが、Absolute を選択します。
absolute

左下の Output ウィンドウに何やら表示が続き、下図のように BUILD SUCCEEDED と表示されたらビルド(アセンブル)の完了です。

build_succeeded

うまく出来たでしょうか? ソースファイルにタイプミスが無い状態で私が経験した BUILD FAILED の対処法をシミュレーター 4に紹介します。

ビルドに成功したらプログラムの動作を確認しますが、このプログラムは Hello world とは表示してくれません。 データメモリーの一つに FF を書き込むだけの簡単なプログラムです。 その動作を確認するためにデータメモリーの内容を目視確認出来るようにMPLABの準備をします。

<<< 10. Watchの準備 >>>
[View]→[Watch] を選択してWatchウィンドウを開きます。

watch

右上に表示されたWatchウィンドウにある Add Symbol ボタンの右隣のプルダウンメニューから reg0 と reg1 を順番に選択してWatchリストに追加します。 プルダウンメニューには多くのシンボル(ラベル)名が並びますが、アルファベット順ですから必ず見つかります。 予め予約されたシンボルは大文字を使っていますから、自分で定義するシンボルは小文字を使うと決めていれば少し楽になります。

add_symbol

add_symbol1


<<< 11. Run  >>>
以上の準備が出来たら、Watchウインドウの上にあるRunボタン(右向き三角)をクリックしてプログラムを走らせます。

run

Watchウィンドウにも変化は見られませんが、Runボタンの右隣にあるHaltボタンでプログラムを止めるとWatchウィンドウに変化が見られます。

watch2

Symbol reg1 の値が 0xFF に替わったら正常動作です。

これだけ! と思われるかも知れませんが、今後はソース・ファイル( main.asm )をチョット書き換えるだけで、次々とニーモニックの動作を確認する環境が出来たと言うわけです。

MPLABを終了する時には [Project]→[Close]→プロジェクト を選択してプロジェクトを閉じてからMPLABを終了しています。 (いきなり終了しても問題ないようですが・・・)
次からはMPLABを立ち上げて [Project]→[Open]の後、プロジェクトファイルを選択すると前回終了した時と同じ画面から再開できます。

ニーモニックの解説など順次紹介する予定です。

一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。





シミュレーター 2

 MPLABをインストールして、ニーモニックを試す作業はPCさえあれば無料で出来ます。 PICKit3や基板を購入する前に(あるいは入荷待ちの間に)試してみたい作業です。

シミュレーター 1 の続きです。

<<< 4. Viewの確認 >>>
[View]を選択して、Project 及び Output にチェックが付いていることを確認し、チェックが無い場合は各々選択してチェックを入れます。

view


<<< 5. ソース・ファイルの作成 >>>
[File]→[New]を選択して新しいファイルを開き、続けて(Editorウィンドウが選択されている状態で)[Edit]→[Properties]を選択します。

File Type タグを選択して数のようにチェックを入れます。
fuke_type
Line Numbers にチェックを追加

Tooltips タグを選択して下図のようにチェックを入れます。
tooltips
Show Address in Mouseover と Mouseover Active on Debug にチェックを追加

<<< 6. ソースコードを記述 >>>
Editorに記事末尾のように入力します。 ソースプログラムの機能毎に別ファイルを作るの普通ですが、ニーモニックを試すだけなら一つのファイルにまとめて書いても問題ないと思います。 コメント以外では文字と文字の間はスペースを使わずTabで区切ってください。

<<< 7. ソースコードを保存 >>>
[File]→[Save As]を選択して、main.asm と言うファイル名で保存します。

save_main

<<< 8. ソースファイルをプロジェクトに追加 >>>
左上のプロジェクト・ウィンドウにある Source Files を右クリックして Add Files を選び、保存済みの main.asm を選択してプロジェクトに追加します。 プロジェクト・ウィンドウに main.asm が追加されます。
add_files
add_files1


 main.asm
 http://jyosou-robot.livedoor.biz/pic/pic_01/main.asm


シミュレーター 3 では main.asm をアセンブルしてみます。

一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ