2025.8.27
前へ

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


超ローコストPICWRITERの製作

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

[第328回]



●PIC18アセンブラ(7)CONFIG(3)

前回はMicrochipのPICドキュメントのミスプリントのせいでつい遠回りをしてしまいました。
今回は本題に復帰です。
本家MicrochipのPICアセンブラの表記にはいつも悩まされてきました。
で。
あれこれ考えたのですが。
あのわかりにくいCONFIG文の記載ではなくて。
変更が必要なCONFIGレジスタの値を直接指定してしまおうということに落ち着きました。
デフォルトでよいところはそのままにすればよいです。
CONFIGはバイト単位で指定します。
1バイトのうち一部のみ変更する場合残りのビットについてはデフォルトの値をそのまま踏襲します。
デフォルトの値はSFRを設定するためのtxtファイル(MPLABアセンブラで#include<>で指定するincファイルと同じファイル名.txtファイル)に追記しました。
下はそのようにしたp18f2450.txtファイルの追記部分です。



そしてユーザーのPIC18アセンブラプログラムでは必要なCONFIGレジスタのみ下記の要領で設定します。
        #include<p18f2450.inc>
;cpuclock=48MHz HSPLL_CRYSTAL=12MHz
;wdt=about 32ms(4ms*8)
;
;       CONFIG PLLDIV=3,USBDIV=2,CPUDIV=OSC1_PLL2,FOSC=HSPLL_HS,VREGEN=ON,WDT=OFF
;       CONFIG PBADEN=OFF,LVP=OFF;
;
        CONFIG1L 22
        CONFIG1H 0E
        CONFIG2L 3F
        CONFIG2H 1E
        CONFIG3H 81
        CONFIG4L 81
;

設定値は16進数2桁ですがこの場合には上位桁がA〜Fでも先頭に0を付ける必要はありません。
MPLAB対応のアセンブラを流用する場合#include文はそのまま残します(PIC18アセンブラでもこの表記は必要です)がもとのCONFIG文は;を付けてコメント文に変更します。

CONFIGについて上記の機能追加を行なった後PIC18アセンブラを実行して作成されたHEXファイルをもとのMPLAB版のHEXファイルと比較しました。



:02、:04、:02、:06の4行がCONFIGの設定です。
一部に相違がありますが右側(MPLAB版)はデフォルト値をPIC18F2450固有の値にしているところを左側(PIC18アセンブラ)ではPIC18F2450を包含する汎用値をデフォルト値にしているためです。
相違しているビットはPIC18F2450には実装されていないビットなので実際に影響はないはずです。
いずれ実際に書き込んでテストしてみるつもりです。

超ローコストPICWRITERの製作[第328回]
2025.8.27 upload

前へ

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