テスト回路&プログラム

PIC16F84

自作した RCDライタ や 正統派パラレルライタ でPICに書き込み、正常に実行できるかテスト

 

テストするものは簡単なプログラム LED点灯とそれをスイッチでコントロールする機能のプログラム

テスト回路&プログラム

プログラムを作成し、ライタで転送し、正常に動作するかの確認です。

これが正常に動けば、PIC開発は準備完了

 

回路図

PICtest-cir1

 

はじめに

通常デジタル回路は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ピン 18 17
ポートA RA4 RA3 RA2 RA1 RA0
TRISA 0 0 0 0 1
 

1:入力
0:出力

 ポートBを全部 出力設定にします。

PICピン 13 12 11 10
ポート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. 1の時は
     LED_ON 実行 - LEDが点灯
  2. 0 のとき
     スイッチが押されると、0VとなりポートAの0(RA0) が0になると 
    LED_OFF が実行 - LEDが消灯

 

  • facebook
  • twtter
  • google+
  • hatena