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


超ローコストPICWRITERの製作

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

[第310回]



●PIC12F1612(3)PIC12F1612のSFR

前回はPIC12F629のSFRについて説明しました。
今回はPIC12F1612のSFRについて説明します。
PIC12F1612のSFRはPIC12F629に比べて桁違いに多いです。
そのうちでも最も基本的で重要なものについてPIC12F1612のData SheetではCORE REGISTERSとして説明しています。


[出典]Microchip Technology Inc. PIC12F1612 Data Sheet

これだけを見ると前回のPIC12F629のSFRとそれほど違っているようには思えないかも知れませんが実は大違いなのです。
よく見るとここにはI/OポートもTIMERもありません。
PIC12F1612のSFRの全体は以下の図に示されています。


[出典]Microchip Technology Inc. PIC12F1612 Data Sheet

思わずのけぞってしまいそうですがこんなもんじゃありません。
これでごく一部です。
上の図はBANK0からBANK7までを示しています。
冗長になりますから以下は省略しましたがPIC12F1612のSFRはBANK31まであります。
PIC12F629はBANK0とBANK1だけでした。
そのバンクを切り換えるにはSTATUSレジスタのbit5を使いました。
2つのバンクしかありませんから1bitあれば足ります。
しかし32バンクもあると切り換えるのも大変です。
PIC12F1612ではバンクを切り換えるには専用のレジスタBSRを使います。
BSRはさきほどのCORE REGISTERSの中にあります。
アドレスはx08Hまたはx88Hです。
BSRの機能は下の図で説明されています。


[出典]Microchip Technology Inc. PIC12F1612 Data Sheet

前回書きましたようにPIC16F/12Fの命令コードではレジスタのアドレスとして7ビットしか割り当てられていません。
それではメモリアドレスの00〜7Fの範囲しかアクセスできません。
メモリアドレスの上位ビットを補うためにBSRが使われます。
BSRレジスタのbit4〜bit0がバンクセレクトとして働くことでBANK0〜BANK31のアクセスを可能にしています。
そのようにPIC12F1612ではバンク切り換えにSTATUSレジスタを使う代わりにBSRレジスタを使うのでSTATUSレジスタのbit5は未定義になっています。


[出典]Microchip Technology Inc. PIC12F1612 Data Sheet

するとそもそもPIC12F629のテストプログラムでI/Oポートの向きの指定を行なうためのバンク切り換えでSTATUSレジスタのbit5を指定しているところはPIC12F1612では全く役に立たないことになってしまいます。
それにI/Oポートの名前もアドレスも異なります。
PIC12F629のI/OポートはGPIOで入出力設定レジスタはTRISIOです。
アドレスはGPIOが05HでTRISIOが85Hです。
PIC12F1612ではPOATA、TRISAです。
アドレスは00CH、08CHです。
共通しているのはどちらもBANK0、BANK1にあるという点だけです。
これではPIC12F1612が動かなかったのも当たり前です。
つまるところ。
PIC12F1612のためのテストプログラムを書かなければならないということになります。
やっぱり手抜きはだめでした。

次回に続きます。

超ローコストPICWRITERの製作[第310回]
2025.7.6 upload

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