
 		LIST p=16F876
#include "c:\windows\mplab\p16F876.inc"
;#include "c:\PROGRAM FILES\mplab\p16F876.inc"
;             __config  _XT_OSC & _WDT_OFF & _PWRTE_OFF & _LVP_OFF 
;	     __IDLOCS	H'1973'		;KODA ZA ZASTITA E '1973'h
;******************************************************************
;PRIMERNA PROGRAMA ZA CHETENE NA INFORMACIATA po I2C SHINA OT TERMODATCHIKA TCN75
;INFORMACIATA SE IZVEZDA NA VFD DISPLEI (2X40) M402SD07AA
;IZPOLZVAN E KVARCOV REZONATOR 16,870 MHz
;FAILAT C:\PIC\I2C\TCN75.asm SADARZHA GLAVNATA CHAST NA PROGRAMATA
;FAILAT C:\PIC\I2C\mult_TCN.asm SADARZHA PROCEDURA ZA UMNOZHENIE NA 2 8 RAZRIADNI CHISLA
;FAILAT C:\PIC\I2C\disp_VFD.asm SADARZHA PROCEDURA ZA INDICACIA NA DISPLEIA NA
;SAOTVETNATA IZMERENA TEMPERATURA
;ADRESAT NA TCN75 E 000
;******************************************************************

CIFRA01	 EQU	0x21
CIFRA02	 EQU	0x22
CIFRA03	 EQU	0x23
CIFRA04	 EQU	0x24
CIFRA1	 EQU	0x25
CIFRA2	 EQU	0x26
CIFRA3	 EQU	0x27
CIFRA4	 EQU	0x28
CISLO_ST EQU	0x29
CISLO_ML EQU	0x2A
TMP_ML	 EQU	0x2B
TMP_ST	 EQU	0x2C
TMP	 EQU	0x2D
INT1     EQU	0x2E
PRENOS	 EQU	0x2F
INT2	 EQU	0x30
ZNAK	 EQU	0x31
MNOJIT	 EQU	0x32
MNOJIM	 EQU	0x33
CT	 EQU	0x34
REZH	 EQU	0x35
REZL	 EQU	0x36
TEMP	 EQU	0x37
BROIACH	 EQU	0x38
ADRES	 EQU	0x39
CONFIG	 EQU	0x3A
CISLO_MLT EQU	0x3B
CISLO_STT EQU	0x3C
FLAG	  EQU	0x3D
REGISTER  EQU	0x3E
FALL	  EQU	0x3F
	org 0x00
		
	NOP			;POSTAVIA SE ZARADI RABOTATA S EMULATORA MPLAB-ICD
	goto BEGIN		;preskachame vektora na prekasvaneto
;**************************************************
TABLE1		
	ADDWF	PCL,F
	RETLW	0x30	;0
	RETLW	0x31	;1		
	RETLW	0x32	;2
	RETLW	0x33	;3
	RETLW	0x34	;4
	RETLW	0x35	;5
	RETLW	0x36	;6
	RETLW	0x37	;7
	RETLW	0x38	;8
	RETLW	0x39	;9
TABLE2		
	ADDWF	PCL,F
	RETLW	0x2D	;-
	RETLW	0x3D	;=		
	RETLW	0x50	;P
	RETLW	0x4D	;M
	RETLW	0x45	;E
	RETLW	0x54	;T
	RETLW	0x2B	;+
	RETLW	0xDF	;GRADUS
	RETLW	0x43	;C
;**************************************************
TABLE3	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x47	;G
	RETLW	0x49	;I
	RETLW	0x46	;F
	RETLW	0x4E	;N
	RETLW	0x4F	;O
	RETLW	0x43	;C
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x47	;G
	RETLW	0x45	;E
	RETLW	0x52	;R
	RETLW	0xEC	;<<
TABLE4	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x65	;E
	RETLW	0x64	;D
	RETLW	0x6F	;O
	RETLW	0x4D	;M
	RETLW	0xA0	;
	RETLW	0x6E	;N
	RETLW	0x77	;W
	RETLW	0x6F	;O
	RETLW	0x64	;D
	RETLW	0x74	;T
	RETLW	0x75	;U
	RETLW	0x68	;H
	RETLW	0x53	;S
TABLE5	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x65	;E
	RETLW	0x64	;D
	RETLW	0x6F	;O
	RETLW	0x4D	;M
	RETLW	0xA0	;
	RETLW	0x6C	;L
	RETLW	0x61	;A
	RETLW	0x6D	;M
	RETLW	0x72	;R
	RETLW	0x6F	;O
	RETLW	0x4E	;N
	RETLW	0xA0	;
	RETLW	0xA0	;
TABLE6	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x65	;E
	RETLW	0x64	;D
	RETLW	0x6F	;O
	RETLW	0x4D	;M
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x70	;P
	RETLW	0x6D	;M
	RETLW	0x6F	;O
	RETLW	0x43	;C
TABLE7	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x65	;E
	RETLW	0x64	;D
	RETLW	0x6F	;O
	RETLW	0x4D	;M
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x74	;T
	RETLW	0x6E	;N
	RETLW	0x49	;I
	RETLW	0xA0	;
TABLE8	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x77	;W
	RETLW	0x6F	;O
	RETLW	0x4C	;L
	RETLW	0xA0	;
	RETLW	0x79	;Y
	RETLW	0x74	;T
	RETLW	0x69	;I
	RETLW	0x72	;R
	RETLW	0x61	;A
	RETLW	0x6C	;L
	RETLW	0x6F	;O
	RETLW	0x50	;P
	RETLW	0xA0	;
	RETLW	0x52	;R
	RETLW	0x54	;T
	RETLW	0x50	;P
	RETLW	0x4D	;M
	RETLW	0x43	;C
	RETLW	0x2F	;/
	RETLW	0x54	;T
	RETLW	0x4E	;N
	RETLW	0x49	;I
TABLE9	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x68	;H
	RETLW	0x67	;G
	RETLW	0x69	;I
	RETLW	0x48	;H
	RETLW	0xA0	;
	RETLW	0x79	;Y
	RETLW	0x74	;T
	RETLW	0x69	;I
	RETLW	0x72	;R
	RETLW	0x61	;A
	RETLW	0x6C	;L
	RETLW	0x6F	;O
	RETLW	0x50	;P
	RETLW	0xA0	;
	RETLW	0x52	;R
	RETLW	0x54	;T
	RETLW	0x50	;P
	RETLW	0x4D	;M
	RETLW	0x43	;C
	RETLW	0x2F	;/
	RETLW	0x54	;T
	RETLW	0x4E	;N
	RETLW	0x49	;I
TABLE10	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x31	;1
	RETLW	0xA0	;
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x51	;Q
	RETLW	0xA0	;
	RETLW	0x74	;T
	RETLW	0x6C	;L
	RETLW	0x75	;U
	RETLW	0x61	;A
	RETLW	0x46	;F
TABLE11	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x32	;2
	RETLW	0xA0	;
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x51	;Q
	RETLW	0xA0	;
	RETLW	0x74	;T
	RETLW	0x6C	;L
	RETLW	0x75	;U
	RETLW	0x61	;A
	RETLW	0x46	;F
TABLE12	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x34	;4
	RETLW	0xA0	;
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x51	;Q
	RETLW	0xA0	;
	RETLW	0x74	;T
	RETLW	0x6C	;L
	RETLW	0x75	;U
	RETLW	0x61	;A
	RETLW	0x46	;F
TABLE13	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xE0	;^
	RETLW	0x36	;6
	RETLW	0xA0	;
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x65	;E
	RETLW	0x75	;U
	RETLW	0x51	;Q
	RETLW	0xA0	;
	RETLW	0x74	;T
	RETLW	0x6C	;L
	RETLW	0x75	;U
	RETLW	0x61	;A
	RETLW	0x46	;F
TABLE14	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0x3D	;=
	RETLW	0x74	;t
	RETLW	0x65	;e
	RETLW	0x73	;s
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x74	;t
	RETLW	0x65	;e
	RETLW	0x73	;s
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x47	;G
	RETLW	0x45	;E
	RETLW	0x52	;R
	RETLW	0xEC	;<<
TABLE15	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0x3D	;=
	RETLW	0x73	;s
	RETLW	0x79	;y
	RETLW	0x68	;h
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x73	;s
	RETLW	0x79	;y
	RETLW	0x68	;h
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x47	;G
	RETLW	0x45	;E
	RETLW	0x52	;R
	RETLW	0xEC	;<<
TABLE16	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0x3D	;=
	RETLW	0x50	;P
	RETLW	0x4D	;M
	RETLW	0x45	;E
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x50	;P
	RETLW	0x4D	;M
	RETLW	0x45	;E
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0x2E	;.
	RETLW	0x47	;G
	RETLW	0x45	;E
	RETLW	0x52	;R
	RETLW	0xEC	;<<
;******************************************************
BEGIN		
	NOP		;POSTAVIA SE ZARADI RABOTATA S EMULATORA
;************************************************************************
;INICIALIZACIA NA VHODOVETE I IZHODITE NA PIC16F876
;************************************************************************		
		BANKSEL	ADCON0		;ZABRANIAVA RABOTATA NA MODULA ACP
		BCF	ADCON0,0	;
		BANKSEL	OPTION_REG
		MOVLW	B'10000111'	;ZABRANENI SA IZTEGLIASTITE REZISTORI NA 
		MOVWF	OPTION_REG	;PORTA
		BANKSEL	PORTA
		CLRF	PORTA
		CLRF	PORTB
		CLRF	PORTC
		BANKSEL	ADCON1
		MOVLW	B'10000110'	;RA0-RA7 - DIGITAL
		MOVWF	ADCON1		;
		BANKSEL	TRISA
		MOVLW	B'00000001'
		MOVWF	TRISA		;RA0-INPUT RA1-RA7 - OTPUT
		BANKSEL	TRISB
		MOVLW	B'00111111'
		MOVWF	TRISB		;RB0-RB7 - INPUT
		BANKSEL	TRISC
		MOVLW	B'00000000'
		MOVWF	TRISC		;RC0-RC7  - OTPUT
		BANKSEL	INTCON
		MOVLW	B'00000000'
		MOVWF	INTCON		;ZABRANIAVAME PREKASVANIATA OT SSP
;***************************************************************
;NACHALO NA SASTINSKATA PROGRAMA
;***************************************************************
	CLRF	FALL
NACHALO
	CLRF	FLAG
	CALL	TEMPERATUR_MONITOR
	CALL	CONF			;VLIZA V CONFIG REGISTARA
	CALL	TEMPERATUR
			;
	CALL	THYS
	CALL	TSET

	GOTO	NACHALO
;**********************************************************************
;PROCEDURA ZA VLIZANE I NASTROICA NA CONFIGURATION REGISTER
;**********************************************************************
CONF:
	BTFSS	PORTB,4			;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1			;	
	CALL	START_D		;
	MOVLW	0x1F		;PODAVAME KOMANDA RESET NA DISPLEIA
	MOVWF	PORTC		;
	CALL	STOP_D		;
;**
	CALL	START_D		;
	MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA ZA IZKLUCHVANE NA
	MOVWF	PORTC		;KURSORA
	CALL	STOP_D		;
;**
	MOVLW	0x0D			;
	MOVWF	BROIACH			;
ty					;NA DISPLEIA SE IZPISVA
	CALL	START_D			;<<REGISTER CONFIG>>
	CLRW				;
	BANKSEL	BROIACH			;
	MOVF	BROIACH,W		;
	CALL	TABLE3			;
	MOVWF	PORTC			;
	CALL	STOP_D			;
	DECFSZ	BROIACH,F		;
	GOTO	ty			;
	CALL	READ_CONF	; CHETEM OT TCN75 TEKUSTOTO SASTOIANIE
				;NA CONFIG REGISTARA I GO ZAREZHDAME V COFIG
	GOTO	por
conf_1  
	CALL	START_D		;
	BANKSEL	PORTC		;PODAVAME NA DISPLEIA KOMANDA PRI KOIATO
	MOVLW	0x0B		;KURSORA SE VRASTA V NACHALOTO NA REDA
	MOVWF	PORTC		;
	CALL	STOP_D		;
	MOVLW	0x0D			;
	MOVWF	BROIACH			;
ay					;NA DISPLEIA SE IZPISVA
	CALL	START_D			;<<REGISTER CONFIG>>
	CLRW				;
	BANKSEL	BROIACH			;
	MOVF	BROIACH,W		;
	CALL	TABLE3			;
	MOVWF	PORTC			;
	CALL	STOP_D			;
	DECFSZ	BROIACH,F		;
	GOTO	ay			;
por
	BTFSC	CONFIG,0
	CALL	SHUTDOWN	;IZPISVA SE SHUTDOWN MODE
	BTFSS	CONFIG,0
	CALL	NORMAL		;IZPISVA SE NORMAL MODE
	BTFSC	CONFIG,1
	CALL	INTER		;IZPISVA SE INTERRUPT MODE
	BTFSS	CONFIG,1	
	CALL	COMP		;IZPISVA SE COMP. MODE
	CALL	NOV_RED		;PROCEDURA ZA PREMINAVANE NA NOV RED
	BTFSC	CONFIG,2
	CALL	POLAR_H
	BTFSS	CONFIG,2
	CALL	POLAR_L
	BTFSS	CONFIG,3	;AKO CONFIG,3=1 I CONFIG,4=1 SE IZPISVA
	GOTO	r		;FAULT QUEUE 6
	BTFSC	CONFIG,4	;
	CALL	F_QUEUE6	;
	BTFSS	CONFIG,4		;AKO CONFIG,3=1 A CONFIG,4=0 SE IZPISVA
	CALL	F_QUEUE2		;FAULT QUEUE 2
	GOTO	s
r	
	BTFSC	CONFIG,4	;AKO CONFIG,3=0 A CONFIG,4=1 SE IZPISVA
	CALL	F_QUEUE4	;FAULT QUEUE 4
	BTFSS	CONFIG,4		;AKO CONFIG,3=0 I CONFIG,4=0 SE IZPISVA
	CALL	F_QUEUE1		;FAULT QUEUE 1
s
	BTFSS	PORTB,0		;PROCEDURA ZA SMIANA SASTOIANIETO NA CONFIG,0
	CALL	S0		;S INVERSNOTO MU SASTOIANIE
	BTFSS	PORTB,1	;PROCEDURA ZA SMIANA SASTOIANIETO NA CONFIG,1
	CALL	S1	;S INVERSNOTO MU SASTOIANIE	
	BTFSS	PORTB,2		;PROCEDURA ZA SMIANA SASTOIANIETO NA CONFIG,2
	CALL	S2		;S INVERSNOTO MU SASTOIANIE
	BTFSS	PORTB,3	;PROCEDURA ZA SMIANA SASTOIANIETO NA CONFIG,3 I CONFIG4
	CALL	S3	;
	BTFSC	PORTB,4		;AKO E NATISNAT BUTON S4 SE IZLIZA OT 
	GOTO	conf_1		;PROCEDURATA CONF
	CALL	START_D			;
	MOVLW	0x1F			;PODAVAME KOMANDA ZA 
	MOVWF	PORTC			;RESETIRANE NA DISPLEIA
	CALL	STOP_D			;
	CALL	ZAPIS_CONFIG	;PROCEDURA ZA ZAPIS NA TEKUSTOTO SASTOIANIE NA CONFIG
	BTFSC	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1
	BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1		
	CLRF	CONFIG
      RETURN
;*************************************************************
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "SHUTDOWN MODE"
;************************************************************************************
SHUTDOWN:
	MOVLW	0x0F		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;15 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
taa
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"SHUTDOWN MODE"
	CALL	TABLE4		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	taa		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "NORMAL MODE"
;************************************************************************************
NORMAL:
	MOVLW	0x0F		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;13 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tb
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"NORMAL MODE"
	CALL	TABLE5		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tb		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "INT. MODE"
;************************************************************************************
INTER:
	MOVLW	0x0B		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;10 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tc
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"INT. MODE"
	CALL	TABLE7		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tc		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "COMP. MODE"
;************************************************************************************
COMP:
	MOVLW	0x0B		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;11 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
td
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"COMP. MODE"
	CALL	TABLE6		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	td		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "INT/CMPTR POLARITY LOW  "
;************************************************************************************
POLAR_L:
	MOVLW	0x19		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;25 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
te
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"INT/CMPTR POLARITY LOW  "
	CALL	TABLE8		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	te		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "INT/CMPTR POLARITY HIGH  "
;************************************************************************************
POLAR_H:
	MOVLW	0x19		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;26 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tf
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"INT/CMPTR POLARITY HIGH  "
	CALL	TABLE9		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tf		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "FAULT QUEUE 1  "
;************************************************************************************
F_QUEUE1:
	MOVLW	0x0E		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;14 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tg
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"FAULT QUEUE 1  "
	CALL	TABLE10		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tg		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "FAULT QUEUE 2  "
;************************************************************************************
F_QUEUE2:
	MOVLW	0x0E		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;14 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
th
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"FAULT QUEUE 2  "
	CALL	TABLE11		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	th		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "FAULT QUEUE 4  "
;************************************************************************************
F_QUEUE4:
	MOVLW	0x0E		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;14 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
ti
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"FAULT QUEUE 4  "
	CALL	TABLE12		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	ti		;
      RETURN
;************************************************************************************
;PROCEDURA ZA ISPISVANE NA DISPLEIA NA NADPISA "FAULT QUEUE 6  "
;************************************************************************************
F_QUEUE6:
	MOVLW	0x0E		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;14 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tj
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;"FAULT QUEUE 6  "
	CALL	TABLE13		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tj		;
      RETURN
;*****************************************************************************************
;PRI VSIAKO NATISKANE I OTPUSKANE NA BUTONA
;PROMENIA SASTOIANIETO NA SAOTVETNIAT BIT OT CONFIG S INVERSNOTO MU SASTOIANIE
;*****************************************************************************************
S0:
	BTFSS	PORTB,0		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1		;
	BTFSC	CONFIG,0		;
	GOTO	$+3			;VSEKI PAT KOGATO SE VLEZE V TAZI PROCEDURA 
	BSF	CONFIG,0		;SASTOIANIETO NA CONFIG,0 SE SMENIA
	GOTO	$+2			;S INVERSNOTO MU SASTOIANIE
	BCF	CONFIG,0		;
      RETURN
;*****************************************************************************************
;PRI VSIAKO NATISKANE I OTPUSKANE NA BUTONA
;PROMENIA SASTOIANIETO NA SAOTVETNIAT BIT OT CONFIG S INVERSNOTO MU SASTOIANIE
;*****************************************************************************************
S1:
	BTFSS	PORTB,1		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1		;
	BTFSC	CONFIG,1		;
	GOTO	$+3			;VSEKI PAT KOGATO SE VLEZE V TAZI PROCEDURA 
	BSF	CONFIG,1		;SASTOIANIETO NA CONFIG,1 SE SMENIA
	GOTO	$+2			;S INVERSNOTO MU SASTOIANIE
	BCF	CONFIG,1		;
      RETURN
;*****************************************************************************************
;PRI VSIAKO NATISKANE I OTPUSKANE NA BUTONA
;PROMENIA SASTOIANIETO NA SAOTVETNIAT BIT OT CONFIG S INVERSNOTO MU SASTOIANIE
;*****************************************************************************************
S2:
	BTFSS	PORTB,2		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1		;
	BTFSC	CONFIG,2		;
	GOTO	$+3			;VSEKI PAT KOGATO SE VLEZE V TAZI PROCEDURA 
	BSF	CONFIG,2		;SASTOIANIETO NA CONFIG,2 SE SMENIA
	GOTO	$+2			;S INVERSNOTO MU SASTOIANIE
	BCF	CONFIG,2		;
      RETURN
;*****************************************************************************************
;PRI VSIAKO NATISKANE NA BUTONA SAOTVETNITE BITOVE NA CONFIG ZAEMAT STOINOSTI 1, 2 ,4 , 6
;*****************************************************************************************
S3:
	BTFSS	PORTB,3		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	GOTO	$-1		;
	CLRF	BROIACH
	MOVF	CONFIG,W	;MESTIM SADARZHANIETO NA CONFIG
	MOVWF	BROIACH		;V BROIACH
	RRF	BROIACH,F	;
	RRF	BROIACH,F	;IZMESTVAME D3 I D4 V NACHALOTO
	BCF	BROIACH,0	;D0 GO IZTRIVAME D3 E NA MIASTOTO NA D1 A D4 NA D2
	BCF	BROIACH,3	;
	BCF	BROIACH,4	;
	BCF	BROIACH,5	;NULIRAM IZLISHNITE BITOVE
	BCF	BROIACH,6	;
	BCF	BROIACH,7	;
	MOVLW	0x02		;
	CLRF	STATUS
	SUBWF	BROIACH,W	;AKO V D3 I D4 E ZAPISANO CHISLOTO 2
	BTFSS	STATUS,Z	;TO PRI SLEDVASTATA STAPKA SE ZAPISVA 4 
	GOTO	$+4		;I SE IZLIZA OT PROCEDURATA
	BCF	CONFIG,3	;
	BSF	CONFIG,4	;
	GOTO	out11		;
	MOVLW	0x04			;
	CLRF	STATUS			;
	SUBWF	BROIACH,W		;AKO V D3 I D4 E ZAPISANO CHISLOTO 4
	BTFSS	STATUS,Z		;TO PRI SLEDVASTATA STAPKA SE ZAPISVA 6 
	GOTO	$+4			;
	BSF	CONFIG,3		;
	BSF	CONFIG,4		;
	GOTO	out11			;
	MOVLW	0x06		;
	CLRF	STATUS		;
	SUBWF	BROIACH,W	;AKO V D3 I D4 E ZAPISANO CHISLOTO 6
	BTFSS	STATUS,Z	;TO PRI SLEDVASTATA STAPKA SE ZAPISVA 1 
	GOTO	$+4		;
	BCF	CONFIG,3	;
	BCF	CONFIG,4	;
	GOTO	out11		;
	BSF	CONFIG,3		;AKO V D3 I D4 E ZAPISANO CHISLOTO 1
	BCF	CONFIG,4		;TO PRI SLEDVASTATA STAPKA SE ZAPISVA 2
out11 
      RETURN
;*******************************************************************************************
;PROCEDURA ZA ZAPISVANE NA NASTROENITE STOINOSTI NA PROMENLIVATA CONFIG V CONFIG REGISTARA
;NA TCN75
;*******************************************************************************************
ZAPIS_CONFIG:
		BANKSEL	CONFIG
		BCF	CONFIG,7		;
		BCF	CONFIG,6		;NULIRAME GORNITE 3 BITA NA CONFIG
		BCF	CONFIG,5		;
		CALL	RAZR_I2C  ;PROCEDURA KOIATO KONFIGURIRA RC3 I RC4 I RAZRESHAVA I2C OBMENA
		CALL	CHEK_IDLE
		CALL	START
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BANKSEL	SSPBUF
		MOVLW	B'10010000'		;ZAREZDAME ADRESA S KOITO STE SE SVURZVAME
		MOVWF	SSPBUF			;V SLUCHAIA TOVA E 000
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exittcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		MOVLW	B'00000001'	;ZAREZHDAME V BUFERA NOMERA NA CONFIG REGISTARA
		MOVWF	SSPBUF		;V SLUCHAIA TOI E 00000001
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO DANNITE
		GOTO	$-1		;SE IZPRATIAT]
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exittcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BANKSEL	CONFIG
		MOVF	CONFIG,W		;ZAREZDAME BUFERA S NEOBHODIMITE DANNI
		MOVWF	SSPBUF			;V SLUCHAIA IZBIRAME CONFIG REGISTURA NA TCN75
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO DANNITE
		GOTO	$-1		;SE IZPRATIAT
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exittcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA		
		CALL	CHEK_IDLE
		CALL	STOP
		CALL	ZABR_I2C	;PROCEDURA ZA ZABRANA NA I2C OBMENA
exittcn75     
	      RETURN			
;************************************************************
;*****************************************************
;***************************************************************************
;PROCEDURA ZA STARTIRANE NA OBMENA PO I2C
;***************************************************************************
START:
		BANKSEL	SSPCON2
		BSF	SSPCON2,SEN	;PODAVAME KOMANDA START
		BTFSS	SSPSTAT,S		;CHAKAI DOKATO START
		GOTO	$-1			;ZAVARSHI
	      RETURN
;************************************************************
;***************************************************************************
;PROCEDURA ZA RESTARTIRANE NA OBMENA PO I2C
;***************************************************************************
RESTART:
		BANKSEL	SSPCON2
		BSF	SSPCON2,RSEN	;PODAVAME KOMANDA POVTOREN START (RESTART)
		BTFSS	SSPSTAT,S		;CHAKAI DOKATO RESTART
		GOTO	$-1			;ZAVARSHI
	      RETURN
;***************************************************************************
;PROCEDURA ZA PREKRATIAVANE NA OBMENA PO I2C
;***************************************************************************
STOP:
		BANKSEL	SSPCON2
		BSF	SSPCON2,PEN	;PODAVAME KOMANDA STOP
		BTFSS	SSPSTAT,P		;CHAKAI DOKATO STOP
		GOTO	$-1			;ZAVARSHI
	      RETURN
;***************************************************************************
;PROCEDURA ZA PROVERKA DALI PROCESORAT E SVOBODEN
;***************************************************************************
CHEK_IDLE:
		BANKSEL	SSPSTAT
		BTFSC	SSPSTAT,R_W	;PREDAVANETO ZAVARSHILO LI E?
		GOTO	$-1		;
		MOVF	SSPCON2,0
		ANDLW	0x1F
		BTFSS	STATUS,Z
		GOTO	$-3		;SHINATA E ZAETA , PROBVAI OTNOVO
	      RETURN
;************************************************************************
;PROCEDURA KOIATO KARA MARKERA NA DISPLEIA DA PREMINE NA NOV RED
;************************************************************************	
NOV_RED:
	CALL	START_D			;
	MOVLW	0x0C			;PODAVAME KOMANDA ZA PREMINAVANE NA NOV
	MOVWF	PORTC			;RED (CARRIAGE RETURN & LINE FEED)
	CALL	STOP_D			;
      RETURN
;************************************************************************
;PROCEDURA ZA CHETENE SASTOIANIETO NA CONFIG REGISTARA NA TCN75
;DANNITE SE PREHVARLIAT V PROMENLIVATA CONFIG
;************************************************************************
READ_CONF:
		CALL	RAZR_I2C  ;PROCEDURA KOIATO KONFIGURIRA RC3 I RC4 I RAZRESHAVA I2C OBMENA
		CALL	CHEK_IDLE
		CALL	START
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		MOVLW	B'10010000'		;ZAREZDAME ADRESA S KOITO STE SE SVURZVAME
		MOVWF	SSPBUF			;V SLUCHAIA TOVA E 000
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_r_tcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		MOVLW	B'00000001'
		MOVWF	SSPBUF
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_r_tcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
		CALL	RESTART
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		MOVLW	B'10010001'
		MOVWF	SSPBUF
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_r_tcn75	;NE E NARED I SE IZLIZA OT PROCEDURATA
		BANKSEL	SSPCON2
		BSF	SSPCON2,RCEN	;RAZRESHAVAME PRIEMANETO OT I2C	
		BTFSS	SSPSTAT,BF	;CHAKAI DOKATO BUFERA SE NAPULNI I
		GOTO 	$-1		;PRIEMANETO NA DANNI PRIKLUCHI
		BANKSEL	SSPBUF
		MOVF	SSPBUF,W		;MESTIM DANNITE OT SSPBUF V CONFIG
		MOVWF	CONFIG		;
		BANKSEL	SSPCON2
		BSF	SSPCON2,ACKDT	;"NO ACK"
		BSF	SSPCON2,ACKEN	;IZPRASTAME SIGNALA "NO ACK"	
		BANKSEL	PIR1
		BTFSS	PIR1,SSPIF	;CHAKAME DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
exit_r_tcn75
		CALL	CHEK_IDLE
		CALL	STOP
		CALL	ZABR_I2C	;PROCEDURA ZA ZABRANA NA I2C OBMENA		
 	      RETURN		
;*****************************************************************
;PROCEDURA ZA KONFIGURIRANE NA RC3 I RC4 I RAZRESHAVANE NA
;I2C OBMENA 
;*****************************************************************
RAZR_I2C:
		BANKSEL	TRISC
		MOVLW	B'00011000'
		MOVWF	TRISC		;RC0,RC1,RC2,RC5,RC6,RC7 - OTPUT RC3,RC4-INPUT
		BANKSEL	SSPSTAT
		BCF	SSPSTAT,CKE	;IZBIRAME REZHIM I2C
		BSF	SSPSTAT,SMP	;IZBRANA E SKOROST NA OBMEN 100KHz ILI 1MHz
        	BANKSEL	SSPCON
		MOVLW	B'00101000'	;IZBRAN E REZHIM I2C SAS SKOROST 100KHZ
		MOVWF	SSPCON
		BANKSEL	SSPADD
		MOVLW	B'00101001'	;ZAREZDAME V BRG CHISLOTO 41
		MOVWF	SSPADD		;ILI TOVA E TAKTOVA CHESTOTA 100KHz
   	      RETURN
;*****************************************************************
;PROCEDURA ZA KONFIGURIRANE NA RC3 I RC4 I ZABRANIAVANE NA
;I2C OBMENA 
;*****************************************************************
ZABR_I2C:
		BANKSEL	TRISC
		MOVLW	B'00000000'
		MOVWF	TRISC		;RC0,RC1,RC2,RC3,RC4,RC5,RC6,RC7 - OTPUT 
        	BANKSEL	SSPCON
		MOVLW	B'00001000'	;ZABRANIAVAME I2C REZHIMA
		MOVWF	SSPCON
	      RETURN
;*****************************************************************
;*********************************************************************************
START_D:	
		BANKSEL	PORTA	
		BCF	PORTA,2	;PODAVAME SIGNAL SELECT
		BTFSC	PORTA,0	;CHAKAI DOKATO DOIDE SIGNAL BUSY OT DISPLEIA
		GOTO	$-1
		BANKSEL	PORTC
	      RETURN
;*********************************************************************************
STOP_D:	
		CALL	INTERVAL
		BANKSEL	PORTA
		BCF	PORTA,1		;PODAVA SIGNAL WR
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BSF	PORTA,1		;PREKRATIAVAM SIGNAL WR
		BTFSS	PORTA,0		;CHAKAI DOKATO SIGNAL BUSY PREKASNE
		GOTO	$-1
		NOP
		NOP
		CLRF	PORTC
		BSF	PORTA,2		;PREKRATIAVA SIGNAL SELECT
	      RETURN
;*********************************************************************************
;procedura za sazdavane na pauza
;*********************************************************************************
INTERVAL:     MOVLW     0xFF
              MOVWF     INT1
int           DECFSZ    INT1,F
              GOTO      int
            RETURN
;*****************************************************
;procedura za nastroika na histerezisa na TCN75
;*****************************************************
THYS:
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-1	;
		CALL	START_D		;
		MOVLW	0x1F		;PODAVAM NA DISPLEIA KOMANDA RESET
		MOVWF	PORTC		;
		CALL	STOP_D		;
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		MOVLW	0x02		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		MOVLW	0x00	;ZAREZDAME ADRESA NA TCN75 S KOITO STE SE 
		MOVWF	ADRES	;SVARZVAME
;************
		CALL	READ_TSH	;PROCHITAME TSET OT PAMETTA NA TCN75
		CALL	ROTACIA		;MESTIM TSET V CISLO_ML I GO PRIVEZDAME V
					;PODHODIAST VID
ta6	
		MOVLW	0x02		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		MOVLW	0x00	;ZAREZDAME ADRESA NA TCN75 S KOITO STE SE 
		MOVWF	ADRES	;SVARZVAME
		CLRF	STATUS			;PROVERIAVAME DALI TSET E +
		MOVLW	0x06			;ILI - AKO TSET E - SE 
		SUBWF	ZNAK,W			;OTIVA NA RED ts7
		BTFSS	STATUS,Z		;
		GOTO	ta7			;
ta1		
		CLRF	STATUS		;AKO CISLO_ML E + 
		MOVLW	0xFA		;I E RAVNO NA FA
		SUBWF	CISLO_ML,W	;SE OTIVA NA RED ta4
		BTFSS	STATUS,Z	;
		GOTO	ta2	
		GOTO	ta4
ta2		
		BTFSC	PORTB,0	;AKO BUTON UP NE E NATISNAT OTIVAME NA RED ta4
		GOTO	ta4	;
ta3		
		INCF	CISLO_ML,F	;AKO BUTON UP E NATISNAT CISLO_ML=CISLO_ML+1
		CALL	DISP_THYS		;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,0	;AKO BUTON UP OSTE E NATISNAT OTIVAME V NACHALOTO
		GOTO	ta1	;
ta4		
		CALL	DISP_THYS	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSC	PORTB,1	;AKO BUTON DOWN NE E NATISNAT SE PROVERIAVA DALI
		GOTO	ta9	;BUTONAT ZA IZHOD E NATISNAT
ta5
		CLRF	STATUS		;AKO CISLO_ML=0
		CLRW			;
		SUBWF	CISLO_ML,W	;
		BTFSC	STATUS,Z	;
		GOTO	ta12		;SMENIAME POLIARNOSTTA NA ZNAK I OTIVAME NA ts13
		DECF	CISLO_ML,F	;CISLO_ML=CISLO_ML-1
		CALL	DISP_THYS	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,1	;AKO BUTON DOWN VSE OSTE E NATISNAT
		GOTO	ta5	;SE VRASTAME V NACHALOTO
ta9		BTFSC 	PORTB,4		;AKO BUTONA ZA IZHOD OT PROCEDURATA NE E NATISNAT
		GOTO	ta6		;OTIVAME V NACHALOTO NA CIALATA PROCEDURA
		CALL	UNROTATE		;PREHVARLIA CISLO_ML V TSET I GO PRIVEZDA VAV 
						;PODHODIST ZA ZAPIS VID
		CALL	ZAPIS_TSH		;ZAPISVA TSET V TCN75
		GOTO	out_thys	;IZLIZAME OT PROCEDURATA
ta7
		CLRF	STATUS		;
		MOVLW	0x92		;AKO CISLO_ML NE E =92 SE OTIVA NA RED
		SUBWF	CISLO_ML,W	;ts8
		BTFSS	STATUS,Z	;
		GOTO	ta8		;
		GOTO	ta14		;
ta8
		CALL	DISP_THYS	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA PAUZA OKOLO 1S		
		BTFSC	PORTB,1		;AKO BUTON DOWN NE E NATISNAT SE OTIVA NA ts14
		GOTO	ta14		;
ta13					;INACHE
		DECF	CISLO_ML,F	;CISLO_ML=CISLO_ML-1
		CALL	DISP_THYS	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA PAUZA OKOLO 1S	
		BTFSS	PORTB,1	;AKO BUTON DOWN OSTE E NATISNAT OTIVAME V NACHALOTO
		GOTO	ta7	;
ta14		BTFSC	PORTB,0		;AKO BUTON UP NE E NATISNAT SE PROVERIAVA
		GOTO	ta9		;DALI BUTONAT ZA IZHOD OT PROCEDURATA E NATISNAT
ta10		
		CLRF	STATUS		;AK0 BUTON UP E NATISNAT ,A CISLO_ML=0 TO
		CLRW			;PRI SLEDVASTATA STAPKA SE SMENIA ZNAKA NA CISLOTO
		SUBWF	CISLO_ML,W	;
		BTFSC	STATUS,Z	;
		GOTO	ta11		;
		INCF	CISLO_ML,F	;CISLO_ML=CISLO_ML+1
		CALL	DISP_THYS	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,0	;AKO BUTON UP VSE OSTE E NATISNAT SE OTIVA V NACHALOTO
		GOTO	ta10	;
		GOTO	ta9	;AKO BUTON UP NE  E NATISNAT PROVERIAVAME DALI BUTONAT ZA 
				;ZA IZHOD OT PROCEDURATA E NATISNAT
ta11		
		MOVLW	0x06		;SMENIAME ZNAKA NA ZNAK S +
		MOVWF	ZNAK		;
		GOTO	ta3		;
ta12		
		CLRF	ZNAK		;SMENIAME ZNAKA NA ZNAK S -
		GOTO	ta13	;
out_thys
;		BTFSC	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
;	 	GOTO	$-1
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-1				
	      RETURN
;*****************************************************
;procedura za nastroika temperaturata na vkluchvane naTCN75
;*****************************************************
TSET:
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-1	;
		CALL	START_D		;
		MOVLW	0x1F		;PODAVAM NA DISPLEIA KOMANDA RESET
		MOVWF	PORTC		;
		CALL	STOP_D		;
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		CLRF	ZNAK
		MOVLW	0x03		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		MOVLW	0x00	;ZAREZDAME ADRESA NA TCN75 S KOITO STE SE 
		MOVWF	ADRES	;SVARZVAME
;************
		CALL	READ_TSH	;PROCHITAME TSET OT PAMETTA NA TCN75
		CALL	ROTACIA		;MESTIM TSET V CISLO_ML I GO PRIVEZDAME V
					;PODHODIAST VID
ts6	
		MOVLW	0x03		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		MOVLW	0x00	;ZAREZDAME ADRESA NA TCN75 S KOITO STE SE 
		MOVWF	ADRES	;SVARZVAME
		CLRF	STATUS			;PROVERIAVAME DALI TSET E +
		MOVLW	0x06			;ILI - AKO TSET E - SE 
		SUBWF	ZNAK,W			;OTIVA NA RED ts7
		BTFSS	STATUS,Z		;
		GOTO	ts7			;
ts1		
		CLRF	STATUS		;AKO CISLO_ML E + 
		MOVLW	0xFA		;I E RAVNO NA FA
		SUBWF	CISLO_ML,W	;SE OTIVA NA RED ts4
		BTFSS	STATUS,Z	;
		GOTO	ts2	
		GOTO	ts4
ts2		
		BTFSC	PORTB,0	;AKO BUTON UP NE E NATISNAT OTIVAME NA RED ts4
		GOTO	ts4	;
ts3		
		INCF	CISLO_ML,F	;AKO BUTON UP E NATISNAT CISLO_ML=CISLO_ML+1
		CALL	DISP_TSET		;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,0	;AKO BUTON UP OSTE E NATISNAT OTIVAME V NACHALOTO
		GOTO	ts1	;
ts4		
		CALL	DISP_TSET	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSC	PORTB,1	;AKO BUTON DOWN NE E NATISNAT SE PROVERIAVA DALI
		GOTO	ts9	;BUTONAT ZA IZHOD E NATISNAT
ts5
		CLRF	STATUS		;AKO CISLO_ML=0
		CLRW			;
		SUBWF	CISLO_ML,W	;
		BTFSC	STATUS,Z	;
		GOTO	ts12		;SMENIAME POLIARNOSTTA NA ZNAK I OTIVAME NA ts13
		DECF	CISLO_ML,F	;CISLO_ML=CISLO_ML-1
		CALL	DISP_TSET	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,1	;AKO BUTON DOWN VSE OSTE E NATISNAT
		GOTO	ts5	;SE VRASTAME V NACHALOTO
ts9		BTFSC 	PORTB,4		;AKO BUTONA ZA IZHOD OT PROCEDURATA NE E NATISNAT
		GOTO	ts6		;OTIVAME V NACHALOTO NA CIALATA PROCEDURA
		CALL	UNROTATE		;PREHVARLIA CISLO_ML V TSET I GO PRIVEZDA VAV 
						;PODHODIST ZA ZAPIS VID
		CALL	ZAPIS_TSH		;ZAPISVA TSET V TCN75
		GOTO	out_tset	;IZLIZAME OT PROCEDURATA
ts7
		CLRF	STATUS		;
		MOVLW	0x92		;AKO CISLO_ML NE E =92 SE OTIVA NA RED
		SUBWF	CISLO_ML,W	;ts8
		BTFSS	STATUS,Z	;
		GOTO	ts8		;
		GOTO	ts14		;
ts8
		CALL	DISP_TSET	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA PAUZA OKOLO 1S		
		BTFSC	PORTB,1		;AKO BUTON DOWN NE E NATISNAT SE OTIVA NA ts14
		GOTO	ts14		;
ts13					;INACHE
		DECF	CISLO_ML,F	;CISLO_ML=CISLO_ML-1
		CALL	DISP_TSET	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA PAUZA OKOLO 1S	
		BTFSS	PORTB,1	;AKO BUTON DOWN OSTE E NATISNAT OTIVAME V NACHALOTO
		GOTO	ts7	;
ts14		BTFSC	PORTB,0		;AKO BUTON UP NE E NATISNAT SE PROVERIAVA
		GOTO	ts9		;DALI BUTONAT ZA IZHOD OT PROCEDURATA E NATISNAT
ts10		
		CLRF	STATUS		;AK0 BUTON UP E NATISNAT ,A CISLO_ML=0 TO
		CLRW			;PRI SLEDVASTATA STAPKA SE SMENIA ZNAKA NA CISLOTO
		SUBWF	CISLO_ML,W	;
		BTFSC	STATUS,Z	;
		GOTO	ts11		;
		INCF	CISLO_ML,F	;CISLO_ML=CISLO_ML+1
		CALL	DISP_TSET	;PROCEDURA ZA IZVEZDANE CISLO_ML NA DISPLEIA
		CALL	PAUZA02S	;PROCEDURA ZA  PAUZA OKOLO O,2S
		BTFSS	PORTB,0	;AKO BUTON UP VSE OSTE E NATISNAT SE OTIVA V NACHALOTO
		GOTO	ts10	;
		GOTO	ts9	;AKO BUTON UP NE  E NATISNAT PROVERIAVAME DALI BUTONAT ZA 
				;ZA IZHOD OT PROCEDURATA E NATISNAT
ts11		
		MOVLW	0x06		;SMENIAME ZNAKA NA ZNAK S +
		MOVWF	ZNAK		;
		GOTO	ts3		;
ts12		
		CLRF	ZNAK		;SMENIAME ZNAKA NA ZNAK S -
		GOTO	ts13	;
out_tset
		BTFSC	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-1
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-1				
	      RETURN
;*****************************************************
;procedura za izmervane na temperaturata s edin TCN75
;s adres 000
;*****************************************************
TEMPERATUR:	
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-1	;
		CALL	START_D		;
		MOVLW	0x1F		;PODAVAM NA DISPLEIA KOMANDA RESET
		MOVWF	PORTC		;
		CALL	STOP_D		;
pf
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		CLRF	ZNAK
		MOVLW	0x00		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		MOVLW	0x00	;ZAREZDAME ADRESA NA TCN75 S KOITO STE SE 
		MOVWF	ADRES	;SVARZVAME
		CALL	READ_TSH		;PROCHITAME TEMPERATURNIAT REGISTAR
		CALL	ROTACIA		;PRIVEZDAME REZULTATA V UDOBEN ZA OTCITANE VID
		CALL	DISP_TEMP		;INDICIRAME TEMPERATURATA NA DISPLEIA
		BTFSS	PORTB,4 ;AKO BUTONA ZA IZHOD OT PROCEDURATA E NATISNAT
		GOTO	pg      ;PAUZATA SE PRESKACHA I IZLIZAME OT PROCEDURATA
		MOVLW   0x0F		;
		MOVWF	TEMP		;
		BTFSS	PORTB,4		;AKO BUTONA ZA IZHOD E NATISNAT
		GOTO	pg		;PRESKACAME PAUZATA I IZLIZAME OT PROCEDURATA
		MOVLW   0xFF		;
       		MOVWF   TMP		;
		CALL	INTERVAL1	;SAZDAVA SE PAUZA 
		DECFSZ  TMP,F		;
        	GOTO    $-2		;OKOLO 1s PREDI SLEDVASTOTO IZMERVANE
		DECFSZ	TEMP,F		;
		GOTO	$-8		;
		BTFSC	PORTB,4
		GOTO	pf
pg		
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-1				
	      RETURN
;*****************************************************
;procedura za izmervane na temperaturata s 8 datchika TCN75
;s adresi ot 000 do 111
;*****************************************************
TEMPERATUR_MONITOR:	
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-1	;
		CALL	START_D
		MOVLW	0x1F		;PODAVAM NA DISPLEIA KOMANDA RESET
		MOVWF	PORTC		;
		CALL	STOP_D		;
		CALL	START_D		;
		MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA 
		MOVWF	PORTC		;ZA SKRIVANE NA KURSORA
		CALL	STOP_D		;

;**
		BSF	FLAG,0	;POLZVA SE V PROCEDURATA ZA INDIKACIA
		CLRF	BROIACH
		CLRF	ADRES
;**
str
		CLRF	REGISTER		;IZBIRAM TEMP REGISTARA NA TCN75
		CALL	START_D	;
		MOVLW	0x05	;NA DISPLEIA SE IZPISVA "T"
		CALL	TABLE2	;
		MOVWF	PORTC	;
		CALL	STOP_D	;
;*
		CALL	START_D		;
		MOVF	BROIACH,W	;NA DISPLEIA SE IZPISVA "CISLO OT 0 DO 8"
		CALL	TABLE1		;
		MOVWF	PORTC		;
		CALL	STOP_D		;

;**
		CALL	START_D	;
		MOVLW	0x01	;NA DISPLEIA SE IZPISVA "="
		CALL	TABLE2	;
		MOVWF	PORTC	;
		CALL	STOP_D	;
;***
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		CLRF	ZNAK
		CLRF	ADRES		;
		MOVF	BROIACH,W	;PREHVARLIAME BROIACH V ADRES
		MOVWF	ADRES		;
		MOVLW	0x00		;ZAREZDAME NOMERA NA REGISTARA S 
		MOVWF	REGISTER	;KOITO STE SE SVARZVAME
		CALL	READ_TSH		;PROCHITAME TEMPERATURNIAT REGISTAR
		CALL	ROTACIA		;PRIVEZDAME REZULTATA V UDOBEN ZA OTCITANE VID
		BTFSS	FALL,0				;AKO IMA GRESKA PRI CETENETO IGNORIRAME INDIKACIATA
		CALL	DISP_TEMP		;INDICIRAME TEMPERATURATA NA DISPLEIA
;**
		BTFSC	FALL,0		;AKO IMA GRESKA PRI CETENETO NA DISPLEIA
		CALL	GRESKA		;SE IZPISVA "FALL"
		CALL	START_D	;
		MOVLW	0x00	;NA DISPLEIA SE IZPISVA " "
		CALL	TABLE3	;
		MOVWF	PORTC	;
		CALL	STOP_D	;

;**
		BTFSS	PORTB,4		;AKO BUTONA ZA IZHOD E NATISNAT
		GOTO	pgg		;PRESKACAME PAUZATA I IZLIZAME OT PROCEDURATA

		CALL	INTERVAL2
		INCF	BROIACH,F	;BROIACH=BROIACH+1
		MOVLW	0x08		;
		SUBWF	BROIACH,W	;AKO BROIACH E PO-GOLIAMO OT 7 TO
		BTFSS	STATUS,Z	;BROIACH SE NULIRA
		GOTO	stt
		CLRF	BROIACH	;
		CALL	START_D		;
		MOVLW	0x0B		;PODAVAM NA DISPLEIA KOMANDA ZA VRASTANE 
		MOVWF	PORTC		;NA KURSORA V IZHODNA POZICIA NA PURVIA
		CALL	STOP_D		;RED
stt
		BTFSC	PORTB,4
		GOTO	str
pgg		
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-1
		BCF	FLAG,0				
	      RETURN
;*****************************************************
;*****************************************************************
;PROCEDURA ZA PRIVEZDANE NA CISLO_ML V PODHODIAST ZA OBRABOTKA VID
;ZNAKA NA CISLOTO SE SADARZHA VAV ZNAK
;*****************************************************************
ROTACIA:
	BANKSEL	CISLO_ML
	BTFSC	CISLO_ML,7
	BSF	CISLO_ML,0
	BCF	CISLO_ML,7
	CLRF	ZNAK
	BCF	STATUS,C
	RLF	CISLO_ST,F
	BTFSC	STATUS,C
	GOTO	tu
	BSF	ZNAK,1		;V PROMENLIVATA ZNAK SE SADARZHA INFORMACIA ZA 
	BSF	ZNAK,2		;POLIARNOSTTA NA TEMPERATURATA, AKO ZNAK=6 TO TEMPERATURATA
				;E POLOZHITELNA AKO ZNAK=0 TO TEMPERATURATA E OTRICATELNA
tu	MOVF	CISLO_ST,W
	IORWF	CISLO_ML,F
	CLRF	CISLO_ST
      RETURN
;**************************************************************
;*****************************************************************
;PROCEDURA ZA PRIVEZDANE NA CISLO_ML V PODHODIAST ZA ZAPISV TCN75 VID
;STARSHATA CHAST NA TSET E V CISLO_ST A MLADSHATA V CISLO_ML
;*****************************************************************
UNROTATE:
	MOVF	CISLO_ML,W	;CISLO_ML GO MESTIM VAV W
	MOVWF	CISLO_ST	;W GO MESTIM VAV CISLO_ST
	CLRF	CISLO_ML
	CLRF	STATUS
	RRF	CISLO_ST,F
	BTFSC	STATUS,C
	BSF	CISLO_ML,7 ;NAI-MLADSHIAT RAZRED NA CISLO_ST SE ZAPISVA V D7
			   ;NA CISLO_ML
	BCF	CISLO_ST,7
	MOVLW	0x06
	CLRF	STATUS
	SUBWF	ZNAK,W
	BTFSS	STATUS,Z
	BSF	CISLO_ST,7
	BCF	CISLO_ML,0
	BCF	CISLO_ML,1
	BCF	CISLO_ML,2
	BCF	CISLO_ML,3
	BCF	CISLO_ML,4
	BCF	CISLO_ML,5
	BCF	CISLO_ML,6
      RETURN
;*******************************************************************
;PROCEDURA ZA CHETENE SADARZHANIETO NA TEMP REGISTARA NA 8 BROIA  TCN75
;*******************************************************************
READ_TSH:
		CLRF	FALL	;IZCISTVAME FLAGA ZA GRESKA PRI CETENE
		CALL	RAZR_I2C  ;PROCEDURA KOIATO KONFIGURIRA RC3 I RC4 I RAZRESHAVA I2C OBMENA
		CALL	CHEK_IDLE
		CALL	START
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BCF	STATUS,C
		RLF	ADRES,F
		MOVLW	B'10010000'
		IORWF	ADRES,F
		MOVF	ADRES,W
;		MOVLW	B'10010000'		;ZAREZDAME ADRESA S KOITO STE SE SVURZVAME
		MOVWF	SSPBUF			;V SLUCHAIA TOVA E 000
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_mtemp	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
;******
		BANKSEL	PIR1
		CLRF	PIR1
;		MOVLW	B'00000000'	;IZBIRAME TEMP REGISTARA
		MOVF	REGISTER,W	;IZBIRAME REGISTER
		MOVWF	SSPBUF
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_mtemp	;NE E NARED I SE IZLIZA OT PROCEDURATA
		CALL	CHEK_IDLE
;*******
		CALL	RESTART	
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BSF	ADRES,0	;PODAVAME KOMANDA CETENE
		MOVF	ADRES,W
;		MOVLW	B'10010001'
		MOVWF	SSPBUF
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	exit_mtemp	;NE E NARED I SE IZLIZA OT PROCEDURATA
;*******
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BANKSEL	SSPCON2
		BSF	SSPCON2,RCEN	;RAZRESHAVAME PRIEMANETO OT I2C	
		BTFSS	SSPSTAT,BF	;CHAKAI DOKATO BUFERA SE NAPULNI I
		GOTO 	$-1		;PRIEMANETO NA DANNI PRIKLUCHI
		BANKSEL	SSPBUF
		MOVF	SSPBUF,W		;MESTIM DANNITE OT SSPBUF V CISLO_ST
		MOVWF	CISLO_ST		;
		BANKSEL	SSPCON2
		BCF	SSPCON2,ACKDT	;
		BSF	SSPCON2,ACKEN	;RAZRESHAVA IZPRASTANETO NA ACK KAM PROCESORA
		BANKSEL	PIR1		
		BTFSS	PIR1,SSPIF	;CHAKAME DOKATO PREDAVANETO NA ACK 
		GOTO	$-1		;ZAVARSHI
		CALL	CHEK_IDLE		;PROVERIAVAME DALI PROCESORA E SVOBODEN
		BANKSEL	PIR1
		CLRF	PIR1	
		BANKSEL	SSPCON2
		BSF	SSPCON2,RCEN	;RAZRESHAVA PRIEMANETO PO I2C
		BTFSS	SSPSTAT,BF	;CHAKAI DOKATO BUFERA SE NAPALNI I PRIEMANETO
		GOTO	$-1		;NA DANNI PRIKLUCHI
		BANKSEL	SSPBUF			;MESTIM PRIETITE DANNI OT SSPBUF
		MOVF	SSPBUF,W		;VAV CISLO_ML
		MOVWF	CISLO_ML		;
;*******		
		BANKSEL	SSPCON2
		BSF	SSPCON2,ACKDT	;"NO ACK"
		BSF	SSPCON2,ACKEN	;IZPRASTAME SIGNALA "NO ACK"	
		BANKSEL	PIR1
		BTFSS	PIR1,SSPIF	;CHAKAME DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		CALL	CHEK_IDLE	;PROVERIAVA DALI PROCESORA E SVOBODEN
		GOTO	e_mtemp
exit_mtemp
		BANKSEL	FALL
		MOVLW	0x01	;ZAREZDAME V FALL 1 KOETO POKAZVA CE IMA GRESKA	
		MOVWF	FALL	;PRI CETENETO NA SUOTVETNIAT DATCIK
e_mtemp
		CALL	STOP			;KRAI NA PRIEMANETO
		CALL	ZABR_I2C	;PROCEDURA ZA ZABRANA NA I2C OBMENA		
      	      RETURN
;*********************************************************************************
;PROCEDURA ZA ZAPIS NA Tset I Thys REGISTARA V TCN75
;*********************************************************************************
ZAPIS_TSH:
		CALL	RAZR_I2C  ;PROCEDURA KOIATO KONFIGURIRA RC3 I RC4 I RAZRESHAVA I2C OBMENA
		CALL	CHEK_IDLE
		CALL	START
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BCF	STATUS,C
		RLF	ADRES,F
		MOVLW	B'10010000'
		IORWF	ADRES,F
		MOVF	ADRES,W
;		MOVLW	B'10010000'		;ZAREZDAME ADRESA S KOITO STE SE SVURZVAME
		BANKSEL	SSPBUF
		MOVWF	SSPBUF			;V SLUCHAIA TOVA E 000
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO PREDAVANETO 
		GOTO	$-1		;ZAVARSHI
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	zapis	;NE E NARED I SE IZLIZA OT PROCEDURATA
;*******
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
;		MOVLW	B'00000011'	;ZAREZHDAME V BUFERA NOMERA NA Tset REGISTARA
		MOVF	REGISTER,W	;IZBIRAME REGISTER
		MOVWF	SSPBUF		;V SLUCHAIA TOI E 00000001
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO DANNITE
		GOTO	$-1		;SE IZPRATIAT]
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	zapis	;NE E NARED I SE IZLIZA OT PROCEDURATA
;*******
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BANKSEL	CISLO_ST
		MOVF	CISLO_ST,W		;ZAREZDAME BUFERA S NEOBHODIMITE DANNI
		MOVWF	SSPBUF			;V SLUCHAIA IZPRASTAME STARSHATA CHAST NA TSET
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO DANNITE
		GOTO	$-1		;SE IZPRATIAT
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	zapis	;NE E NARED I SE IZLIZA OT PROCEDURATA
;*******
		CALL	CHEK_IDLE
		BANKSEL	PIR1
		CLRF	PIR1
		BANKSEL	CISLO_ML
		MOVF	CISLO_ML,W		;ZAREZDAME BUFERA S NEOBHODIMITE DANNI
		MOVWF	SSPBUF			;V SLUCHAIA IZPRASTAME MLADSHATA CHAST NA TSET
		BTFSS	PIR1,SSPIF	;CHAKAI DOKATO DANNITE
		GOTO	$-1		;SE IZPRATIAT
		BANKSEL	SSPCON2
		BTFSC	SSPCON2,ACKSTAT	;AKO NE PRIEMEM SIGNAL ACK, ZNACHI NESTO
		GOTO	zapis	;NE E NARED I SE IZLIZA OT PROCEDURATA
;*******
		CALL	CHEK_IDLE
zapis	
		CALL	STOP
		CALL	ZABR_I2C	;PROCEDURA ZA ZABRANA NA I2C OBMENA
		CLRF	CISLO_ML
		CLRF	CISLO_ST
	      RETURN
;**************************************************************
;PROCEDURA ZA SAZDAVANE NA PAUZA OKOLO 0.2S
;**************************************************************
PAUZA02S:
	MOVLW   0x02		;
	MOVWF	TEMP		;
	MOVLW   0xFF		;
        MOVWF   TMP		;
	CALL	INTERVAL1	;SAZDAVA SE PAUZA 
	DECFSZ  TMP,F		;
        GOTO    $-2		;OKOLO 0.2s
	DECFSZ	TEMP,F		;
	GOTO	$-6		;
      RETURN
;**************************************************************
;PROCEDURA ZA IZVEZDANE NA DISPLEIA SADARZHANIETO NA TSET (CISLO_ML)
;**************************************************************
DISP_TSET:
		CLRF	STATUS		;AK0  CISLO_ML=0 TO
		CLRW			;TO VINAGI ZNAK=6
		SUBWF	CISLO_ML,W	;(TOEST PRED 0 VINAGI STOI ZNAK +)
		BTFSS	STATUS,Z	;
		GOTO	$+3		;
		MOVLW	0x06		;
		MOVWF	ZNAK		;
		CLRF    CIFRA01
                CLRF    CIFRA02
                CLRF    CIFRA03
                CLRF    CIFRA04
                CLRF    CIFRA1
                CLRF    CIFRA2
                CLRF    CIFRA3
                CLRF    CIFRA4
		CLRF	TMP
		CLRF	TMP_ML
		CLRF	TMP_ST
		CLRF	PRENOS
		BANKSEL	PORTA	;NULIRAM UPRAVLIAVASTITE IZVODI NA DISPLEIA
		BSF	PORTA,2	;
		BSF	PORTA,1	;
		BANKSEL	PORTC
		CLRF	PORTC
;*********************
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		MOVF	CISLO_ML,W	;MESTIM CISLO_ML V CISLO_MLT
		MOVWF	CISLO_MLT	;
		MOVLW	0x06		;
		CLRF	STATUS		;AKO ZNAK E -
		SUBWF	ZNAK,W		;CISLOTO SE INVERTIRA I SE  DOBAVIA 1
		BTFSS	STATUS,Z	;SLED TOVA REZULTATA SE UMNOZHAVA S 5
		GOTO	$+3		;
		CALL	MULTIPL_X5	;AKO ZNAK E + CISLOTO SE UMNOZHAVA S 5
		GOTO	$+4		;I REZULTATA SE INDICIRA
		COMF	CISLO_MLT,F;INVERTIRAME CISLO_MLT
		INCF	CISLO_MLT,F;DOBAVIAME KUM CISLO_MLT 1
		CALL	MULTIPL_X5;UMNOZHAVAME CISLO_MLT S 5 , REZULTATA OSTAVA V CISLO_ML
;*********************
                CALL    CIFRI
                CALL    EDNA_CIFRA
                CALL    DISPLAY_TSET
	      RETURN
;**************************************************************
;PROCEDURA ZA IZVEZDANE NA DISPLEIA SADARZHANIETO NA Thyst (CISLO_ML)
;**************************************************************
DISP_THYS:
		CLRF	STATUS		;AK0  CISLO_ML=0 TO
		CLRW			;TO VINAGI ZNAK=6
		SUBWF	CISLO_ML,W	;(TOEST PRED 0 VINAGI STOI ZNAK +)
		BTFSS	STATUS,Z	;
		GOTO	$+3		;
		MOVLW	0x06		;
		MOVWF	ZNAK		;
		CLRF    CIFRA01
                CLRF    CIFRA02
                CLRF    CIFRA03
                CLRF    CIFRA04
                CLRF    CIFRA1
                CLRF    CIFRA2
                CLRF    CIFRA3
                CLRF    CIFRA4
		CLRF	TMP
		CLRF	TMP_ML
		CLRF	TMP_ST
		CLRF	PRENOS
		BANKSEL	PORTA	;NULIRAM UPRAVLIAVASTITE IZVODI NA DISPLEIA
		BSF	PORTA,2	;
		BSF	PORTA,1	;
		BANKSEL	PORTC
		CLRF	PORTC
;*********************
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		MOVF	CISLO_ML,W	;MESTIM CISLO_ML V CISLO_MLT
		MOVWF	CISLO_MLT	;
		MOVLW	0x06		;
		CLRF	STATUS		;AKO ZNAK E -
		SUBWF	ZNAK,W		;CISLOTO SE INVERTIRA I SE  DOBAVIA 1
		BTFSS	STATUS,Z	;SLED TOVA REZULTATA SE UMNOZHAVA S 5
		GOTO	$+3		;
		CALL	MULTIPL_X5	;AKO ZNAK E + CISLOTO SE UMNOZHAVA S 5
		GOTO	$+4		;I REZULTATA SE INDICIRA
		COMF	CISLO_MLT,F;INVERTIRAME CISLO_MLT
		INCF	CISLO_MLT,F;DOBAVIAME KUM CISLO_MLT 1
		CALL	MULTIPL_X5;UMNOZHAVAME CISLO_MLT S 5 , REZULTATA OSTAVA V CISLO_ML
;*********************
                CALL    CIFRI
                CALL    EDNA_CIFRA
                CALL    DISPLAY_THYS
	      RETURN
;**************************************************************
;PROCEDURA ZA IZVEZDANE NA DISPLEIA SADARZHANIETO NA TEMP (CISLO_ML)
;**************************************************************
DISP_TEMP:
		CLRF	STATUS		;AK0  CISLO_ML=0 TO
		CLRW			;TO VINAGI ZNAK=6
		SUBWF	CISLO_ML,W	;(TOEST PRED 0 VINAGI STOI ZNAK +)
		BTFSS	STATUS,Z	;
		GOTO	$+3		;
		MOVLW	0x06		;
		MOVWF	ZNAK		;
		CLRF    CIFRA01
                CLRF    CIFRA02
                CLRF    CIFRA03
                CLRF    CIFRA04
                CLRF    CIFRA1
                CLRF    CIFRA2
                CLRF    CIFRA3
                CLRF    CIFRA4
		CLRF	TMP
		CLRF	TMP_ML
		CLRF	TMP_ST
		CLRF	PRENOS
		BANKSEL	PORTA	;NULIRAM UPRAVLIAVASTITE IZVODI NA DISPLEIA
		BSF	PORTA,2	;
		BSF	PORTA,1	;
		BANKSEL	PORTC
		CLRF	PORTC
;*********************
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		MOVF	CISLO_ML,W	;MESTIM CISLO_ML V CISLO_MLT
		MOVWF	CISLO_MLT	;
		MOVLW	0x06		;
		CLRF	STATUS		;AKO ZNAK E -
		SUBWF	ZNAK,W		;CISLOTO SE INVERTIRA I SE  DOBAVIA 1
		BTFSS	STATUS,Z	;SLED TOVA REZULTATA SE UMNOZHAVA S 5
		GOTO	$+3		;
		CALL	MULTIPL_X5	;AKO ZNAK E + CISLOTO SE UMNOZHAVA S 5
		GOTO	$+4		;I REZULTATA SE INDICIRA
		COMF	CISLO_MLT,F;INVERTIRAME CISLO_MLT
		INCF	CISLO_MLT,F;DOBAVIAME KUM CISLO_MLT 1
		CALL	MULTIPL_X5;UMNOZHAVAME CISLO_MLT S 5 , REZULTATA OSTAVA V CISLO_ML
;*********************
                CALL    CIFRI
                CALL    EDNA_CIFRA
                CALL    DISPLAY_TEMP
	      RETURN
;********************************************************************************
;PROCEDURA ZA IZVEZDANE NA INFORMACIATA NA DISPLEIA
;********************************************************************************
DISPLAY_TEMP:	
		BTFSC	FLAG,0	;POLZVA SE SAMO PRI PROCEDURATA ZA CETEMNE NA 8 
		GOTO	pyt	;DATCHIKA TCN75
;**
		CALL	START_D		;
		MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA ZA IZKLUCVANE
		MOVWF	PORTC		;NA KURSORA
		CALL	STOP_D		;
		BANKSEL	TEMP
		MOVLW	0x11	;ZAPISVAM V TEMP CHISLOTO 17 , KOETO E RAVNO NA 
		MOVWF	TEMP	;BROIA NA SIMVOLITE V NADPISA
px		
		CALL	START_D
		BANKSEL	TEMP
		CLRW
		ADDLW	0x01	;poneze  nacaloto na TABLE16 se namira na adres FE 
				;a kraia e na adres 110 bit9 na PC triabva da stane
		MOVWF	PCLATH	;1. Bitove 9-13 sa dostupni samo crez PCLATH
		MOVF	TEMP,W
		CALL	TABLE16
		MOVWF	PORTC
		CALL	STOP_D
		BANKSEL	TEMP
		DECFSZ	TEMP,F
		GOTO	px
		CLRF	PCLATH	;vrastame staroto sastoianie na PCLATH
;*********************************
pyt
		CALL	START_D	;PROCEDURA ZA OBSLUZVANE NA PREDAVANETO NA DANNI
		MOVF    ZNAK,W	;NA DISPLEIA SE INDICIRA POLIARNOSTTA NA TEMPERATURATA
		CALL	TABLE2
		MOVWF	PORTC
		CALL	STOP_D	;PROCEDURA ZA PREKRATIAVANETO NA PREDAVANETO
;********************************************************************************
		CALL	START_D
		MOVF	CIFRA4,W	;NA DISPLEIA SE INDICIRA CIFRA4
		CALL	TABLE1	;
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA3,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA3
		MOVWF	PORTC
		CALL	STOP_D
 ;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA2,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA2
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVLW    0x2C	;NA DISPLEIA SE INDICIRA SIMVOLAT ,	
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA1,W
		CALL	TABLE1	;NA DISPLEIA SE INDICIRA CIFRA1
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		BTFSC	FLAG,0	;POLZVA SE SAMO PRI PROCEDURATA ZA CETEMNE NA 8 
		GOTO	pytt	;DATCHIKA TCN75
;***************************************************
		CALL	START_D
		MOVLW	0x07	;NA DISPLEIA SE IZPISVA SIMVOLA ZA GRADUS
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
		CALL	START_D
		MOVLW	0x08	;NA DISPLEIA SE IZPISVA SIMVOLA C
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		CALL	START_D
		MOVLW	0x0B	;COMANDA KOIATO IZMESTVA KURSORA V NACHALOTO
		MOVWF	PORTC
		CALL	STOP_D
pytt
              RETURN
;********************************************************************************
;PROCEDURA ZA IZVEZDANE NA INFORMACIATA NA DISPLEIA
;********************************************************************************
DISPLAY_TSET:	
;**
		CALL	START_D		;
		MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA ZA IZKLUCVANE
		MOVWF	PORTC		;NA KURSORA
		CALL	STOP_D		;
;**
		BANKSEL	TEMP
		MOVLW	0x11	;ZAPISVAM V TEMP CHISLOTO 17 , KOETO E RAVNO NA 
		MOVWF	TEMP	;BROIA NA SIMVOLITE V NADPISA
tx		
		CALL	START_D
		CLRW
		BANKSEL	TEMP
		MOVF	TEMP,W		;NA DISPLEIA SE IZPISVA 
		NOP			;<<REG. TSET>> TSET=
		CALL	TABLE14
		MOVWF	PORTC
		CALL	STOP_D
		BANKSEL	TEMP
		DECFSZ	TEMP,F
		GOTO	tx
;*********************************
		CALL	START_D	;PROCEDURA ZA OBSLUZVANE NA PREDAVANETO NA DANNI
		MOVF    ZNAK,W	;NA DISPLEIA SE INDICIRA POLIARNOSTTA NA TEMPERATURATA
		CALL	TABLE2
		MOVWF	PORTC
		CALL	STOP_D	;PROCEDURA ZA PREKRATIAVANETO NA PREDAVANETO
;********************************************************************************
		CALL	START_D
		MOVF	CIFRA4,W	;NA DISPLEIA SE INDICIRA CIFRA4
		CALL	TABLE1	;
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA3,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA3
		MOVWF	PORTC
		CALL	STOP_D
 ;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA2,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA2
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVLW    0x2C	;NA DISPLEIA SE INDICIRA SIMVOLAT ,	
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA1,W
		CALL	TABLE1	;NA DISPLEIA SE INDICIRA CIFRA1
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		CALL	START_D
		MOVLW	0x07	;NA DISPLEIA SE IZPISVA SIMVOLA ZA GRADUS
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
		CALL	START_D
		MOVLW	0x08	;NA DISPLEIA SE IZPISVA SIMVOLA C
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		CALL	START_D
		MOVLW	0x0B	;COMANDA KOIATO IZMESTVA KURSORA V NACHALOTO
		MOVWF	PORTC
		CALL	STOP_D
              RETURN
;********************************************************************************
;PROCEDURA ZA IZVEZDANE NA INFORMACIATA NA DISPLEIA
;********************************************************************************
DISPLAY_THYS:	
		CALL	START_D		;
		MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA ZA IZKLUCVANE
		MOVWF	PORTC		;NA KURSORA
		CALL	STOP_D		;
;**
		BANKSEL	TEMP
		MOVLW	0x11	;ZAPISVAM V TEMP CHISLOTO 17 , KOETO E RAVNO NA 
		MOVWF	TEMP	;BROIA NA SIMVOLITE V NADPISA
txx		
		CALL	START_D
		CLRW
		BANKSEL	TEMP
		MOVF	TEMP,W		;NA DISPLEIA SE IZPISVA 
		NOP			;<<REG. Thys>> Thys=
		NOP
		NOP
		NOP
		NOP
		CALL	TABLE15
		MOVWF	PORTC
		CALL	STOP_D
		BANKSEL	TEMP
		DECFSZ	TEMP,F
		GOTO	txx
;*********************************
		CALL	START_D	;PROCEDURA ZA OBSLUZVANE NA PREDAVANETO NA DANNI
		MOVF    ZNAK,W	;NA DISPLEIA SE INDICIRA POLIARNOSTTA NA TEMPERATURATA
		CALL	TABLE2
		MOVWF	PORTC
		CALL	STOP_D	;PROCEDURA ZA PREKRATIAVANETO NA PREDAVANETO
;********************************************************************************
		CALL	START_D
		MOVF	CIFRA4,W	;NA DISPLEIA SE INDICIRA CIFRA4
		CALL	TABLE1	;
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA3,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA3
		MOVWF	PORTC
		CALL	STOP_D
 ;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA2,W
		CALL	TABLE1		;NA DISPLEIA SE INDICIRA CIFRA2
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVLW    0x2C	;NA DISPLEIA SE INDICIRA SIMVOLAT ,	
		MOVWF	PORTC
		CALL	STOP_D
;*******************************************************************************
		CALL	START_D
		MOVF    CIFRA1,W
		CALL	TABLE1	;NA DISPLEIA SE INDICIRA CIFRA1
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		CALL	START_D
		MOVLW	0x07	;NA DISPLEIA SE IZPISVA SIMVOLA ZA GRADUS
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
		CALL	START_D
		MOVLW	0x08	;NA DISPLEIA SE IZPISVA SIMVOLA C
		CALL	TABLE2	;
		MOVWF	PORTC
		CALL	STOP_D
;*****************************************************************
		CALL	START_D
		MOVLW	0x0B	;COMANDA KOIATO IZMESTVA KURSORA V NACHALOTO
		MOVWF	PORTC
		CALL	STOP_D
              RETURN

;********************************************************************
;
;********************************************************************
CIFRI:		
		MOVF    CISLO_STT,W
		MOVWF   TMP_ST
		MOVF    CISLO_MLT,W
		MOVWF   TMP_ML
cn_12		CLRF	STATUS
		RLF	TMP_ST,F
		RLF	TMP_ST,F
		RLF	TMP_ST,F
		RLF	TMP_ST,F
		CLRF	STATUS
		RLF	TMP_ST,F
		BTFSS	STATUS,C
		GOTO	cn_11
		MOVLW	0x02
		ADDWF	CIFRA04,F
		MOVLW	0x04
		ADDWF	CIFRA02,F
		MOVLW	0x08
		ADDWF	CIFRA01,F
;****************************************************
cn_11		CLRF	STATUS
		RLF	TMP_ST,F
		BTFSS	STATUS,C
		GOTO	cn_10
		MOVLW	0x01
		ADDWF	CIFRA04,F
		MOVLW	0x02
		ADDWF	CIFRA02,F
		MOVLW	0x04
		ADDWF	CIFRA01,F
;****************************************************
cn_10		CLRF	STATUS
		RLF	TMP_ST,F
		BTFSS	STATUS,C
		GOTO	cn_9
		MOVLW	0x05
		ADDWF	CIFRA03,F
		MOVLW	0x01
		ADDWF	CIFRA02,F
		MOVLW	0x02
		ADDWF	CIFRA01,F
;****************************************************
cn_9		CLRF	STATUS
		RLF	TMP_ST,F
		BTFSS	STATUS,C
		GOTO	cn_8
		MOVLW	0x02
		ADDWF	CIFRA03,F
		MOVLW	0x05
		ADDWF	CIFRA02,F
		MOVLW	0x06
		ADDWF	CIFRA01,F
;****************************************************
cn_8		CLRF	STATUS
		RLF	TMP_ML,F
		BTFSS	STATUS,C
		GOTO	cn_7
		MOVLW	0x01
		ADDWF	CIFRA03,F
		MOVLW	0x02
		ADDWF	CIFRA02,F
		MOVLW	0x08
		ADDWF	CIFRA01,F
;****************************************************		
cn_7            CLRF    STATUS
                RLF     TMP_ML,F
                BTFSS   STATUS,C
                GOTO    cn_6
                MOVLW   0x06
                ADDWF   CIFRA02,F
                MOVLW   0x04
                ADDWF   CIFRA01,F
;**************************************************************************
cn_6            CLRF	STATUS
		RLF     TMP_ML,F
                BTFSS   STATUS,C
                GOTO    cn_5
                MOVLW   0x03
                ADDWF   CIFRA02,F
                MOVLW   0x02
                ADDWF   CIFRA01,F
;**************************************************************************
cn_5           	CLRF	STATUS
		RLF     TMP_ML,F
                BTFSS   STATUS,C
                GOTO    cn_4
                MOVLW   0x01
                ADDWF   CIFRA02,F
                MOVLW   0x06
                ADDWF   CIFRA01,F
;**************************************************************************
cn_4      	CLRF	STATUS    
		RLF     TMP_ML,F
	        BTFSS   STATUS,C
        	GOTO    cn_3
              	MOVLW   0x08
              	ADDWF   CIFRA01,F
;**************************************************************************
cn_3      	CLRF	STATUS    
		RLF     TMP_ML,F
	        BTFSS   STATUS,C
        	GOTO    cn_2
              	MOVLW   0x04
              	ADDWF   CIFRA01,F
;**************************************************************************
cn_2      	CLRF	STATUS    
		RLF     TMP_ML,F
	        BTFSS   STATUS,C
        	GOTO    cn_1
              	MOVLW   0x02
              	ADDWF   CIFRA01,F
;**************************************************************************
cn_1      	CLRF	STATUS    
		RLF     TMP_ML,F
	        BTFSS   STATUS,C
        	GOTO    end_0
              	MOVLW   0x01
              	ADDWF   CIFRA01,F
end_0      
	      RETURN
;*********************************************************************************
;PROCEDURA ZA PREOBRAZUVANE NA DVOICHNITE CHISLA V DESETICHNI
;*********************************************************************************
EDNA_CIFRA:
              MOVLW     0x0A
              CLRF      PRENOS
dec           SUBWF     CIFRA01,F
              INCF      PRENOS,F
              BTFSC     STATUS,0
              GOTO      dec
              ADDWF     CIFRA01,F
              MOVF      CIFRA01,W
              MOVWF     CIFRA1
              DECF      PRENOS,F
              MOVF      PRENOS,W
              ADDWF     CIFRA02,F
              MOVLW     0x0A
              CLRF      PRENOS
dec1          SUBWF     CIFRA02,F
              INCF      PRENOS,F
              BTFSC     STATUS,0
              GOTO      dec1
              ADDWF     CIFRA02,F
              MOVF      CIFRA02,W
              MOVWF     CIFRA2
              DECF      PRENOS,F
              MOVF      PRENOS,W
              ADDWF     CIFRA03,F
              MOVLW     0x0A
              CLRF      PRENOS
dec2          SUBWF     CIFRA03,F
              INCF      PRENOS,F
              BTFSC     STATUS,0
              GOTO      dec2
              ADDWF     CIFRA03,F
              MOVF      CIFRA03,W
              MOVWF     CIFRA3
              DECF      PRENOS,F
              MOVF      PRENOS,W
              ADDWF     CIFRA04,F
              MOVF      CIFRA04,W
              MOVWF     CIFRA4	
            RETURN
;********************************************************************
;PROCEDURA ZA UMNOZHENIE NA CISLO_ML S 5 .REZULTATA OSTAVA V CISLO_ML
;********************************************************************
MULTIPL_X5:
	BANKSEL	CISLO_MLT
	MOVF	CISLO_MLT,W	
	MOVWF	MNOJIT
	MOVLW	0x05		; множимое
	MOVWF	MNOJIM
				;PROGRA	
	CLRF	REZH
	CLRF	REZL
	MOVLW	0x08		; умножаемые числа 8-ми разрядные
	MOVWF	CT
	MOVF	MNOJIM,W	; множимое заносится в аккумулятор
V
	BANKSEL	STATUS
	BCF	STATUS,C
	BANKSEL	REZL
	RLF	REZL,F		; умножение на 2 (если переполнение REZL, то через бит переноса 1 прибавляется к REZH)
	RLF	REZH,F		; умножение на 2
	RLF	MNOJIT,F	; если старший бит(на данном этапе) MNOJIT =1, 
	BTFSC	STATUS,C	; значит STATUS,C = 1,
	ADDWF	REZL,F		; и к REZL прибавляется MNOJIM
	BTFSC	STATUS,C	; если переполнение REZL (STATUS,C=1), то REZH инкриментируется
	INCF	REZH,F
	DECFSZ	CT,F		; конец цикла?
	GOTO	V
	MOVF	REZL,W
	MOVWF	CISLO_MLT
	MOVF	REZH,W
	MOVWF	CISLO_STT
      RETURN		
;*********************************************************************************
INTERVAL1:    MOVLW     0xFF
              MOVWF     INT2
inti          DECFSZ    INT2,F
	      CALL	INTERVAL
	      BTFSS	STATUS,2
              GOTO      inti
	    RETURN
;***************************************************************
INTERVAL2:    
	      MOVLW     0xFF
              MOVWF     INT2
inti1
	      DECFSZ    INT2,F
	      GOTO	inti2
	      GOTO	outi
inti2
	      CALL	INTERVAL
              GOTO      inti1
outi
	    RETURN
;**************************************************************
;PROCEDURA KOIATO INDICIRA CE IMA GRESKA PRI CETENETO
; NA SAOTVETNIAT DATCHIK TCN75
;POLZVA SE PRI PROCEDURATA TEMPERATUR_MONITOR
;**************************************************************
GRESKA:
		CALL	START_D		;
		MOVLW	0x16		;PODAVAM NA DISPLEIA KOMANDA ZA IZKLUCVANE
		MOVWF	PORTC		;NA KURSORA
		CALL	STOP_D		;
		BANKSEL	TEMP
		MOVLW	0x06	;ZAPISVAM V TEMP CHISLOTO 5 , KOETO E RAVNO NA 
		MOVWF	TEMP	;BROIA NA SIMVOLITE V NADPISA
txz		
		CALL	START_D
		CLRW
		MOVLW	0x00
		CALL	TABLE2
		MOVWF	PORTC
		CALL	STOP_D
		BANKSEL	TEMP
		DECFSZ	TEMP,F
		GOTO	txz
		CLRF	FALL
;*********************************
	      RETURN
	END




