2025.7.23
前へ
次へ
ホームページトップへ戻る


超ローコストPICWRITERの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第315回]



●PIC16アセンブラ(2)

前回に続いて製作中のPIC16アセンブラの進行状況の報告です。
大体のところば出来上がりました。
試しに作成中のPIC16アセンブラでPIC12F1612のテストプログラムをアセンブルしてみました。



アセンブルした結果作成されたアセンブルリストを[第312回]でMPLABでアセンブルしたときのリストと並べて比較してみました。
左側は今回試作中のPIC16アセンブラを実行して作成されたアセンブルリストです。
右側は仮にPIC12F629用のプログラムとしてMPLABでアセンブルして作成されたアセンブルリストです。
右側のリストはMPLABによって注釈行などが表示されていたのですが左側のリストと比較するためにそれらの行は削除してあります。



PICのアセンブラプログラムで一番問題になるのはConfigの表記です。
PICによって表記の方法がばらばらで統一されていません。
そこを的確に表現しないとエラーになってしまいます。
作成中のPIC16アセンブラではConfigの値を16進数で直接表記することにしました。
Configを表記するためにはどうせドキュメントを参照しなければなりません。
それならドキュメントにしたがって直接16進数で指定した方が手っ取り早いと考えました。
左右のリストはもとは同じソースリストをアセンブルしたものですが右側のソースプログラムは仮にPIC12F629のConfigとして記述してアセンブルされたものをあとでHEXファイルを手直しすることでPIC12F1612に合わせました。
左側のリストはConfigの値を直接16進数で指定しています。
PIC12F1612のConfigはConfig1〜Config3まであります。
デフォルトの値でよければ全部を指定する必要はないのですがアセンブラのテストのためにConfig1〜Config3の全部を指定しています。
PICのマシン語プログラムは16ビット(実際は14ビット)なのでMPLABのアセンブルリストではアドレスは16ビット幅のメモリの表記になっています。
マシン語の命令コードも16ビットの表記にしたがって上位8ビット下位8ビットの並びになっています。
PICWRITERでPICにプログラムを書き込むときにはHEXファイルを読み込むことで書き込みを行ないます。
HEXファイルはデータを8ビット幅で扱っています。
製作中のPIC16アセンブラではアセンブルリストをHEXファイルに合わせて8ビットデータとして表記しています。
左側のアドレスはデータ幅が8ビットの場合のアドレスで右側のアドレスはデータ幅が16ビットとしてのアドレスです。
左側のマシン語コードは8ビットでの表記なので下位8ビット上位8ビットの順になっています。
左右で下位上位が逆なのは左側が8ビット2バイト表記に対して右側が16ビット表記だからです。
そのように見方を補正して左右を比べてみると左右が一致していることが確認できます。

超ローコストPICWRITERの製作[第315回]
2025.7.23 upload

前へ
次へ
ホームページトップへ戻る