LIST P=12F629
        #INCLUDE <P12F629.INC>
        __CONFIG (_CP_OFF&_WDT_OFF & _INTRC_OSC_NOCLKOUT & _PWRTE_OFF & _MCLRE_OFF )

	CBLOCK 0x20
	T1
	T2
	T3
	SZAM
	PR
	ENDC


ORG 0
GOTO START

ORG 4
START
	
	
	CLRF PR
	MOVLW 1
	MOVWF SZAM  ;VÁLTOZÓK INICIALIZÁLÁSA

	BCF STATUS,RP0 ; BANK0

	CLRF GPIO   ;PORT TÖRLÉSE
	

	MOVLW B'00000111'
	MOVWF CMCON               ;DIGITÁLIS LÁBAK
	BCF OPTION_REG,INTEDG           ; FÖLDELÉSNÉL LEFUTÓ ÉLNÉL LEGYEN MEGSZAKÍTÁS
									;(BÁR ASSZEM EZ CSAK GPI2-RE VONATKOZIK)

	BSF STATUS,RP0  ;BANK1
	CLRF TRISIO
	BSF TRISIO,5           ;GPIO5 BEMENET
	
	CLRF IOC
	BSF IOC,IOC5            ;MEGSZAKÍTÁS ENGEDÉLYEZÉSE 5ÖS LÁBON

	BCF STATUS,RP0	     ;BANK0

	MOVF GPIO,0            ;BEOLVASOMA  BIZTONSÁG KEDVÉLYÉRT, HOGY A VÁLTOZÁS EGYÉRTELMŰ LEGYEN
	BCF INTCON,GPIF
	BCF INTCON,GIE		;GLOBAL INTERRUPT
	BSF INTCON,GPIE		; PIN INTERRUPR


	SLEEP
	
CIKLUS
	NOP
	NOP
	NOP
	NOP
	NOP
	BTFSS GPIO,5
	GOTO CIKLUS              ;A GOMB ELENGEDÉSÉIG VÁRJON
	MOVLW B'0010111'
	MOVWF GPIO				; ÖSSZES LED VILÁGÍTSON
	BCF INTCON,GPIF
	

	MOVLW D'255'    ;VÁRÁS IDŐTARTALMA
	MOVWF T1
	MOVWF T2
	MOVLW D'15'
	MOVWF T3

VÁR											
	BTFSS GPIO,5	
	GOTO MEGNYOM		;AMÍG A GOMBOT ÚJRA MEG NEM NYOMOM, VÁRJON
	NOP					;ILLETVE HA LETETLT X IDŐ, AKKOR UGORJON AZ ELEJÉRE (MINTHA KIKAPCSOLNA)
	NOP
	NOP
	NOP
	NOP
	DECFSZ T1
	GOTO VÁR
	MOVLW D'255'
	MOVWF T1
	DECFSZ T2
	GOTO VÁR
	MOVLW D'255'
	MOVWF T2
	DECFSZ T3
	GOTO VÁR
	GOTO START
	
MEGNYOM                  
	INCF SZAM,1           ;HA MEGNYOMTA A GOMBOT, KEZDJE EL NÖVELNI A KIDOBOTT SZŰMOT

	CALL KIIR 				; ÉS ÍRJA KI (KICSIT TRÜKKÖS)
	
	
	BTFSC GPIO,5                 
	INCF PR						; HA MÁR NEM NYOMJUK A GOMBOT, NÖVELJÜK PR-T

	MOVF PR,W
	XORLW D'10'					;EZ AKKOR, HA MÁR NEM NYOMJA A GOMBOT, ÉS ELTELT X IDŐ
	BTFSS  STATUS,Z				
	GOTO MEGNYOM				;AMÍG NYOMJA A GOMBOT, VAGY PÖRÖG A KOCKA ÚJRA KEZDI A CIKLUST
	

	
VÉGE				;A KIDOBOTT SZÁM MÉG KCISIT VILÁGÍT

	MOVLW D'255'
	MOVWF T1
	MOVWF T2
	MOVLW d'15'
	MOVWF T3
	CALL DELAY
	GOTO START
	





DELAY
	BTFSS GPIO,5				; ÚJABB GOMBNYOMÁS KIKAPCS
	RETURN
	NOP
	NOP
	NOP
	NOP
	DECFSZ T1
	GOTO DELAY
	MOVLW D'255'
	MOVWF T1
	DECFSZ T2
	GOTO DELAY
	MOVLW d'255'
	MOVWF T2
	DECFSZ T3
	GOTO DELAY
	RETURN



KIIR
	MOVLW D'1'								;HA A SZÁM 1, EGYES FV
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL EGY
	
	MOVLW D'2'
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL KETTO
	
	MOVLW D'3'
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL HAROM
	
	MOVLW D'4'
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL NEGY
	
	MOVLW D'5'
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL OT
	
	MOVLW D'6'
	XORWF SZAM,0
	BTFSC STATUS,Z
	CALL HAT
	
	RETURN


EGY
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL VSZ				; MEGNÉZI, HOGY A GOMBOT NYOMJUK MÉG, VAGY PÖRÖG MÁR, ILETVE KÉSLELTETÉS
	MOVLW B'00000001'      ;KIIRJA
	MOVWF GPIO
	RETURN

KETTO
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL VSZ
	MOVLW B'00000010'
	MOVWF GPIO
	RETURN

HAROM
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL VSZ
	MOVLW B'00000011'
	MOVWF GPIO
	RETURN

NEGY
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL VSZ
	MOVLW B'00000001'
	MOVWF GPIO
	RETURN

OT
	NOP
	NOP
	NOP
	NOP
	NOP
	CALL VSZ
	MOVLW B'00000111'
	MOVWF GPIO
	RETURN

HAT
	NOP
	NOP
	NOP
	MOVLW D'0'
	MOVWF SZAM
	CALL VSZ
	MOVLW B'00010110'
	MOVWF GPIO
	RETURN
	


VSZ
	MOVF PR,0
	XORLW D'0'
	BTFSC STATUS,Z     ;PR =0 HA MÉG A GOMBOT NYOMJUK, EZ ESETBEN A VSZ TOVÁBBIAKBAN CSAK KÉSLELTETÉS, NEM FUT LE
	RETURN
	MOVF PR,W         ;HA PR MÁR NEM NULLA, A KOCKA PÖRÖG, TEHÁT EGYRE TÖBBET ÉS TÖBBET VILÁGÍT EGY SZÁM, MÍG EL NEM ÉRI PR=10ET
	MOVWF  T3
	MOVLW D'180'
	MOVWF T2
	MOVLW D'255'
	MOVWF T1	


BELSOHUROK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ T1
	GOTO BELSOHUROK
	MOVLW d'255'
	MOVWF T1
	DECFSZ T2
	GOTO BELSOHUROK
	MOVWF D'180'
	MOVWF T2
	DECFSZ T3
	GOTO BELSOHUROK
	INCF PR,1
	RETURN
END