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


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第243回]



●PIC18F45K50(6)SR Latch(3)

前回はSFRに対するREAD/WRITEの小手調べとして/WR、/RDコマンドを使ってPORTBに値を書き込んでそれを読み出すという簡単な操作テストをしました。
SR Latchの動作確認をするためには同様の操作をすればよいはずです。
SRCON0とSRCON1に必要な初期値をセットしたあとSRI端子に信号を入力してその結果SRQ端子とSRNQ端子がどのように変化するかを見るという動作テストです。

ところがSRCON0とSRCON1に値をセットしようとしたのですが。
現在のPICBASICコンパイラの機能のままではそれはできないということに気が付きました。
PICはなかなかに困ったICなのです。
その問題はもう3年も前に[第41回]で書いています。
そこではANSELレジスタについて書いているのですが同じ問題がSRCON0、SRCON1にも当てはまります。

/WRと/RDコマンドはAccess Bankを利用しています。
Access Bankについては[第41回]で説明しています。
PIC18F45K50のDataメモリは000〜7FFの2KBなのですがPICのレジスタアクセスは通常は下位アドレス8ビットのみで行ないます。
そのためPIC18F45K50ではアクセスできるメモリ空間を256バイトごとに区切るバンク切換え方式や上位アドレスをそのための特殊なレジスタに設定するリニアアクセス方式を使います。
それには事前にそのための設定が必要になります。
またこのところ説明しておりますSFRはそれよりも上位の0F57〜0FFFに割り付けられています。

通常ユーザー用のデータレジスタとしてはアドレス000から後ろに向かって割り当てていくのが作法なのですがその場合ユーザー用のデータレジスタとシステム用のSFRとを同じメモリアドレス空間でアクセスすることができません。
PICのプログラムではPORTレジスタなどのSFRは頻繁にアクセスしますしユーザー用のワークレジスタも同時にアクセスする場面が少なくありません。
つまりはユーザー用のデータメモリとSFRは同時にアクセスできないことにはプログラムが複雑にならざるをえません。
それを簡単にするための簡便なひとつの方法としてアクセスできるデータアドレスを000〜05Fまでの範囲に限定してそれをアドレス00〜5Fに割り当て、アドレス60〜FFにはSFRのF60〜FFFを割り当てるという方法がAccess Bankです。
そしてデフォルトではAccess Bank方式が指定されています。
そういうことなのですが[第41回]で指摘しておりますようにPIC18F45K50ではSFRのF57〜F5Fがはみ出してしまってAccess Bank方式ではアクセスすることができません。


[出典]Microchip TechnologyInc. PIC18F2X/45K50 Datasheet

ということで。
/RDと/WRの仕様を変更するためにPICBASICシステムプログラムの一部を変更しました。
変更後の仕様では/RDと/WRでのアドレス指定は00〜56はユーザーメモリエリアの000〜0056に対応し57〜FFはSFRエリアのF57〜FFFに対応します。
これでSRCON0やSRCON1に対しても/RD、/WRコマンドが使えるようになりました。
で。
さっそく使ってみたのですが。
実際はうまく機能していたのですがこの時は思い違いをしてしまったためうまくいっていないと思い込んであれこれやらなくてもよいことをやってしまいました。
その時のログです。


上から12行目で/wr SRCON0,8Cを実行したあと/rd SRCON0を実行してSRCON0がその通りの値になっていることを確認しました。
そのあと/rd PORTAを実行してPORTAが[20]になったことを確認しています。
これでよかったのです。
PORTAのbit4がSRQでbit5がSRNQですから[20]はQ=0、Q_=1ということでRS FFがリセット状態になっているのですがここで私は何をとち狂ったのかRS FFがセット状態だと思い違いをしてしまいました。
ここでとんでもない思い違いをしてしまったためあれこれよけいなことばかりやって結果としてこの時はまともなテストはできませんでした。
今あらためてこのログを見るとSRCON0もSRCON1もちゃんとまともに設定されています。
まともにセットされてないのは私の頭だったのでした。

次回に続きます。

PICBASICコンパイラ[第243回]
2026.6.24 upload

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