
	list P = 16F628A
	include "p16F628A.inc"
	__CONFIG _CP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF

; Változók
; -várakozás - belső
vár		EQU	070h
vár2		EQU	071h
; - időadatok
Tcs		EQU	20h		;túlcsordolás számláló
sec		EQU	21h
perc		EQU	22h
óra		EQU	23h
nap		EQU	24h
ell_		EQU 25h
; -vezérlés
LEDsec	EQU	6	;portB
LEDperc	EQU	7	;portB
LEDóra	EQU	0	;portA
SWmod		EQU	3	;portA
SWset		EQU	4	;portA
ell_1		EQU 2	;portA
TápI		EQU	1	;portA
; - interrupt:
STATUS_TEMP		EQU	079h
W_TEMP		EQU	07Ah



		ORG	0x0
		GOTO init
    	ORG	0x0004		; megszakitás rutin
	MOVWF   W_TEMP		;W mentése
	SWAPF   STATUS,W
	BCF     STATUS,RP0
	MOVWF   STATUS_TEMP	;STATUS mentése

	BTFSC	INTCON,INTF	;PORT B0 okozta a megszakitást ?
	GOTO	RBINT
	btfsc	PIR1,TMR1IF	;TMR1 okozta a megszakitást ?
	goto	TMRINT
	retfie

TMRINT:
	call	v1
	goto	Ki

v1:
	movlw	d'148'
	movwf	TMR1L	; órakorrekció
	movlw	d'37'
	movwf	TMR1H	;3,579545 MHZ-es qvarc-hoz

	incf	Tcs,f
	movlw	d'16'		;d'16'-al a szimulátoron jó
	subwf	Tcs,w
	btfss	STATUS,Z
	return
	movlw	0x0
	movwf	Tcs


s1:	incf	sec,f
	movlw	d'60'
	subwf	sec,w
	btfss	STATUS,Z
	return

p1:	incf	perc,f
	movlw	0x0
	movwf	sec
	movlw	d'60'
	subwf	perc,w
	btfss	STATUS,Z
	return

o1:	incf	óra,f
	movlw	0x0
	movwf	perc
	movlw	d'24'
	subwf	óra,w
	btfss	STATUS,Z
	return

n1:	incf	nap,f
	movlw	0x0
	movwf	óra
	movlw	d'8'
	subwf	nap,w
	btfss	STATUS,Z
	return
	movlw	0x1
	movwf	nap
	return

RBINT:
;	BCF	T1CON,0		;TIMER1	leállitísa
;	movlw	0x0
;	movwf	TMR1L
;	movwf	TMR1H
;	movwf	Tcs
;	incfsz	BeSzL,f
;	goto	Ki
;	incf	BeSzH,f

Ki:	
	SWAPF   STATUS_TEMP,W	;W és STATUS vissza
	MOVWF   STATUS
	SWAPF   W_TEMP,f
	SWAPF   W_TEMP,W

	BSF	T1CON,0		;TIMER1 indul, vagy mehet tovább
	BCF	PIR1,TMR1IF	;jelzőbit törlése -- HA Timer1 ........
	BCF	INTCON,INTF	;	-- HA RB0 okozta a megszakitást
	retfie			; megszakítás vége

; Alapbeállítás
init:
	BCF		STATUS,IRP	;Bank 0,1
	bcf     STATUS, RP0	;Bank0
	clrf    STATUS
	clrf    INTCON
	clrf    PCLATH
	clrf    PORTA
	clrf    PORTB
	bsf     STATUS, RP0	;Bank1
	movlw   b'11111010'	;A0 kimenet -LEDóra
					;A1-tápérz., A3-Mód/A4-Set 
	movwf   TRISA
	movlw   0x0		;B0-B5 -LED 1-32
				;B6-LEDperc B7-LEDsec
	movwf   TRISB	
	bsf     OPTION_REG, NOT_RBPU

;	bsf	OPTION_REG,PSA       ; enable watchdog
;	bsf	OPTION_REG,PS0       ; set prescaler to 1:128 = 2.3 seconds
;	bsf	OPTION_REG,PS1
;	bsf	OPTION_REG,PS2
;	bcf	OPTION_REG,T0CS

	bcf     STATUS, RP0	;Bank0
	movlw	b'00000111'
	movwf	CMCON
 
	BSF	STATUS,RP0	;Bank1
	bsf	PIE1,TMR1IE
	BCF	STATUS,RP0	;Bank0
	BSF	INTCON,PEIE
	BSF	INTCON,GIE	; TMR1 megszakitás engedélyezve
	bsf	T1CON,0	; TMR1 indul

;induló értékek, csak teszt
	movlw	0x0
	movwf	Tcs
	movlw	d'8'
	movwf	sec
	movwf	perc
	movwf	óra


Kijelzés:
	call	Meghajtás
	CALL	Sec_ki
	CALL	Perc_ki
	CALL	Óra_ki
