;******************************************************************************************
;   Project      :
;   Program Name : 
;   Programer    :
;   Create date  :  Version 1.0    H19.12.15
;   History      :
;******************************************************************************************
;   Define I/O
;     GP4:+ Power
;     GP5:- Power
;******************************************************************************************
	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 
;
LP0	EQU	20H
LP1	EQU	21H
LP2	EQU	22H
LP3	EQU	23H
;
	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を設定
	NOP
	NOP
	BCF	STATUS,RP0	; BANK0を選択
	MOVLW	07H		; BANK0でデジタルIO設定
	MOVWF	CMCON0		; BANK0でデジタルIO設定
	CLRF	GPIO		; BANK0でポート初期化
	BSF	STATUS,RP0	; BANK1を選択
	CLRF	ANSEL		; BANK1でデジタルIO初期化
	MOVLW	B'001000'	; BANK1でPORT設定
	MOVWF	TRISIO		; BANK1でPORT設定
	BCF	STATUS,RP0	; BANK0を選択
;
	CALL	PWRST
MAIN
; ****************************
;  1.プラス側にチャージする
; ****************************
;  1-1.ポートリセット
	CALL	PWRST
;  1-2.プラス側にチャージを開始する
	CALL	PLSON
;  1-3.チャージ時間だけ待つ
	CALL	WAIT01
;
; ****************************
;  2.マイナス側にチャージする
; ****************************
;  2-1.ポートリセット
	CALL	PWRST
;  2-2.マイナス側にチャージを開始する
	CALL	MINON
;  2-2.チャージ時間だけ待つ
	CALL	WAIT01

	GOTO	MAIN

;******************************************************************************************
;   Function Name : PWRST
;   Title         : ポートリセット 
;   Input         : 
;   Output        : 
;   Description   : プラス側と、マイナス側が同時にオンになるのを防止する
;******************************************************************************************
PWRST
	CLRF	GPIO
	RETURN


;******************************************************************************************
;   Function Name : PLSON
;   Title         : プラス側にチャージする 
;   Input         : 
;   Output        : 
;   Description   : 
;******************************************************************************************
PLSON
	MOVLW	B'00010000'
	MOVWF	GPIO
	RETURN


;******************************************************************************************
;   Function Name : MINON
;   Title         : マイナス側にチャージする 
;   Input         : 
;   Output        : 
;   Description   : 
;******************************************************************************************
MINON
	MOVLW	B'00100000'
	MOVWF	GPIO
	RETURN

;******************************************************************************************
;   Function Name : WAIT01
;   Title         : チャージ時間だけ待つ 
;   Input         : 
;   Output        : 
;   Description   : 
;       OSC(8MHz) : 8M/4 ==(100)==> 20KHz ==(100)==> 200Hz / 2 ==> 100Hz
;******************************************************************************************
WAIT01
	MOVLW	H'64'
	MOVWF	LP1
WAIT01B
	MOVLW	H'0A'
	MOVWF	LP0
WAIT01A
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	LP0,F
	GOTO	WAIT01A 
	DECFSZ	LP1,F
	GOTO	WAIT01B

	RETURN

	END

