;Belső RC oszcillátor ( Csak 4MHz-en fut!!)
;Bemenetek:
;2. láb (GPIO 5)	nyomógomb
;6. láb (GPIO 0)	jumper
;Kimenetek 
;5. láb (GPIO 2)	relé(csengő)
;6. láb (GPIO 1)	led
;MCRL(GPIO 3 láb:4.) az +5V-on, CLKOUT-on(GPIO4 láb:3.) az órajel mérhető(INTRC_OSC_CLKOUT)
;Ha a jumper +5V-on van, akkor hosszút csenget, ha GND-n, akkor rövidet.
;2011.10.30. 
;Verzió: 1.0

	LIST P=12F629
	#INCLUDE "P12F629.INC"
	__CONFIG _CP_OFF &_CPD_OFF &_BODEN_OFF &_PWRTE_ON &_WDT_OFF &_INTRC_OSC_CLKOUT
	
	
;Port definiciók
#DEFINE	be_gomb		GPIO,5		;2. láb nyomogomb
#DEFINE	be_jumper	GPIO,0		;6. láb
#DEFINE	ki_rele		GPIO,2		;5. láb csengö
#DEFINE	ki_led		GPIO,1		;6. láb



;változók definicioja
_I1		EQU		0x30			;idő változói
_I2		EQU		0x31
_I3		EQU		0x32
_H1		EQU		0x33			;


		ORG		0x000
start:  
		CLRF	STATUS		;OK
		CLRF	PCLATH		;OK
		GOTO	konf


;Ports Iniciálás

konf: 
		BCF		STATUS,RP0	;bank 0 kiválasztása		OK
		CLRF	GPIO		;init GPIO
		MOVLW	B'00000111'
		MOVWF	CMCON		;GPIO digit IO
		BSF		STATUS,RP0	;bank 1 kiválasztása		OK
		MOVLW	B'00101001'	;GP0,3,5 IN, GP1,2,4 OUT
		MOVWF	TRISIO		;							OK
		CLRF	WPU			;felhúzóell tiltva			OK
		CLRF	IOC			;interruptok tiltva			OK
		CLRWDT				;							OK
		MOVLW	B'10001111'
		MOVWF	OPTION_REG	;felhúzóell-ok tiltva		OK
		CLRF	INTCON		;interruptok tiltása		OK
		CLRF	PIE1		;							OK
		MOVLW	B'00000001'	;							OK
		MOVWF	PCON		;							OK
		MOVLW	B'10000000'	;hangolás alap	4MHz		OK
		MOVWF	OSCCAL		;							OK
		
		
		
		
prog:	BCF		ki_rele		;induláskor ki
		BSF		ki_led		;induláskor ki
		CALL	ido			;idő kb 1mp
		

vizsgal:BTFSS	be_gomb			;vár csengetésre
		GOTO	$+6				;nem jött
		BCF		ki_led	
		CALL	ido7			;várás rövid!!!!!!!!
		BTFSS	be_gomb			;újra ell, van e még csengetésjel parancs
		GOTO	$+2				;már nincs parancs
		GOTO	cseng			;jött csengetés jel, megy végrehajtani
		BSF		ki_led
		GOTO	vizsgal			;megy vizsgal-ra - vár		
cseng:	
		BTFSC	be_gomb			;vár csengetés jel végére
		GOTO	$-1				;gomb még nyomva
		BTFSS	be_jumper		;jumper vizsgálat +5V vagy GND?
		GOTO	$+2				;jumper GND-n
		GOTO	hosszu			;jumper +5V-on - hosszú csengetés
		GOTO	rovid			;jumper GND-n - rövid csengetés
		
rovid:	BSF 	ki_rele			;rövid csengetés
		BSF		ki_led
		CALL 	ido7			;idő rövid
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido				;idő hosszú
		BCF		ki_led
		CALL	ido
		BSF 	ki_rele
		BSF		ki_led
		CALL 	ido7			;idő rövid
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido				;idő hosszú
		BCF		ki_led
		GOTO	vizsgal
		
hosszu:	BSF 	ki_rele			;hosszú csengetés
		BSF		ki_led
		CALL 	ido7			;idő rövid
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido				;idő hosszú
		BCF		ki_led
		CALL	ido
		BSF 	ki_rele
		BSF		ki_led
		CALL 	ido7			;idő rövid
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido				;idő hosszú
		BCF		ki_led
		CALL	ido
		BSF 	ki_rele
		BSF		ki_led
		CALL 	ido7			;idő rövid
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido7			;idő rövid
		CALL	ido7	
		BSF		ki_rele
		CALL	ido7
		BCF		ki_rele
		CALL	ido				;idő hosszú
		BCF		ki_led
		CALL	ido
		GOTO	vizsgal
		
		
ido:	MOVLW	.21		;idő hosszú
		MOVWF	_I1
		MOVLW	.150
		MOVWF	_I2
		MOVLW	.120
		MOVWF	_I3
		NOP
		DECFSZ	_I3,1
		GOTO	$-2
		DECFSZ	_I2,1
		GOTO	$-6
		DECFSZ	_I1,1
		GOTO	$-B'00001010'
		RETURN
		
ido7:	MOVLW	.255	;idő rövid
		MOVWF	_I1
		MOVLW	.150
		MOVWF	_I2
		NOP
		DECFSZ	_I2,1
		GOTO	$-2
		DECFSZ	_I1,1
		GOTO	$-6
		RETURN


		END
		
		
		
		
		
		

		
		
		
		
	
	
		
		
		
		
		
		
