PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第64回]
●PIC18F13K50 WRITE PROGRAM(部分)
相変わらず2〜3日ごとの更新が続いています。
ここしばらくのテーマはPIC WRITERについてですが、もともとはPICBASICコンパイラの製作が本来のテーマです。
そのテーマに沿ってやっているのですが途中であれこれ考えていると派生的に別テーマで書かざるを得なくなってきてしまいます。
それじゃあ今はPIC WRITERについての作業をしているのかといいますと、ここが悩ましいところでなかなか一つのことに注力してはいられないのです。
どんどんとあれもやらなければ、いやこれもやりたい、ということで派生テーマが増えてきてしまいます。
なかなかに困った状態なのです。
実はここしばらくはPIC WRITERとは別の作業にかかっておりました。
いえ。
PICBASICコンパイラからは離れておりません。
PICBASICコンパイラの機能を高めていこうと考える中で派生してきた機能です。
いずれ少しずつ紹介をしていくつもりです。
思いつくのは簡単ですがそれを具体化しようとするとなかなかに手間がかかります。
このところの数日もわけのわからない怪現象に悩まされて苦闘しておりました。
つい先ほど回路のミスとプログラムのバグをみつけてやっと怪現象から開放されてほっと一息ついたところです。
それで。
本題に戻りますと。
前回からの流れでまずはPIC18F13K50のためのPIC WRITERプログラムを作るというところになります。
ノートとテスト作業の際のログで確認したところもう2ヶ月ほど前(6月)に作っておりました。
まだテスト版のつもりなのでところどころはしょっていますがとりあえず試しにPIC18F13K50に適当なプログラムを書き込んでみて、それが正しく書き込めてそしてその書き込んだプログラムがちゃんと動作するところまで確認済みです。
大抵はホームページで紹介するよりも以前に作業していることが多いのです。
そのときすぐにホームページに書けばよろしいのですけれどそのときはまたそれよりもさらに前にやったことについて書かなければならないのですぐには書けません。
6月の当時には何について書いていたのかと思って確認してみましたら当時はLCD表示器について書いておりました。
それぞれにハードウェア、ソフトウェアの両面での作業が必要なので大変なのです。
さて。
それで(また本題に戻りまして)。
そういうことになりますと次にはとりあえず作ったPIC18F13K50用のPIC WRITER PROGRAMについて説明するという流れになるかと思いますが、そこは深入りしないで一部のサンプルのみで済ませてしまうつもりです。
なんだあ。
書かないのか。
と期待はずれでがっかりされる方もいらっしゃるかもしれませんが、おそらく少数派でありましょう。
なんたってPIC WRITERを自作して、しかもそのための書き込みプログラムまで作ってしまおうなどと考えるのはほとんどビョーキでありますから、まあどう見たってノーマルではありませんでしょう。
しかもここで紹介するということになりますと、当然そのプログラムはND80Z3.5で動作するZ80マシン語プログラムになりますから、今時としてはあまりといいますか全然一般向きではありません。
今時は大抵はC++で書くのが当たり前のようです。
勿論それは承知しておりますが私は特にこういうプログラムをCで書くのは邪道だと思っておりますので書きません。
あくまで化石人間のスジを通してZ80アセンブラで書きますです。
実際のところプログラムを書くのもホネが折れる作業なのですが、プログラムの説明を書くのはさらにさらに手間がかかる作業なのです。
どうしても必要な説明については覚悟して書くしかありませんが、PIC WRITERのプログラムの(しかもCではなくてZ80アセンブラの!)説明となると手間がかかるだけでおそらく大方の皆様にとっては面倒で理解できなくて結局スルーしてしまう類のものだと思われます。
ということで一通りの言い訳をいたしまして、PIC WRTERのプログラムについては見本程度でスルーしてしまうことにいたします。
下が見本(サンプルプログラム)です。
; ;erase A377 0E00 ERASE:LD C,00 A379 113C0E LD DE,$0E3C;movlw adrsu(bulk erase control register) A37C CDFDA3 CALL SOUT A37F 11F86E LD DE,$6EF8;movwf TBLPTRU A382 CDFDA3 CALL SOUT A385 11000E LD DE,$0E00;movlw adrsh A388 CDFDA3 CALL SOUT A38B 11F76E LD DE,$6EF7;movwf TBLPTRH A38E CDFDA3 CALL SOUT A391 11050E LD DE,$0E05;movlw adrsl(adrs=3c0005) A394 CDFDA3 CALL SOUT A397 11F66E LD DE,$6EF6;movwf TBLPTRL A39A CDFDA3 CALL SOUT A39D 0E0C LD C,0C;table write A39F 110F0F LD DE,$0F0F;write 0F to 3c0005 A3A2 CDFDA3 CALL SOUT ; A3A5 0E00 LD C,00 A3A7 113C0E LD DE,$0E3C;movlw adrsu(bulk erase control register) A3AA CDFDA3 CALL SOUT A3AD 11F86E LD DE,$6EF8;movwf TBLPTRU A3B0 CDFDA3 CALL SOUT A3B3 11000E LD DE,$0E00;movlw adrsh A3B6 CDFDA3 CALL SOUT A3B9 11F76E LD DE,$6EF7;movwf TBLPTRH A3BC CDFDA3 CALL SOUT A3BF 11040E LD DE,$0E04;movlw adrsl(adrs=3c0004) A3C2 CDFDA3 CALL SOUT A3C5 11F66E LD DE,$6EF6;movwf TBLPTRL A3C8 CDFDA3 CALL SOUT A3CB 0E0C LD C,0C;table write A3CD 118F8F LD DE,$8F8F;write 8F to 3c0004 A3D0 CDFDA3 CALL SOUT ; A3D3 0E00 LD C,00 A3D5 110000 LD DE,$0000;nop A3D8 CDFDA3 CALL SOUT ; A3DB CDFDA3 CALL SOUT A3DE CDE2A3 CALL T6MS ; CALL DTOUT A3E1 C9 RET ; |
見本ですけれど実際にPIC18F13K50のためのWRTERプログラムの一部です。
ええ。
ちゃんと正しく機能します。
前回紹介したMicrochip社の文書にありましたCHIP丸ごと消去のサンプルプログラムに対応する部分です(ほとんどそこをコピペしているだけです)。
基本的にPIC WRITERプログラムはPICのマシン語命令と必要なデータをPICにシリアル通信で送りそれをPIC自身が実行することで行なわれます。
つまるところ。
まずはPICのマシン語の命令動作についての理解が必要で、その上にWRITERプログラムの振る舞いについての概念を理解する必要があります。
おそらく多くの方にとりましてはそこまで行くのはいかにも大変ということでありましょう。
ねえ。
見たってよくわかりませんでしょう。
ですので上にも書きましたようにPIC WRITERプログラムについては説明などは省略しましてこの程度のところで終ることにいたします。
私自身はこういうプログラムを毎日ブツブツ言いながら書いているのです(左様。ほぼビョーキであります)。
気の毒にも同病にしてPIC WRITERについてさらに理解を深めたいとお考えの方は前回紹介しましたようなMicrochip社の参考ドキュメントなどをお読みになることをお勧めします(効能としてはさらに病状が悪化いたします)。
私自身は必要があってPIC WRITERの製作に取り掛かったわけですから(どうせビョーキでありますから)、このあと必要と考えるPICについてのWRITERプログラムを作成しつつ同時に書き込みテストを行なっていくつもりです。
テストの過程などについては時間がありましたらざっと紹介しつつ進みたいと思っています。
時間がない中での作業ですのでなかなか進まないとは思いますが書き込みテストに合格したPICについてはその都度紹介をしていきたいと思います。
対応できるPICの種類がある程度増えてきましたら(いつのことじゃ)ND80Z3.5をお持ちの方向けにはキットとして頒布することもできるようになるかもしれません。
またND80Z3.5に接続しなくてもPICUSBIOに接続できるタイプも製作したいと考えています(これもいつになるか、ですけれど)。
PICBASICコンパイラ[第64回]
2023.8.15upload
前へ
次へ
ホームページトップへ戻る