LIST P=16F627
#INCLUDE "P16F627.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _MCLRE_OFF & _LVP_OFF

; Változók deklarálása
CBLOCK	0x70
	MPERC1		; másodperc első számjegye
	MPERC10		; másodperc második számjegye
	PERC1		; perc első számjegye
	PERC10		; perc második számjegye
	ORA1		; óra első számjegye
	ORA10		; óra második számjegye
	; Időzítéshez használt változók
	COUNT1
	COUNT2
ENDC

ORG	0

BEALLITAS
	; PORTA
	MOVLW	B'00000111'
	MOVWF	CMCON
	BSF		STATUS,RP0
	MOVLW	B'10000'
	MOVWF	TRISA
	; PORTB
	MOVLW	B'11000000'
	MOVWF	TRISB
	BCF 	STATUS,RP0

START		; Változók nullázása
	CLRF	MPERC1
	CLRF	MPERC10
	CLRF	PERC1
	CLRF	PERC10
	CLRF	ORA1
	CLRF	ORA10

KIIR		; főprogramrész
	CLRF	COUNT1
		CLRF	COUNT2
		eleje1
			call	KIIR1
		INCF	COUNT2,F
		MOVFW	COUNT2
		XORLW	D'100'
		BTFSS	STATUS,Z
		GOTO	eleje1
	call	KIIR1
	INCF	COUNT1,F
	MOVFW	COUNT1
	XORLW	D'50'
	BTFSS	STATUS,Z
	GOTO	eleje1
	;
	call	NOVEL
	goto	KIIR

	KIIR1	; adatok kiírása
	; 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		; Idő növelése
	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
	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		; kijelző törlése, hogy ne legyen áthallás
	MOVLW	B'111111'
	MOVWF	PORTB
	MOVLW	B'0000'
	MOVWF	PORTA
	return

END