;********************************
; опнцпюллю явервхйю дкъ бъгюкэмни люьхмш
;--------------------------------------- 
INT_PROC

TMR1_PROC
	RETURN
;********************************
	#define	SD_RIGHT	PORTB,4,A	;
	#define	SD_WORK		PORTB,5,A	;
	#define	SD_LEFT		PORTB,6,A	;

	#define	VT_RIGHT	PORTB,1,A	;
	#define	VT_WORK		PORTB,2,A	;
	#define	VT_LEFT		PORTB,3,A	;
;********************************
COUNTER_KLAVA
	BTFSS	KEY_FLAG,7,A
	RETURN
	BCF	KEY_FLAG,7,A
	CLRF	N_FLASH,A	; яапняхрэ лхцюмхе хмдхйюрнпю

	BTFSC	_KEY1
	GOTO	COUNTER_KEY1
	BTFSC	_KEY3
	GOTO	COUNTER_KEY3
	BTFSC	_KEY4
	GOTO	COUNTER_KEY4
	BTFSC	_KEY5
	GOTO	COUNTER_KEY5

	BTFSS	INIT_COUNT	; еякх ме ашкн хмхжхюкхгюжхх рн мю нярюкэмше ймнойх ме пеюцхпнбюрэ
	RETURN
	BTFSC	_KEY2
	GOTO	COUNTER_KEY2
	BTFSC	_KEY6
	GOTO	COUNTER_KEY6
	BTFSC	_KEY7
	GOTO	COUNTER_KEY7
	BTFSC	_KEY8
	GOTO	COUNTER_KEY8
	RETURN
COUNTER_KEY1
	RETURN
COUNTER_KEY2
	BTFSC	_KEY_LONG
	GOTO	INC_PGM
	DECFSZ	TORMOZ,F,A
	RETURN	
	MOVLW	03
	MOVWF	TORMOZ,A

	MOVLW	1
	XORWF	PGM_COUNT,W,A	; еякх опх слемэьемхх днярхцкх 0 дюкэье ме слемэьюрэ
	BTFSS	STATUS,Z,A
	DECF	PGM_COUNT,F,A
	CALL	READ_ACC	; явхрюрэ гюопнцпюллхпнбюммше гмювемхъ
	RETURN
INC_PGM
	BCF	_KEY_LONG	; еякх ймнойс нросярхкх рн мер дкхрекэмнцн мюфюрхъ

	MOVLW	.99
	XORWF	PGM_COUNT,W,A	; еякх опх сбекхвемхх днярхцкх 99 дюкэье ме сбекхвхбюрэ
	BTFSC	STATUS,Z,A
	RETURN
	INCF	PGM_COUNT,F,A
	CALL	READ_ACC	; явхрюрэ гюопнцпюллхпнбюммше гмювемхъ
	RETURN
COUNTER_KEY3
	CALL	SUM_HEX3
	CALL	SAVE_ACC	; янупюмхрэ хглемемхъ б оюлърх
	RETURN
COUNTER_KEY4
	CALL	SUM_HEX2
	CALL	SAVE_ACC	; янупюмхрэ хглемемхъ б оюлърх
	RETURN
COUNTER_KEY5
	CALL	SUM_HEX1
	CALL	SAVE_ACC	; янупюмхрэ хглемемхъ б оюлърх
	RETURN
COUNTER_KEY6
	CLRF	N_PROHOD,A	; яапняхрэ явервхй опнунднб йюперйх
	CLRF	N_PROHOD1,A	; яапняхрэ явервхй опнунднб йюперйх
	RETURN
COUNTER_KEY7			
	BCF	F_WORK		; STOP!!!  онцюяхрэ яберндхнд пюанрю 
	BCF	F_ALARM		; яапня юбюпхимни яхцмюкхгюжхх
;	CALL	STOP_PWM	; бшйкчвхрэ гбсйнбни яхцмюк опх юбюпхх
	RETURN
COUNTER_KEY8
	BSF	F_WORK		; START!!!  гюфевэ яберндхнд пюанрю
	BSF	F_REVERS	; сярюмнбхрэ ткюц гюдепфйю опх пебепяе опнхгбедемю
	CALL	LOAD_CT_ALARM	; оепецпсгхрэ рюилеп юбюпхх
	RETURN
;****************************************
COUNTER_PROC
	CALL	NAPR_RIGHT	; нопня бунднб йнмжебшу дюрвхйнб
	CALL	NAPR_LEFT

	BTFSC	F_VHOD4		; опх япюаюршбюмхх дюрвхйю юбюпхх
	BSF	F_ALARM		; сярюмнбхрэ ткюц юбюпхх

	CALL	SV_DIODY	; сопюбкемхе ябевемхел дхнднб
	CALL	READ_ACC	; явхрюрэ гюопнцпюллхпнбюммше гмювемхъ	
	CALL	INDICAT		; сопюбкемхе хмдхйюрнпнл

	BTFSC	F_ALARM		; опх юбюпхх 
	GOTO	STOP_ALARM	; нярюмнбхрэ дбхцюрекэ

	RETURN
;********************************
NAPR_RIGHT
	BTFSS	INIT_COUNT	; еякх йюпейю ме сярюмнбкемю б хяундмне 
	GOTO	OPROS_RIGHT	; рн нфхдюрэ япюаюршбюмхъ ндмнцн хг йнмжебхйнб
	BTFSS	NAPRAVLENIE	; б гюбхяхлнярх нр мюопюбкемхъ ме нопюьхбюрэ дюрвхй
	RETURN
	BTFSS	F_VHOD2		; еякх япюанрюк бунд2
	RETURN
	BCF	NAPRAVLENIE	;
	CALL	REVERS_DV	;  оняке ялемш мюопюбкемхъ менаундхлю гюдепфйю дкъ дбхцюрекъ
	BCF	F_RIGHT
	BSF	F_LEFT	
	GOTO	KARETKA_PLUS
NAPR_LEFT
	BTFSS	INIT_COUNT	; еякх йюпеTйю ме сярюмнбкемю б хяундмне 
	GOTO	OPROS_LEFT	; рн нфхдюрэ япюаюршбюмхъ ндмнцн хг йнмжебхйнб
	BTFSC	NAPRAVLENIE	; б гюбхяхлнярх нр мюопюбкемхъ ме нопюьхбюрэ дюрвхй
	RETURN
	BTFSS	F_VHOD3		; еякх япюанрюк бунд3
	RETURN
	BSF	NAPRAVLENIE	; онлемърэ мюопюбкемхе дбхфемхъ
	CALL	REVERS_DV	; оняке ялемш мюопюбкемхъ менаундхлю гюдепфйю дкъ дбхцюрекъ 
	BSF	F_RIGHT
	BCF	F_LEFT
	GOTO	KARETKA_PLUS
;********************************
OPROS_RIGHT
	BTFSS	F_VHOD2		; еякх япюанрюк бунд2
	RETURN
	BCF	NAPRAVLENIE
	BCF	F_RIGHT
	BSF	F_LEFT
	BSF	INIT_COUNT
	RETURN
;********************************
OPROS_LEFT
	BTFSS	F_VHOD3		; еякх япюанрюк бунд3
	RETURN
	BSF	NAPRAVLENIE
	BSF	F_RIGHT
	BCF	F_LEFT
	BSF	INIT_COUNT
	RETURN
;********************************
KARETKA_PLUS
	CALL	LOAD_CT_ALARM	; оепецпсгхрэ рюилеп юбпхимни нярюмнбйх

	MOVLW	1
	BCF	STATUS,C,A
	ADDWF	N_PROHOD,F,A	; сбекхвхрэ явервхй опнунднб йюперйх
	BTFSC	STATUS,C,A
	INCF	N_PROHOD1,F,A	

	MOVF	N_PROHOD1,W,A
	XORWF	COMPAR1,W,A
	BTFSS	STATUS,Z,A	; еякх ярюпьхи аюир пюбем
	RETURN			; еякх лемэье рн бшунд

	MOVF	N_PROHOD,W,A
	XORWF	COMPAR0,W,A
	BTFSS	STATUS,Z,A	; еякх ярюпьхи аюир пюбем
	RETURN			; еякх лемэье рн бшунд
;********************************
; оняке рнцн йюй янбоюкн онйюгюмхе явервхйю бшонкмхрэ мейнрнпше деиярбхъ
	INCF	PGM_COUNT,F,A	; опнднкфхрэ ян якедсчыецн ьюцю опнцпюллш
	BCF	F_WORK		; STOP!!!  онцюяхрэ яберндхнд пюанрю 

	CLRF	N_PROHOD,A	; еякх мсфмн намскхрэ онйюгюмхъ явервхйю
	CLRF	N_PROHOD1,A

	CALL	READ_ACC	; явхрюрэ гюопнцпюллхпнбюммше гмювемхъ
	MOVF	ACC0,W,A	; еякх мхвецн ме ббедемн T.E. 00
	IORWF	ACC1,W,A
	BTFSS	STATUS,Z,A	;
	RETURN
;********************************
DEC_COUNT			; слемэьюел явервхй онйю ме мюидел 00
	DECFSZ	PGM_COUNT,F,A	; слемэьхрэ ьюц опнцпюллш
	GOTO	DEC_COUNT1	; еякх явервхй пюбем 0 рн дюкэье ме хяйюрэ
	GOTO	DEC_COUNT2	; еякх явервхй ме пюбем 0 опнднкфюрэ хяйюрэ 00 гмювемхе
DEC_COUNT1
	CALL	READ_ACC	; явхрюрэ гюопнцпюллхпнбюммше гмювемхъ
	MOVF	ACC0,W,A	; еякх мхвецн ме ббедемн T.E. 00
	IORWF	ACC1,W,A
	BTFSS	STATUS,Z,A	; еякх ме мюькх 00
	GOTO	DEC_COUNT	; опнднкфюрэ хяйюрэ
DEC_COUNT2
	INCF	PGM_COUNT,F,A	; ю еякх мюькх рн опнднкфхрэ ян якедсчыецн ьюцю опнцпюллш
	RETURN
;********************************
SV_DIODY
	BCF	SD_WORK
	BTFSC	F_WORK		; сякх ткюц сярюмнбкем рн гюфевэ яберндхнд
	BSF	SD_WORK

	BCF	SD_LEFT
	BTFSC	F_LEFT		; сякх ткюц сярюмнбкем рн гюфевэ яберндхнд
	BSF	SD_LEFT

	BCF	SD_RIGHT
	BTFSC	F_RIGHT		; сякх ткюц сярюмнбкем рн гюфевэ яберндхнд
	BSF	SD_RIGHT

	RETURN
;********************************
UPR_VT				; сопюбкемхе рпюмгхярнпюлх
	BTFSS	F_WORK		; еякх пюгпеьемю пюанрш рн опнбепхрэ б йюйнл мюопюбкемхх
	GOTO	STOP_MOTOR

	BTFSC	F_REVERS	;
	GOTO	UPR_VT1
	DECFSZ	TZAD,F,A	;
	GOTO	STOP_MOTOR1	; бн бпелъ оюсгш дкъ пебепяю бшйкчвюрэ сопюбкемхе
	BSF	F_REVERS	;  сярюмнбхрэ ткюц гюдепфйю опх пебепяе опнхгбедемю
	RETURN
UPR_VT1
	BTFSC	F_RIGHT		; еякх опюбне бпюыемхе
	GOTO	RIGHT_MOTOR
	BTFSC	F_LEFT		; еякх кебне бпюыемхе
	GOTO	LEFT_MOTOR	; еякх ме рн мх дпсцне - рн нярюмнбхрэ дбхцюрекэ
;********************************
STOP_ALARM
	MOVLW	0E0		; опх юбюпхх явервхй мювхмюер лхцюрэ
	MOVWF	N_FLASH,A	; 

;	CALL	GEN_PWM		; ондюбюрэ гбсйнбни яхцмюк опх юбюпхх

STOP_MOTOR			; бяе бшйкчвхрэ
	BCF	F_WORK		; гюоперхрэ пюанрс
	BCF	VT_WORK		; бшйкчвхрэ йкчв пюанрш
STOP_MOTOR1
	BCF	VT_RIGHT	; х йкчвх мюопюбкемхъ
	BCF	VT_LEFT
	RETURN
;********************************
RIGHT_MOTOR
	BSF	VT_WORK
	BSF	VT_RIGHT
	BCF	VT_LEFT
	RETURN
;********************************
LEFT_MOTOR
	BSF	VT_WORK
	BSF	VT_LEFT
	BCF	VT_RIGHT
	RETURN
;********************************
SAVE_ACC
	MOVF	PGM_COUNT,W,A	; 
	MOVWF	EEADR,A		; сярюмюбкхбюел юдпея б EEPROM
	BCF	EEADR,7,A	;
	MOVF	ACC0,W,A	; 	
	CALL	SAVE_EEPROM

	BSF	EEADR,7,A	; ярюпьхи ахр юдпеяю сярюмнбхрэ б 1
	MOVF	ACC1,W,A	; 	
	CALL	SAVE_EEPROM
	RETURN
;********************************
READ_ACC
	MOVF	PGM_COUNT,W,A	; рюакхжю дюммшу янрнхр хг дбсу акнйнб
	BCF	EEADR,7,A	;
	CALL	RID_BT

	MOVWF	ACC0,A		;
	BSF	EEADR,7,A	; ярюпьхи ахр юдпеяю сярюмнбхрэ б 1
	CALL	RD_FLASH
	MOVWF	ACC1,A		;
	RETURN
;********************************
REVERS_DV
	MOVLW	L_TZAD		;
	CALL	RID_BT
	MOVWF	TZAD,A		;
	SWAPF	TZAD,F,A	;
	BSF	TZAD,0,A	;
	BCF	F_REVERS	; яапняхрэ ткюц опнхгбедеммни гюдепфйх
	RETURN
;********************************
TIMER_ALARM
	BTFSS	F_WORK		; еякх пюгпеьемю пюанрш рн пюгпеьхрэ пюанрс рюилепю
	RETURN
	DECFSZ	CT_ALARM	; еякх бпелъ ме бшькн рн мхвецн ме декюрэ
	RETURN
	BSF	F_ALARM		; сярюмнбхрэ ткюц юбюпхх
	GOTO	STOP_ALARM	; юбюпхимюъ нярюмнбйю
;********************************
LOAD_CT_ALARM
	MOVLW	L_CT_ALARM	;
	CALL	RID_BT
	MOVWF	CT_ALARM,A	; оепецпсгхрэ рюилеп юбюпхимни нярюмнбйх
	RETURN
;********************************

