LIST P=16F627
#INCLUDE "P16F627.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _MCLRE_OFF & _LVP_OFF

; Változók
CBLOCK	0x70
	M_Delay
	Fine_Delay
	Coarse_Delay
		MPERC1
		MPERC10
		PERC1
		PERC10
		ORA1
		ORA10
	COUNT1
	COUNT2
ENDC

ORG	0

BEALLITAS
	; PORTA
	MOVLW	B'00000111'
	MOVWF	CMCON
	BSF		STATUS,RP0
	MOVLW	B'00000'
	MOVWF	TRISA
	; PORTB
	MOVLW	B'00000000'
	MOVWF	TRISB
	BCF 	STATUS,RP0

START
	CLRF	MPERC1
	CLRF	MPERC10
	MOVLW	B'0101'
	MOVWF	MPERC10

KIIR
	CLRF	COUNT1
		CLRF	COUNT2
		eleje1
			call	KIIR1
		INCF	COUNT2,F
		MOVFW	COUNT2
		XORLW	D'100'
		BTFSS	STATUS,Z
		GOTO	eleje1	;kisebb
	call	KIIR1
	INCF	COUNT1,F
	MOVFW	COUNT1
	XORLW	D'100'
	BTFSS	STATUS,Z
	GOTO	eleje1	;kisebb
	;
	call	KIIR2
	goto	KIIR

	KIIR1
	call	TORLES
	MOVLW	B'11111110'
	MOVWF	PORTB
	MOVF	MPERC1,W
	MOVWF	PORTA
	call	TORLES
	MOVLW	B'11111101'
	MOVWF	PORTB
	MOVF	MPERC10,W
	MOVWF	PORTA
	return
	KIIR2
	call	NOVEL
	return

NOVEL
	MOVFW	MPERC1
	XORLW	B'1001'
	BTFSS	STATUS,Z
	GOTO	KISEBB
	GOTO	NAGYOBB
KISEBB
	INCF	MPERC1,F
	return
NAGYOBB
	CLRF	MPERC1
	return

TORLES
	MOVLW	B'111111'
	MOVWF	PORTB
	MOVLW	B'0000'
	MOVWF	PORTA
	return

aDelay		; szimulációhoz
NOP
return

Delay
	movwf	Coarse_Delay
	Delay_M
		movlw	H'0A'
		movwf	M_Delay
		Delay01
			movlw	H'FF'
			movwf	Fine_Delay
			Delay02
				NOP
				decfsz  Fine_Delay,F	; this loop takes approx 1mSec
				goto    Delay02
				decfsz  M_Delay,F
				goto    Delay01
				decfsz  Coarse_Delay,F
				goto    Delay_M
				retlw   0

END