テスト回路&プログラム
プログラムを作成し、ライタで転送し、正常に動作するかの確認です。
これが正常に動けば、PIC開発は準備完了
回路図
はじめに
通常デジタル回路は5Vだが、ここでは乾電池3本の4.5Vにする(説明では5Vで説明)
もちろん5Vを接続してもかまわない
LED部分
回路は ポートBの1(RB1) に LEDを接続
スイッチ部分
ポートAの0(RA0) に接続 常に5Vが入力されている。スイッチを押すと ポートAの0 は0Vになる
スイッチをONにすると、ポートAの0(RA0)が0Vになるのは不思議に思うかもしれないが、この辺は 始める電子回路 プルアップのなぞ などを参考に。
セラミック振動子
ここでは3本足のセラミック振動子を使った。
三本の足が出ているが、両脇の足をPICに接続(どちらでもよい)、そして中央の足はGNDに接続
リセット線
PICの足 MCLR に5Vを接続しているが、これはリセットの部分。
忘れると誤動作するので必ず必要
PICの電源
PICにも電源がないと動かないので、VDDに+(5V)、 VSSに-(GND)を接続
プログラム内容
LIST P=PIC16F84A ;PIC16F84を使う
INCLUDE "P16F84A.INC" ;標準インクルードファイル読み込み
;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
BSF STATUS,RP0 ;Bankを1にする
CLRF TRISB ;ポートBを全て出力に設定
MOVLW B'00001'
MOVWF TRISA ;ポートAのRAだけを入力に設定
BCF STATUS,RP0 ;Bankを0に戻す
MAIN
BTFSC PORTA,0 ;入力判定 POTRA,0PIN =1 "GOTO LED_ON
;左上のピン入力があれば=0
GOTO LED_ON
LED_OFF
MOVLW B'00000000' ;ポートBのOFF
MOVWF PORTB
GOTO MAIN
LED_ON
MOVLW B'00000010' ;ポートBのRB1 ON
MOVWF PORTB
;BSF PORTB,1
GOTO MAIN
END
プログラムの前に
PICにはいっぱい足があるが、このうち、プログラムで使用するのは 点線で囲んだポートA群とB群。
この各足を 1か0 にするのがプログラムの基本的なこと。
1にすると その足に5V、0にすると0Vになる
プログラム内容の簡単な説明
まず __CONFIG
は書きこみソフトで設定もできます。
プログラム上で __CONFIG に続いて設定を書いておくと、書きこみソフトが読み込んだときに 自動的にヒューズを設定してくれます。
詳しくは ライタが出来たら各種ソフト設定 のところを参照
*これを忘れると、プログラムは正しくても動作しないことがある!
転送前に忘れやすいので、このようにプログラムに書き込んでおくと方がいいでしょう。
動作
この回路は スイッチの入力 と LEDを点灯させる出力 があります。
その設定をここでは
ポートAの0を 入力設定にします。(あとは出力設定)
1.BSF STATUS,RP0 ;Bankを1にする
2.TRISAに RA0だけ入力に設定
PICピン | 3 | 2 | 1 | 18 | 17 |
ポートA | RA4 | RA3 | RA2 | RA1 | RA0 |
TRISA | 0 | 0 | 0 | 0 | 1 |
1:入力
0:出力
ポートBを全部 出力設定にします。
PICピン | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 |
ポートB | RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0 |
TRISB | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
これで設定部分は完了
実行部
ポートAの足0 は常に5Vが入力されているので 1 になっている
BTFSC PORTA,0 でポートAの0ピン(RA0) を監視
ポートAの0(RA0)が
- 1の時は
LED_ON 実行 - LEDが点灯 - 0 のとき
スイッチが押されると、0VとなりポートAの0(RA0) が0になると
LED_OFF が実行 - LEDが消灯
- twtter
- google+
- hatena