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

BEKAPCSOLASKOR			; mutatja, hogy a PIC működik
	MOVLW	B'000000'
	MOVWF	PORTB
	MOVLW	B'111111'
	MOVWF	PORTA
	movlw	65
	call	Delay
	call	TORLES
	movlw	65
	call	Delay
goto	BEALLITASKOR

START
	CLRF	MPERC1
	CLRF	MPERC10
	CLRF	PERC1
	CLRF	PERC10
	CLRF	ORA1
	CLRF	ORA10

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	NOVEL
	goto	KIIR

	KIIR1
	; másodperc
	call	TORLES
	MOVLW	B'11111110'
	MOVWF	PORTB
	MOVF	MPERC1,W
	MOVWF	PORTA
	call	TORLES
	MOVLW	B'11111101'
	MOVWF	PORTB
	MOVF	MPERC10,W
	MOVWF	PORTA
	; perc
	call	TORLES
	MOVLW	B'11111011'
	MOVWF	PORTB
	MOVF	PERC1,W
	MOVWF	PORTA
	call	TORLES
	MOVLW	B'11110111'
	MOVWF	PORTB
	MOVF	PERC10,W
	MOVWF	PORTA
	; óra
	call	TORLES
	MOVLW	B'11101111'
	MOVWF	PORTB
	MOVF	ORA1,W
	MOVWF	PORTA
	call	TORLES
	MOVLW	B'11011111'
	MOVWF	PORTB
	MOVF	ORA10,W
	MOVWF	PORTA
	return

NOVEL
	MOVFW	MPERC1
	XORLW	B'1001'
	BTFSS	STATUS,Z
	GOTO	KISEBBMPERC1
	GOTO	NAGYOBBMPERC1
KISEBBMPERC1
	INCF	MPERC1,F
	return
NAGYOBBMPERC1
	CLRF	MPERC1
	MOVFW	MPERC10
	XORLW	B'0101'
	BTFSS	STATUS,Z
	GOTO	KISEBBMPERC10
	GOTO	NAGYOBBMPERC10
KISEBBMPERC10
	INCF	MPERC10,F
	return
NAGYOBBMPERC10
	CLRF	MPERC10
	MOVFW	PERC1
	XORLW	B'1001'
	BTFSS	STATUS,Z
	GOTO	KISEBBPERC1
	GOTO	NAGYOBBPERC1
KISEBBPERC1
	INCF	PERC1,F
	return
NAGYOBBPERC1
	CLRF	PERC1
	MOVFW	PERC10
	XORLW	B'0101'
	BTFSS	STATUS,Z
	GOTO	KISEBBPERC10
	GOTO	NAGYOBBPERC10
KISEBBPERC10
	INCF	PERC10,F
	return
NAGYOBBPERC10
; eddiftutirajó ****************************************
;	CLRF	PERC10
;	MOVFW	ORA10
;	XORLW	B'0010'
;	BTFSS	STATUS,Z
;	GOTO	ORA10NULLAEGY
;	GOTO	ORA10KETTO
;ORA10NULLAEGY
;	MOVFW	ORA1
;	XORLW	B'1001'
;	BTFSS	STATUS,Z
;	GOTO	ORA1KISEBB1
;	GOTO	ORA1NAGYOBB1
;ORA1KISEBB1
;	INCF	ORA1,F
;	return
;ORA1NAGYOBB1
;	CLRF	ORA1
;	INCF	ORA10,F
;	return
;ORA10KETTO
;	MOVFW	ORA1
;	XORLW	B'0100'
;	BTFSS	STATUS,Z
;	GOTO	ORA1KISEBB2
;	GOTO	ORA1NAGYOBB2
;ORA1KISEBB2
;	INCF	ORA1,F
;	return
;ORA1NAGYOBB2
	CLRF	MPERC1
	CLRF	MPERC10
	CLRF	PERC1
	CLRF	PERC10
	CLRF	ORA1
	CLRF	ORA10
	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