
 		LIST p=16F876
#include "c:\windows\mplab\p16F876.inc"
;#include "c:\PROGRAM FILES\mplab\p16F876.inc"
;             __config  _XT_OSC & _WDT_ON & _PWRTE_OFF & _LVP_OFF 
;	     __IDLOCS	H'1973'		;KODA ZA ZASTITA E '1973'h
;******************************************************************
;PROGRAMA ZA CHETENE NA INFORMACIATA po I2C SHINA OT DVA TERMODATCHIKA TCN75
;INFORMACIATA SE IZVEZDA NA VFD DISPLEI (2X40) M402SD07AA
;IZPOLZVAN E KVARCOV REZONATOR 16,870 MHz
;FAILAT C:\PIC\PRG_TCN7\NESTOR.asm SADARZHA GLAVNATA CHAST NA PROGRAMATA
;EDINIAT DATCHIK (S ADRES000) SE POLZVA  I KATO TERMOREGULATOR A DRUGIAT 
;(S ADRES 001) SAMO POKAZVA TEMPERATURATA
;PRI IZKLUCHVANE NA ZAHRANVANETO , KOGATO NAPREZHENIETO NA IZVOD 21 SPADNE NA 
;0v DATCHIKAT S ADRES (000) MINAVA V SHUTDOWN MODE
;TEMPERATURATA SE REGULIRA V GRANICITE +6 DO -10 GRADUSA S DISKRETNOST
; 0,5 GRADUSA
;V PROGRAMATA SE POLZVA I WDT , KOITO NULIRA PROCESORA AKO SE POLUCHI ZACIKLIANE
;******************************************************************

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
W_TEMP	  EQU	0x40
STATUS_TEMP EQU	0x41
PCLATH_TEMP EQU	0x42
	org 0x00
		
;	NOP			;POSTAVIA SE ZARADI RABOTATA S EMULATORA MPLAB-ICD
	goto    BEGIN		;preskachame vektora na prekasvaneto
	nop
	nop
	nop
	GOTO	INT		;OTIVAME V 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	;<<

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	;<<
TABLE17	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x65	;e
	RETLW	0x72	;r
	RETLW	0x75	;u
	RETLW	0x74	;t
	RETLW	0x61	;a
	RETLW	0x72	;r
	RETLW	0x65	;e
	RETLW	0x70	;p
	RETLW	0x6D	;m
	RETLW	0x65	;e
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0x6B	;k
	RETLW	0x6E	;n
	RETLW	0x61	;a
	RETLW	0x54	;T
	RETLW	0xEC	;<<
TABLE18	
	ADDWF	PCL,F	;OTMESTVANE
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0xED	;>>
	RETLW	0x65	;e
	RETLW	0x72	;r
	RETLW	0x75	;u
	RETLW	0x74	;t
	RETLW	0x61	;a
	RETLW	0x72	;r
	RETLW	0x65	;e
	RETLW	0x70	;p
	RETLW	0x6D	;m
	RETLW	0x65	;e
	RETLW	0x54	;T
	RETLW	0xA0	;
	RETLW	0xA0	;
	RETLW	0x72	;r
	RETLW	0x69	;i
	RETLW	0x41	;A
	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'10001110'	;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'11010000'
		MOVWF	INTCON		;ZABRANIAVAME PREKASVANIATA OT SSP
;***************************************************************
;NACHALO NA SASTINSKATA PROGRAMA
;***************************************************************
	CLRF	FALL
	CALL	SET_TSET ;PROCEDURA ZA PROVERKA I NASTROIKA NA TSET
			 ;V GRANICITE +6 -10 GRADUSA
	CALL	SET_THYS ;PROCEDURA ZA PROVERKA I NASTROIKA NA THYS
			 ;V GRANICITE +6 -10 GRADUSA
;
	MOVLW	B'00011100'	;NASTROIVAME CONFIG REGISTARA NA 
	MOVWF	CONFIG		;tcn75 S ADRES 000
	CALL	ZAPIS_CONFIG	;
NACHALO
	CLRF	FLAG
;	CALL	SET_THYS
	CALL	TEMPERATUR_MONITOR
;	CALL	CONF			;VLIZA V CONFIG REGISTARA
	CALL	TEMPERATUR
			;
	CALL	THYS
	CALL	TSET

	GOTO	NACHALO
;**********************************************************************
;PROCEDURA ZA PROVERKA I NASTROIKA NA TSET REGISTARA AKO STOINOSTITE IM SA IZVAN
;GRANICITE +6 -10 GRADUSA
;**********************************************************************
SET_TSET:
	CLRF	CISLO_ML
	CLRF	CISLO_ST
	CLRF	CISLO_MLT
	CLRF	CISLO_STT
	CLRF	ZNAK
	MOVLW	0x03	;ZAREZDAME NOMERA NA REGISTARA S KOITO STE SE SVARZVAME
	MOVWF	REGISTER
	MOVLW	0x00	;ZAREZDAME NOMERA NA DATCHIKA S KOITO STE SE SVARZVAME
	MOVWF	ADRES
	CALL	READ_TSH;CHETEM TSET OT PAMETTA NA TCN75
	CALL	ROTACIA	;MESTIM TSET V CISLO_ML I GO PRIVEZDAME V UDOBEN VID
;
	CLRF	STATUS	;
	MOVLW	0x06	;AKO TSET E - SE OTIVA NA RED tsa7
	SUBWF	ZNAK,W	;
	BTFSS	STATUS,Z;
	GOTO	tsa7	;
tsa1
	CLRF 	STATUS		;
	MOVLW	0x0C		;
	SUBWF	CISLO_ML,W	;AKO TSET E > OT +6 GRADUSA TO TSET SE 
	BTFSS	STATUS,C	;PRAVI RAVNO NA +6 GRADUSA, INACHE SE 
	GOTO	out_set_tset	;IZLIZA OT PROCEDURATA
	MOVLW	0x0C		;
	MOVWF	CISLO_ML	;
	CALL	UNROTATE		;
;
	MOVLW	0x03
	MOVWF	REGISTER
	MOVLW	0X00
	MOVWF	ADRES
;
	CALL	ZAPIS_TSH	;
	GOTO	out_set_tset	;
tsa7
	CLRF 	STATUS		;
	MOVLW	0xEC		;
	SUBWF	CISLO_ML,W	;AKO TSET E < OT -10 GRADUSA TO TSET SE 
	BTFSC	STATUS,C	;PRAVI RAVNO NA +6 GRADUSA, 
	GOTO	out_set_tset	;INACHE SE IZLIZA OT PROCEDURATA
	MOVLW	0x0C		;
	MOVWF	CISLO_ML	;
	CALL	UNROTATE	
	MOVLW	0x03
	MOVWF	REGISTER
	MOVLW	0X00
	MOVWF	ADRES
;
	CALL	ZAPIS_TSH	;
out_set_tset 			
      RETURN
;**********************************************************************
;PROCEDURA ZA PROVERKA I NASTROIKA NA THYST REGISTARA AKO STOINOSTITE IM SA IZVAN
;GRANICITE +6 -10 GRADUSA
;**********************************************************************
SET_THYS:
	CLRF	CISLO_ML
	CLRF	CISLO_ST
	CLRF	CISLO_MLT
	CLRF	CISLO_STT
	CLRF	ZNAK
	MOVLW	0x02	;ZAREZDAME NOMERA NA REGISTARA S KOITO STE SE SVARZVAME
	MOVWF	REGISTER
	MOVLW	0x00	;ZAREZDAME NOMERA NA DATCHIKA S KOITO STE SE SVARZVAME
	MOVWF	ADRES
	CALL	READ_TSH;CHETEM TSET OT PAMETTA NA TCN75
	CALL	ROTACIA	;MESTIM TSET V CISLO_ML I GO PRIVEZDAME V UDOBEN VID
;
	CLRF	STATUS	;
	MOVLW	0x06	;AKO TSET E - SE OTIVA NA RED tsaa7
	SUBWF	ZNAK,W	;
	BTFSS	STATUS,Z;
	GOTO	tsaa7	;
tsaa1
	CLRF 	STATUS		;
	MOVLW	0x0C		;
	SUBWF	CISLO_ML,W	;AKO TSET E > OT +6 GRADUSA TO THYS SE 
	BTFSS	STATUS,C	;PRAVI RAVNO NA +6 GRADUSA, INACHE SE 
	GOTO	out_set_thys	;IZLIZA OT PROCEDURATA
	MOVLW	0x0C		;
	MOVWF	CISLO_ML	;
	CALL	UNROTATE		;
;
	MOVLW	0x02
	MOVWF	REGISTER
	MOVLW	0X00
	MOVWF	ADRES
;
	CALL	ZAPIS_TSH	;
	GOTO	out_set_thys	;
tsaa7
	CLRF 	STATUS		;
	MOVLW	0xEC		;
	SUBWF	CISLO_ML,W	;AKO TSET E < OT -10 GRADUSA TO TSET SE 
	BTFSC	STATUS,C	;PRAVI RAVNO NA +6 GRADUSA, 
	GOTO	out_set_thys	;INACHE SE IZLIZA OT PROCEDURATA
	MOVLW	0x0C		;
	MOVWF	CISLO_ML	;
	CALL	UNROTATE	
	MOVLW	0x03
	MOVWF	REGISTER
	MOVLW	0X00
	MOVWF	ADRES
;
	CALL	ZAPIS_TSH	;
out_set_thys 			
      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: 
;              CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
	      MOVLW     0xFF
              MOVWF     INT1
intp          DECFSZ    INT1,F
              GOTO      intp
            RETURN
;*****************************************************
;procedura za nastroika na histerezisa na TCN75
;*****************************************************
THYS:
;		CLRWDT		;NULIURAME WDT
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-2	;
		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	0x28		;I E RAVNO NA 0c 
		SUBWF	CISLO_ML,W	;SE OTIVA NA RED ta4
		BTFSS	STATUS,Z	;
		GOTO	ta2	
		GOTO	ta4
ta2		
		BTFSC	PORTB,2	;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,2	;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	0xEC		;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		
		CALL	DISP_THYS
		CALL	PAUZA02S
		BTFSC	PORTB,2		;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,2	;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
		CLRWDT			;NULIRAME WDT
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-2				
	      RETURN
;*****************************************************
;procedura za nastroika temperaturata na vkluchvane naTCN75
;*****************************************************
TSET:
;		CLRWDT		;NULIRAME WDT
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-2	;
		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	0x28		;I E RAVNO NA 0C (+6 gradusa)
		SUBWF	CISLO_ML,W	;SE OTIVA NA RED ts4
		BTFSS	STATUS,Z	;
		GOTO	ts2	
		GOTO	ts4
ts2		
		BTFSC	PORTB,2	;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,2	;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	0xEC		;AKO CISLO_ML NE E =EC(-10 gradusa) 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		
		CALL	DISP_TSET
		CALL	PAUZA02S
		BTFSC	PORTB,2		;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,2	;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
		CLRWDT		;NULIRA WDT
		BTFSC	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-2
		CLRWDT		;NULIRA WDT
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-2				
	      RETURN
;*****************************************************
;procedura za izmervane na temperaturata s edin TCN75
;s adres 000
;*****************************************************
TEMPERATUR:	
;		CLRWDT		;NULIRAME WDT
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-2	;
		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		
		CLRWDT		;NULIRA WDT
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-2				
	      RETURN
;*****************************************************
;procedura za izmervane na temperaturata s 2 datchika TCN75
;s adresi ot 000 do 001
;*****************************************************
TEMPERATUR_MONITOR:
;		CLRWDT		;NULIRAME WDT	
		BTFSS	PORTB,4	;CHAKAI DOKATO BUTON S4 BUDE OTPUSNAT	
		GOTO	$-2	;
		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
;**
		CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
		CALL	START_D		;
		MOVLW	0x0B		;PODAVAM NA DISPLEIA KOMANDA 
		MOVWF	PORTC		;ZA PREMINAVANE NA KURSORA V NACHALOTO
		CALL	STOP_D		;NA PURVIA RED
;		
		CLRF	REGISTER		;IZBIRAM TEMP REGISTARA NA TCN75

	MOVLW	0x13		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;19 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tjjj
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;<<Tank Temperature>>_
	CALL	TABLE17		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
;	CLRWDT				;NULIRAME WDT
	DECFSZ	BROIACH,F	;
	GOTO	tjjj		;
;***
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		CLRF	ZNAK
		CLRF	ADRES		;
		MOVLW	0x00	;TOVA E NOMERA NA DATCHIKA S KOITO STE SE SVARZVAME
		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
		CALL	DISP_TEMP		;INDICIRAME TEMPERATURATA NA DISPLEIA
;
		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
;
;**
		BTFSS	PORTB,4		;AKO BUTONA ZA IZHOD E NATISNAT
		GOTO	pgg		;PRESKACAME PAUZATA I IZLIZAME OT PROCEDURATA
;		CLRWDT				;NULIRAME WDT
		CALL	INTERVAL2
		CALL	START_D		;
		MOVLW	0x0A		;PODAVAM NA DISPLEIA KOMANDA ZA PREMINAVANE NA  
		MOVWF	PORTC		;KURSORA  NA VTORIA
		CALL	STOP_D		;RED
		CALL	START_D	;
		MOVLW	0x0D	;PODAVAM NA DISPLEIA KOMANDA ZA PRIVEZDANE NA  
		MOVWF	PORTC	;KURSORA V IZHODNA POZICIA NA VTORIA
		CALL	STOP_D	;RED
;
	MOVLW	0x13		;ZAPISVAME V BROIACH CHISLOTO
	MOVWF	BROIACH		;19 , KOETO SAOTVETSTVA NA BROIA NA SIMVOLITE
tjjja
;	CLRWDT				;NULIRAME WDT
	CALL	START_D		;
	CLRW			;
	BANKSEL	BROIACH		;NA DISPLEIA SE IZPISVA 
	MOVF	BROIACH,W	;<<Air  Temperature>>_
	CALL	TABLE18		;
	MOVWF	PORTC		;
	CALL	STOP_D		;
	DECFSZ	BROIACH,F	;
	GOTO	tjjja		;
;***
		CLRF	CISLO_ML
		CLRF	CISLO_ST
		CLRF	CISLO_MLT
		CLRF	CISLO_STT
		CLRF	ZNAK
		CLRF	ADRES		;
		MOVLW	0x01	;TOVA E NOMERA NA DATCHIKA S KOITO STE SE SVARZVAME
		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
		CALL	DISP_TEMP		;INDICIRAME TEMPERATURATA NA DISPLEIA
;
		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
;**
;		CLRWDT		;NULIRAME WDT
		MOVLW   0x0F		;
		MOVWF	TEMP		;
		BTFSS	PORTB,4		;AKO BUTONA ZA IZHOD E NATISNAT
		GOTO	pgg		;PRESKACAME PAUZATA I IZLIZAME OT PROCEDURATA
		MOVLW   0xFF		;
       		MOVWF   TMP
;		CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET		;
		CALL	INTERVAL1	;SAZDAVA SE PAUZA 
		DECFSZ  TMP,F		;
        	GOTO    $-2		;OKOLO 1s PREDI SLEDVASTOTO IZMERVANE
		DECFSZ	TEMP,F		;
		GOTO	$-8		;
;
		BTFSC	PORTB,4
		GOTO	str
pgg		
		CLRWDT		;NULIRA WDT
		BTFSS	PORTB,4		;CHAKAI DOKATO BUTONA BUDE OTPUSNAT
	 	GOTO	$-2
		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:
	CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
	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: 
              CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
	      MOVLW     0xFF
              MOVWF     INT2
inti          DECFSZ    INT2,F
	      CALL	INTERVAL
	      BTFSS	STATUS,2
              GOTO      inti
	    RETURN
;***************************************************************
INTERVAL2:    
   	      CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
	      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
;***************************************************************
;PROCEDURA ZA OBSLUZVANE NA PREKUSVANETO
;pRI OTPADANE NA ZAHRANVANETO TCN75 SE PRIVEZDA V SHUTDOWN MODE
;(KONSUMACIA OKOLO 1uA)
;***************************************************************
INT:
;		CLRWDT		;NULIRAME WD TAIMERA , ZA DA NE PREDIZVIKAME RESET
	MOVWF	W_TEMP		;
	SWAPF	STATUS,W	;VUV VREMENNI REGISTRI SE ZAPOMNIAT 
	CLRF	STATUS		;SUDURZHANIATA NA NIAKOI VAZNI
	MOVWF	STATUS_TEMP	;REGISTRI
	MOVF	PCLATH,W	;
	MOVWF	PCLATH_TEMP	;
	CLRF 	PCLATH		;
;
	MOVLW 	B'00011101'	;
	MOVWF	CONFIG		;tcn75 S ADRES 000 SE PRIVEZDA V 
	CALL	ZAPIS_CONFIG	;SHUTDOWN MODE
	BANKSEL	INTCON			;NULIRAME  BITA ZA PREKASVANE
	BCF	INTCON,RBIF		;
;
	MOVF	PCLATH_TEMP,W	;
	MOVWF	PCLATH		;VUZSTANOVIAVAT SE SUDURZHANIATA NA 
	SWAPF	STATUS_TEMP,W	;NIAKOI OT REGISTRITE DO MOMENTA 
	MOVWF	STATUS		;PREDI DA E NASTAPILO PREKASVANETO
	SWAPF	W_TEMP,F	;
	SWAPF	W_TEMP,W	;
      RETFIE
;
	END




