Choď na obsah Choď na menu
 

Citac do 1.3 GHz

;**********************CITAC DO  1,3 GHz**********************
;TOTO JE PROGRAM PRE CITAC,MERANIE T,A MERANIE TRVANIA
;LOG.1 A LOG.0 A PROSTY CITAC (VERZIA PRE PLOSAK Z PROTELU)
;VZORKUJE KAZDU SEKUNDU,PROSTY CITAC SA INKREMENTUJE NA RB0
;*************************************************************
RTCC	equ 	01h
_OPTION	equ	01h
PCL	equ	02h
SWR	equ	03h
FSR	equ	04h
PA	equ	05h
TRISA	equ	05h
PB	equ	06h
TRISB	equ	06h
EEDATA	equ	08h
EECON1	equ	08h
EEADR	equ	09h
EECON2	equ	09h
PCLATCH	equ	0Ah
INTCON	equ	0Bh
PRIZNAK	equ	0Ch
INI	equ	 0h		;Priznak ci pri inicializacii vysielame iba horny polbyte alebo oba polbyty
MHz	equ	 1h		;Priznak ze frekvencia sa bude zobrazovat v MHz
NULA	equ	 2h		;Priznak ze zobrazovane cislo je nula
MERIAM	equ	 3h		;Priznak ze prebieha incrementovanie RTCC z f/4
SEK	equ	 1h		;Priznak ze cas sa zobrazuje v sekundach a nie v milisekundach (rovnaky ako pre MHz pretoze mikdy nebudu nastavovane naraz (neprepisu sa))
PERIODA	equ	 4h		;Priznak ze sa bude merat perioda
LOG1	equ	 5h		;Priznak ze sa bude merat trvanie log.1
LOG0	equ	 6h		;Priznak ze sa bude merat trvanie log.0
FLSB	equ	0Dh  		;Najnizsi byte pri pocitani impulzov
FMSB	equ	0Eh		;Najvyssi byte pri pocitani impulzov (stredny je RTCC)
COUNT	equ	0Fh		;Pocitadlo prepnuti pri zistovani obsahu preddelicky
TMP2	equ	10h		;\
TMP1	equ	11h		;-registre sluziace na urcenie casovych pauz pri inicializcii displaya
TMP0	equ	12h		;/
CISLA01 equ	13h		;Tu je 0-ty a 1. rad nacitaneho poctu impulzov po premene na BCD kod
CISLA23 equ	14h		;Tu je 2. a 3. rad nacitaneho poctu impulzov po premene na BCD kod
CISLA45 equ	15h		;Tu je 4. a 5. rad nacitaneho poctu impulzov po premene na BCD kod
CISLA67 equ	16h		;Tu je 6. a 7. rad nacitaneho poctu impulzov po premene na BCD kod
_STISK	equ	17h		;Tu si pamatame ake tlacitko bolo stlacene
PRERUS	equ	18h		;Obsah tohto registra sa pri preruseni prepise do OPTION
FLAG	equ	19h		;Druhy register priznakov
KALIB	equ	 0h		;Priznak ze dochadza ku kalibracii citaca
_MIMO	equ	 1h		;Priznak ze sa vypise napis MIMO ROZSAH
_PCITAC	equ	 2h		;Priznak ze bude zobrazovany prosty citac
MINKAL	equ	 3h		;Priznak ze doslo k minimalnej kalibracii
_CITAC1G	equ	4h	;Priznak ze sa vypise napis CITAC DO 1 GHz
_CIT1G	equ	 5h		;Priznak ze je zapnuty citac do 1GHz
KALREG	equ	1Ah		;Register kde si uchovame nacitanu kalibraciu z EEPROM 
NAPIS	equ	1Bh		;Register kde sa urcuje ktory napis vypisat
_CITAC	equ	 0h		;Priznak v registry NAPIS ze sa vypise CITAC
_MERPER	equ	 1h		;Priznak v registry NAPIS ze sa vypise MERANIE PERIODY
_LOG1	equ	 2h		;Priznak v registry NAPIS ze sa vypise TRVANIE LOG.1
_LOG0	equ	 3h		;Priznak v registry NAPIS ze sa vypise TRVANIE LOG.0
_PRSCIT	equ	 4h		;Priznak v registry NAPIS ze sa vypise PROSTY CITAC
_KALIB	equ	 5h		;Priznak v registry NAPIS ze sa vypise KALIBRACIA
RTCCPOM	equ	1Ch		;Pomocny register v podprograme B32_BCD (ukladame si tam zvatca RTCC)
POM1	equ	1Dh
POM2	equ	1Eh		;Pomocne registre v programe PROSTY CITAC (uchovavaju najvyssie 2 horne byty)
POM3	equ	1Fh
FMMSB	equ	20h		;MSB register pre citac (viac vyznamny ako FMSB) dodany pre citac so vzorkovanim 1s
CISLA89	equ	21h		;Tu je 8. a 9. rad nacitaneho poctu impulzov po premene na BCD kod
SWRPOM	equ	22h		;Odlozenie obsahu SWR pri preruseni
WPOM	equ	23h		;Odlozenie obsahu W pri preruseni
F 	equ	01h
W	equ	00h
;................................................................................................
_CP_ON		EQU     H'000F'
_CP_OFF         EQU     H'3FFF'
_PWRTE_ON       EQU     H'3FF7'
_PWRTE_OFF      EQU     H'3FFF'
_WDT_ON         EQU     H'3FFF'
_WDT_OFF        EQU     H'3FFB'
_LP_OSC         EQU     H'3FFC'
_XT_OSC         EQU     H'3FFD'
_HS_OSC         EQU     H'3FFE'
_RC_OSC         EQU     H'3FFF'
;................................................................................................
#define	Z	SWR,2
#define	E	PB,3		
#define	RW	PB,2
#define	RS	PB,1
;**********************************************************************************************
	list p=16f84
	__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC	
;**********************************************************************************************

	org	00h
	goto	START
;**********************************************************************************************
	org 	H'2100'		;initialize EEPROM Data
	de  	9,0		;NA ADRESU 0 NAPISE CISLO "9"	
;**********************************************************************************************
;					PRERUSENIE
;**********************************************************************************************
	ORG	04H

INT	BTFSC	FLAG,_PCITAC	;AK JE ZAPNUTY PROSTY CITAC VYKONAJ INT1
	GOTO	INT1
				;TOTO PRERUSENIE PLATI PRE MERANIE LOG.1 , LOG.0 ALEBO PERIODY
	BSF	SWR,5		;PREPNEME SA DO DRUHEJ STRANKY
	MOVFW	PRERUS
	MOVWF	_OPTION
	BCF	SWR,5		;PREPNEME SA SPAT DO POVODNEJ STRANKY
	BCF	INTCON,1	;PRERUSENIE BOLO OBSLUZENE 
	BSF	PRIZNAK,MERIAM
	RETFIE			;NAVRAT Z PRERUSENIA

INT1	movwf   WPOM            ;save w reg in Buffer
        swapf   WPOM, F         ;swap it
        swapf   SWR,W           ;get status
        movwf   SWRPOM          ;save it	

	INCF	POM1,F
	BTFSC	Z		;AK PRETIEKOL INCREMENTUJ STREDNY BYTE
	INCF	POM2,F
	BTFSC	Z		;AK PRETIEKOL INCREMENTUJ HORNY BYTE
	INCF	POM3,F
	BCF	INTCON,1	;PRERUSENIE BOLO OBSLUZENE

        swapf   SWRPOM,W        ;restore status
        movwf   SWR             ;       /
        swapf   WPOM,W          ;restore W reg

	RETFIE
;***********************************************************************************************

NAPIS_CITAC
	ADDWF	PCL,F
	RETLW	'C'
	RETLW	'I'
	RETLW	'T'
	RETLW	'A'
	RETLW	'C'
	RETLW	' '
	RETLW	'D'
	RETLW	'O'
	RETLW	' '
	RETLW	'3'
	RETLW	'0'
	RETLW	' '
	RETLW	'M'
	RETLW	'H'
	RETLW	'z'
	RETLW	 0

NAPIS_CITAC1G
	ADDWF	PCL,F
	RETLW	'C'
	RETLW	'I'
	RETLW	'T'
	RETLW	'A'
	RETLW	'C'
	RETLW	' '
	RETLW	'D'
	RETLW	'O'
	RETLW	' '
	RETLW	'1'
	RETLW	','
	RETLW	'3'
	RETLW	' '
	RETLW	'G'
	RETLW	'H'
	RETLW	'z'
	RETLW	 0


NAPIS_MERANIE_PERIODY
	ADDWF	PCL,F
	RETLW	'M'
	RETLW	'E'
	RETLW	'R'
	RETLW	'A'
	RETLW	'N'
	RETLW	'I'
	RETLW	'E'
	RETLW	' '
	RETLW	'P'
	RETLW	'E'
	RETLW	'R'
	RETLW	'I'
	RETLW	'O'
	RETLW	'D'
	RETLW	'Y'
	RETLW	 0

NAPIS_LOG1
	ADDWF	PCL,F
	RETLW	' '
	RETLW	'T'
	RETLW	'R'
	RETLW	'V'
	RETLW	'A'
	RETLW	'N'
	RETLW	'I'
	RETLW	'E'
	RETLW	' '
	RETLW	'L'
	RETLW	'O'
	RETLW	'G'
	RETLW	'.'
	RETLW	'1'
	RETLW	 0

NAPIS_LOG0
	ADDWF	PCL,F
	RETLW	' '
	RETLW	'T'
	RETLW	'R'
	RETLW	'V'
	RETLW	'A'
	RETLW	'N'
	RETLW	'I'
	RETLW	'E'
	RETLW	' '
	RETLW	'L'
	RETLW	'O'
	RETLW	'G'
	RETLW	'.'
	RETLW	'0'
	RETLW	 0

NAPIS_PROSTY_CITAC
	ADDWF	PCL,F
	RETLW	' '
	RETLW	' '
	RETLW	'P'
	RETLW	'R'
	RETLW	'O'
	RETLW	'S'
	RETLW	'T'
	RETLW	'Y'
	RETLW	' '
	RETLW	'C'
	RETLW	'I'
	RETLW	'T'
	RETLW	'A'
	RETLW	'C'
	RETLW	 0

NAPIS_KALIBRACIA
	ADDWF	PCL,F
	RETLW	' '
	RETLW	' '
	RETLW	' '
	RETLW	'K'
	RETLW	'A'
	RETLW	'L'
	RETLW	'I'
	RETLW	'B'
	RETLW	'R'
	RETLW	'A'
	RETLW	'C'
	RETLW	'I'
	RETLW	'A'
	RETLW	 0

NAPIS_MIMO_ROZSAH
	ADDWF	PCL,F
	RETLW	' '
	RETLW	' '
	RETLW	'M'
	RETLW	'I'
	RETLW	'M'
	RETLW	'O'
	RETLW	' '
	RETLW	'R'
	RETLW	'O'
	RETLW	'Z'
	RETLW	'S'
	RETLW	'A'
	RETLW	'H'
	RETLW	 0


;*************************************************************
; Podprogramy cekani
;*************************************************************
;.................................
; cekej vice nez 15 ms
;.................................
; pro inicializaci LCD
;.................................
; 15000/773 =  19,40491591203
; TMP1 = 13h (.19) TMP0= 00 .... 14693 mikrosekund
; 307/3=  102,3333333333
; TMP1 = 13h, TMP0 = 66h ..... 14999 mikrosekund
; TMP1 = 0ffh, TMP0 = 66h ..... 198891 mikrosekund
; v cekacich smyckach 
;.................................
; celkem 15002 mikrosekund
;.................................
cek15m	movlw	13h
	movwf	TMP1
	movlw	66h
	movwf	TMP0
	goto	cekej
;.................................
; cekej vice nez 4,1 ms
;.................................
; pro inicializaci LCD
;.................................
; celkem 4.102 ms
;.................................
cek4m	movlw	05h
	movwf	TMP1
	movlw	4ch
	movwf	TMP0
	goto	cekej
;.................................
; cekej vice nez 1,64 ms
;.................................
; Doba pro provedeni instrukce LCD
; ClrDsp a Home
;.................................
cek1m6	movlw	1ch
	movwf	TMP0
	movlw	03h
	movwf	TMP1
	goto	cekej
;.................................
; cekej vice nez 100 mikrosekund
;.................................
; pro inicializaci LCD
;.................................
; celkem 101 mikrosekund
;.................................
cek100	movlw 	1Fh
	movwf	TMP0
	clrf	TMP1
	goto	cekej
;.................................
; cekej vice nez 40 mikrosekund
;.................................
; Doba pro provedeni instrukce LCD
; (mimo ClrDsp a Home)
;.................................
cek40	movlw	0Ah
	movwf	TMP0
	clrf	TMP1
;.............................................................
; Dobu urcuje obsah TMP1 a TMP0
;.............................................................
; Pro instrukcni cyklus 1 mikrosekunda je doba cekani 
; v mikrosekundach
; TMP1=0, TMP0=n, cekani = 3+3*n pro n=1,2,0ff,0=256
; max. 771 mikrosekund (TMP0 = 00h)
;..................................................
; TMP1=n, TMP0=01, cekani = 6+773*n
; max. 197121 mikrosekund (TMP1=0ffh, TMP0=01h) 
;..................................................
;max. 198 891 mikrosekund (TMP1=0ffh, TMP0=00h)
;.............................................................
cekej	decfsz   TMP0,f
	goto	 cekej
	movfw	 TMP1
	btfsc	 Z
	retlw	 00h
	decf	 TMP1,f
	goto	 cekej
;*************************************************************
; Prenos dat (wrdata) a prikazu (wrcmd) do LCD
;*************************************************************
; prikaz nebo data musi byt pred volanim podprogramu ve W reg.
;.............................................................
WRDATA	bsf	RS		;volba Registru dat v LCD
	goto	wr1
WRCMD	bcf	RS		;volba Instrukcniho registru v LCD
wr1	bcf	RW		;RW vystup bude vzdy 0
	movwf	TMP2		;data pro vyslani do TMP2
	bsf	E		;nastav Enable
;................................
	movlw	0f0h		;odmaskujeme horny polbyte		
	andwf	TMP2,W

	BTFSC	RS
	ADDLW	b'00000010'
	BTFSC	RW
	ADDLW	b'00000100'
	BTFSC	E
	ADDLW	b'00001000'
	movwf	PB		;horni pulbyte dat na DB7/4
	bcf	E		;ukonci Enable
;................................
	btfsc	PRIZNAK,INI
	RETURN
;................................
	bsf	E		;nastav Enable
	swapf	TMP2,F
	movlw	0f0h		;odmaskujeme dolny polbyte		
	andwf	TMP2,W

	BTFSC	RS
	ADDLW	b'00000010'
	BTFSC	RW
	ADDLW	b'00000100'
	BTFSC	E
	ADDLW	b'00001000'

	movwf	PB		;dolni pulbyte dat na DB7/4
	bcf	E		;ukonci Enable
	swapf	TMP2,F
	btfsc	RS		;pokud slo o zapis dat
	goto	wr2		;cekej 40 mikrosekund
;.............................................................
	movlw	01h		;pokud slo o instrukci Display
	subwf	TMP2,W		;Clear, cekej 1.64 ms
	bz	wr3
	movlw	02h		;pokud slo o instrukci Home,
	subwf	TMP2,W		;cekej 1.64 ms
	bz	wr3                                           
	movlw	03h		;pokud slo o instrukci Home,
	subwf	TMP2,W		;cekej 1.64 ms
	bz	wr3
;.............................................................
wr2	call	cek40		;cekej 40 mikrosekund
	return
;.............................................................
wr3	call	cek1m6		;cekej 1.6 ms
	return
;*************************************************************
; inicializace LCD po zapnuti
;*************************************************************
INILCD	bsf	PRIZNAK,INI		;Bude sa vysielat iba horny polbyte
	call	cek15m			
	movlw	30h
	call	WRCMD

	call	cek4m

	movlw	30h
	call	WRCMD

	call	cek100

	movlw	30h
	call	WRCMD
	
	call	cek40

	bcf	PRIZNAK,INI	;Bude sa vysielat horny aj dolny polbyte

	movlw	28h		;4 bitova komunikacia,2 riadky,znak 5x7 
	call	WRCMD
	movlw	08h		;Display OFF
	call	WRCMD
	movlw	01h		;Display ON
	call	WRCMD		
	movlw	06h		;Inkrementace, normalni mod
	call	WRCMD
	movlw	0ch		;Zapni display
	call	WRCMD
;............................
	return

;************ PODPROGRAM ,KTORY INCREMENTJE REGISTER FMSB POCAS MERACEJ PERIODY **************
INCFMSB	MOVLW	d'216'
	MOVWF	TMP0
	MOVLW	d'99'		
	MOVWF	TMP1
	MOVLW	d'2'
	MOVWF	TMP2
SLUCKA	BTFSS	INTCON,2	;DOSLO K PRETECENIU RTCC?
	GOTO	KOMPENZ		;NIE => KOMPENZUJ CAS TRVANIA INCREMENTACIE A MAZANIA PRIZNAKU
	BCF	INTCON,2	;ANO => INCREMENTUJ REGISTER FMSB A ZMAZ PRIZNAK PRETECENIA
	INCFSZ	FMSB,F
	GOTO	SLUCKA2
	INCF	FMMSB,F
SLUCKA2	GOTO	SLUCKA1
KOMPENZ	NOP			;PO SKOKU NA KOMPENZ BUDE SLUCKA TRVAT ROVNAKO DLHO AKO  
	NOP			;KED SA INCREMENTUJE REGISTER FMSB A NULUJE PRIZNAK
	NOP	
	GOTO	SLUCKA1
SLUCKA1	DECFSZ	TMP0,F
	GOTO	SLUCKA
	DECFSZ	TMP1,F
	GOTO	SLUCKA
	DECFSZ	TMP2,F
	GOTO	SLUCKA
	RETURN

;**********************PODPROGRAM CO ZISTI OBSAH PREDDELICKY ************************************

PREDDEL movfw   RTCC                    ;hodnotu z RTCC uloz v registri TMP0
        movwf   TMP0                     
        clrf    COUNT                   ;vynuluj pocitadlo prepnuti
	clrf	FLSB			;vynuluj najnizsi byte frekvencie
PREPNI  
        incf    COUNT,F                 ;incrementuj pocitadlo prepnuti
;.................OSETERNIE NULY........................
	btfsc	Z			;ak nacital 256 impulzov (count = 0) tak to znamena ze v preddelicke bola 0 
	goto	PREPNI1			;teda FLSB ostane 0 a ani RTCC sa este nezmenilo => VRAT POVODNU HODNOTU DO RTCC
;.......................................................	
        bcf     PA,3                    ;prepni vstup
	NOP
        bsf     PA,3                    ;       /
        movfw   RTCC                    ;pozri sa ci sa zmenila hodnota v RTCC
        subwf   TMP0,W                  ;       /
        btfsc   Z                   
        goto    PREPNI                  ;nezmenila -> opat prepni
        comf    COUNT,F                 ;zmenila => zneguj  count
        incf    COUNT,W                 ;a pripocitaj 1 (tak dostaneme pocet prepnuti)
        movwf   FLSB                    ;hodnotu z preddelicky uchovaj v registry FLSB
PREPNI1	movfw	TMP0
	movwf	RTCC			;vrat povodnu hodnotu do RTCC
        return                          

;********************PODROGRAM CO PREMENI 32 BITOVE CISLO NA BCD KOD ****************************

B32_BCD bcf     SWR,0                	;VYNULUJ BIT PRENOSU
	movlw   d'32'
	movwf   COUNT
	movlw	 6
	btfsc	FLAG,_CIT1G		;AK JE ZAPNUTY CITAC DO 1 GHz TAK TAK TOTO JE DELENIE 64
	addwf	COUNT,F		     	;POZN. (NAMIESTO 32 BITOVEHO REGISTRA PREDPOKLADAME 32+6  BITOVY (6 BITOV JE V PREDDELICKE SAB ...) A POSLEDNE 2 RADY NEZOBRAZIME)

	clrf    CISLA01
	clrf    CISLA23
	clrf    CISLA45
	clrf	CISLA67
	clrf	CISLA89

loop32  rlf     FLSB, F
	rlf	RTCCPOM, F
	rlf     FMSB, F
	rlf	FMMSB,F
	rlf     CISLA01, F
	rlf     CISLA23, F
	rlf     CISLA45, F
	rlf	CISLA67, F
	rlf	CISLA89, F

;
	decfsz  COUNT, F
	goto    DEKKOR			;dekadicka korekcia sa urobi s kazdym registrom
	BTFSS	FLAG,_CIT1G
	RETURN				;AK NEMERIAME DO 1.3 GHz TAK KONIEC
;................................................................................................

;MERIAME DO 1.3 GHz => POSUN VYSLEDOK O 2 RADY DO PRAVA - TYM ZATEMNIME POSLEDNE 2 RADY PRI 
;MERANI DO 1.3 GHz KTORE SU NEPRESNE VPLYVOM PREDDELICKY (TENTO POSUN JE ZOHLADNENY V ZOBRAZOVANI)

	MOVFW	CISLA23
	MOVWF	CISLA01			;CISLA23 -> CISLA01

	MOVFW	CISLA45
	MOVWF	CISLA23			;CISLA45 -> CISLA23

	MOVFW	CISLA67
	MOVWF	CISLA45			;CISLA67 -> CISLA45


	MOVFW	CISLA89
	MOVWF	CISLA67			;CISLA89 -> CISLA67

	RETURN
;................................................................................................
					
DEKKOR  movlw   CISLA01
	movwf   FSR
	call    BCDKOR			;BCD korekcia

	movlw   CISLA23
	movwf   FSR
	call    BCDKOR			;BCD korekcia

	movlw   CISLA45
	movwf   FSR
	call    BCDKOR			;BCD korekcia

	movlw   CISLA67
	movwf   FSR
	call    BCDKOR			;BCD korekcia

	movlw   CISLA89
	movwf   FSR
	call    BCDKOR			;BCD korekcia

	goto    loop32
;
BCDKOR  movlw   3
	addwf   0,W
	movwf   TMP0
	btfsc   TMP0,3          ; test ci je vysledok > 7
	movwf   0
	movlw   30
	addwf   0,W
	movwf   TMP0
	btfsc   TMP0,7          ; test ci je vysledok > 7
	movwf   0               ; uloz ako MSD
	RETLW   0

;******************************PODPROGRAM CO VYPISE T= "CAS" ms*********************************
ZOBRAZ	MOVLW	02H
	CALL	WRCMD

	MOVLW	'T'		
	CALL	WRDATA
	MOVLW	'='
	CALL	WRDATA
	MOVLW	' '
	CALL	WRDATA


	BTFSC	PRIZNAK,SEK	;AK SA NEZOBRAZUJU SEKUNDY TAK ZOBRAZ 3 PRAZDNE MIESTA
	GOTO	ZOBR

	MOVLW	' '
	CALL	WRDATA
	MOVLW	' '
	CALL	WRDATA
	MOVLW	' '
	CALL	WRDATA
	GOTO	ZOBRAZ2		;PRESKOC ZOBRAZOVANIE RADU SEKUND
	
ZOBR	MOVFW	CISLA89
	ANDLW	0FH		;ODMASKUJ 8.RAD
	BTFSC	Z
	BSF	PRIZNAK,NULA	;AK JE TO NULA TAK NASTAV PRIZNAK
	BTFSC	Z
	GOTO	ZOBR1		;A NEZOBRAZUJ JU
	ADDLW	30H
ZOBR1	CALL	WRDATA

ZOBRAZ1	SWAPF	CISLA67,W
	ANDLW	0FH		;ODMASKUJ 7. RAD
	BTFSS	Z
	GOTO	ZOBRAZD		;AK JE NENULOVY TAK HO ZOBRAZ
	GOTO	ZOBRAZC		;AK JE TO NULA TAK JU NEZOBRAZUJ
ZOBRAZD	BCF	PRIZNAK,NULA	;VYPNI PRIZNAK NULA 
	ADDLW	30H
ZOBRAZC	CALL	WRDATA

	MOVFW	CISLA67
	ANDLW	0FH		;ODMASKUJ 6. RAD - PRI ZOBRAZOVANI SEKUND JE VZDY ZOBRAZENY
	ADDLW	30H
	CALL	WRDATA

	MOVLW	','		;AK SA ZOBRAZUJU SEKUNDY TAK ZOBRAZ DESATINNU CIARKU
	CALL	WRDATA

ZOBRAZ2	SWAPF	CISLA45,W
	ANDLW	0FH		;ODMASKUJ 5.RAD
	BTFSC	PRIZNAK,SEK	;AK JE CAS V SEKUNDACH TAK CISLO URCITE ZOBRAZ
	GOTO	ZOBRAZ3
	BTFSS	Z		;AK JE TO NENULOVE CISLO TAK HO ZOBRAZ	
	GOTO	ZOBRAZ3
	BSF	PRIZNAK,NULA	;AK JE TO NULA TAK NASTAV PRIZNAK 
	GOTO	ZOBRAZ4
ZOBRAZ3 ADDLW	30H
ZOBRAZ4	CALL	WRDATA

	BTFSS	PRIZNAK,SEK
	GOTO	ZOBRAZ5
	MOVLW	0C0H
	CALL	WRCMD		;AK JE CAS V SEKUNDACH TAK SKOC DO NOVEHO RIADKU

ZOBRAZ5	MOVFW	CISLA45
	ANDLW	0FH		;ODMASKUJ 4.RAD
	BTFSC	PRIZNAK,SEK	;AK JE CAS V SEKUNDACH TAK CISLO URCITE ZOBRAZ
	GOTO	ZOBRAZ6
	BTFSS	Z		;AK JE TO NENULOVE CISLO TAK HO ZOBRAZ	
	GOTO	ZOBRAZ6
	BTFSC	PRIZNAK,NULA	;AK JE TO NULA A AJ PREDNOU BOLA NULA TAK NIC NEZOBRAZUJ 
	GOTO	ZOBRAZ7
ZOBRAZ6 ADDLW	30H
ZOBRAZ7	CALL	WRDATA

	BTFSC	PRIZNAK,SEK
	GOTO	ZOBRAZ8
	MOVLW	0C0H
	CALL	WRCMD		;AK JE CAS V MILISEKUNDACH TAK SKOC DO NOVEHO RIADKU

;.........................ODTERAZ UZ BUDU VSETKY CISLA ZOBRAZENE...............................

ZOBRAZ8	SWAPF	CISLA23,W	
	ANDLW	0FH		;ODMASKUJ 3. RAD
	ADDLW	30H
	CALL	WRDATA

	BTFSC	PRIZNAK,SEK
	GOTO	ZOBRAZ9
	MOVLW	','
	CALL	WRDATA		;AK JE CAS V MILISEKUNDACH TAK ZOBRAZ DESATINNU CIARKU

ZOBRAZ9	MOVFW	CISLA23	
	ANDLW	0FH		;ODMASKUJ 2. RAD
	ADDLW	30H
	CALL	WRDATA

	SWAPF	CISLA01,W
	ANDLW	0FH		;ODMASKUJ 1. RAD
	ADDLW	30H
	CALL	WRDATA

	MOVFW	CISLA01	
	ANDLW	0FH		;ODMASKUJ 0-TY RAD
	ADDLW	30H
	CALL	WRDATA

	MOVLW	' '
	CALL	WRDATA

	BTFSC	PRIZNAK,SEK
	GOTO	ZOBRAZA
	MOVLW	'm'
	CALL	WRDATA		;AK JE CAS V MILISEKUNDACH TAK ZOBRAZ m
	GOTO	ZOBRAZB

ZOBRAZA	MOVLW	' '
	CALL	WRDATA		;AK JE CAS V SEKUNDACH ZOBRAZ MEDZERU
	
ZOBRAZB	MOVLW	's'
	CALL	WRDATA		;ZOBRAZ s PRE OBE ALTERNATIVY

	RETURN			;VRAT SA 
	
;************** PODPROGRAM ,KTOREHO VYSTUPOM JE PLATNE TLACITKO ********************************
STISK	MOVLW	d'100'
	MOVWF	COUNT
STISK1	MOVFW	PA
	ANDLW	03H
	SUBWF	_STISK,W	;POZRI SA CI JE STISK ZHODNY S NACITANYM STAVO TLACITOK
	BTFSS	Z
	GOTO	ZMENA		;NIE  => ZMEN STISK
	CALL	cek4m
	DECFSZ	COUNT,F
	GOTO	STISK1		;400 ms BOL NA VSTUPE NEZMENENY STAV
	MOVFW	PA
	BTFSC	FLAG,KALIB
	RETURN			;PRI KALIBRACII NAM NULOVY VYSTUP NEVADI, OSETRUJEME IBA ODSKOK
	ANDLW	03H
	BTFSC	Z		;SKONTROLUJ ESTE CI TO BOL NENULOVY STAV
	GOTO	STISK		;NEBOL A NAS ZAUJIMA IBA STLACENE TLACITKO => STISK
	RETURN			;SKONCI LEBO NA VSTUPE JE PLATNY NENULOVY STAV

ZMENA	MOVFW	PA		;PA DO STISK
	ANDLW	03H
	MOVWF	_STISK	
	MOVLW	 d'100'		;ZMENIL SA STAV TLACITOK OPAT SA BUDE CAKAT 400 ms
	MOVWF	COUNT
	GOTO	STISK1

;*************************PODROGRAM CO VYPISE SPRAVU NA DISPLAY********************************
SPRAVA	MOVLW	01H
	CALL	WRCMD		;VYNULUJ DISPLAY A DD RAM NA 0
	CLRF	COUNT		;COUNT UKAZUJE NA PISMENO KTORE PRAVE ZOBRAZUJEME
SPRAVA2	MOVFW	COUNT
	BTFSC	NAPIS,_CITAC	
	CALL	NAPIS_CITAC
	BTFSC	FLAG,_CITAC1G	
	CALL	NAPIS_CITAC1G
	BTFSC	NAPIS,_MERPER	
	CALL	NAPIS_MERANIE_PERIODY
	BTFSC	NAPIS,_LOG1	
	CALL	NAPIS_LOG1
	BTFSC	NAPIS,_LOG0	
	CALL	NAPIS_LOG0
	BTFSC	NAPIS,_KALIB	
	CALL	NAPIS_KALIBRACIA
	BTFSC	NAPIS,_PRSCIT
	CALL	NAPIS_PROSTY_CITAC
	BTFSC	FLAG,_MIMO
	CALL	NAPIS_MIMO_ROZSAH

;....................................
	MOVWF	TMP0		;TOTO JE TU LEN NATO ABY SME ZISTILI CI W=0 
	MOVFW	TMP0		;LEBO INSTRUKCIA RETLW NEMENI STAVOVE BITY
;....................................
	BTFSC	Z		;POZRI SA CI NIE JE KONIEC SPRAVY  (W=0)
	RETURN			;JE => SKONCI
	CALL	WRDATA
	MOVLW	07H
	SUBWF	COUNT,W		;POZRI SA CI NETREBA SKOCIT DO DRUHEHO RIADKA
	BTFSS	Z
	GOTO	SPRAVA1
	MOVLW	0C0H
	CALL	WRCMD		;SKOK DO DRUHEHO RIADKU
SPRAVA1	MOVLW	01H
	ADDWF	COUNT,F		;POSUN SA NA DRUHY RIADOK SPRAVY
	GOTO	SPRAVA2

;**********************************************************************************************
;............................................START............................................
;**********************************************************************************************
START	BSF	SWR,5		;PREPNI SA DO STRANKY 1
	MOVLW	b'00000001'
	MOVWF	TRISB		;V PB JE IBA RB0/INT VSTUP (PRE MERANIE PERIODY)
	MOVLW	b'00010011'	
	MOVWF	TRISA		;VSTUPY SU PA4/RTCC A PA0 A PA1 (VSTUPY SPINACOV)
	BCF	SWR,5		;VRAT SA SPAT DO STRANKY 0
	
	CALL	INILCD
	BSF	PA,2		;VYPNI PREDDELICKU
	CLRF	PRIZNAK
	CLRF	FLAG
	CLRF	NAPIS
	CLRF	FMMSB
	CLRF	FMSB
	CLRF	RTCCPOM
	CLRF	FLSB		;TOTO JE TU NATO ABY SA PRI VOLBE CITAC HNED ZOBRAZILO f= 0.000 kHz

;***NAKONFIGURUJEME RTCC CIM ZAROVEN VYNULUJE PREDDELICKU A NA CITACI SA ZOBRAZI f=  0.000 kHz***

	BSF	SWR,5		;PREPNEME SA DO DRUHEJ STRANKY
	MOVLW	0A7H
	MOVWF	_OPTION		;V OPTION REGISTY ZAKAZANY PULL-UP,ZDROJ PRE RTCC JE RA4,PREDDEL. PRED RTCC(256)
        BCF	SWR,5		;VRATIME SA DO POVODNEJ STRANKY

;...............................NACITANIE KALIBRACIE............................................
;KALIBRACIU NACITAVAME PRETO LEBO PO SPUSTENI CITACA SKOCIME DO STREDU PODPROGRAMU CITAC ABY SME 
;HNED ZOBRAZILI f= 0.000 kHz CIM PRESKOCIME NACITANIE KALIBRACNEHO REGISTRA

	CLRF	EEADR		;NASTAV EEPROM ADRESU NA 0
	BSF	SWR,5
	BSF	EECON1,0	;POVOL CITANIE
	BCF	SWR,5
	MOVFW	EEDATA
	MOVWF	KALREG		;NACITANU HODNOTU ULOZ DO KALIBRACNEHO REGISTRA	

;......TERAZ ZAPISEME NA ADRESU DISPLAYA "0" MEDZERU (NESKOR VYUZIJEME NA POTLACENIE NULY).......

	MOVLW	08H
	MOVWF	COUNT
	MOVLW	40H
	CALL	WRCMD		;ADRESA 0 V CG RAM (ZAPISEME NA NU MEDZERU)
CYCLE	MOVLW	00H
	CALL	WRDATA
	DECFSZ	COUNT,F
	GOTO	CYCLE

;****************************TERAZ VYTVORIME MENU*********************************************

CIT	BSF	NAPIS,_CITAC
	CALL	SPRAVA		;NAPIS CITAC DO 30 MHz
	BCF	NAPIS,_CITAC

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	CIT1G
	GOTO	ZOBCIT		;POTVRDILI SME VOLBU CITAC DO 30 MHz - SKOCIME DO STREDU PROGRAMU ABY SME HNED ZOBRAZILI f= 0.000 kHz (INAC BY SA TO ZOBRAZILO AZ PO SEKUNDE MERANIA)

CIT1G	BSF	FLAG,_CITAC1G
	CALL	SPRAVA		;NAPIS CITAC DO 1.3 GHz
	BCF	FLAG,_CITAC1G

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	PER
	BSF	FLAG,_CIT1G	;NASTAVIME PRIZNAK ZE SA BUDE MERAT FREKVENCIA DO 1 GHz
	GOTO	ZOBCIT		;POTVRDILI SME VOLBU CITAC DO 1.3 GHz - SKOCIME DO STREDU PROGRAMU ABY SME HNED ZOBRAZILI f= 0.000 kHz (INAC BY SA TO ZOBRAZILO AZ PO SEKUNDE MERANIA)


PER	BSF	NAPIS,_MERPER
	CALL	SPRAVA		;NAPIS MERANIE PERIODY
	BCF	NAPIS,_MERPER

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	LOG.1
	BSF	PRIZNAK,PERIODA
	GOTO	STOPKY		;POTVRDILI SME VOLBU CITAC

LOG.1	BSF	NAPIS,_LOG1
	CALL	SPRAVA		;NAPIS TRVANIE LOG.1
	BCF	NAPIS,_LOG1

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	LOG.0
	BSF	PRIZNAK,LOG1
	GOTO	STOPKY		;POTVRDILI SME VOLBU CITAC

LOG.0	BSF	NAPIS,_LOG0
	CALL	SPRAVA		;NAPIS TRVANIE LOG.0
	BCF	NAPIS,_LOG0

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	PROSCIT
	BSF	PRIZNAK,LOG0
	GOTO	STOPKY		;POTVRDILI SME VOLBU CITAC

PROSCIT	BSF	NAPIS,_PRSCIT
	CALL	SPRAVA		;NAPIS PROSTY CITAC
	BCF	NAPIS,_PRSCIT

	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	KLB
	BSF	FLAG,_PCITAC
	GOTO	PROSTYCITAC	;POTVRDILI SME VOLBU PROSTY CITAC	


KLB	BSF	NAPIS,_KALIB
	CALL	SPRAVA		;NAPIS KALIBRACIA
	BCF	NAPIS,_KALIB
	
	CALL	STISK		;SKONCI KED BUDE NIEKTORE TLACITKO PLATNE ALEBO NA RESET
	BTFSC	PA,0		;AK NEBOLO STLACENE TLACITKO PA0 (VYBER) , TAK TEDA MUSELO BYT STLACENE TO DRUHE (POTVRDENIE)
	GOTO	CIT		;VRAT SA A ZOBRAZUJ OPAT MENU
	BSF	FLAG,KALIB
	GOTO	ZOBCIT		;POTVRDILI SME VOLBU CITAC - SKOCIME DO STREDU PROGRAMU ABY SME HNED ZOBRAZILI f= 0.000 kHz ( INAC BY SA TO ZOBRAZILO AZ PO SEKUNDE MERANIA)


;***********************************************************************************************
;........................................CITAC..................................................
;***********************************************************************************************
CITAC	CLRF	PRIZNAK
	CLRF	INTCON		;ZAKAZE AKEKOLVEK PRERUSENIE
	CLRF	FMSB
	CLRF    RTCC
	
	BTFSC	FLAG,_CIT1G
	BCF	PA,2		;AK JE ZAPNUTY CITAC DO 1 GHz TAK ZAPNI PREDDELICKU

	BSF	SWR,5		;PREPNEME SA DO DRUHEJ STRANKY
	MOVLW	0A7H
	MOVWF	_OPTION		;V OPTION REGISTY ZAKAZANY PULL-UP,ZDROJ PRE RTCC JE RA4,PREDDEL. PRED RTCC(256)
        BSF     TRISA,3		;PREPNE RA3 NA VSTUP CIM UVOLNI VSTUP CITACA
        BCF	SWR,5		;VRATIME SA DO POVODNEJ STRANKY
;...............................NACITANIE KALIBRACIE............................................
	CLRF	EEADR		;NASTAV EEPROM ADRESU NA 0
	BSF	SWR,5
	BSF	EECON1,0	;POVOL CITANIE
	BCF	SWR,5
	MOVFW	EEDATA
	MOVWF	KALREG		;NACITANU HODNOTU ULOZ DO KALIBRACNEHO REGISTRA	
;...............................................................................................

	CALL	INCFMSB

	MOVLW	02H
	MOVWF	PCLATCH		;SME V DRUHEJ STRANKE PROGRAMU 
	MOVFW	KALREG
	ADDWF	PCL,F		;PRIPOCITAJ KALREG K PCL(TYM SA O DEFINOVANU DOBU 1us PREDLZI MERACI CAS)
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

;................................................................................................
	BCF     PA,3		;VYSTUP RA3 NASTAVI NA 0
	BSF	SWR,5		;PREPNEME SA DO DRUHEJ STRANKY
        BCF     TRISA,3		;PREPNE RA3 NA VYSTUP CIM ZAKAZE VSTUP CITACA
        BCF	SWR,5		;VRATIME SA DO POVODNEJ STRANKY

	BTFSC	INTCON,2
	INCF	FMSB,F		;ESTE RAZ POZRI CI NEPRETIKOL RTCC
	      
	CALL	PREDDEL		;ZISTI OBSAH V PREDDELICKE

	MOVFW	RTCC
	MOVWF	RTCCPOM
ZOBCIT	CALL	B32_BCD		;A CELE 32 BITOVE CISLO PREMENI NA BCD KOD
;...............................................................................................
	MOVFW	CISLA67
	BTFSS	Z		;AK JE REGISTER NENULOVY TAK FREKVENCIA JE V MHz
	BSF	PRIZNAK,MHz

	BTFSC	FLAG,_CIT1G	;PRI MERANI DO 1 GHz BUDEME DESATINNU CIARKU ZOBRAZOVAT INDE
	BCF	PRIZNAK,MHz
	
;........................TERAZ NACITANE CISLO ZOBRAZIME.........................................

	MOVLW	02H
	CALL	WRCMD		;DD RAM =0,OBSAH BEZ ZMENY
	MOVLW	'f'
	CALL	WRDATA
	MOVLW	'='
	CALL	WRDATA
	MOVLW	' '
	CALL	WRDATA

	SWAPF	CISLA67,F
	MOVFW	CISLA67
	ANDLW	0FH		;ODMASKUJ 7. RAD
	BTFSC	Z
	BSF	PRIZNAK,NULA	;AK JE TO NULA TAK NASTAV PRIZNAK
	BTFSS	Z
	ADDLW	30H		;ZOBRAZ HO IBA AK JE NENULOVE
	CALL	WRDATA

	SWAPF	CISLA67,F
	MOVFW	CISLA67
	ANDLW	0FH		;ODMASKUJ 6. RAD
	BTFSS	Z
	GOTO	CIT2		;AK JE NENULOVE TAK HO ZOBRAZ
	BTFSC	PRIZNAK,NULA	;INAK POZRI CI AJ PRED NIM BOLA NULA
	GOTO	CIT3		;BOLA NEZOBRAZUJHO
CIT2	BCF	PRIZNAK,NULA	;NENULOVE CISLO => VYPNI PRIZNAK NULY
	ADDLW	30H		;AK JE NENULOVE TAK HO ZOBRAZ
CIT3	CALL	WRDATA

	BTFSS	PRIZNAK,MHz
	GOTO	SKOK1
	MOVLW	','		;AK SA FREKVENCIA ZOBRAZUJE V MHz TAK NAPIS DESATINNU CIARKU
	CALL	WRDATA

SKOK1	SWAPF	CISLA45,F
	MOVFW	CISLA45
	ANDLW	0FH		;ODMASKUJ 5. RAD
	BTFSC	PRIZNAK,MHz	;AK SA FREKVENCIA ZOBRAZUJE V MHz TAK TOTO MIESTO URCITE ZOBRAZ
	GOTO	SKOK2
	BTFSS	Z
	GOTO	SKOK2		;AK JE CISLO NENULOVE TAK HO ZOBRAZ
	BTFSC	PRIZNAK,NULA	;POZRI CI PRED NIM BOLY NULY
	GOTO	SKOK3		;BOLY => NEZOBRAZUJ HO
SKOK2	BCF	PRIZNAK,NULA	;NENULOVE CISLO => VYNULUJ PRIZNAK NULY
	ADDLW	30H
SKOK3	CALL	WRDATA

	SWAPF	CISLA45,F
	MOVFW	CISLA45
	ANDLW	0FH		;ODMASKUJ 4. RAD
	BTFSC	PRIZNAK,MHz	;AK JE f V MHz TAK CISLO URCITE ZOBRAZ
	GOTO	SKOK4
	BTFSC	FLAG,_CIT1G	;AK MERIAME V ROZSAHU DO 1,3 GHz TAK TOTO MIESTO URCITE ZOBRAZ (JEDNOTKY MHz)
	GOTO	SKOK4
	BTFSS	PRIZNAK,NULA	;AK PRED NIM BOLO NENULOVE CISLO TAK HO ZOBRAZ
	GOTO	SKOK4
	BTFSC	Z		;AK JE TO NULA TAK NIC NEZOBRAZUJ
	GOTO	SKOK5
SKOK4	BCF	PRIZNAK,NULA	;NENULOVE CISLO => VYNULUJ PRIZNAK NULY
	ADDLW	30H
SKOK5	CALL	WRDATA
	
	BTFSC	PRIZNAK,MHz	;AK ZOBRAZUJEME CISLO V MHz TAK TERAZ SKOC DO DRUHEHO RIADKU
	GOTO	SKOK5.1

	BTFSS	FLAG,_CIT1G	;AK MERIAME V ROZSAHU DO 1,3 GHz TAK
	GOTO	SKOK6
	MOVLW	','
	CALL	WRDATA		;DAJ DESATINNU CIARKU A
SKOK5.1	MOVLW	0C0H		;PRESKOC DO DRUHEHO RIADKU
	CALL	WRCMD

SKOK6	SWAPF	CISLA23,F
	MOVFW	CISLA23
	ANDLW	0FH		;ODMASKUJ 3.RAD (JE ZOBRAZENY VZDY)
	ADDLW	30H
	CALL	WRDATA

	BTFSC	PRIZNAK,MHz	;AK NEMERIAME MHz A AK ANI
	GOTO	SKOK7
	BTFSC	FLAG,_CIT1G	;NEMERIAME V ROZSAHU DO 1,3 GHz TAK
	GOTO	SKOK7
	MOVLW	0C0H		;SKOK DO DRUHEHO RIADKA
	CALL	WRCMD
	MOVLW	','
	CALL	WRDATA		;A DAJ DESATINNU CIARKU

SKOK7	SWAPF	CISLA23,F
	MOVFW	CISLA23
	ANDLW	0FH		;ODMASKUJ 2.RAD A ZOBRAZ HO (JE ZOBRAZENY VZDY)
	ADDLW	30H
	CALL	WRDATA	

	SWAPF	CISLA01,F
	MOVFW	CISLA01
	ANDLW	0FH		;ODMASKUJ 1. RAD
	ADDLW	30H
	CALL	WRDATA

	SWAPF	CISLA01,F
	MOVFW	CISLA01
	ANDLW	0FH		;ODMASKUJ 0-ty RAD
	ADDLW	30H
	CALL	WRDATA

	MOVLW	' '
	CALL	WRDATA

	BTFSC	FLAG,_CIT1G	;PRI MERANI DO 1 GHz JE FREKVENCIA VZDY V MHz
	BSF	PRIZNAK,MHz

	BTFSC	PRIZNAK,MHz
	GOTO	SKOK8
	MOVLW	'k'
	CALL	WRDATA
	GOTO	SKOK9

SKOK8	MOVLW	'M'
	CALL	WRDATA
SKOK9	MOVLW	'H'
	CALL	WRDATA
	MOVLW	'z'
	CALL	WRDATA

	BTFSS	FLAG,KALIB
	GOTO	CITAC		;AK NEPREBIEHA KALIBRACIA ZACNI NOVE MERANIE
	
	CALL	STISK		;NACITANY PORT JE VO W
	BTFSC	Z
	GOTO	CITAC		;AK NEDOSLO K STLACENIU KLAVESU (W=0) ZACNI NOVE MERANIE

	BTFSC	_STISK,0
	INCF	KALREG,F	
	BTFSC	_STISK,1
	DECF	KALREG,F

;......................OSETRENIE CI JE KALIBRACIA V INTRVALE <0,30>.............................
	INCF	KALREG,W
	BTFSS	Z		;AK DOSLO K PODTECENIU	(KALREG=FF) TAK TERAZ SA ZVYSIL NA 0 =>
	GOTO	CITAC4		;SKONTROLUJ AJ HORNU HRANICU
	BCF	FLAG,MINKAL	;VYPISEME MAX. KALIBRACIA
	CLRF	KALREG		;0 -> KALREG
	GOTO	CITAC2

CITAC4	MOVLW	d'31'
	SUBWF	KALREG,W	;AK DOSLO K PRETECENIU (KALREG >31) TAK VYPIS SPRAVU
	BTFSS	Z
	GOTO	ZAPIS		;AK JE KALIBRACIA V NORME TAK JU ZAPIS
	BSF	FLAG,MINKAL	;SPOSOBI ZE VYPISE MIN. KALIBRACIA
	MOVLW	d'30'
	MOVWF	KALREG		;30 -> KALREG	

CITAC2	
	MOVLW	01H
	CALL	WRCMD
	MOVLW	'M'
	CALL	WRDATA	
	BTFSS	FLAG,MINKAL
	GOTO	KAL1
	MOVLW	'I'
	GOTO	KAL2
KAL1	MOVLW	'A'
KAL2	CALL	WRDATA	
	BTFSS	FLAG,MINKAL
	GOTO	KAL3
	MOVLW	'N'
	GOTO	KAL4
KAL3	MOVLW	'X'
KAL4	CALL	WRDATA	
	MOVLW	'.'
	CALL	WRDATA	
	MOVLW	' '
	CALL	WRDATA	
	MOVLW	'K'
	CALL	WRDATA	
	MOVLW	'A'
	CALL	WRDATA	
	MOVLW	'L'
	CALL	WRDATA
	MOVLW	0C0H
	CALL	WRCMD		;SKOK DO DRUHEHO RIADKU	
	MOVLW	'I'
	CALL	WRDATA	
	MOVLW	'B'
	CALL	WRDATA	
	MOVLW	'R'
	CALL	WRDATA	
	MOVLW	'A'
	CALL	WRDATA	
	MOVLW	'C'
	CALL	WRDATA	
	MOVLW	'I'
	CALL	WRDATA	
	MOVLW	'A'
	CALL	WRDATA	

	MOVLW	d'66'
	MOVWF	TMP2

CITAC3	CALL	cek15m
	DECFSZ	TMP2,F		;CAKAJ SEKUNDU A POTOM ZAPIS KALREG DO EEPROM
	GOTO	CITAC3
	

;............................ZAPIS NOVEJ KALIBRACIE DO EEPROM...................................

ZAPIS	CLRF	EEADR
	MOVFW	KALREG
	MOVWF	EEDATA		;KALREG ULOZ NA ADRESU 0 
	BSF	SWR,5
	BSF	EECON1,2	;POVOLI ZAPIS DO EEPROM
	MOVLW	55H
	MOVWF	EECON2
	MOVLW	0AAH
	MOVWF	EECON2
	BSF	EECON1,1	;ZAHAJI ZAPIS DO EEPROM
;	BCF	EECON1,2	;ZAKAZE ZAPIS DO EEPROM
	BCF	SWR,5
;...............................................................................................
	GOTO	CITAC

;***********************************************************************************************
;........................................STOPKY..................................................
;***********************************************************************************************
STOPKY	BCF	PA,3
	BSF	SWR,5		;PREPNI SA DO DRUHEJ STRANKY
	MOVLW	b'00010011'
	MOVWF	TRISA		;NASTAV RA3 NA VYSTUP ABY BLOKOVAL VSTUP RTCC
	MOVLW	b'11100111'
	MOVWF	_OPTION		;ZDROJOM PRE RTCC JE RA4
	BCF	SWR,5		;PREPNEME SA DO POVODNEJ STRANKY

;ZATIAL SA NIC NEDEJE LEBO RTCC SA INCREMENTUJE Z RA4 CO JE VSAK ZAKAZANE PREPNUTIM RA3 NA VYSTUP

	CLRF	FLSB
	CLRF	RTCC
	CLRF	FMSB
	CLRF	CISLA01
	CLRF	CISLA23
	CLRF	CISLA45
	CLRF	CISLA67
	CLRF	CISLA89	

	CALL	ZOBRAZ		;ZOBRAZI T=    0,000 ms ABY NA DISPLEJI NASVIETIL NAPIS 

STOPKY1	CLRF	FLSB		;OPAT VYMAZEME DOLEZITE REGISTRE PRE DALSIE MERANIE
	CLRF	RTCC		;UDAJ NA DISPLAY-i SA VSAK NEZMENI
	CLRF	FMSB
	CLRF	FMMSB
	CLRF	CISLA01
	CLRF	CISLA23
	CLRF	CISLA45
	CLRF	CISLA67
	CLRF	CISLA89
	BCF 	PRIZNAK,NULA	;PRIZNAK POUZIVANY NA POTLACENIE NULY
	BCF	FLAG,KALIB	;PRIZNAK KTORY DOVOLUJE PODPROGRAMU STISK VRATIT AJ NULOVU HODNOTU

	BSF	SWR,5		;PREPNI SA DO DRUHEJ STRANKY
	BTFSC	PRIZNAK,LOG1
	MOVLW	b'11100111'	;ZDROJOM PRE RTCC JE RA4,PRERUSENIE SA AKTIVUJE CELOM
	BTFSC	PRIZNAK,LOG0
	MOVLW	b'10100111'	;ZDROJOM PRE RTCC JE RA4,PRERUSENIE SA AKTIVUJE TYLOM
	BTFSC	PRIZNAK,PERIODA
	MOVLW	b'11100111'
	MOVWF	_OPTION		;ZDROJOM PRE RTCC JE RA4,PRERUSENIE SA AKTIVUJE CELOM
	BCF	SWR,5		;PREPNEME SA DO POVODNEJ STRANKY


	BCF	PRIZNAK,MERIAM	;ZNULUJ PRIZNAK ZE PREBIEHA MERANIE (NASTAVI SA PRI PRERUSENI)


	BTFSC	PRIZNAK,LOG1	;TOTO NASTAVENIE PLATI PRE MERANIE TRVANIA LOG1
	MOVLW	B'10000111'		;ZDROJOM PRE RTCC JE f/4,PRERUSENIE SA AKTIVUJE TYLOM
	BTFSC	PRIZNAK,LOG0	;TOTO NASTAVENIE PLATI PRE MERANIE TRVANIA LOG0
	MOVLW	B'11000111'		;ZDROJOM PRE RTCC JE f/4,PRERUSENIE SA AKTIVUJE CELOM
	BTFSC	PRIZNAK,PERIODA	;TOTO NASTAVENIE PLATI PRE MERANIE PERIODY
	MOVLW	b'11000111'	;PREPISOM OBSAHU TOHTO REGISTRA DO OPTION PRI PRERUSENI
	MOVWF	PRERUS		;SA PREPNE VSTUP RTCC Z RA4 NA f/4 A ZACNE SA MERANIE,PRERUSENIE SA AKLIVUJE CELOM

	MOVLW	b'10010000'	
	MOVWF	INTCON		;POVOLIME PRERUSENIE OD VONKAJSIEHO PRERUSENIA

CYK	BTFSS	PRIZNAK,MERIAM	;CAKAME KYM NEZACNE MERANIE (DOJDE K NEMU PO PRERUSENI)
	GOTO	CYK

	MOVLW	b'11100111'	;PREPISOM OBSAHU TOHTO REGISTRA DO OPTION PRI PRERUSENI
	MOVWF	PRERUS		;SA PREPNE VSTUP RTCC Z f/4 NA RA4 CIM SKONCI MERANIE PRE VSETKY MOZNOSTI (PER,LOG1,LOG0), OPATOVNE NASTAVENIE SPUSTACEJ HRANY PRERUSENIA SA UROBI PRI OPATOVNOM SPUSTENI
	BCF	PRIZNAK,MERIAM	;ZNULUJEME PRIZNAK A BUDEME CAKAT KYM SA NENASTAVI PRI NOVOM PRERUSENI 
	
CYK1	BTFSS	INTCON,2
	GOTO	CYK2

	INCF	FMSB,F
	BTFSC	Z
	INCF	FMMSB,F
	BTFSC	Z
	GOTO	PRETEC

	BCF	INTCON,2
CYK2	BTFSS	PRIZNAK,MERIAM	;KED SA NASTAVI BUDE TO ZNAMENAT ZE MERANIE SKONCILO
	GOTO	CYK1		;V PREDDELICKE,RTCC A FMSB JE NACITANY CAS

	BCF	INTCON,7	;VYPNEME OPATOVNE PRERUSENIE
	BTFSC	INTCON,2	;ESTE RAZ SA POZRIEME CI NEPRETIEKOL RTCC
	INCF	FMSB,F

	CALL	PREDDEL

	MOVFW	RTCC
	MOVWF	RTCCPOM

;......................................KONTROLA PRETECENIA.......................................

;TU SKONTROLUJEME CI JE 10. RAD NULOVY (HIGH NIBBLE OF CISLA89),AK JE NENULOVY ZNAMENA TO 
;PRETECENIE LEBO HO UZ NEVIEME ZOBRAZIT
	
	MOVFW	CISLA89		
	ANDLW	0F0H		;DEVIATY RAD ZMAZ DESIATY NACHAJ
	BTFSS	Z		;AK JE DESIATY RAD NENULOVY NAPIS " MIMO ROZSAH "
	GOTO	PRETEC

;................................................................................................

	CALL	B32_BCD

	BCF	PRIZNAK,SEK
	MOVFW	CISLA67
	BTFSS	Z
	BSF	PRIZNAK,SEK	;CAS BUDE ZOBRAZOVANY V SEKUNDACH

	MOVFW	CISLA89
	BTFSS	Z
	BSF	PRIZNAK,SEK	;CAS BUDE ZOBRAZOVANY V SEKUNDACH

	BCF	PRIZNAK,NULA	;PRI INICIALIZACII A ZOBRAZOVANI t=  0.000 ms BOL NASTAVENY

	CALL	ZOBRAZ

	GOTO	STOPKY1

PRETEC	BSF	FLAG,_MIMO
	CALL	SPRAVA		;NAPISE SPRAVU MIMO ROZSAH	
	CALL	STISK
	GOTO	STOPKY		;PO PRETECENI CAKAJ NA STLACENIE TLACITKA A POTOM ZACNI ODZNOVA	

;***********************************************************************************************
;......................................PROSTY CITAC.............................................
;***********************************************************************************************
PROSTYCITAC
	MOVLW 	01H
	CALL	WRCMD	

	MOVLW	b'10010000'	;POVOL PRERUSENIE OD VONKAJSIEHO PRERUSENIA NA RB0
	MOVWF	INTCON

	BSF	SWR,5
	MOVLW	b'11000000'
	MOVWF	_OPTION		;ZAKAZ PULL-UPu,PRERUSENIE NABEZNOU HRANOU
	BCF	SWR,5

	CLRF	POM1
	CLRF	POM2
	CLRF	POM3	

PCITAC1	BSF	PRIZNAK,NULA	;NA ZACIATKU PREDPOKLADAME ZE PRED PRVYM CISLOM SU NULY
	MOVFW	POM3	
	MOVWF	FMSB
	MOVFW	POM2
	MOVWF	RTCCPOM
	MOVFW	POM1
	MOVWF	FLSB

	CALL	B32_BCD
	
	MOVLW	02H
	CALL	WRCMD		;DD RAM NA 0,BEZ ZMENY DISPLAYA

	MOVLW	'N'
	CALL	WRDATA

	MOVLW	'='
	CALL	WRDATA

	MOVLW	' '
	CALL	WRDATA

	MOVLW	' '
	CALL	WRDATA

	SWAPF	CISLA67,F
	MOVFW	CISLA67		;7.RAD
	CALL	UKAZ

	SWAPF	CISLA67,F
	MOVFW	CISLA67		;6.RAD
	CALL	UKAZ

	SWAPF	CISLA45,F
	MOVFW	CISLA45		;5.RAD
	CALL	UKAZ

	SWAPF	CISLA45,F
	MOVFW	CISLA45		;4.RAD
	CALL	UKAZ

	MOVLW	0C0H
	CALL	WRCMD		;SKOK DO DRUHEHO RIADKU

	SWAPF	CISLA23,F
	MOVFW	CISLA23		;3.RAD
	CALL	UKAZ

	SWAPF	CISLA23,F
	MOVFW	CISLA23		;2.RAD
	CALL	UKAZ

	SWAPF	CISLA01,F
	MOVFW	CISLA01		;1.RAD
	CALL	UKAZ

	SWAPF	CISLA01,F	;POSLEDNE CISLO BUDE VYPISANE VZDY
	MOVFW	CISLA01		;0-ty RAD
	ANDLW	0FH
	ADDLW	30H
	CALL	WRDATA

	BTFSS	PA,0		;PO STLACENI PA,0 VYNULUJ REGISTRE
	GOTO	PCITAC1
	CLRF	POM1
	CLRF	POM2
	CLRF	POM3	
	GOTO	PCITAC1

UKAZ	ANDLW	0FH
	BTFSS	Z		;NENULOVE CISLO ZOBRAZ
	GOTO	UKAZ1
	BTFSC	PRIZNAK,NULA	;JE TO NULA.BOLA AJ PRED NOU NULA?
	GOTO	UKAZ2		;ANO -> NEZOBRAZUJ
UKAZ1	BCF	PRIZNAK,NULA	;PRVE NENULOVE CISLO =>VYNULUJ PRIZNAK
	ADDLW	30H
UKAZ2	CALL	WRDATA
	RETURN
	
;***********************************************************************************************
	END