超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第316回]
●PIC16アセンブラ(3)
当テーマとしては一週間振りの更新です。
その間にWindows11についての記事を書きましたからそれを含めて最後に書いてからですと5日振りということになります。
この間はぎりぎりに迫った納期に責められてとてもホームページを更新する余裕がありませんでした。
昨日やっとぎりぎりで発送できてほっと一息ついたところです。
昔に比べるとパワー不足をしみじみ感じます。
有り難いことですが古くからのお得意様から今もご注文をいただきます。
以前よりも長い納期をいただきながら作業をこなしています。
とはいえせめて少しでも早くお納めしないと先方にも負担をかけてしまいますからつまるところ土日休日をつぶして仕事をすることになってしまいます。
お盆?
夏休み?
早々と仕事の予定で埋まってしまいました。
何年経っても「月月火水木金金」です。
上記を普通に「かな」で入力しましたらまともに変換できませんでした。
もう死語のようです。
昭和も遠くなりにけりです。
花金どころか花木なんて時代もあったんですものねえ。
そんな中でなんとかやりくりをつけて、と言いますか気分転換でプログラム作成とか回路設計をちょこちょこやったりしています。
もう病気でありますね。
真性ワーカーホリックであります。
当ホームページについてはまだしばらくぽつんぽつんと間をあけながらあれこれを書いていくことになると思います。
気長なお付き合いをお願いいたします。
このところ作成中のPIC16アセンブラなのですが肝心のところが未完成でした。
それはもちろん十分承知しておりましたのでここ数日時間をみつけてその作業に取組んでいました。
そもそもなんのためのPICアセンブラなのかといいますと。
PICWRITERに入力するためのファイルを作成するのが最終的な目的です。
ずっと以前から使っております秋月のPICプログラマPICKITUの入力ファイルはINTELヘキサ形式のHEXファイルです。
またMPLABが吐き出すファイルも同じ形式のHEXファイルです。
HEXファイルについては[第312回]で過去記事を検索しました。
三週間前の記事です。
Google検索で過去記事をみつけました。
Google様さまです。
詳しくは「PICBASICコンパイラ」[第193回]を参照願います。
[第312回]ではPIC12F1612用のテストプログラムのHEXファイルを裏技で作成しました。
下に再掲します。
:020000040000FA :020000000528D1 :06000A00033088008C01A8 :10001000013088006830990058309A008C018801BE :100020008C011C20FF308C001C201028FA30A0000E :100030000000A00B18280800FA30A1001620162096 :06004000A10B1E280800C0 :02400E00FC317C :00000001FF |
これと同じファイルを作成することになります。
ということで。
下が今回作成したHEXファイルです。
:020000040000FA :100000000528FF3FFF3FFF3FFF3F033088008C0100 :10001000013088006830990058309A008C01880100 :100020008C011C20FF308C001C201028FA30A00000 :100030000000A00B18280800FA30A1001620162000 :10004000A10B1E280800FF3FFF3FFF3FFF3FFF3F00 :02400E00FC3100 :02401000FF3E00 :024012009F3F00 :00000001FF |
PIC16アセンブラプログラムの都合で一部が異なっています。
MPLABでアセンブルするとアドレス0000の行にGOTO命令があってそれ以後に空きがあるとそこが2行に分けられます。
具体的にはアドレス0000が0528の2バイトで終わりその次の行がアドレス000Aから始まっています。
この間は割込みテーブル等になるのでそれを意識してそのようになっているのではと思いますがそうしなければならないということではないはずです。
割り込みを使わないので0000からGOTOなしでベタにプログラムを書いてしまうこともありますが普通に実行できています。
ここは自作アセンブラでは全部続けて他の行と同じ16バイト/行にしています。
大抵の場合プログラムの終わりの行は16バイトに満たなくて半端な行になりますがそこもわざわざそうするのは面倒なので最後の行も16バイト/行にしています。
正規のHEXファイルでは各行の終わりには1バイトのチェックサム値が置かれますがPICWRITERでは利用しないのでそこは適当な値(通常は00)にしてあります。
テストのためConfigはConfig1〜Config3まで記述してあります。
今回のHEXファイルの作成プログラムの追加ではいろいろ考えたのですがすでに作成済みのLISTファイルの一部を利用することに落ち着きました。
LISTファイルは前回お見せしました。
その時点ではマシン語コードの16進数表記では英小文字のa〜fを使っていました。
HEXファイルでは英大文字のA〜Fを使います。
そこでそのところを変更しました。
******* 0000 ;25/07/4 25/7/22 for p16asm 0000 ;7/23 0000 ;clock=4MHz 0000 ; #include <p12f629.inc>;***************** 0000 ; 0000 ; __CONFIG _CP_OFF & _MCLRE_ON & _WDT_OFF & _INTRC_OSC_CLKOUT;********0000 ; 0000 ; 400E FC31 config1=31fc 4010 FF3E config2=3eff 4012 9F3F config3=3f9f 0000 00 cf=0 0000 02 zf=2 0000 01 f=1 0000 00 w=0 0000 ; 0000 08 bsr=08 0000 0C porta=0c;bnk0 0000 0C trisa=0c;bnk=1 0000 19 osccon=19;bnk=1 0000 1A oscstat=1a;bnk=1 0000 0C ansela=0c;bnk=3 0000 20 cntr0=20 0000 21 cntr1=21 0000 ; 0000 org 00 0000 0528 goto start 0002 ; 000A org 05 000A start 000A 0330 movlw 3 000C 8800 movwf bsr 000E 8C01 clrf ansela 0010 0130 movlw 1;bsf STATUS,5 ;bank 1 0012 8800 movwf bsr 0014 6830 movlw 68;PLL disenable,intosc=4MHz 0016 9900 movwf osccon 0018 5830 movlw 58;HFINTOSC 001A 9A00 movwf oscstat 001C 8C01 clrf trisa;clrf TRISIO 001E 8801 clrf bsr;bcf STATUS,5;bank 0 0020 ; 0020 loop 0020 8C01 clrf porta;clrf GPIO 0022 1C20 call t0_5s 0024 FF30 movlw 0ff 0026 8C00 movwf porta;movwf GPIO 0028 1C20 call t0_5s 002A 1028 goto loop 002C ; 002C t1ms 002C FA30 movlw 0fa;=250 002E A000 movwf cntr0 0030 t1ms2 0030 0000 nop 0032 A00B decfsz cntr0,f 0034 1828 goto t1ms2 0036 0800 return 0038 ; 0038 t0_5s 0038 FA30 movlw 0fa;=250 003A A100 movwf cntr1 003C t0_5s2 003C 1620 call t1ms 003E 1620 call t1ms 0040 A10B decfsz cntr1,f 0042 1E28 goto t0_5s2 0044 0800 return 0046 ; 0046 ; end ************************ 0046 ; |
これでPIC16アセンブラは基本的には完成したと思います。
超ローコストPICWRITERの製作[第316回]
2025.7.30 upload
前へ
ホームページトップへ戻る