;**********************************************************************
;   This file is a basic code template for assembly code generation   *
;   on the PICmicro PIC16F874. This file contains the basic code      *
;   building blocks to build upon.                                    *  
;                                                                     *
;   If interrupts are not used all code presented between the ORG     *
;   0x004 directive and the label main can be removed. In addition    *
;   the variable assignments for 'w_temp' and 'status_temp' can       *
;   be removed.                                                       *                         
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler (Document DS33014).                     *
;                                                                     *
;   Refer to the respective PICmicro data sheet for additional        *
;   information on the instruction set.                               *
;                                                                     *
;   Template file assembled with MPLAB V4.00 and MPASM V2.20.00.      *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:	    xxx.asm                                           *
;    Date:                                                            *
;    File Version:                                                    *
;                                                                     *
;    Author:                                                          *
;    Company:                                                         *
;                                                                     * 
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required:                                                  *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************


	list      p=16f876            ; list directive to define processor
	#include <p16f876.inc>        ; processor specific variable definitions
	
	__CONFIG _CP_OFF & _WDT_ON & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_OFF & _LVP_ON & _DEBUG_OFF & _CPD_OFF 

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.








;**********************************************************************
		ORG     0x000             ; processor reset vector
		clrf    PCLATH            ; ensure page bits are cleared
  		goto    main              ; go to beginning of program
;**********************************************************************
; Îáðàáèò÷èê ïðåðûâàíèé

		ORG     0x004          		  ; interrupt vector location
		movwf   w_temp          	  ; save off current W register contents
		movf	STATUS,w        	  ; move status register into W register
		movwf	status_temp    		  ; save off contents of STATUS register
		MOVF PCLATH, W 			  ; Only required if using pages 1, 2 and/or 3
		MOVWF PCLATH_TEMP	  	  ; Save PCLATH into W
		bcf	STATUS,RP0      	  ; ensure file register bank set to 0
		bcf	STATUS,RP1      	  ; ensure file register bank set to 0
;***** Ïðîòåñòèðîâàòü ôëàãè ïðåðûâàíèÿ
	PAGESEL _TMR2			; ÂÛÁÅÐÅÌ ÏÅÐÂÓÞ ÑÒÐÀÍÈÖÓ ÏÐÎÃÐÀÌÍÎÉ ÏÀÌßÒÈ

	btfsc PIR1,TMR2IF 		; Ïðîòåñòèðîâàòü áèò ôëàãà TMR2IF
	goto _TMR2

	btfsc PIR1,TMR1IF 		; Ïðîòåñòèðîâàòü áèò ôëàãà TMR2IF
	goto _TMR1


	GOTO end_int

;------------------------------------------------------------------------------------------------------------------------
_TMR2		BCF PIR1,TMR2IF			; Óñòàíîâèòü áèò ôëàãà â 0 TMR2


	GOTO end_int
;------------------------------------------------------------------------------------------------------------------------
_TMR1		BCF PIR1,TMR1IF			; Óñòàíîâèòü áèò ôëàãà â 0 TMR1
	MOVLW H'79'
	MOVWF TMR1L		; ÇÀÏÈØÈÌ ÍÀ×ÀËÜÍÛÅ ÏÐÅÄÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 1
	MOVLW H'EC'
	MOVWF TMR1H		; ÇÀÏÈØÈÌ ÍÀ×ÀËÜÍÛÅ ÏÐÅÄÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 1
	INCF TIMER,1		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1.ÒÀÉÌÅÐ ÐÅÀËÜÍÎÃÎ ÂÐÅÌÅÍÈ
;___________________
			MOVLW 7		; ÏÐÎÂÅÐÈÌ ÐÀÂÅÍÑÒÂÎ ÂÐÅÌÅÍÈ 15,5 Ñ
			XORWF TEST_TIMER,0	; 
			BTFSS STATUS,Z
			GOTO NOT_
				MOVLW 150
				XORWF TIMER,0	; 
				BTFSS STATUS,Z
				GOTO NOT_
				; ÂÐÅÌß ÏÎÄÎØËÎ, ÏÎÐÀ ÂÊËÞ×ÀÒÜ ÏÎÐÒÛ
					BSF PORTC,0		; ÇÀÐßÄÊÀ ÎÊÎÍ×ÅÍÀ. ÂÊËÞ×ÈÌ ÏÎÐÒ
					BSF PORTC,1		; ÇÀÐßÄÊÀ ÎÊÎÍ×ÅÍÀ. ÂÊËÞ×ÈÌ ÏÎÐÒ
					BSF PORTC,2		; ÇÀÐßÄÊÀ ÎÊÎÍ×ÅÍÀ. ÂÊËÞ×ÈÌ ÏÎÐÒ
					BSF PORTC,3		; ÇÀÐßÄÊÀ ÎÊÎÍ×ÅÍÀ. ÂÊËÞ×ÈÌ ÏÎÐÒ
;___________________
NOT_		MOVLW 200			; ÒÀÉÌÅÐ ÐÅÀËÜÍÎÃÎ ÂÐÅÌÅÍÈ Ñ ÄÈÑÊÐÅÒÍÎÑÒÜÞ 0.01 Ñ. ÌÀÊÑÈÌÀËÜÍÛÌ ×ÈÑËÎÌ 1.99 Ñ.
		XORWF TIMER,0
		BTFSS STATUS,Z			; ÅÑËÈ ÒÀÉÌÅÐ ÐÀÂÅÍ 2.00 Ñ ÒÎ ÑÁÐÎÑÈÌ ÅÃÎ.
		GOTO end_int		
			CLRF TIMER
				INCF TEST_TIMER,1	; ÓÂÅËÈ×ÈÌ ÍÀ 1 ÒÅÑÒ ÒÀÉÌÅÐ
				MOVLW 8
				XORWF TEST_TIMER,0	; ÏÐÎÂÅÐÈÌ ÐÀÂÅÍÑÒÂÎ ÒÀÉÌÅÐÀ 8, ÒÎ ÅÑÒÜ 16Ñ.
				BTFSS STATUS,Z
				GOTO NOT_1
					CLRF TEST_TIMER		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ
					BTFSC OFF_CHAND,0	; ÏÐÎÂÅÐÈÌ, ÎÊÎÍ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
					BSF OFF_CHAND,4		; ÏÎÑÒÀÂÈÌ ÔËÀÃ, ×ÒÎ ÏÎÐÀ ÒÅÑÒÈÐÎÂÀÒÜ ÍÀÏÐßÆÅÍÈÅ ÏÎÑËÅ ÇÀÐßÄÊÈ
					BTFSC OFF_CHAND,1	; ÏÐÎÂÅÐÈÌ, ÎÊÎÍ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
					BSF OFF_CHAND,5		; ÏÎÑÒÀÂÈÌ ÔËÀÃ, ×ÒÎ ÏÎÐÀ ÒÅÑÒÈÐÎÂÀÒÜ ÍÀÏÐßÆÅÍÈÅ ÏÎÑËÅ ÇÀÐßÄÊÈ
					BTFSC OFF_CHAND,2	; ÏÐÎÂÅÐÈÌ, ÎÊÎÍ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
					BSF OFF_CHAND,6		; ÏÎÑÒÀÂÈÌ ÔËÀÃ, ×ÒÎ ÏÎÐÀ ÒÅÑÒÈÐÎÂÀÒÜ ÍÀÏÐßÆÅÍÈÅ ÏÎÑËÅ ÇÀÐßÄÊÈ
					BTFSC OFF_CHAND,3	; ÏÐÎÂÅÐÈÌ, ÎÊÎÍ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
					BSF OFF_CHAND,7		; ÏÎÑÒÀÂÈÌ ÔËÀÃ, ×ÒÎ ÏÎÐÀ ÒÅÑÒÈÐÎÂÀÒÜ ÍÀÏÐßÆÅÍÈÅ ÏÎÑËÅ ÇÀÐßÄÊÈ
NOT_1				BTFSC CHAND,0
				INCF TIMER_0,1		;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÍÀ 1 0-ÊÀÍÀËÀ
				BTFSC CHAND,1
				INCF TIMER_1,1		;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÍÀ 1 1-ÊÀÍÀËÀ
				BTFSC CHAND,2
				INCF TIMER_2,1		;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÍÀ 1 2-ÊÀÍÀËÀ
				BTFSC CHAND,3
				INCF TIMER_3,1		;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÍÀ 1 3-ÊÀÍÀËÀ
;*************************
;________________________________
	MOVLW 120
	XORWF TIMER_0,0		; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ Ñ 120, ÒÎ ÅÑÒÜ 4 ÌÈÍ
	BTFSS STATUS,Z
	GOTO CH_1
		CLRF TIMER_0		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
		BTFSC FIST_CHAND,0	; ÏÐÎÂÅÐÈÌ, ÏÅÐÂÛÉ ËÈ ÏÓÑÊ ÇÀÐßÄÊÈ
		GOTO SKIP0
		BSF FIST_CHAND,0	; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÒÎÃÎ, ×ÒÎ ÏÅÐÂÛÉ ÏÓÑÊ ÏÐÎØÅË
MEMO_0		MOVF CHANEL_0L,0
		MOVWF M_CHANEL_0L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_0H,0
		MOVWF M_CHANEL_0H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
;		CLRF END_CH0		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
		GOTO CH_1
SKIP0				INCF END_TIMER_0,1 	;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÒÅËÜÍÎÉ ÇÀÐßÄÊÈ ÍÀ 1
				MOVLW TIM
				XORWF END_TIMER_0,0	; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ Ñ ÊÎÍÑÒÀÍÒÎÉ
				BTFSC STATUS,Z		; 
				BSF FLAG_END_TIMER,0	; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÏÎÑÒÀÂÈÌ ÔËÀÃ "ÂÐÅÌß ÂÛØËÎ"
				BTFSC STATUS,Z
				GOTO OFF_CH_0		; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
			MOVF CHANEL_0H,0
			SUBWF M_CHANEL_0H,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
			BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÑÒÀÐØÈÅ ÁÀÉÒÛ
			GOTO MIN_L0		; ÑÒÀÐØÈÅ ÁÀÉÒÛ ÐÀÂÍÛ, ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÅ		
			BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÓÆÅ ÄÀÂÍÎ ÏÎÐÀ ÂÛÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ
			GOTO OFF_CH_0
		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
				GOTO MEMO_0		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
MIN_L0					MOVF CHANEL_0L,0
					SUBWF M_CHANEL_0L,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
					BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÌËÀÄØÈÅ ÁÀÉÒÛ
					GOTO MEMO_0		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ.ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
					BTFSS STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÅÍ ÈËÈ ÐÀÂÍÛ, ÒÎ ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
								; ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÏÐÅÐÀÒÈÒÜ ÇÀÐßÄÊÓ
					GOTO MEMO_0		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
;_____________________________________________________________________________________
; Â ýòîì ìåñòå ñ÷åò÷èê ïàäåíèÿ íàïðÿæåíèÿ íà àêêóìóëÿòîðå.
	INCF END_CH0,1		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
	MOVLW 2
	XORWF END_CH0,0		; ÑÐÀÂÍÈÌ Ñ×ÅÒ×ÈÊ Ñ 2
	BTFSC STATUS,Z
	GOTO OFF_CH_0		; ÅÑËÈ Ñ×ÅÒ×ÈÊ ÐÀÂÅÍ ÄÂÓÌ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		MOVF CHANEL_0L,0
		MOVWF M_CHANEL_0L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_0H,0
		MOVWF M_CHANEL_0H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		GOTO CH_1
;_____________________________________________________________________________________
OFF_CH_0					CLRF END_CH0		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
						BSF OFF_CHAND,0		; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
						BCF CHAND,0		; ÓÁÅÐÅÌ ÔËÀÃ ÍÀËÈ×Èß ÇÀÐÄÊÈ
						BCF PORTC,0		; ÂÛÊËÞ×ÈÌ ÈÑÒÎ×ÍÈÊ ÒÎÊÀ.
						CLRF TIMER_0		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
						CLRF END_TIMER_0	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ				
;________________________________
CH_1	MOVLW 120
	XORWF TIMER_1,0		; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ Ñ 120, ÒÎ ÅÑÒÜ 4 ÌÈÍ
	BTFSS STATUS,Z
	GOTO CH_2
		CLRF TIMER_1		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
		BTFSC FIST_CHAND,1	; ÏÐÎÂÅÐÈÌ, ÏÅÐÂÛÉ ËÈ ÏÓÑÊ ÇÀÐßÄÊÈ
		GOTO SKIP1
		BSF FIST_CHAND,1	; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÒÎÃÎ, ×ÒÎ ÏÅÐÂÛÉ ÏÓÑÊ ÏÐÎØÅË
MEMO_1		MOVF CHANEL_1L,0
		MOVWF M_CHANEL_1L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_1H,0
		MOVWF M_CHANEL_1H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
;		CLRF END_CH1		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
		GOTO CH_2
SKIP1				INCF END_TIMER_1,1 	;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÒÅËÜÍÎÉ ÇÀÐßÄÊÈ ÍÀ 1
				MOVLW TIM
				XORWF END_TIMER_1,0	; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ Ñ ÊÎÍÑÒÀÍÒÎÉ
				BTFSC STATUS,Z		; 
				BSF FLAG_END_TIMER,1	; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÏÎÑÒÀÂÈÌ ÔËÀÃ "ÂÐÅÌß ÂÛØËÎ"
				BTFSC STATUS,Z
				GOTO OFF_CH_1		; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
			MOVF CHANEL_1H,0
			SUBWF M_CHANEL_1H,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
			BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÑÒÀÐØÈÅ ÁÀÉÒÛ
			GOTO MIN_L1		; ÑÒÀÐØÈÅ ÁÀÉÒÛ ÐÀÂÍÛ, ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÅ		
			BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÓÆÅ ÄÀÂÍÎ ÏÎÐÀ ÂÛÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ
			GOTO OFF_CH_1
		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
				GOTO MEMO_1		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
MIN_L1					MOVF CHANEL_1L,0
					SUBWF M_CHANEL_1L,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
					BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÌËÀÄØÈÅ ÁÀÉÒÛ
					GOTO MEMO_1		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ.ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
					BTFSS STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÅÍ ÈËÈ ÐÀÂÍÛ, ÒÎ ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
								; ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÏÐÅÐÀÒÈÒÜ ÇÀÐßÄÊÓ
					GOTO MEMO_1		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß

;_____________________________________________________________________________________
; Â ýòîì ìåñòå ñ÷åò÷èê ïàäåíèÿ íàïðÿæåíèÿ íà àêêóìóëÿòîðå.
	INCF END_CH1,1		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
	MOVLW 2
	XORWF END_CH1,0		; ÑÐÀÂÍÈÌ Ñ×ÅÒ×ÈÊ Ñ 2
	BTFSC STATUS,Z
	GOTO OFF_CH_1		; ÅÑËÈ Ñ×ÅÒ×ÈÊ ÐÀÂÅÍ ÄÂÓÌ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		MOVF CHANEL_1L,0
		MOVWF M_CHANEL_1L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_1H,0
		MOVWF M_CHANEL_1H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		GOTO CH_2
;_____________________________________________________________________________________
OFF_CH_1					CLRF END_CH1		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
						BSF OFF_CHAND,1		; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
						BCF CHAND,1		; ÓÁÅÐÅÌ ÔËÀÃ ÍÀËÈ×Èß ÇÀÐÄÊÈ
						BCF PORTC,1		; ÂÛÊËÞ×ÈÌ ÈÑÒÎ×ÍÈÊ ÒÎÊÀ.
						CLRF TIMER_1		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
						CLRF END_TIMER_1	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
;________________________________
CH_2	MOVLW 120
	XORWF TIMER_2,0		; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ Ñ 120, ÒÎ ÅÑÒÜ 4 ÌÈÍ
	BTFSS STATUS,Z
	GOTO CH_3
		CLRF TIMER_2		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
		BTFSC FIST_CHAND,2	; ÏÐÎÂÅÐÈÌ, ÏÅÐÂÛÉ ËÈ ÏÓÑÊ ÇÀÐßÄÊÈ
		GOTO SKIP2
		BSF FIST_CHAND,2	; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÒÎÃÎ, ×ÒÎ ÏÅÐÂÛÉ ÏÓÑÊ ÏÐÎØÅË
MEMO_2		MOVF CHANEL_2L,0
		MOVWF M_CHANEL_2L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_2H,0
		MOVWF M_CHANEL_2H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
;		CLRF END_CH2		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
		GOTO CH_3
SKIP2				INCF END_TIMER_2,1 	;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÒÅËÜÍÎÉ ÇÀÐßÄÊÈ ÍÀ 1
				MOVLW TIM
				XORWF END_TIMER_2,0	; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ Ñ ÊÎÍÑÒÀÍÒÎÉ
				BTFSC STATUS,Z		; 
				BSF FLAG_END_TIMER,2	; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÏÎÑÒÀÂÈÌ ÔËÀÃ "ÂÐÅÌß ÂÛØËÎ"
				BTFSC STATUS,Z
				GOTO OFF_CH_2		; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
			MOVF CHANEL_2H,0
			SUBWF M_CHANEL_2H,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
			BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÑÒÀÐØÈÅ ÁÀÉÒÛ
			GOTO MIN_L2		; ÑÒÀÐØÈÅ ÁÀÉÒÛ ÐÀÂÍÛ, ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÅ		
			BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÓÆÅ ÄÀÂÍÎ ÏÎÐÀ ÂÛÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ
			GOTO OFF_CH_2
		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
				GOTO MEMO_2		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
MIN_L2					MOVF CHANEL_2L,0
					SUBWF M_CHANEL_2L,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
					BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÌËÀÄØÈÅ ÁÀÉÒÛ
					GOTO MEMO_2		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ.ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
					BTFSS STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÅÍ ÈËÈ ÐÀÂÍÛ, ÒÎ ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
								; ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÏÐÅÐÀÒÈÒÜ ÇÀÐßÄÊÓ
					GOTO MEMO_2		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
;_____________________________________________________________________________________
; Â ýòîì ìåñòå ñ÷åò÷èê ïàäåíèÿ íàïðÿæåíèÿ íà àêêóìóëÿòîðå.
	INCF END_CH2,1		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
	MOVLW 2
	XORWF END_CH2,0		; ÑÐÀÂÍÈÌ Ñ×ÅÒ×ÈÊ Ñ 2
	BTFSC STATUS,Z
	GOTO OFF_CH_2		; ÅÑËÈ Ñ×ÅÒ×ÈÊ ÐÀÂÅÍ ÄÂÓÌ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		MOVF CHANEL_2L,0
		MOVWF M_CHANEL_2L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_2H,0
		MOVWF M_CHANEL_2H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		GOTO CH_3
;_____________________________________________________________________________________
OFF_CH_2					CLRF END_CH2		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
						BSF OFF_CHAND,2		; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
						BCF CHAND,2		; ÓÁÅÐÅÌ ÔËÀÃ ÍÀËÈ×Èß ÇÀÐÄÊÈ
						BCF PORTC,2		; ÂÛÊËÞ×ÈÌ ÈÑÒÎ×ÍÈÊ ÒÎÊÀ.
						CLRF TIMER_2		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
						CLRF END_TIMER_2	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
;________________________________
CH_3	MOVLW 120
	XORWF TIMER_3,0		; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ Ñ 120, ÒÎ ÅÑÒÜ 4 ÌÈÍ
	BTFSS STATUS,Z
	GOTO CH_4
		CLRF TIMER_3		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
		BTFSC FIST_CHAND,3	; ÏÐÎÂÅÐÈÌ, ÏÅÐÂÛÉ ËÈ ÏÓÑÊ ÇÀÐßÄÊÈ
		GOTO SKIP3
		BSF FIST_CHAND,3	; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÒÎÃÎ, ×ÒÎ ÏÅÐÂÛÉ ÏÓÑÊ ÏÐÎØÅË
MEMO_3		MOVF CHANEL_3L,0
		MOVWF M_CHANEL_3L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_3H,0
		MOVWF M_CHANEL_3H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
;		CLRF END_CH3		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
		GOTO CH_4
SKIP3				INCF END_TIMER_3,1 	;ÓÂÅËÈ×ÈÌ ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÒÅËÜÍÎÉ ÇÀÐßÄÊÈ ÍÀ 1
				MOVLW TIM
				XORWF END_TIMER_3,0	; ÑÐÀÂÍÈÌ ÇÍÀ×ÅÍÈÅ ÒÀÉÌÅÐÀ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ Ñ ÊÎÍÑÒÀÍÒÎÉ
				BTFSC STATUS,Z		; 
				BSF FLAG_END_TIMER,3	; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÏÎÑÒÀÂÈÌ ÔËÀÃ "ÂÐÅÌß ÂÛØËÎ"
				BTFSC STATUS,Z
				GOTO OFF_CH_3		; ÅÑËÈ ÒÀÉÌÅÐÛ ÐÀÂÍÛ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
			MOVF CHANEL_3H,0
			SUBWF M_CHANEL_3H,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
			BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÑÒÀÐØÈÅ ÁÀÉÒÛ
			GOTO MIN_L3		; ÑÒÀÐØÈÅ ÁÀÉÒÛ ÐÀÂÍÛ, ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÅ		
			BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÓÆÅ ÄÀÂÍÎ ÏÎÐÀ ÂÛÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ
			GOTO OFF_CH_3
		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
				GOTO MEMO_3		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
MIN_L3					MOVF CHANEL_3L,0
					SUBWF M_CHANEL_3L,0	; ÂÛ×ÒÈÌ ÈÇ ÇÀÏÎÌÍÅÍÎÃÎ ÇÍÀ×ÅÍÈß ÒÅÊÓØÅÅ
					BTFSC STATUS,Z		; ÑÐÀÂÍÈÌ ÌËÀÄØÈÅ ÁÀÉÒÛ
					GOTO MEMO_3		; ÂÑÅ ÍÎÐÌÀËÜÍÎ, ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ.ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß
					BTFSS STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÅÍ ÈËÈ ÐÀÂÍÛ, ÒÎ ÇÀÐßÄÊÀ ÈÄÅÒ ÄÀËÜØÅ
								; ÏÎËÎÆÈÒÅËÅÍ, ÒÎ ÏÐÅÐÀÒÈÒÜ ÇÀÐßÄÊÓ
					GOTO MEMO_3		; ÎÁÍÎÂÈÌ ÇÍÀ×ÅÍÈß ÍÀÏÐßÆÅÍÈß

;_____________________________________________________________________________________
; Â ýòîì ìåñòå ñ÷åò÷èê ïàäåíèÿ íàïðÿæåíèÿ íà àêêóìóëÿòîðå.
	INCF END_CH3,1		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
	MOVLW 2
	XORWF END_CH3,0		; ÑÐÀÂÍÈÌ Ñ×ÅÒ×ÈÊ Ñ 2
	BTFSC STATUS,Z
	GOTO OFF_CH_3		; ÅÑËÈ Ñ×ÅÒ×ÈÊ ÐÀÂÅÍ ÄÂÓÌ, ÒÎ ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		MOVF CHANEL_3L,0
		MOVWF M_CHANEL_3L	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		MOVF CHANEL_3H,0
		MOVWF M_CHANEL_3H	; ÇÀÏÎÌÍÈÌ ÇÍÀ×ÅÍÈÅ ÍÀÏÐßÆÅÍÈß
		GOTO CH_4
;_____________________________________________________________________________________
OFF_CH_3					CLRF END_CH3		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
						BSF OFF_CHAND,3		; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
						BCF CHAND,3		; ÓÁÅÐÅÌ ÔËÀÃ ÍÀËÈ×Èß ÇÀÐÄÊÈ
						BCF PORTC,3		; ÂÛÊËÞ×ÈÌ ÈÑÒÎ×ÍÈÊ ÒÎÊÀ.
						CLRF TIMER_3		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÂÐÅÌÅÍÈ
						CLRF END_TIMER_3	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ

;*********************************
;________________________________
CH_4	BTFSC FLAG_END_TIMER,0		; ÏÐÎÂÅÐÈÌ , ÑÒÎÈÒ ËÈ ÔËÀÃ ÒÀÉÌ ÀÓÒÀ
	GOTO S_OFF_0
	BTFSS CHAND,0		; ÏÐÎÂÅÐÈÌ, ÂÊËÞ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
	GOTO S_ON_0
		BTFSS PORTC,7		; ÏÐÎÂÅÐÈÌ ÓÑÒÀÍÎÂËÅÍ ÈËÈ ÑÁÐÎØÅÍ ÁÈÒ
		GOTO S_ON_0		; ÏÅÐÅÉÄÅÌ ÄËß ÓÑÒÀÍÎÂÊÈ ÁÈÒÀ
S_OFF_0		BCF PORTC,7		; Î×ÈÑÒÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
		GOTO S1
S_ON_0			BSF PORTC,7		; ÓÑÒÀÍÎÂÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
;________________________________
S1	BTFSC FLAG_END_TIMER,1		; ÏÐÎÂÅÐÈÌ , ÑÒÎÈÒ ËÈ ÔËÀÃ ÒÀÉÌ ÀÓÒÀ
	GOTO S_OFF_1
	BTFSS CHAND,1		; ÏÐÎÂÅÐÈÌ, ÂÊËÞ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
	GOTO S_ON_1
		BTFSS PORTC,6		; ÏÐÎÂÅÐÈÌ ÓÑÒÀÍÎÂËÅÍ ÈËÈ ÑÁÐÎØÅÍ ÁÈÒ
		GOTO S_ON_1		; ÏÅÐÅÉÄÅÌ ÄËß ÓÑÒÀÍÎÂÊÈ ÁÈÒÀ
S_OFF_1		BCF PORTC,6		; Î×ÈÑÒÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
		GOTO S2
S_ON_1			BSF PORTC,6		; ÓÑÒÀÍÎÂÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
;________________________________
S2	BTFSC FLAG_END_TIMER,2		; ÏÐÎÂÅÐÈÌ , ÑÒÎÈÒ ËÈ ÔËÀÃ ÒÀÉÌ ÀÓÒÀ
	GOTO S_OFF_2
	BTFSS CHAND,2		; ÏÐÎÂÅÐÈÌ, ÂÊËÞ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
	GOTO S_ON_2
		BTFSS PORTC,5		; ÏÐÎÂÅÐÈÌ ÓÑÒÀÍÎÂËÅÍ ÈËÈ ÑÁÐÎØÅÍ ÁÈÒ
		GOTO S_ON_2		; ÏÅÐÅÉÄÅÌ ÄËß ÓÑÒÀÍÎÂÊÈ ÁÈÒÀ
S_OFF_2		BCF PORTC,5		; Î×ÈÑÒÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
		GOTO S3
S_ON_2			BSF PORTC,5		; ÓÑÒÀÍÎÂÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
;________________________________
S3	BTFSC FLAG_END_TIMER,3		; ÏÐÎÂÅÐÈÌ , ÑÒÎÈÒ ËÈ ÔËÀÃ ÒÀÉÌ ÀÓÒÀ
	GOTO S_OFF_3
	BTFSS CHAND,3		; ÏÐÎÂÅÐÈÌ, ÂÊËÞ×ÅÍÀ ËÈ ÇÀÐßÄÊÀ
	GOTO S_ON_3
		BTFSS PORTC,4		; ÏÐÎÂÅÐÈÌ ÓÑÒÀÍÎÂËÅÍ ÈËÈ ÑÁÐÎØÅÍ ÁÈÒ
		GOTO S_ON_3		; ÏÅÐÅÉÄÅÌ ÄËß ÓÑÒÀÍÎÂÊÈ ÁÈÒÀ
S_OFF_3		BCF PORTC,4		; Î×ÈÑÒÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
		GOTO S4
S_ON_3			BSF PORTC,4		; ÓÑÒÀÍÎÂÈÌ 0 ÁÈÒ ÏÎÐÒÀ A. ÌÅÐÖÀÍÈÅ ÑÂÅÒÎÄÈÎÄÀ
;________________________________
S4

		GOTO end_int
;------------------------------------------------------------------------------------------------------------------------

;***** 
end_int		MOVF PCLATH_TEMP, W 		; Restore PCLATH
		MOVWF PCLATH 			; Move W into PCLATH
		movf    status_temp,w   	; retrieve copy of STATUS register
		movwf	STATUS          	; restore pre-isr STATUS register contents
		swapf   w_temp,f
		swapf   w_temp,w         	; restore pre-isr W register contents
		retfie                    	; return from interrupt

main

; ÎÏÈÑÀÍÈÅ ÏÅÐÅÌÅÍÍÛÕ
	CBLOCK	H'70'
	w_temp        :1        ; Ïåðåìåííàÿ äëÿ îáðàáîò÷èêà ïðåðûâíèé 
	status_temp   :1        ; Ïåðåìåííàÿ äëÿ îáðàáîò÷èêà ïðåðûâíèé 
	PCLATH_TEMP   :1        ; Ïåðåìåííàÿ äëÿ îáðàáîò÷èêà ïðåðûâíèé
	ENDC

	CBLOCK	H'33'

	ADC_NACOPH		; ÑÒÀÐØÀß ÏÅÐÅÌÅÍÍÀß ÍÀÊÎÏËÅÍÈß ÇÍÀ×ÅÍÈÉ ÀÖÏ
	ADC_NACOPM		; ÑÐÅÄÍßß ÏÅÐÅÌÅÍÍÀß ÍÀÊÎÏËÅÍÈß ÇÍÀ×ÅÍÈÉ ÀÖÏ
	ADC_NACOPL		; ÌËÀÄØÀß ÏÅÐÅÌÅÍÍÀß ÍÀÊÎÏËÅÍÈß ÇÍÀ×ÅÍÈÉ ÀÖÏ
	COL_ADCL		; ÊÎËÈ×ÅÑÒÂÎ ÂÛ×ÈÑËÅÍÈÉ  ÀÖÏ
	COL_ADCH		; ÊÎËÈ×ÅÑÒÂÎ ÂÛ×ÈÑËÅÍÈÉ  ÀÖÏ

	CHANEL_0L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 0 ÊÀÍÀËÀ
	CHANEL_0H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 0 ÊÀÍÀËÀ
	CHANEL_1L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 1 ÊÀÍÀËÀ
	CHANEL_1H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 1 ÊÀÍÀËÀ
	CHANEL_2L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 2 ÊÀÍÀËÀ
	CHANEL_2H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 2 ÊÀÍÀËÀ
	CHANEL_3L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 3 ÊÀÍÀËÀ
	CHANEL_3H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 3 ÊÀÍÀËÀ

	M_CHANEL_0L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 0 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_0H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 0 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_1L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 1 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_1H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 1 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_2L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 2 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_2H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 2 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_3L		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 3 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ
	M_CHANEL_3H		; ÑÐÅÄÍÈÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ 3 ÊÀÍÀËÀ ÇÀÏÎÌÍÅÍÎÅ


	CHAND			; ÑÒÀÒÓÑ ÐÅÃÈÑÒÐ ÂÊËÞ×ÅÍÈß È ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ.
	FIST_CHAND		; ÑÒÀÒÓÑ ÐÅÃÈÑÒÐ ÏÅÐÂÎÃÎ ÏÓÑÊÀ ÇÀÐßÄÊÈ
	OFF_CHAND		; ÔËÀÃÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÑÏÀÄÓ ÍÀÏÐßÆÅÍÈß
	FLAG_END_TIMER		; ÔËÀÃÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÉÌÀÓÒÓ

	TIMER			; ÒÀÉÌÅÐ. ÈÑÏÎËÜÇÓÅÒÑß ÏÐÈ ÊÎÍÒÐÎËÅ ÒÅÌÏÅÐÀÒÓÐÛ ÍÀÃÐÅÂÀÒÅËÜÍÎÃÎ ÅËÅÌÅÍÒÀ

	TIMER_0			; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÄËß ÒÅÑÒÀ ÎÒÍÎØÅÍÈß ÍÀÏÐßÆÅÍÈß ÊÎ ÂÐÅÌÅÍÈ ÇÀÐßÄÊÈ ÄËß 0-ÊÀÍÀËÀ
	TIMER_1			; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÄËß ÒÅÑÒÀ ÎÒÍÎØÅÍÈß ÍÀÏÐßÆÅÍÈß ÊÎ ÂÐÅÌÅÍÈ ÇÀÐßÄÊÈ ÄËß 1-ÊÀÍÀËÀ
	TIMER_2			; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÄËß ÒÅÑÒÀ ÎÒÍÎØÅÍÈß ÍÀÏÐßÆÅÍÈß ÊÎ ÂÐÅÌÅÍÈ ÇÀÐßÄÊÈ ÄËß 2-ÊÀÍÀËÀ
	TIMER_3			; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÄËß ÒÅÑÒÀ ÎÒÍÎØÅÍÈß ÍÀÏÐßÆÅÍÈß ÊÎ ÂÐÅÌÅÍÈ ÇÀÐßÄÊÈ ÄËß 3-ÊÀÍÀËÀ

	END_CH0			; ÒÀÉÌÅÐ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
	END_CH1			; ÒÀÉÌÅÐ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
	END_CH2			; ÒÀÉÌÅÐ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
	END_CH3			; ÒÀÉÌÅÐ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ

	END_TIMER_0		; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ 0-ÊÀÍÀËÀ
	END_TIMER_1		; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ 1-ÊÀÍÀËÀ
	END_TIMER_2		; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ 2-ÊÀÍÀËÀ
	END_TIMER_3		; ÒÀÉÌÅÐ ÎÒÑ×ÅÒÀ ÂÐÅÌÅÍÈ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ 3-ÊÀÍÀËÀ

	CHANEL			; ÍÎÌÅÐ ÊÀÍÀËÀ ÀÖÏ
	PAUSE_ADC		; ÏÀÓÇÀ ÏÎÑËÅ ÏÅÐÅÊËÞ×ÅÍÈß ÊÀÍÀËÀ

	TEST_TIMER		;

	ENDC
;***************************************************
	constant TIM=150	; ÝÒÎ 10 ×ÀÑÎÂ		; ÊÎÍÑÒÀÍÒÀ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÉÌÅÐÓ. ÄÈÑÊÐÅÒÍÎÑÒÜ ÒÀÉÌÅÐÀ 4ÌÈÍ.
;***************************************************


; Î×ÈÑÒÈÌ ÎÇÓ Â ÏÅÐÂÎÌ ÁÀÍÊÅ
		BCF STATUS,IRP
		movlw H'20' 		;initialize pointer
		movwf FSR 		; to RAM
NEXT 		clrf INDF 		;clear INDF register
		incf FSR,1		;inc pointer
		btfss FSR,7 		;all done?
		goto NEXT 		;NO, clear next

; ÍÀÑÒÐÎÈÌ ÏÎÐÒ À ÊÀÊ ÀÍÀËÎÃÎÂÛÅ ÂÕÎÄÛ ÂÛÕÎÄÛ
	BANKSEL ADCON1
	MOVLW B'10000000'		; ÓÑÒÀÍÎÂÈÌ ÂÑÅ ÂÕÎÄÛ ÏÎÐÒÀ À ÊÀÊ ÀÍÀËÎÃÎÂÛÅ, À Vref ÍÀ ØÈÍÓ ÏÈÒÀÍÈß.
	MOVWF ADCON1			; ÑÊÎÍÔÈÃÓÐÈÐÓÅÌ ADCON1
		BANKSEL ADCON0
		MOVLW B'10000001'	; ÂÛÑÒÀÂÈÌ Fosc/32 È 0 ÊÀÍÀË ÀÖÏ
		MOVWF ADCON0		; ÑÊÎÍÔÈÃÓÐÈÐÓÅÌ ADCON0

; Î×ÈÑÒÈÌ ÏÎÐÒÛ ÂÂÎÄÀ ÂÛÂÎÄÀ
	BANKSEL PORTA
	CLRF PORTA
	CLRF PORTB
	CLRF PORTC


; ÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 1
	MOVLW H'79'
	MOVWF TMR1L		; ÇÀÏÈØÈÌ ÍÀ×ÀËÜÍÛÅ ÏÐÅÄÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 1
	MOVLW H'EC'
	MOVWF TMR1H		; ÇÀÏÈØÈÌ ÍÀ×ÀËÜÍÛÅ ÏÐÅÄÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 1
	MOVLW B'00110101'	
	MOVWF T1CON		; ÇÀÏÈØÅÌ ÊÎÍÔÈÃÓÐÀÖÈÞ ÒÀÉÌÅÐÀ 1

; ÓÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ 2
;	CLRF TMR2
;	BANKSEL PR2
;	MOVLW 99
;	MOVWF PR2
;	BANKSEL T2CON
;	MOVLW B'01001101'		; ÇÀÏÈØÅÌ ÊÎÍÔÈÃÓÐÀÖÈÞ ÒÀÉÌÅÐÀ 2
;	MOVWF T2CON


; ÍÀÑÒÐÎÈÌ ÏÎÐÒÛ ÂÂÎÄÀ ÂÛÂÎÄÀ
	BANKSEL TRISC
; ÏÎÐÒ Ñ
	MOVLW B'00000000'	; ÏÎÐÒ Ñ ÂÅÑÜ ÍÀ ÂÛÂÎÄ.
	MOVWF TRISC
; ÏÎÐÒ À
	MOVLW B'11111111'
	MOVWF TRISA		; ÏÎÐÒ À ÂÅÑÜ ÍÀ ÂÂÎÄ
; ÏÎÐÒ Â
	MOVLW B'11111111'
	MOVWF TRISB		; ÏÎÐÒ Â ÂÅÑÜ ÍÀ ÂÂÎÄ

; ÍÀ×ÀËÜÍÛÅ ÏÐÅÄÓÑÒÀÍÎÂÊÈ
	BANKSEL PORTC
	BSF PORTC,0	
	BSF PORTC,1
	BSF PORTC,2
	BSF PORTC,3

	BANKSEL OPTION_REG

; ÑÊÎÍÔÈÃÓÐÈÐÓÅÌ ÒÀÉÌÅÐ TMR0 È WDT
; ÂÊËÞ×ÈÌ ÏÎÄÒßÃÈÂÀÞÙÈÅ ÐÅÇÈÑÒÎÐÛ ÏÎÐÒÀ Â
	MOVLW B'01010111'
	MOVWF OPTION_REG



	BSF INTCON,GIE 		; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß
	BSF INTCON,PEIE		; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß ÎÒ ÏÅÐÅÔÅÐÈÈ
	BANKSEL PIE1

	BSF PIE1,TMR1IE		; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß ÒÀÉÌÅÐÀ 1
;	BSF PIE1,TMR2IE		; ÐÀÇÐÅØÈÒÜ ÏÐÅÐÛÂÀÍÈß ÒÀÉÌÅÐÀ 2
		BANKSEL PORTA		; ÓÑÒÀÍÎÂÈÌ 0 ÁÀÍÊ ÎÇÓ
		BSF ADCON0,2		; ÂÊËÞ×ÈÌ ÀÖÏ ÍÀ ÏÐÅÎÁÐÀÇÎÂÀÍÈÅ
;*********

RETURN_PROGRAM 

	CALL RUN_ADC			; ÏÎÄÏÐÎÃÐÀÌÌÀ ÈÇÌÅÐÅÍÈß ÇÍÀ×ÅÍÈß ÀÖÏ
	CLRWDT
	CALL RUN_CHAHD			; ÏÎÄÏÐÎÃÐÀÌÌÀ ÎÏÐÅÄÅËÅÍÈß ÑÒÀÐÒÀ È ÑÒÎÏÀ ÇÀÐßÄÊÈ
	CLRWDT

	GOTO RETURN_PROGRAM 
;------------------------------------------------------------------------------------------------------------------------
RUN_ADC			; ÏÎÄÏÐÎÃÐÀÌÌÀ ÈÇÌÅÐÅÍÈß ÇÍÀ×ÅÍÈß ÀÖÏ
	BTFSC ADCON0,2	; ÏÐÎÂÅÐÈÌ ÇÀÊÎÍ×ÈËÎÑÜ ËÈ ÏÐÅÎÁÐÀÇÎÂÀÍÈÅ
	RETURN
;***********  ÍÀÊÎÏÈÌ ÑÓÌÌÓ ÈÇÌÅÐÅÍÈÉ 1024 ÐÀÇ
			BANKSEL ADRESL
		MOVF  ADRESL,0			; ÏÐÎ×ÈÒÀÅÌ ÇÍÀ×ÅÍÈÅ ÀÖÏ
			BANKSEL ADRESH
		ADDWF ADC_NACOPL,1
		BCF STATUS,Z
		BTFSC STATUS,C			; ÅÑËÈ ÁÛËÎ ÏÅÐÅÏÎËÍÅÍÈÅ, ÒÎ Ê ÑÒÀÐØÅÌÓ ÁÀÉÒÓ ÏÐÈÁÀÂÈÌ 1
		INCF ADC_NACOPM,1
		BTFSC STATUS,Z			; ÅÑËÈ ÁÛËÎ ÏÅÐÅÏÎËÍÅÍÈÅ Â ÑÐÅÄÍÅÌ ÁÀÉÒÅ, ÒÎ Ê ÑÒÀÐØÅÌÓ ÁÀÉÒÓ ÏÐÈÁÀÂÈÌ 1
		INCF ADC_NACOPH,1		
			MOVF  ADRESH,0		; ÏÐÎ×ÈÒÀÅÌ ÇÍÀ×ÅÍÈÅ ÀÖÏ
			ADDWF ADC_NACOPM,1
 			BTFSC STATUS,C		; ÅÑËÈ ÁÛËÎ ÏÅÐÅÏÎËÍÅÍÈÅ, ÒÎ Ê ÑÒÀÐØÅÌÓ ÁÀÉÒÓ ÏÐÈÁÀÂÈÌ 1
			INCF ADC_NACOPH,1
			INCF COL_ADCL,1 		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
			BTFSC STATUS,Z		; ÅÑËÈ Ñ×ÅÒ×ÈÊ ÏÅÐÅÏÎËÍÈËÑÀ ÒÎ ÓÂÅËÈ×ÈÌ ÑÒÀÐØÈÉ ÁÀÉÒ ÍÀ 1
			INCF COL_ADCH,1 		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÍÀ 1
			
	BTFSS COL_ADCH,2			; ÏÐÎÂÅÐÈÌ Ñ×ÅÒ×ÈÊ ÊÎËÈ×ÅÑÒÂÀ ÈÇÌÅÐÅÍÈÉ. ÅÑËÈ ÁÎËÜØÅ 1024 ÒÎ ÏÎÑ×ÈÒÀÅÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ
	GOTO NEXT_ADC
	; ***** ÐÀÇÄÅËÈÌ ÍÀÊÎÏËÅÍÍÓÞ ÑÓÌÌÓ ÍÀ 1024. ÒÎ ÅÑÒÜ ÑÄÂÈÍÈÌ ÍÀÊÎÏËÅÍÍÓÞ ÑÓÌÌÓ ÍÀ 10 ÏÎÇÈÖÛÉ Â ÏÐÀÂÎ 
			MOVLW 10
			MOVWF COL_ADCL
REPIT_RRL	BCF STATUS,C
		RRF ADC_NACOPH,1
		RRF ADC_NACOPM,1
		RRF ADC_NACOPL,1
		DECF COL_ADCL,1
		BTFSS STATUS,Z
		GOTO REPIT_RRL
;**********-------------------------------------------------------------------------------------------------------
	MOVF CHANEL,0		; 0 ÊÀÍÀË
	BTFSS STATUS,Z
	GOTO CHANEL_1
;********** ÂÛÑÒÀÂÈÌ 1 ÊÀÍÀË - RA1
		BSF ADCON0,3
			INCF CHANEL,1 		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÊÀÍÀËÀ ÍÀ 1
				MOVF ADC_NACOPM,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_0H
				MOVF ADC_NACOPL,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_0L
;********* ÂÛÄÅÐÆÈÌ ÏÀÓÇÓ 20 ìêñ.
				MOVLW 10
				MOVWF PAUSE_ADC	
M1				DECFSZ PAUSE_ADC,1
				GOTO M1
			GOTO NEXT_CH
;**********-------------------------------------------------------------------------------------------------------
CHANEL_1	MOVF CHANEL,0		; 1 ÊÀÍÀË
	XORLW 1
	BTFSS STATUS,Z
	GOTO CHANEL_2
;********** ÂÛÑÒÀÂÈÌ 2 ÊÀÍÀË - RA2
		BCF ADCON0,3
		BSF ADCON0,4
			INCF CHANEL,1 		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÊÀÍÀËÀ ÍÀ 1
				MOVF ADC_NACOPM,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_1H
				MOVF ADC_NACOPL,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_1L
;********* ÂÛÄÅÐÆÈÌ ÏÀÓÇÓ 20 ìêñ.
				MOVLW 10
				MOVWF PAUSE_ADC	
M2				DECFSZ PAUSE_ADC,1
				GOTO M2
			GOTO NEXT_CH
;**********-------------------------------------------------------------------------------------------------------
CHANEL_2	MOVF CHANEL,0		; 2 ÊÀÍÀË
	XORLW 2
	BTFSS STATUS,Z
	GOTO CHANEL_3
;********** ÂÛÑÒÀÂÈÌ 3 ÊÀÍÀË - RA5
		BCF ADCON0,3
		BCF ADCON0,4
		BSF ADCON0,5
			INCF CHANEL,1 		; ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ ÊÀÍÀËÀ ÍÀ 1
				MOVF ADC_NACOPM,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_2H
				MOVF ADC_NACOPL,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_2L
;********* ÂÛÄÅÐÆÈÌ ÏÀÓÇÓ 20 ìêñ.
				MOVLW 10
				MOVWF PAUSE_ADC	
M3				DECFSZ PAUSE_ADC,1
				GOTO M3
			GOTO NEXT_CH
;**********-------------------------------------------------------------------------------------------------------
;********** ÂÛÑÒÀÂÈÌ 0 ÊÀÍÀË - RA0
CHANEL_3	BCF ADCON0,3
		BCF ADCON0,4
		BCF ADCON0,5
			CLRF CHANEL		; 0 ÊÀÍÀË
				MOVF ADC_NACOPM,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_3H
				MOVF ADC_NACOPL,0	; ÇÀÏÎÌÍÈÌ ÑÐÅÄÍÅÅ ÇÍÀ×ÅÍÈÅ ÀÖÏ ÏÎ ÊÀÍÀËÓ
				MOVWF CHANEL_3L
;********* ÂÛÄÅÐÆÈÌ ÏÀÓÇÓ 20 ìêñ.
				MOVLW 10
				MOVWF PAUSE_ADC	
M4				DECFSZ PAUSE_ADC,1
				GOTO M4
	BSF CHAND,7			; ÏÎÑÒÀÂÈÌ ÔËÀÃ ÒÎÃÎ, ×ÒÎ ÁÛËÎ ÑÄÅËÀÍÎ ÏÅÐÂÎÅ ÈÇÌÅÐÅÍÈÅ
;**********-------------------------------------------------------------------------------------------------------
NEXT_CH		CLRF ADC_NACOPH		; Î×ÈÑÒÈÌ 
		CLRF ADC_NACOPM		; Î×ÈÑÒÈÌ 
		CLRF ADC_NACOPL		; Î×ÈÑÒÈÌ
		CLRF COL_ADCL		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
		CLRF COL_ADCH		; Î×ÈÑÒÈÌ Ñ×ÅÒ×ÈÊ
NEXT_ADC	BSF ADCON0,2 		; ÂÊËÞ×ÈÌ ÀÖÏ ÍÀ ÏÐÅÎÁÐÀÇÎÂÀÍÈÅ
	RETURN
;------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------
RUN_CHAHD		; ÏÎÄÏÐÎÃÐÀÌÌÀ ÎÏÐÅÄÅËÅÍÈß ÑÒÀÐÒÀ È ÑÒÎÏÀ ÇÀÐßÄÊÈ
	BTFSS CHAND,7	; ÏÐÎÂÅÐÈÌ, ÁÛËÎ ËÈ ÑÄÅËÀÍÎ ÏÅÐÂÎÅ ÈÇÌÅÐÅÍÈÅ
	RETURN
;********************************
;******  0-ÊÀÍÀË
	MOVLW 3
	XORWF CHANEL_0H,0
	BTFSS STATUS,Z
	GOTO ON_CH0
	; ÑÒÀÐØÈÉ ÁÈÒ ÐÀÇÐßÄÀ ÀÖÏ 3! - ÍÎÐÌÀ. ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÉ ÐÀÇÐßÄ
		MOVLW 10
		SUBWF CHANEL_0L,0
		BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÜÍÛÉ, ÒÎ ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		GOTO OFF_CH0
; ÂÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ ÏÎ 0 ÊÀÍÀËÓ
ON_CH0			BTFSS OFF_CHAND,0	; ÏÐÎÂÅÐÈÌ ÁÈÒ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
			BSF CHAND,0		; ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ Î ÊÀÍÀËÓ
			BTFSC OFF_CHAND,4
			BCF PORTC,0		; ÂÛÊËÞ×ÈÌ ÏÎÐÒ, ÒÀÊ ÊÀÊ ÀÊÊÓÌÓËßÒÎÐÛ ÅÙÅ ÍÅ ÎÒÊËÞ×ÈËÈ
			BTFSC OFF_CHAND,4
			BCF OFF_CHAND,4		; ÓÁÅÐÅÌ ÔËÀÃ
			GOTO NEXT_1
OFF_CH0				BCF CHAND,0		; ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ Î ÊÀÍÀËÓ
				CLRF TIMER_0		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÒÅÑÒÀ
				CLRF END_TIMER_0	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÍÎ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÓÌÀÓÒÓ
				BCF FIST_CHAND,0	; Î×ÈÑÒÈÌ ÔËÀÃ ÏÅÐÂÎÃÎ ÏÓÑÊÀ ÇÀÐßÄÊÈ
				BTFSS OFF_CHAND,4
				GOTO NEXT_1
					BCF OFF_CHAND,4 	; ÓÁÅÐÅÌ ÔËÀÃ
					BCF FLAG_END_TIMER,0	; ÓÁÅÐÅÌ ÔËÀÃ ÒÀÉÌÅÐÀ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
					BCF OFF_CHAND,0		; ÓÁÅÐÅÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ				
;********************************
NEXT_1	;******  1-ÊÀÍÀË
	MOVLW 3
	XORWF CHANEL_1H,0
	BTFSS STATUS,Z
	GOTO ON_CH1
	; ÑÒÀÐØÈÉ ÁÈÒ ÐÀÇÐßÄÀ ÀÖÏ 3! - ÍÎÐÌÀ. ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÉ ÐÀÇÐßÄ
		MOVLW 10
		SUBWF CHANEL_1L,0
		BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÜÍÛÉ, ÒÎ ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		GOTO OFF_CH1
; ÂÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ ÏÎ 0 ÊÀÍÀËÓ
ON_CH1			BTFSS OFF_CHAND,1	; ÏÐÎÂÅÐÈÌ ÁÈÒ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
			BSF CHAND,1		; ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ Î ÊÀÍÀËÓ
			BTFSC OFF_CHAND,5
			BCF PORTC,1		; ÂÛÊËÞ×ÈÌ ÏÎÐÒ, ÒÀÊ ÊÀÊ ÀÊÊÓÌÓËßÒÎÐÛ ÅÙÅ ÍÅ ÎÒÊËÞ×ÈËÈ
			BTFSC OFF_CHAND,5
			BCF OFF_CHAND,5		; ÓÁÅÐÅÌ ÔËÀÃ
			GOTO NEXT_2
OFF_CH1				BCF CHAND,1		; ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ 1 ÊÀÍÀËÓ
				CLRF TIMER_1		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÒÅÑÒÀ
				CLRF END_TIMER_1	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÍÎ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÓÌÀÓÒÓ
				BCF FIST_CHAND,1	; Î×ÈÑÒÈÌ ÔËÀÃ ÏÅÐÂÎÃÎ ÏÓÑÊÀ ÇÀÐßÄÊÈ
				BTFSS OFF_CHAND,5
				GOTO NEXT_2
					BCF OFF_CHAND,5 	; ÓÁÅÐÅÌ ÔËÀÃ
					BCF FLAG_END_TIMER,1	; ÓÁÅÐÅÌ ÔËÀÃ ÒÀÉÌÅÐÀ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
					BCF OFF_CHAND,1		; ÓÁÅÐÅÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
;********************************
NEXT_2	;******  2-ÊÀÍÀË
	MOVLW 3
	XORWF CHANEL_2H,0
	BTFSS STATUS,Z
	GOTO ON_CH2
	; ÑÒÀÐØÈÉ ÁÈÒ ÐÀÇÐßÄÀ ÀÖÏ 3! - ÍÎÐÌÀ. ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÉ ÐÀÇÐßÄ
		MOVLW 10
		SUBWF CHANEL_2L,0
		BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÜÍÛÉ, ÒÎ ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		GOTO OFF_CH2
; ÂÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ ÏÎ 0 ÊÀÍÀËÓ
ON_CH2			BTFSS OFF_CHAND,2	; ÏÐÎÂÅÐÈÌ ÁÈÒ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
			BSF CHAND,2		; ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ Î ÊÀÍÀËÓ
			BTFSC OFF_CHAND,6
			BCF PORTC,2		; ÂÛÊËÞ×ÈÌ ÏÎÐÒ, ÒÀÊ ÊÀÊ ÀÊÊÓÌÓËßÒÎÐÛ ÅÙÅ ÍÅ ÎÒÊËÞ×ÈËÈ
			BTFSC OFF_CHAND,6
			BCF OFF_CHAND,6		; ÓÁÅÐÅÌ ÔËÀÃ
			GOTO NEXT_3
OFF_CH2				BCF CHAND,2		; ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ 2 ÊÀÍÀËÓ
				CLRF TIMER_2		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÒÅÑÒÀ
				CLRF END_TIMER_2	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÍÎ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÓÌÀÓÒÓ
				BCF FIST_CHAND,2	; Î×ÈÑÒÈÌ ÔËÀÃ ÏÅÐÂÎÃÎ ÏÓÑÊÀ ÇÀÐßÄÊÈ
				BTFSS OFF_CHAND,6
				GOTO NEXT_3
					BCF OFF_CHAND,6 	; ÓÁÅÐÅÌ ÔËÀÃ
					BCF FLAG_END_TIMER,2	; ÓÁÅÐÅÌ ÔËÀÃ ÒÀÉÌÅÐÀ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
					BCF OFF_CHAND,2		; ÓÁÅÐÅÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
;********************************
NEXT_3	;******  3-ÊÀÍÀË
	MOVLW 3
	XORWF CHANEL_3H,0
	BTFSS STATUS,Z
	GOTO ON_CH3
	; ÑÒÀÐØÈÉ ÁÈÒ ÐÀÇÐßÄÀ ÀÖÏ 3! - ÍÎÐÌÀ. ÏÐÎÂÅÐÈÌ ÌËÀÄØÈÉ ÐÀÇÐßÄ
		MOVLW 10
		SUBWF CHANEL_3L,0
		BTFSC STATUS,C		; ÅÑËÈ ÐÅÇÓËÜÒÀÒ ÎÒÐÈÖÀÒÅËÜÍÛÉ, ÒÎ ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ
		GOTO OFF_CH3
; ÂÊËÞ×ÈÒÜ ÇÀÐßÄÊÓ ÏÎ 0 ÊÀÍÀËÓ
ON_CH3			BTFSS OFF_CHAND,3	; ÏÐÎÂÅÐÈÌ ÁÈÒ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
			BSF CHAND,3		; ÂÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ Î ÊÀÍÀËÓ
			BTFSC OFF_CHAND,7
			BCF PORTC,3		; ÂÛÊËÞ×ÈÌ ÏÎÐÒ, ÒÀÊ ÊÀÊ ÀÊÊÓÌÓËßÒÎÐÛ ÅÙÅ ÍÅ ÎÒÊËÞ×ÈËÈ
			BTFSC OFF_CHAND,7
			BCF OFF_CHAND,7		; ÓÁÅÐÅÌ ÔËÀÃ
			RETURN
OFF_CH3				BCF CHAND,3		; ÂÛÊËÞ×ÈÌ ÇÀÐßÄÊÓ ÏÎ 3 ÊÀÍÀËÓ
				CLRF TIMER_3		; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÒÅÑÒÀ
				CLRF END_TIMER_3	; Î×ÈÑÒÈÌ ÒÀÉÌÅÐ ÎÊÍÎ×ÀÍÈß ÇÀÐßÄÊÈ ÏÎ ÒÀÓÌÀÓÒÓ
				BCF FIST_CHAND,3	; Î×ÈÑÒÈÌ ÔËÀÃ ÏÅÐÂÎÃÎ ÏÓÑÊÀ ÇÀÐßÄÊÈ
				BTFSS OFF_CHAND,7
				RETURN
					BCF OFF_CHAND,7 	; ÓÁÅÐÅÌ ÔËÀÃ
					BCF FLAG_END_TIMER,3	; ÓÁÅÐÅÌ ÔËÀÃ ÒÀÉÌÅÐÀ ÂÛÊËÞ×ÅÍÈß ÇÀÐßÄÊÈ
					BCF OFF_CHAND,3		; ÓÁÅÐÅÌ ÔËÀÃ ÎÊÎÍ×ÀÍÈß ÇÀÐßÄÊÈ
		RETURN
;------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------

;------------------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------------------
		END                       ; directive 'end of program'

