;******************************************************************************************
;  オシレータ
;   Program Name : 
;   Programer    :
;   Create date  :  Version 1.0    H18.09.30
;   History      :
;   Description  :
;     1.Port I/O
;         GPIO(0):Plus Output
;         GPIO(1)～GPIO(3):MODE SW
;         GPIO(5):20MHz OSC Input
;******************************************************************************************

	LIST	P=PIC12F683 	;
	INCLUDE	"P12F683.inc"	;標準ヘッダ定義ファイル
;	__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF 
	__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _IESO_OFF & _FCMEN_OFF 
WLP0	EQU	20H

	ORG	0
	GOTO	START
	ORG	4
	GOTO	START
START
;
	BCF	STATUS,RP0
	MOVLW	07H		; BANK0でデジタルIO設定(Comparator機能でポート設定)
	MOVWF	CMCON0		; BANK0でデジタルIO設定(Comparator機能でポート設定)
	CLRF	GPIO		; BANK0でポート初期化
	BSF	STATUS,RP0
	CLRF	ANSEL		; BANK1でデジタルIO初期化
	MOVLW	B'111110'	; BANK1でPORT設定
	MOVWF	TRISIO		; BANK1でPORT設定
	BCF	STATUS,RP0
;
	BCF	GPIO,0
MAIN
	BTFSC	GPIO,1
	CALL	WAVEA
	BTFSC	GPIO,2
	CALL	WAVEB
	BTFSC	GPIO,3
	CALL	WAVEC
	CALL	WAVED
	GOTO	MAIN

;*******************************************************************************************
;   関数名    : WAVEA　　　　
;   機能      : 100KHzを出力する
;   引数      :
;   変数      :
;   注意      :  20MHz/4/50(STEP) 
;   検証      :  100.000KHzを周波数カウンタで確認済み 
;*******************************************************************************************
WAVEA
	BCF	GPIO,0
	MOVLW	H'07'
	MOVWF	WLP0
WAVEAA0
	DECFSZ	WLP0,F
	GOTO	WAVEAA0
	NOP
	NOP
;
	BSF	GPIO,0
	MOVLW	H'07'
	MOVWF	WLP0
WAVEAB0
	DECFSZ	WLP0,F
	GOTO	WAVEAB0
;
	GOTO	WAVEA


;*******************************************************************************************
;   関数名    : WAVEB　　　　
;   機能      : 50KHzを出力する
;   引数      :
;   変数      :
;   注意      :  
;   検証      :  50.000KHzを周波数カウンタで確認済み 
;*******************************************************************************************
WAVEB
	BCF	GPIO,0
	MOVLW	H'0F'
	MOVWF	WLP0
WAVEBA0
	DECFSZ	WLP0,F
	GOTO	WAVEBA0
	NOP
	NOP
	NOP
;
	BSF	GPIO,0
	MOVLW	H'0F'
	MOVWF	WLP0
WAVEBB0
	DECFSZ	WLP0,F
	GOTO	WAVEBB0
	NOP
;
	GOTO	WAVEB


;*******************************************************************************************
;   関数名    : WAVEC　　　　
;   機能      : 10KHzを出力する
;   引数      :
;   変数      :
;   注意      :  
;   検証      :  10.000KHzを周波数カウンタで確認済み 
;*******************************************************************************************
WAVEC
	BCF	GPIO,0
	MOVLW	H'52'
	MOVWF	WLP0
WAVECA0
	DECFSZ	WLP0,F
	GOTO	WAVECA0
	NOP
	NOP
;
	BSF	GPIO,0
	MOVLW	H'52'
	MOVWF	WLP0
WAVECB0
	DECFSZ	WLP0,F
	GOTO	WAVECB0
;
	GOTO	WAVEC


;*******************************************************************************************
;   関数名    : WAVED　　　　
;   機能      : 5KHzを出力する
;   引数      :
;   変数      :
;   注意      :  
;   検証      :  5.000KHzを周波数カウンタで確認済み 
;*******************************************************************************************
WAVED
	BCF	GPIO,0
	MOVLW	H'A5'
	MOVWF	WLP0
WAVEDA0
	DECFSZ	WLP0,F
	GOTO	WAVEDA0
	NOP
	NOP
	NOP
;
	BSF	GPIO,0
	MOVLW	H'A5'
	MOVWF	WLP0
WAVEDB0
	DECFSZ	WLP0,F
	GOTO	WAVEDB0
	NOP
;
	GOTO	WAVED

	END

