久しぶりにPICのアセンブラしてみた3
ブログやらYouTubeやらあちこち見て歩いた結果、結論としては、何とか動いたようです。知らんけど。
PORTBが、55⇔AAと繰り返し変化しているので、LEDは点滅しているでしょう。残念ながら、このソースで指定されているPIC16F819は、手持ちにないので、実機テスト出来ないけど。 ああ、このソースは、Lチカですよ。
覚書の為にも、以下に変更点を書いて置きますが、ここにソースコードを全て公開すると怒られてしまうので、引用という形に留めます。
変更したのは、、、
1."LIST", "INCLUDE"," __CONFIG"を削除(コメントアウト)し、別の設定方法に変更。
① LIST, INCLUDEの代わりに、"Project Properities"でデバイスを選択。ついでに"Compiler Toolchain"は、"pic-as"を選択しておく。"Project Properities"は、左下のアイコン若しくは、プロジェクト名を右クリックしメニューの一番下から開く。
② __CONFIGについては、メニュー "Window>Target Memory Views> Configuration Bits"で設定する。
以下の様なウインドウが下部に現れる。
必要な"option"を選択したら、"Generate Source Code to Output"をポチ。
XCライブラリのINCLUDE文と、CONFIG設定文が自動作成されるので、これをソースコードにコピペする。 一度設定した後、再度設定しようとすると、"Generate Source Code to Output"のボタンがグレーになり、選択できない。これは、バグらしい。ウインドウを再度開きなおせば、大丈夫。
2.PSECT(Program Section ?)で、リセットベクター追加
これを入れないと、エラーになる。
クラス名はresetVectが、おすすめの様。class=CODEは、フラッシュに配置の意味。delta=2は領域2Byte確保の意味。
次にresetVectを0番地に配置するため、リンカーの設定を行う。
"Project Properities"を再度開き、”pic-as Linker"の"Costom LinkerOption"に "-presetvect=0"と記述。"-p"はプログラムセクションの意味、多分。スペース入れずにクラス名”resetVect””、"=0"は、0番地の意味。
行先の、ラベル”main”を記述。
3.BCF, BSFのオペランドのビット名をビット位置に変更
mpasmの時は、オペランドはビット名で良かったが、pic-asでは、ビット位置にしないと、エラーになるみたい。
4.最後に"resetVect"を閉じる。
以上ですが、海外のフォーラム見ても、pic-asは、バグが多いようなので、これ以外にも色々あるのでしょう。
尚、この変更にあたって一番参考になったのは、以下のYouTube。作者には何の連絡もしてませんが、この場を借りて御礼申し上げます。
10数年ぶりに秋月のプログラマボードを出して見たら、I/FがRS232cだった。
この記事が気に入ったらサポートをしてみませんか?