		LIST P=16F627
#INCLUDE "P16F627.INC"
		__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _MCLRE_OFF & _LVP_OFF
	
		errorlevel -302 ; Turn off banking message
                		; known tested (good) code


		cblock 0x70      			;variables
		it_cnt						;1 sec counter
		second						;second counter
		min							;minute counter
		hour						;hour counter
		flag						;for tick & other flags
		W_TEMP						;W temp while It
		STATUS_TEMP					;Status temp while It
		COUNT
		endc
		
		
#define tick flag,0		
#define led PORTA,0
			org	0x00				; RESET	vector
			goto	Init
			org	0x04
			goto	Inter			; IT Vector

;IT rutin							; This function is called every time
									; if the timer1 overflows (65535->0).

Inter		movlw	low .15542
			movwf	TMR1L			;Load  TMR1L Low part of TMR1 value
			movlw	high .15542
			movwf	TMR1H			;Load  TMR1L High part of TMR1 value
			bcf		PIR1,TMR1IF		;Clear TMR1 IT Flag
			bsf		tick			; Set Tick bit
			retfie

;Main program

Init
	; Saját portbeállítások
	; PORTA
			MOVLW	B'00000111'
			MOVWF	CMCON
			BSF		STATUS,RP0
			MOVLW	B'10000'
			MOVWF	TRISA
	; PORTB
			MOVLW	B'11000000'
			MOVWF	TRISB
;	BCF 	STATUS,RP0
			bsf		PIE1,TMR1IE		;enable TMR1IT
			bcf		STATUS,RP0		;Bank 0 select
			movlw	.20
			movwf	it_cnt			;load IT counter
			clrf	second			; clear second cntr
			clrf	min				; clear minute cntr
			clrf	hour			; clear hour cntr
			clrf	flag			; clear tick bit
			movlw	low .15542		;Load  TMR1L Low part of TMR1 value
			movwf	TMR1L
			movlw	high .15542
			movwf	TMR1H			;Load  TMR1L High part of TMR1 value
			movlw	b'00000001'		;TMR1 Clk intern, prescaler 1, enable 
			movwf	T1CON			;
			movlw	b'11000000'
			movwf	INTCON			;Enable GIE, PIE

Loop		nop
			btfss	tick			;Tick = 1?
			goto	Loop			;	
			bcf		tick			;clear tick bit
			decfsz	it_cnt,f		; decrement IT cntr
			goto	Loop
			movlw	.20
			movwf	it_cnt			;load IT counter
			incf	COUNT,f
			bcf		led
			btfss	COUNT,0
			bsf		led
			goto	Loop

			END