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


PIC−USBIO using BASIC

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

[第197回]



●PICUSBIO−08(3)動作テスト(2)

PIC18F4550は82C55と同じ40pinのLSIです。
82C55のI/OポートはPORTA、PORTB、PORTC(いずれも8ビット)の3ポートですがPIC18F4550にはA〜Eの5ポートがあります。
PICではI/Oポートのビット毎の端子名にはPORTA〜PORTEの代わりにRA〜REを使います。
PORTA〜PORTE(RA〜RE)は82C55と同じように8ビットのものもありますが一部のビットのみのものもあります。
そのあたりのことを理解していただくためとこれからのテストプログラムの説明のための参考としてPICUSBIO−08の回路図を下に示します。
この回路図は[第183回]でお見せしました。

I/Oポートの各ビットは26pinと10pinのフラットケーブルコネクタに配線してあります。
前回説明しましたPICUSBIO−01の82C55のI/Oポートの入出力も26pinのフラットケーブルコネクタに配線してあります。
82C55のPORTA〜PORTC(PA〜PC)に合わせてPIC18F4550のPORTA〜PORTE(RA〜RE)の入出力ビットを同じように26pinのフラットケーブルコネクタに配線できればよいのですがPIC18F4550のAポートはRA0〜RA5の6ビットしかなく、CポートはRC0〜RC2とRC6、RC7の5ビットしかありません。
BポートとDポートは8ビットあります。
またそのほかにEポートはRE0〜RE2の3ビットあります。
そこで82C55を使ったプログラムとの互換性をできるだけ維持できるように8ビット全部が揃っているPIC18F4550のBポートを82C55のPORTAに合わせて配置しPIC18F4550のDポートを82C55のPORTBに合わせて配置しました。
PIC18F4550のCポートについてはRC0〜RC2とRC6〜RC7を82C55のPC0〜PC2、PC6〜PC7に合わせて配置しRE0〜RE2は82C55のPC3〜PC5に配置しました。
そのように配置したPICUSBIO−08の26pinコネクタの端子図を下に示します。

PA0〜PA7、PB0〜PB7、PC0〜PC7が82C55のI/O端子名を示し()内にPIC18F4550のI/O端子名を示しました。
PIC18F4550のRA0〜RA5は10pinコネクタに配置していますがそれについては後ほど説明します。
26pinのフラットケーブルコネクタにはできるだけ82C55のI/O端子に合わせてPIC18F4550の端子信号を配置しましたので前回紹介しましたPICUSBIO−01のテストプログラムが利用できそうです。
PIC18F4550のDポートとBポートは82C55のBポート、Aポートの代わりに置き換えることができそうですがPIC18F4550のCポート、Eポートは合わせて82C55のCポートを置き換えることになります。
そこがちょっと面倒なので前回のプログラムのようにAポート〜Cポートの出力を同時に変化させるのではなくて、各ポート毎に別々のプログラムを作ってテストすることにしました。

最初はRD0〜RD7のテストです。
下が作成したテストプログラムです。

ほとんど前回のプログラムと同じです。
違うところはOUT命令の代わりにPICOUT命令を使っているところです。
そして82C55のBポートに出力する代わりにPIC18F4550のPORTDに出力しています。
30行のTRISDはPORTDの入出力の向きを設定するレジスタです。
0を設定したビットが出力になり1を設定したビットが入力になります。
PICOUT命令については[第193回]を参照してください。

下はプログラムを実行中の写真です。

RD0〜RD7は26pinコネクタに82C55のPB0〜PB7の代わりに配置しましたからLED表示ボードのBポート(真ん中のライン)に出力されます。
最初に右端のLEDが約0.5秒間消灯しそれからは約0.5秒ごとに消灯位置が左にシフトしていきます。
左端までいくとまた右端に戻ってそれが繰り返されます。
BASICはハードウェアに依存しないプログラムを書くことができるという長所があるのですがさすがにハードウェアの制御そのものに対しては完全にハードウェアから離れたプログラムを書くことには無理があります。
しかし上で説明しましたように回路を工夫することでハードウェアが異なっていてもその違いをできるだけ少なくしたプログラムを書くことができます。
本当にBASICは便利だと思います。

次はRB0〜RB7のテストです。
下が作成したテストプログラムです。

さきほどのプログラムのPORTDをPORTBに置き換えただけです。

下はプログラムを実行中の写真です。

RB0〜RB7は26pinコネクタに82C55のPA0〜PA7の代わりに配置しましたからLED表示ボードのAポート(一番上のライン)に出力されます。
最初に右端のLEDが約0.5秒間消灯しそれからは約0.5秒ごとに消灯位置が左にシフトしていきます。
左端までいくとまた右端に戻ってそれが繰り返されます。

説明の途中ですが説明が長くなってしまいますので今回はここまでにします。
この続きは次回にいたします。

PIC−USBIO using BASIC[第197回]
2023.3.18upload

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