LIST P=16F628A
 #INCLUDE "P16F628A.INC"
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_MCLRE_OFF&_LVP_OFF
		CBLOCK 0x20
		IDOZIT		;Hosszú késleltetéshez
		VALT		;Változó
		AKT			;Aktuális érték
		ENDC

		ORG		0
		GOTO 	START


		ORG 	4
		BCF		INTCON,GIE
		BCF		T1CON,TMR1ON
		BTFSS	INTCON,INTF ;INT megszakításkor az idő növelése
		GOTO	IDO		;Ha nem INT megszakítás volt, akkor az idő csokkentése (Timer túlcsordulás)
		
		MOVLW	.0	;Timer beállítása
		MOVWF	TMR1L
		MOVLW	.100
		MOVWF	TMR1H
		MOVLW	.10	;Késleltetés visszaállítása
		MOVWF	IDOZIT
		BCF		INTCON,INTF
		BCF		STATUS,C
		RLF		VALT	;VALT értékének balra forgatásával, majd AKT.tal összedásával az 
		MOVFW	VALT	;ido növelése
		ADDWF	AKT,1
		BTFSS	VALT,7
		GOTO	MARAD
		MOVLW	B'0000010'	;A számlálás előről kezdése
		MOVWF	VALT
		MOVWF	AKT
				
MARAD	MOVFW	AKT		;EREDMÉNY kiiratása PORTBre
		MOVWF	PORTB
		BSF		INTCON,GIE
		BSF		T1CON,TMR1ON
		RETFIE


IDO		DECFSZ	IDOZIT,1	;Késleltetés a változó érétékéne csökkentésével
		GOTO	MEGSZV
		
		MOVLW	.10		;Késleltetés visszaállítása
		MOVWF	IDOZIT		
		MOVFW	VALT	;VALT értét egyel jobbra forgatva, majd AKT-ból
		SUBWF	AKT,1	;kivonva PORTB egyhelyiértékkel való csökkentése
		BCF		STATUS,C
		RRF		VALT	
		MOVFW	AKT
		MOVWF	PORTB

MEGSZV	MOVLW	.0		;Timer Visszállítása
		MOVWF	TMR1L
		MOVLW	.100
		MOVWF	TMR1H
		BCF		PIR1,TMR1IF ;Timer megszakítás jelzőbit nullázása
		BSF		INTCON,GIE
		BSF		T1CON,TMR1ON
		RETFIE


START	MOVLW	.7
		MOVWF	CMCON
		BSF		STATUS,RP0
		MOVLW	B'00000000'
		MOVWF	TRISA
		MOVLW	B'00000001'	;INT bemenet
		MOVWF	TRISB
		BSF 	PIE1,TMR1IE
		BCF		STATUS,RP0	
		
		BCF		STATUS,C
		BCF		INTCON,INTF
		BSF		INTCON,INTE
		BSF		T1CON,T1CKPS0
		BSF		T1CON,T1CKPS1
		BSF		INTCON,PEIE
		BSF		T1CON,TMR1ON	
		BSF		PIE1,TMR1IE	
		BCF		PIR1,TMR1IF 
		CLRF	TMR1L
		CLRF	TMR1H
		BSF 	INTCON,GIE

IR		MACRO	HOVA,MIT ;Konstatns írása regiszterbe
		MOVLW	MIT
		MOVWF	HOVA
		ENDM

IRR		MACRO	HOVA,MIT ;Regiszter értékének írása regiszterbe
		MOVFW	MIT
		MOVWF	HOVA
		ENDM

		
	
		IR		IDOZIT,.10
		IR		VALT,B'00001000'
		IR		AKT,B'00001110'
		IRR		PORTB,AKT

		MOVLW	.0		;Timer értékadás
		MOVWF	TMR1L
		MOVLW	.100
		MOVWF	TMR1H	


UJRA	BTFSC	AKT,1 ;Ha sz AKT 1.bitje 0(letelt az idő) megszakítások kikapcsolása, és PORTA 0 egyre állítása
		GOTO 	UJRA
		BCF		INTCON,GIE
		BCF		T1CON,TMR1ON
		BSF		PORTA,0
		SLEEP
END
