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
	; TIMER
	IDOZIT
	WSAVE
ENDC

ORG	0
	GOTO	START

ORG	4
	BCF      INTCON,T0IF
	DECFSZ   IDOZIT
	RETFIE
	MOVWF    WSAVE
	MOVLW    9
	MOVWF    IDOZIT
CALL	NOVEL
	MOVFW    WSAVE
	RETFIE	; Visszajövünk a megszakításból

START
	; PORTA
	MOVLW	B'00000111'
	MOVWF	CMCON
	BSF		STATUS,RP0
	MOVLW	B'10000'
	MOVWF	TRISA
; TIMER bekapscolása
MOVLW	B'10000111'
MOVWF	OPTION_REG
	; PORTB
	MOVLW	B'11000000'
	MOVWF	TRISB
	BCF 	STATUS,RP0
; TIMER bekapcsolása
MOVLW	9
MOVWF	IDOZIT
BSF		INTCON,GIE
BSF		INTCON,T0IE
	; Változók nullázása
	CLRF	MPERC1
	CLRF	MPERC10
	CLRF	PERC1
	CLRF	PERC10
	CLRF	ORA1
	CLRF	ORA10

KIIR		; 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
GOTO	KIIR

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

; Itt lesz a gombok vizsgálata
; VIZSGALAT1
; GOTO	TOVABB1

END