見出し画像

久しぶりにPICのアセンブラしてみた3

ブログやらYouTubeやらあちこち見て歩いた結果、結論としては、何とか動いたようです。知らんけど。

画像1

PORTBが、55⇔AAと繰り返し変化しているので、LEDは点滅しているでしょう。残念ながら、このソースで指定されているPIC16F819は、手持ちにないので、実機テスト出来ないけど。 ああ、このソースは、Lチカですよ。

覚書の為にも、以下に変更点を書いて置きますが、ここにソースコードを全て公開すると怒られてしまうので、引用という形に留めます。

変更したのは、、、​

1."LIST", "INCLUDE"," __CONFIG"を削除(コメントアウト)し、別の設定方法に変更。

画像7

 ① LIST, INCLUDEの代わりに、"Project Properities"でデバイスを選択。ついでに"Compiler Toolchain"は、"pic-as"を選択しておく。"Project Properities"は、左下のアイコン若しくは、プロジェクト名を右クリックしメニューの一番下から開く。   

画像8

画像9

② __CONFIGについては、メニュー "Window>Target Memory Views> Configuration Bits"で設定する。

画像4

以下の様なウインドウが下部に現れる。

画像5

必要な"option"を選択したら、"Generate Source Code to Output"をポチ。

画像6

XCライブラリのINCLUDE文と、CONFIG設定文が自動作成されるので、これをソースコードにコピペする。 一度設定した後、再度設定しようとすると、"Generate Source Code to Output"のボタンがグレーになり、選択できない。これは、バグらしい。ウインドウを再度開きなおせば、大丈夫。

2.PSECT(Program Section ?)で、リセットベクター追加

画像8

これを入れないと、エラーになる。

画像9

クラス名はresetVectが、おすすめの様。class=CODEは、フラッシュに配置の意味。delta=2は領域2Byte確保の意味。

次にresetVectを0番地に配置するため、リンカーの設定を行う。

"Project Properities"を再度開き、”pic-as Linker"の"Costom LinkerOption"に "-presetvect=0"と記述。"-p"はプログラムセクションの意味、多分。スペース入れずにクラス名”resetVect””、"=0"は、0番地の意味。

画像10

行先の、ラベル”main”を記述。

画像11

3.BCF, BSFのオペランドのビット名をビット位置に変更

画像12

mpasmの時は、オペランドはビット名で良かったが、pic-asでは、ビット位置にしないと、エラーになるみたい。

4.最後に"resetVect"を閉じる。

画像13


以上ですが、海外のフォーラム見ても、pic-asは、バグが多いようなので、これ以外にも色々あるのでしょう。

尚、この変更にあたって一番参考になったのは、以下のYouTube。作者には何の連絡もしてませんが、この場を借りて御礼申し上げます。


10数年ぶりに秋月のプログラマボードを出して見たら、I/FがRS232cだった。

この記事が気に入ったらサポートをしてみませんか?