;******************************************************************************************
;  車用懐中電灯
;   Program Name : 
;   Programer    :
;   Create date  :  Version 1.0    H18.01.20
;   History      :
;******************************************************************************************
;   Define I/O
;     GP0:LED(Green)
;     GP1:LED(Red) 
;     GP2:LED(Blue)
;     GP3:Mode SW 
;     GP4:None
;     GP5:None
;******************************************************************************************
;====================== 以下はPIC12F683用の記述 ======================
	LIST	P=PIC12F683,ST=OFF,R=DEC
	INCLUDE	"P12F683.inc"	;標準ヘッダ定義ファイル
	__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF 
;
LPTIM01A EQU	20H
LPTIM01B EQU	21H
LPTIM01C EQU	22H
;
	ORG	0
	GOTO	START
	ORG	4
	GOTO	START
START
	BSF	STATUS,RP0	; BANK1を選択
	BSF	OSCCON,6	; 8MHzを設定
	BSF	OSCCON,5	; 8MHzを設定
	BSF	OSCCON,4	; 8MHzを設定
	BCF	STATUS,RP0
	MOVLW	07H		; BANK0でデジタルIO設定
	MOVWF	CMCON0		; BANK0でデジタルIO設定
	CLRF	GPIO		; BANK0でポート初期化
	BSF	STATUS,RP0
	CLRF	ANSEL		; BANK1でデジタルIO初期化
	MOVLW	B'111000'	; BANK1でPORT設定
	MOVWF	TRISIO		; BANK1でPORT設定
	BCF	STATUS,RP0
;=====================================================================
	BSF	GPIO,0
	BSF	GPIO,1
	BSF	GPIO,2
	CALL	DEMO01
MAIN
	BTFSS	GPIO,3
	CALL	PRG01
	BTFSC	GPIO,3
	CALL	DEMO01
	GOTO	MAIN
;
;******************************************************************************************
;   Function Name : PRG01
;   Title         : 懐中電灯
;   Input         : 
;   Output        : 
;   Disctiption   : 
;******************************************************************************************
PRG01
	BCF	GPIO,0
	BCF	GPIO,1
	BCF	GPIO,2
	RETURN
;******************************************************************************************
;   Function Name : DEMO01
;   Title         : デモ01
;   Input         : 
;   Output        : 
;   Disctiption   : 
;******************************************************************************************
DEMO01
; 1
	BCF	GPIO,0
	BSF	GPIO,1
	BSF	GPIO,2
	CALL	TIM02
; 2
	BSF	GPIO,0
	BCF	GPIO,1
	BSF	GPIO,2
	CALL	TIM02
; 3
	BSF	GPIO,0
	BSF	GPIO,1
	BCF	GPIO,2
	CALL	TIM02
; 2
	BCF	GPIO,0
	BCF	GPIO,1
	BCF	GPIO,2
	CALL	TIM02
;
	BSF	GPIO,0
	BSF	GPIO,1
	BSF	GPIO,2
	CALL	TIM02
;
	BCF	GPIO,0
	BCF	GPIO,1
	BCF	GPIO,2
	CALL	TIM02;
	BSF	GPIO,0
	BSF	GPIO,1
	BSF	GPIO,2
	CALL	TIM02
;
	BCF	GPIO,0
	BCF	GPIO,1
	BCF	GPIO,2
	CALL	TIM02
;
	BSF	GPIO,0
	BSF	GPIO,1
	BSF	GPIO,2
	CALL	TIM02
;
	RETURN
;

;******************************************************************************************
;   Function Name : TIM05
;   Title         : WAIT(0.5S)
;   Input         : 
;   Output        :
;   Disctiption   : 10Hz => 2Hz
;******************************************************************************************
TIM05
	CALL	TIM01
	CALL	TIM01
	CALL	TIM01
	CALL	TIM01
	CALL	TIM01
	RETURN

;******************************************************************************************
;   Function Name : TIM02
;   Title         : WAIT(0.2S)
;   Input         : 
;   Output        :
;   Disctiption   : 10Hz => 5Hz
;******************************************************************************************
TIM02
	CALL	TIM01
	CALL	TIM01
	RETURN
;******************************************************************************************
;   Function Name : TIM01
;   Title         : WAIT(0.1S)
;   Input         : 
;   Output        :
;   Disctiption   : 8MHz/4 => 10KHz => 100Hz => 10Hz
;******************************************************************************************
TIM01
	MOVLW	H'0A'	; 10
	MOVWF	LPTIM01C
TIM01C
	MOVLW	H'64'	; 100
	MOVWF	LPTIM01B
TIM01B
	MOVLW	H'64'	; 100
	MOVWF	LPTIM01A
TIM01A
	DECFSZ	LPTIM01A,F
	GOTO	TIM01A 
	DECFSZ	LPTIM01B,F
	GOTO	TIM01B 
	DECFSZ	LPTIM01C,F
	GOTO	TIM01C 
	RETURN
	END
