; ***** PIC12F683 ASM Source File For Sub_Controller_2 (int osc_4MHz) *****
;                                    *** (Ver.61125, by T.S) ***
       	list	p=pic12f683
;	include pic12f683.inc
;      _config _fosc_intoscio & _wdt_disable & _pwrte_enable & _mclre_gp3=i/o & _boden _enable & _cpd_disable & _cp_disable & _ieso_disable & _fcmen_disable     (for AKI writer)

gp	equ	h'05'

outp	equ	h'20'
fr	equ	h'21'
fr1	equ	h'22'
fr2	equ	h'23'
adat	equ	h'24'
bdat	equ	h'25'
fdat1	equ	h'26'
fdat2	equ	h'27'

	org	0
	goto	start

start
	clrf	gp
	clrf	outp
	clrf	fr
	clrf	fr1
	clrf	fr2
	clrf	adat
	clrf	bdat

	bsf	h'03',5		;Bank1へ
	clrf	h'05'		;init GPIO
	bcf	h'03',5		;Bank0へ
	movlw	h'07'
	movfw	h'19'		;digital I/Oへ

	bsf	h'03',5		;Bank1へ
	movlw	h'65'
	movfw	h'0f'		;oscillator 設定(内部 4Mhz)
	clrf	h'1f'		;digital I/Oへ
	movlw	b'001000'       ;3 bitのみ入力、他全て出力
	movwf	h'05'
	bcf	h'03',5		;Bank0へ、以上ポート入出力設定終了

; ***** メインプログラムスタート *****

main
	movlw	h'00'		;***** 出力 イニシャライズ *****
	movwf	outp
	movf	outp,0
	movwf	gp

jp0				;***** Front-Data イニシャライズ *****
	movlw	h'aa'
	movwf	fdat1		;***** 1-Front=Data "h=aa"(変更可) *****
	movlw	h'bb'
	movwf	fdat2		;***** 2-Front-Data "h=bb"(変更可) *****

	call	sursb		;***** 1-Front-Data "h=aa"検出待ち *****
	movf	fr2,0
	xorwf	fdat1,0
	btfss	h'03',2
	goto	jp0

	call	sursb		;***** 2-Front-Data "h=bb"確認 *****
	movf	fr2,0
	xorwf	fdat2,0
	btfss	h'03',2
	goto	jp0

jp1
	call	sursb		;***** １個目のデータ取り込み *****
	movf	fr2,0
	movwf	adat
	call	sursb		;***** ２個目のデータ取り込み *****
	movf	fr2,0
	movwf	bdat

	movf	adat,0		;***** ２個のデータが違う時はjp0へ ***** 
	xorwf	bdat,0
	btfss	h'03',2
	goto	jp0

	movf	adat,0		;***** リレー出力をする *****
	movwf	gp

	goto jp0


; ***** サブルーチン　Rs232c受信(for 4MHz & 2400bps) *****

sursb
	btfsc	gp,3
	goto 	sursb
sur_0
	movlw	h'88'/2		;***** h'88' for 2400bps *****
	movwf	fr
sur_2
	decfsz	fr,1
	goto	sur_2
	movlw	h'08'
	movwf	fr1
	nop
sur_3
	movlw	h'88'		;***** h'88' for 2400bps *****
	movwf	fr
sur_4
	decfsz	fr,1
	goto 	sur_4
	nop
	btfss	gp,3
	bcf	h'03',0
	btfsc	gp,3
	bsf	h'03',0
	rrf	fr2,1
	decfsz	fr1,1
	goto	sur_3
	movlw	h'88'/2		;***** h'88' for 2400bps *****
	movwf	fr
sur_5
	decfsz	fr,1
	goto	sur_5
sur_6
	btfss	gp,3
	goto	sur_6

	return


	end
