; S_ora_prog.asm Elkészült: 
; Készítette: Kiss László
; Utolsó módosítás: 2011.10.19
; Óra program
; Ver:0.1
; MCU: 16F887


include header.inc
	CBLOCK 0X20
	
	ORA_SZ
	PERC_SZ
	MASODP_SZ
	TIZED_SZ
	ORA_A
	PERC_A
	TIZED_A
	IDO_ORA
	IDO_PERC
	IDO_MASODP
	
	ENDC

	ORG 0X00
	
S_INI
	MOVLW	.60
	MOVWF	PERC_A
	MOVWF	MASODP_SZ
	MOVWF	PERC_SZ
	MOVLW	.250							; 250*4 ms = 1 sec 
	MOVWF	TIZED_A							; 
	MOVWF	TIZED_SZ
	MOVLW	.24
	MOVWF	ORA_A
	MOVWF	ORA_SZ
	CLRF	IDO_MASODP
	CLRF	IDO_PERC
	CLRF	IDO_ORA
	MOVLW	B'0100010'						;1:16 előosztó, 1:5 utóosztó
	MOVWF	T2CON
	MOVLW	.250
	MOVWF	PR2								; ~4 ms
	BSF		PIR1,TMR2IE
	BSF		INTCON,GIE
	BSF		T2CON,2							; óra indul
	
S_MAIN	
	MOVF	ORA_SZ,W
	SUBWF	ORA_A,W							;kivonom a maradék időt az alapértékből ez adja meg a valós értéket.
	MOVWF	IDO_ORA
	MOVF	PERC_SZ,W
	SUBWF	PERC_A,W
	MOVWF	IDO_PERC
	MOVF	MASODP_SZ,W
	SUBWF	PERC_A,W
	MOVWF	IDO_MASODP
TELIK
	BTFSS	PIR1,TMR2IF
	GOTO	TELIK
	BCF		PIR1,TMR2IF	
	CALL	S_ORA_SZAMOL
	GOTO	S_MAIN
	
	
S_ORA_SZAMOL
	DECFSZ	TIZED_SZ,F						; csökkentem a tizedmásodperc számlálót
	RETURN									; ha még nem 0, vissza a főprogramba
	MOVF	TIZED_A,W						; visszatöltöm a kezdeti értéket,
	MOVWF	TIZED_SZ						; és végigcsinálom a többi számlálóval is.
	
	DECFSZ	MASODP_SZ,F						; csökkentem a másodperc számlálót
	RETURN
	MOVF	PERC_A,W
	MOVWF	MASODP_SZ
	
	DECFSZ	PERC_SZ,F						; csökkentem a perc számlálót
	RETURN
	MOVF	PERC_A,W
	MOVWF	PERC_SZ
	
	DECFSZ	ORA_SZ,F
	RETURN
	MOVF	ORA_A,W
	MOVWF	ORA_SZ
	RETURN	
	
	END

-Órajel beállítása	pl 0,001 sec 20MHz -> 5MHz (FOSC/4)->>> előosztó: 16 PR2: 250 Utóosztó: 5 -> ~4 ms 
T2CON	UTÓOSZTÓ:'0100' ELŐOSZTÓ:'10'-> '0100010'
-Számláló elindítása T2CON,2
-számoljuk a túlcsordulásokat 250-től le (PR2:250) ~ 1 sec

-ha 0 akkor a másodpercet csökkentjük 59-től
-ha 0 akkor a perceket csökkentjük 59-től
-ha 0 akkor az órákat csökkentjük 23-tól

A kijelzésnél meg kell oldani, hogy ne a változó által számolt értéket, hanem a maradékot jelezzük ki.
Ezért az alapból kivonjuk a számláló értékét.
Az alapértékeket egy változóban tárolom. 
Egyet az óráknak (24), egyet a perceknek (60) ezt használom a másodperceknek is, és egyet a tized másodperceknek (10)
A változók: ora_sz, perc_sz, masodp_sz, tized_sz, ora_a, perc_a, tized_a,

