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


PIC−USBIO using BASIC

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

[第67回]



●PICUSBIO−03(16)Timer0(4)方形波の出力

前回はTimer0のオーバーフローフラグTMR0IFを読むことでPORTCから350msec周期のパルスを出力しました。
前回はTMR0IFを利用することとRC5から入力するクロックをカウントするTimer0のカウンタモードのテストを兼ねて行なうことが目的でした。
そのためPORTCのRC5からはTimer0のオーバーフローのタイミングに同期したHLパルスを出力することだけを考えました。
前回のパルス出力プログラムは入力側のPICのTimer0がカウントできるパルスであればよいということで作りましたからTimer0がオーバーフローしたときだけ幅の狭いパルスを出力するプログラムになりました。
今回はその出力プログラムを少しだけ変形してデューティ比50%の方形波を出力することを考えてみました。
下は前回のプログラムです。


下は前回のプログラムを少しだけ変形して方形波を出力するようにしたプログラムです。

もとのプログラムの50行のところを50行、60行のように変更しました。
もとのプログラムの50行ではpicout PORTC,0を実行していますがその部分を削除しました。
その代わりに60行を追加しました。
60行では今まで説明をしてこなかったLATCというレジスタを使っています。
LATレジスタはPIC16Fなどにはなかったレジスタです。
PIC18Fで追加されました。
ここでLATレジスタについての説明を始めますと説明が長くなってしまいます。
LATレジスタについては次回あたりで説明をするつもりです。
今回のプログラムではLATCの代わりにPORTCを使って下のようにしても問題はありません。

PIC16Fなどのプログラムに慣れてみえる方にはこちらのほうがわかりやすいかと思います。
こちらのプログラムを使って説明を続けます。
PORTCを読み込んで$20(00100000)とのXOR(exclusive or、排他的論理和)を計算しています。
XORはビット演算でよく使われます。
この計算の場合ビット5のみが反転します。
「よくわからんなあ」という方は「XOR」または「排他的論理和」で検索してみてください。
’1’の相手は反転し(1が0に0が1になります)、’0’の相手はもとのままです。

下は上のプログラムを実行した結果です。

方形波が出力されました。
プログラムの考え方が前回とは少し異なりますから出力する波形の周期は前回の倍の700msecになります。

PIC−USBIO using BASIC[第67回]
2022.10.4upload

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