;	PIC10F200 LED lighting ON/OFF by double NiH battery
;	04/17/2010  revised 
;	GP2に1.2k経由2SC2458を接続、TRのCにはインダクタを接続
;	インダクタは100μHとし、1μS駆動、20μSあるいは200μSオフ
	list	p=PIC10F200
	#include	<P10F200.inc>
;CONFIGULATION GP3/MCLR 使う
	__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
count1	EQU		0x10	;inducter on/off counter
count2	EQU		0x11	; LED ON/OFF 1st counter
count3	EQU		0x12	; LED ON/OFF 2nd counter
onoff	EQU		0x13	; LED ON/OFF FLAG ODD=on
;
	org	0x0
	nop
	movwf	OSCCAL		;OSCCAlにセットする
	nop
	clrf	GPIO		;GPIOをクリア
	nop
	movlw	b'00001010'	;WORK<-00001010 GP0,2出力、GP1、3入力
	movwf	GPIO		;GPIOレジスタへ0000 1010を設定
	TRIS	GPIO		;GPIO制御レジスタのGP0,2をアクティブに
	movlw	b'10000110'	;ウェイクアップ無効、弱プルアップ有効
	option		;弱プルアップ設定 ビット6が0
	bcf	GPIO,2	;GP2 OFF
	bsf	onoff,0	;LED ON/OFF FLAG を1に
MAIN
	movlw	0xFF		;255回LOOP
	movwf	count2	;1st counter set
	incf	onoff,1	; LED ON/OFF 1加算して
MAIN2
	movlw	0x8		;8*255 8回
	movwf	count3	;2nd counter set
LOOP1
	movlw	0x0FF		;255回LOOP
	movwf	count1	;work -> count1レジスタにループカウントを設定
LOOP2
	decfsz	count1,1	;decrement count1レジスタ1減算
	goto	LOOP2		;結果がゼロになるまでループ
	btfsc	onoff,0	;onoffが0ならば次命令スキップ=消灯
	bsf	GPIO,2	;Inducter current ON インダクタに充電電流流す
	bcf	GPIO,2	;Inducter current OFF 電流を切る
	movlw	0x10		;50μs set 切る時間50μs設定値
	btfsc GPIO,1	;Bright/Dark SW check GP1暗明スイッチの状態を見る
	movlw	0x02		;10μs set スイッチが入っていると0なのでこの命令スキップ
	movwf	count1	;work -> count1レジスタにループカウントを設定
	decfsz	count3	;ON/OFF 2nd counter 1減算
	goto	LOOP2		;結果がゼロで無ければループ
	decfsz	count2	;ON/OFF 1st counter 減算
	goto	MAIN2		;2nd counter
	goto	MAIN		;1st counter
	org	0xff
	retlw	02		;チップのOSCCAL固有値をもってもどる
	end
inserted by FC2 system