;ÏÐÎÃÐÀÌÌÀ ÀÍÀËÈÇÀ ÈÊ ÏÄÓ ÊÎÌÀÍÄ È ÏÎÑÛËÊÈ ÈÕ Â ÑÎÌ ÏÎÐÒ

	INCLUDE COUNT_EQ.INC
	ORG 	0
	NOP
	GOTO	INIT
	ORG	8		; ÏÐÛÂÀÍÈÅ 
	NOP
	ORG	18		; ÏÐÛÂÀÍÈÅ
;**************************************************
;**** 	ÎÁÑËÓÆÈÂÀÍÈÅ ÏÐÅÐÛÂÀÍÈß	 	      *****
;**************************************************
INTERUPT
	CLRWDT
	MOVWF	W_TEMP,A	; \
	SWAPF	STATUS,W,A	;  \ ÑÎÕÐÀÍÅÍÈÅ Â ÑÒÅÊÅ
	CLRF	STATUS,A        ;  /
	MOVWF	STATUS_TEMP,A	; /

	MOVF	FSR,W,A
	MOVWF	FSR_TEMP,A

	MOVF	EEADR,W,A		; ÑÎÕÐÀÍßÅÌ Â ÑÒÅÊÅ ÐÅÃÈÑÒÐÛ EEADR 
	MOVWF	EEADR_TEMP,A

	MOVF	EEDATA,W,A	; ÑÎÕÐÀÍßÅÌ Â ÑÒÅÊÅ ÐÅÃÈÑÒÐÛ EEDATA
	MOVWF	EEDATA_TEMP,A
; ÂÛßÂËÅÍÈÅ ÈÑÒÎ×ÍÈÊÀ ÏÐÅÐÛÂÀÍÈÉ

	BTFSC	PIR1,RCIF,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÏÐÈÅÌÍÈÊÀ
	CALL	PRM_PROC

	BTFSS	PIE1,TXIE,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈß ÏÐÅÐÛÂÀÍÈß ÏÅÐÅÄÀÒ×ÈÊÀ ÍÅ ÐÀÇÐÅØÅÍÛ
	GOTO	NON_PRD		; ÒÎ ÎÁÕÎÄÈÌ ÎÁÐÀÁÎÒÊÓ ÏÐÅÐÛÂÀÍÈß 
	BTFSC	PIR1,TXIF,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÏÅÐÅÄÀÒ×ÈÊÀ
	CALL	PRD_PROC
NON_PRD

	BTFSS	INTCON,INT0IE,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÑÈÃÍÀËÀ INT HE ÐÀÇÐÅØÅÍÎ
	GOTO	NON_INTE	; ÒÎ ÍÅ ÀÍÀËÈÇÈÐÎÂÀÒÜ ÔËÀÃ ÏÐÅÐÛÂÀÍÈß
	BTFSC	INTCON,INT0IF,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÑÈÃÍÀËÀ INT
	CALL	INT_PROC	; ÂÛÏÎËÍÈÒÜ ÏÐÎÃÐÀÌÌÓ ÎÁÑËÓÆÈÂÀÍÈß ÏÐÅÐÛÂÀÍÈß
NON_INTE

	BTFSS	INTCON,TMR0IE,A	;
	GOTO	NON_TMR0	;
	BTFSC	INTCON,TMR0IF,A	; ÅÑËÈ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÒÀÉÌÅÐÀ
	CALL	TMR_PROC
NON_TMR0

	BTFSS	PIE1,TMR1IE,A	;
	GOTO	NON_TMR1	;
	BTFSC	PIR1,TMR1IF,A	;
	CALL	TMR1_PROC
NON_TMR1

	MOVF	EEADR_TEMP,W,A	;
	MOVWF	EEADR,A

	MOVF	EEDATA_TEMP,W,A	;
	MOVWF	EEDATA,A

	MOVF	FSR_TEMP,W,A
	MOVWF	FSR,A

	SWAPF	STATUS_TEMP,W,A	;  \
	MOVWF	STATUS,A	;  / ÂÎÑÒÀÍÎÂËÅÍÈÅ ÈÇ ÑÒÅÊÀ
	MOVF	W_TEMP,W,A	; /
	RETFIE
;**************************************************
;**** 	ÂÛ×ÈÑËßÅÌÛÅ ÏÅÐÅÕÎÄÛ ÄËß ÏÎÄÏÐÎÃÐÀÌÌ  *****
;**************************************************
	INCLUDE TABLPER.INC
;*******************************
	ORG 800
EROR
	CLRF	INTCON,A	; ÇÀÏÐÅÙÅÍÛ ÂÑÅ ÏÐÅÐÛÂÀÍÈß
	CLRF	STATUS,A	; ÏÐÈ ÎØÈÁÊÅ ÇÀÖÈÊËÈÂÀÅÌ ÏÐÎÃÐÀÌÌÓ
	GOTO	EROR
;*******************************
INIT
	CALL	INIT_INTERUPT	; ÍÀÑÒÐÎÉÊÀ ÑÈÑÒÅÌÛ ÏÐÅÐÛÂÀÍÈÉ
;*******************************  ÎÁÍÓËÅÍÈÅ ÏÀÌßÒÈ 0 ÑÒÐÀÍÈÖÛ
	MOVLW	00H
	MOVWF	FSR,A
CLRMEMOR
	CLRF	INDF,A
	INCF	FSR,F,A
	BTFSS	FSR,7,A
	GOTO	CLRMEMOR
;********************************
	CALL	INIT_ADC	; ÓÑÒÀÍÎÂÊÈ ÀÖÏ ÂËÈßÞÒ ÍÀ ÀÖÏ È ÏÎÐÒ Å
	CALL	INIT_PORT	; ÍÀÑÒÐÎÉÊÀ ÏÎÐÒÎÂ
	CALL	INIT_TIMER	; ÍÀÑÒÐÎÉÊÀ ÒÀÉÌÅÐÀ 0
	CALL	INIT_USART	; ÓÑÒÀÍÎÂÊÈ ÏÅÐÅÄÀÒ×ÈÊÀ

	CALL	INIT_EEPROM
;********************************
; ÍÀ×ÀËÜÍÛÅ ÓÑÒÀÍÎÂÊÈ ÏÎÐÒÎÂ
	CLRF	PORTA,A
	CLRF	PORTB,A
	CLRF	PORTD,A
	CLRF	PORTE,A
;******************************** ÏÅÐÂÎÍÀ×ÀËÜÍÛÅ ÇÍÀ×ÅÍÈß Ñ×ÅÒ×ÈÊÎÂ ÄÅËÅÍÈß
	CALL	INIT_VYV	; ÈÍÈÖÈÈÐÓÅÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÒÎÐÀ È ÊËÀÂÈÀÒÓÐÛ
	CALL	INDICATION	; ÂÛÏÎËÍßÅÌ ÈÍÄÈÊÀÖÈÞ È ÎÏÐÎÑ ÊËÀÂÈÀÒÓÐÛ
	BTFSS	KEY_PRES	; ÅÑËÈ ÏÐÈ ÂÊËÞ×ÅÍÈÈ ÍÀÆÀÒÀ ÊÍÎÏÊÀ ÒÎ ÈÇÌÅÍÈÒÜ ÏÀÐÀÌÅÒÐÛ
	INCF	PGM_COUNT,F,A	; ÍÀ×ÀÒÜ Ñ ÏÅÐÂÎÃÎ ØÀÃÀ ÏÐÎÃÐÀÌÌÛ

	CALL	L_TIMER1
	MOVWF	TIMER1,A	; ÎÁÍÎÂËßÅÌ Ñ×ÅÒ×ÈÊ
	CALL	L_TIMER2
	MOVWF	TIMER2,A	; ÎÁÍÎÂËßÅÌ Ñ×ÅÒ×ÈÊ

;	MOVLW	55
;	MOVWF	REGVX1,A

	MOVLW	03
	MOVWF	TORMOZ,A

;	CALL	READ_ACC	; Ñ×ÈÒÀÒÜ ÇÀÏÐÎÃÐÀÌÌÈÐÎÂÀÍÍÛÅ ÇÍÀ×ÅÍÈß
;******************************** ÓÑÒÀÍÎÂÊÈ ÏÐÅÐÛÂÀÍÈÉ
	CLRF	INTCON,A	; ÑÁÐÎÑ ÂÑÅÕ ÏÐÅÐÛÂÀÍÈÉ
	BSF	INTCON,TMR0IE,A	; ÐÀÇÐÅØÅÍÎ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÒÀÉÌÅÐÀ
	BSF	INTCON,PEIE,A	; ÐÀÇÐÅØÅÍÎ ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÏÅÐÈÔÅÐÈÈ
	BSF	INTCON,GIE,A	; ÂÑÅ ÌÀÑÊÈÐÓÅÌÛÅ ÏÐÅÐÛÂÀÍÈß ÐÀÇÐÅØÅÍÛ

;***************************************
;**** 	ÖÈÊË ÎÆÈÄÀÍÈß ÏÐÅÐÛÂÀÍÈß   *****
;**  ÈËÈ ÎÁÐÀÁÎÒÊÈ ÏÎÑÒÓÏÈÂØÈÕ ÇÀÄÀ×  **
;***************************************
CICL_WAIT
	; ÏÐÎÃÐÀÌÌÛ ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ ÏÐÈÅÌÀ ÏÅÐÅÄÀ×È
STEP	
	BTFSS	_PRCOM,A	;
	GOTO	STEP1		;
	BCF	_PRCOM,A	; ÑÁÐÎÑÈÒÜ ÔËÀÃ ÏÐÈÅÌÀ ÊÎÌÀÍÄÛ ÏÎ RS485
	MOVF	BUF_KOM,W,A	;
	MOVWF	KOMAND,A	;
	MOVF	BUF_O1,W,A	;
	MOVWF	OPERAND1,A	;
	MOVF	BUF_O2,W,A	;
	MOVWF	OPERAND2,A	;

	CALL	DECODIR		;
;********************************
	; ÏÐÎÃÐÀÌÌÛ ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ ÒÀÉÌÅÐÀ
STEP1				; ÏÐÎÖÅÄÓÐÛ ÂÛÏÎËÍßÅÌÛÅ ÏÎ ÊÀÆÄÎÌÓ ÏÐÅÐÛÂÀÍÈÞ ÒÀÉÌÅÐÀ
	BTFSS	F_TIMER0,A	;
	GOTO	STEP2		;
	BCF	F_TIMER0,A	;
	INCF	CHET_CIKL,F,A	; ÑÈÑÒÅÌÍÛÉ Ñ×ÅÒ×ÈÊ

	CALL	INDICATION	; ÂÛÏÎËÍßÅÌ ÈÍÄÈÊÀÖÈÞ È ÎÏÐÎÑ ÊËÀÂÈÀÒÓÐÛ
	CALL	COUNTER_KLAVA
	CALL	COUNTER_PROC
	CALL	DIOD
	CALL	VHOD2
	CALL	VHOD3
	CALL	VHOD_ALARM

	BCF	TRISC,2,A	; ÏÎÐÒ Ñ2 ÍÀÑÒÐÎÈÒÜ ÊÀÊ ÂÛÕÎÄ ÄËß ÂÛÄÀ×È ØÈÌ
	BTFSS	F_ALARM		; 
	GOTO	STEP2
	BCF	PORTC,2,A	;
	BTFSC	CHET_CIKL,0,A
	BSF	PORTC,2,A	;

STEP2				;
	BTFSS	F_TIMER1,A
	GOTO	STEP3
	BCF	F_TIMER1,A
	CALL	L_TIMER1
	MOVWF	TIMER1,A	; ÎÁÍÎÂËßÅÌ Ñ×ÅÒ×ÈÊ ÈÍÒÅÐÂÀËÎÂ ÂÛÏÎËÍÅÍÈß ÏÐÎÃÐÀÌÌÛ
;...............................; ÂÛÇÎÂ ÏÎÄÏÐÎÃÐÀÌÌÛ ÄËß ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈß ÏÅÐÂÎÃÎ ÒÀÉÌÅÐÀ
	CALL	UPR_VT		; ÓÏÐÀÂËÅÍÈÅ ÒÐÀÍÇÈÑÒÎÐÀÌÈ

;...............................;
STEP3
	BTFSS	F_TIMER2,A
	GOTO	STEP4
	BCF	F_TIMER2,A

	CALL	L_TIMER2
	MOVWF	TIMER2,A	; ÎÁÍÎÂËßÅÌ Ñ×ÅÒ×ÈÊ ÈÍÒÅÐÂÀËÎÂ ÂÛÏÎËÍÅÍÈß ÏÐÎÃÐÀÌÌÛ
;...............................; 
	CALL	TIMER_ALARM	; Ñ×ÅÒ×ÈÊ ÒÀÉÌÅÐÀ ÀÂÀÐÈÈ


	; ÏÐÎÃÐÀÌÌÛ ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ ÏÎËÜÇÎÂÀÒÅËß
STEP4
STEP5
STEP6
STEP7
	BTFSS	F_USER1,A
	GOTO	STEP8

;...............................; ÂÛÇÎÂ ÏÎÄÏÐÎÃÐÀÌÌÛ ÄËß ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈß ÏÎËÜÇÎÂÀÒÅËß
STEP8
	BTFSS	F_USER2,A
	GOTO	STEP9
;...............................; ÂÛÇÎÂ ÏÎÄÏÐÎÃÐÀÌÌÛ ÄËß ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈß ÏÎËÜÇÎÂÀÒÅËß

STEP9
	GOTO	CICL_WAIT
;********************************
;ÎÁÐÀÁÎÒÊÀ ÏÐÅÐÛÂÀÍÈß ÒÀÉÌÅÐÀ	;
TMR_PROC
	BCF	INTCON,TMR0IF,A	; CÁÐÎÑ ÔËÀÃA ÏÐÅÐÛÂÀÍÈÉ

	BSF	F_TIMER0,A	; ÐÀÇÐÅØÈÒÜ ÂÛÏÎËÍÅÍÈÅ ÏÐÎÖÅÄÓÐ ÏÎ ÊÀÆÄÎÌÓ ÏÐÅÐÛÂÀÍÈÞ
TMRPR1
	DECFSZ	TIMER1,F,A	;
	GOTO	TMRPR2		;
	BSF	F_TIMER1,A	;
TMRPR2
	DECFSZ	TIMER2,F,A	;
	GOTO	TMRPR3		;
	BSF	F_TIMER2,A	;
TMRPR3

	MOVLW	00 		; ÍÀÑÒÐÎÉÊÀ ×ÀÑÒÎÒÛ ÏÐÅÐÛÂÀÍÈÉ ÎÒ ÒÀÉÌÅÐÀ
	MOVWF	TMR0L,A

	RETURN
;********************************
	INCLUDE INICIAL.INC	; ÏÐÎÃÐÀÌÌÀ ÈÍÈÖÈÀËÈÇÀÖÈÈ ÓÑÒÐÎÈÑÒÂ  PIC
	INCLUDE PRMPRD.INC	; ÏÐÎÃÐÀÌÌÀ ÏÐÈÅÌÀ ÏÅÐÅÄÀ×È ÊÎÌÀÍÄ ÏÎ RS485

	INCLUDE I_PORTA.INC	; ÄËß ÈÍÄÈÊÀÒÎÐÀ Ñ ÎÁÙÈÌ + ÒÈÏÀ À-362G ÇÅËÅÍÛÅ(À-362Å ÎÐÀÍÆÅÂÛÅ)
	INCLUDE PROGRAM.INC	;
	INCLUDE EEPROMRW.INC	;

	INCLUDE COUNTER.INC	;
	INCLUDE COUNT_PR.INC	;
	END			; ÊÎÍÅÖ ÏÐÎÃÐÀÌÌÛ
;********************************

