PICタイマー







PIC入門の電子工作の手始めとして簡単なタイマーを作りました。2分45秒から15秒おきに3分45秒までを5個のスイッチで設定しリレーをONします。設定時間を過ぎるとリレーはOFFになり同時にブザーで知らせてくれます。今回は遊び心からブザーの長短を使ってモールス符合を作り自分のコールサインで呼んでくれるようにしました。モールス符合はソフトで簡単に書き換えられる様に見やすく書いたつもりです。設定時間のスイッチはどれが押されたかLEDで確認できるようにしました。
時間の誤差は、クロック発振にRCを使いましたので、部屋の温度変化とともに(温度上昇で周波数は下がる)数秒程度あります。いずれ水晶発振かセラミック発振にしたいと思っています。



配線図


PORTAの各BITに時間設定スイッチ(タクトSW)を10KΩのプルアップ抵抗を伴って入れて有りますが、PICは最初どのスイッチがONしているかをしらべます。ONしているスイッチを検知した後、対応したLEDを点灯と同時にPORTBのBIT7もONします。それによってトランジスター2SC1815に付いているリレーをONします。設定時間が過ぎるとPORTBをOFF(LEDとリレーをOFF)した後、こんどはBIT6をON,OFF繰り返し2SC1815にてスピーカーを鳴らします。
設定時間の微調整は、50msecの数字(CNT50M)を書き換える事によりできます。また室温が安定すればクロック周波数も安定し同時に時間も安定します。





;**************************************************

;	タイマー 2分45秒 から3分45秒

;			リレー付き

;	プリント基板 焼き付け用 (2003,2,2)

;**************************************************



	LIST	p=16F84A, R=DEC

	INCLUDE	P16F84A.INC



;**************************************************



	CBLOCK	H'0C'



CNT10	

CNTSET		

CNT15S	

CNT50M	

KAI	

CNT2	

CNT1	

CNT3	

CNT4	



	ENDC

;*************************************************



	CLRF	PORTB

	BSF	STATUS,RP0

	MOVLW	B'11111'

	MOVWF	TRISA

	CLRF	TRISB

	BCF	STATUS,RP0



KEY	BTFSC	PORTA,0		;SW0 ON?

	 GOTO	K1		;SW0 OFF

	CALL	DEL10M		;

	BTFSC	PORTA,0		;チャタリング

	 GOTO	KEY		;SW0 OFF

	CALL	RLYON		;タイマーRELY ON 2分45秒

K1	BTFSC	PORTA,1		;SW1 ON?

	 GOTO	K2		;SW1 OFF

	CALL	DEL10M

	BTFSC	PORTA,1		;チャタリング

	 GOTO	K1

	CALL	RLY3M		;タイマーRELY ON 3分

K2	BTFSC	PORTA,2		;SW2 ON?

	 GOTO	K3		;SW OFF

	CALL	DEL10M

	BTFSC	PORTA,2

	 GOTO	K2

	CALL	RLY3.15M	;タイマーRELY3分15秒

K3	BTFSC	PORTA,3		;SW3 ON?

	 GOTO	K4		;SW OFF

	CALL	DEL10M

	BTFSC	PORTA,3

	 GOTO	K3

	CALL	RLY3.3M		;タイマーRELY ON 3分30秒

K4	BTFSC	PORTA,4		;SW4 ON?

	 GOTO	KEY		;SW4 OFF

	CALL	DEL10M

	BTFSC	PORTA,4

	 GOTO	K4

	CALL	RLY3.45M	;タイマーRELY ON 3分45秒

	GOTO 	KEY		;KEYスキャン



;***********************************************

;	TIMER

;		OSC RC モード 実行クロック約38.4KHz(  ℃)

;***********************************************



DEL10M	MOVLW	52		;チャタリング

	MOVWF	CNT10

DLY10	 GOTO	$+1

	 GOTO	$+1

	DECFSZ	CNT10,1

	 GOTO	DLY10

	RETURN



DELY	MOVWF	CNTSET		;TIM SET

DELY3	MOVLW	30		;約1.5SEC

	MOVWF	CNT15S

DLY1	MOVLW	212		;約50msec

	MOVWF	CNT50M

DLY2	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	DECFSZ	CNT50M,1

	 GOTO	DLY2

	DECFSZ	CNT15S,1

	 GOTO	DLY1

	DECFSZ	CNTSET,1

	 GOTO	DELY3

	CLRF	PORTB

	 GOTO	BZA		;ブザー発振へ



;**********************************************	



RLYON	MOVLW	B'10000001'	;RELY ON

	MOVWF	PORTB

	MOVLW	110

	 GOTO	DELY		;2分45秒DELYへ



RLY3M	MOVLW	B'10000010'	;RELY ON

	MOVWF	PORTB

	MOVLW	120

	 GOTO	DELY		;3分



RLY3.15M

	MOVLW	B'10000100'	;RELY ON

	MOVWF	PORTB

	MOVLW	130

	 GOTO	DELY		;3分15秒



RLY3.3M	MOVLW	B'10001000'	;RELY ON

	MOVWF	PORTB

	MOVLW	140

	 GOTO	DELY		;3分30秒



RLY3.45M	

	MOVLW	B'10010000'	;RELY ON

	MOVWF	PORTB

	MOVLW	150

	 GOTO	DELY		;3分45秒



;*************************************************

;	BZ発振 

;		発振の長さでモールス符号を作る

;

;************************************************



BZA	MOVLW	3

	MOVWF	KAI

BZL	CALL	TANTEN		;J

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	

	CALL	LYASU

	

	CALL	TANTEN		;A

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU



	CALL	LYASU



	CALL	CYOTEN		;9

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU	

	CALL	CYOTEN

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	CALL	TANTEN



	CALL	LYASU



	CALL	TANTEN		;A

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	

	CALL	LYASU



	CALL	TANTEN		;P

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	CALL	CYOTEN

	CALL	YASU

	CALL	TANTEN



	CALL	LYASU



	CALL	CYOTEN		;X

	CALL	YASU

	CALL	TANTEN		

	CALL	YASU

	CALL	TANTEN		

	CALL	YASU

	CALL	CYOTEN



	CALL	LLYASU



	DECFSZ	KAI,1

	 GOTO	BZL

	RETURN			;STP	KEYスキャンに戻る



;*****************************************************************

;	長点と短点

;*****************************************************************



CYOTEN	MOVLW	2

	GOTO	TD3

TANTEN	MOVLW	1

	 GOTO	TD3

;*****************************************************************

;	低周波発振

;*****************************************************************





TD3	MOVWF	CNT2

TD2	MOVLW	200

	MOVWF	CNT1

TD	BSF	PORTB,6

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	NOP

	BCF	PORTB,6

	DECFSZ	CNT1,1

	 GOTO	DL

	DECFSZ	CNT2,1

	 GOTO	DL2

	 GOTO	$+1

	 GOTO	$+1

	RETURN





DL	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	NOP

	 GOTO	TD



DL2	 GOTO	$+1

	 GOTO	$+1

	 GOTO	$+1

	NOP

	 GOTO	TD2

	

;**********************************************************

;	符号と符号の間隔

;**********************************************************



YASU	MOVLW	1

	 GOTO	DLY

LYASU	MOVLW	7

	 GOTO	DLY

LLYASU	MOVLW	12

	 GOTO	DLY



DLY	MOVWF	CNT3

D2	MOVLW	200

	MOVWF	CNT4

DY1	 GOTO	$+1

	 GOTO	$+1

	DECFSZ	CNT4,1

	 GOTO	DY1

	DECFSZ	CNT3,1

	 GOTO	D2

	RETURN



;*******************************************************

;		END

;*******************************************************



	END






アセンブラにかけると以下のようにhexファイルが出来ます



:020000040000FA

:10000000860183161F3085008601831205180C288F

:100010002520051806283C2085181228252085183B

:100020000C284020051918282520051912284420DD

:1000300085191E282520851918284820051A062804

:100040002520051A1E284C20062834308C0028282C

:1000500029288C0B272808008D001E308E00D430F4

:100060008F003228332834288F0B31288E0B2F280D

:100070008D0B2D2886015028813086006E302C286B

:100080008230860078302C288430860082302C28FC

:10009000883086008C302C289030860096302C28B2

:1000A000033090008420A5208220A5208220A52056

:1000B0008220A520A7208420A5208220A520A7207B

:1000C0008220A5208220A5208220A5208220A52094

:1000D0008420A7208420A5208220A520A72084207A

:1000E000A5208220A5208220A5208420A720822070

:1000F000A5208420A5208420A5208220A920900B63

:100100005228080002308628013086289100C83025

:10011000920006178B288C288D288E288F289028EF

:1001200000000613920B9928910BA0289728982875

:1001300008009A289B289C289D289E280000892832

:10014000A128A228A328000087280130AB28073067

:10015000AB280C30AB289300C8309400AF28B028EF

:0A016000940BAE28930BAC280800A6

:00000001FF







PIC電子工作 目次に戻る

-- トップペ-ジ -- アマチュア無線 -- 14MHzトランシーバー -- ホビー電子工作 -- ラジオ雑学クラブ -- PIC電子工作 -- DIARY -- プリント基板配布 -- リンクのページ --




ポジ感光基板の焼き付け用に作りましたが、
その他ラーメンタイマーなどにいかがでしょうか?
リレーを使わなければ、電池(006p)でも動くと思います。





トップペ-ジに戻る