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


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第60回]



●PICUSBIO−03(9)picout、picin

前回からの続きです。
BASICのOUT命令、IN関数を使ってアドレス00のときにPORTC、アドレス01のときにPORTBにアクセスするのと同じようにTRISC、TRISBにも別のアドレスを与えてOUT、INを使ってアクセスできるようにすることは可能です。
しかしそのようにするとそれまでのOUT、INと少しずれた使い方になってしまいます。
PICUSBIO−03についてはこの先ほかにも考えていることがあって、ここでTRISC、TRISBに対してOUT、INでアクセスできるようにするのは少し都合が悪いところがあります。
そこでTRISC、TRISB、PORTC、PORTBに対してはOUT、INとは別の命令、関数を用意することにしました。
OUT命令に代わるものとしてはPICOUT、IN関数に代わるものとしてはPICIN関数です。
使い方はOUT、INと同じです。
PICOUT、PICINはPICUSBIO−3以外には使えません。
PICOUT、PICINはアドレスの代わりにTRISC、TRISB、PORTC、PORTBを記述します。
PICOUT、PICINは大文字でも小文字でも構いませんがTRISC、TRISB、PORTC、PORTBは大文字でなければなりません。
小文字にすると普通の変数としての扱いになってしまいます。
下は使用例です。

簡単な使用例なのでダイレクトモードで実行しました。
もちろんプログラム中で使うこともできます。
TRISC、TRISBはそれぞれPORTC、PORTBのための方向指示レジスタです。
そこに出力する値の0のビットに対応するPORTC(PORTB)のビットが出力になり、1のビットが入力になります。
上の例ではTRISCに0(00000000)を出力しましたからPORTCは全ビットが出力になります。
TRISC、TRISBは書込用レジスタですが値を読み出すことも可能です。
TRISC、TRISBに対してPICINを実行すると設定した値がそのまま読み出されます。
PORTC、PORTBで出力に設定されているビットに対してはPICINによってそのとき出力されている値が読み出されます。

続いてPORTCに対して今までと同じようにOUT、INを実行して比べてみました。

前回説明しましたようにOUTを実行したポートに対してINを実行してもそれ以前の出力データを読み込むことはできません。
ポートのそとにプルアップ抵抗がついているのでFFが読み込まれました。

さらに続いてこのときのTRISCの値を読み込んでみました。

その前のin(0)の実行によってPORTCは入力に設定されたため、TRISCの値は255($FF)に変わっています。
(PICINを実行してもTRISレジスタの値は変更されません)

続いて上と同じことをTRISB、PORTBに対しても実行してみました。


これが今までのOUT、INとどのように違うのか、まだよくお分かりにならないかもしれません。
今私はこれは良いものができそうだと思っています(ちょっと自画自賛かもしれませんが)。
何がどのようによいものなのかは回が進むにしたがってゆるゆると明らかになってくると思います。
ご期待ください。

PIC−USBIO using BASIC[第60回]
2022.9.24upload

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