
;**************************************************
;юбрнлюр сопюбкемхъ фюкчгх я хй одс , ю рюйфе нр оепянмюкэмнцн йнлоэчрепю
;**************************************************
	INCLUDE MAP_EQ.INC	; ондйкчвемхе тюикю я нохяюмхел оепелеммшу х яхярелмшу пеяспянб ло PIC18F252
	ORG 	0
	NOP
	GOTO	INIT		; оепеунд й опнцпюлле хмхжхюкхгюжхх оняке бйк охрюмхъ хкх он яапняс нр WDT
	ORG	8		; б щрс рнвйс оноюдюел опх бнгмхймнбемхх опшбюмхъ мхгйнцн опхнпхрерю
	NOP
	ORG	18		;  б щрс рнвйс оноюдюел опх бнгмхймнбемхх опшбюмхъ бшянйнцн опхнпхрерю
				; пюгкхвхъ ме декюеряъ лефдс спнбмълх опхнпхрерю опепшбюмхъ, ю б опхмжхое лнфмн хяонкэгнбюрэ
				; PIC 18F252  PIC 18F452 онгбнкъчр щрн декюрэ
;**************************************************
;**** 	наяксфхбюмхе опепшбюмхъ	 	      *****
;**************************************************
INTERUPT
	CLRWDT			; яапня ярнпнфебнцн рюилепю опнхгбндхряъ бн бпелъ опепшбюмхи, щрн цюпюмрхпсе врн яхярелю ме гюбхямер
	MOVWF	W_TEMP,A	; \
	SWAPF	STATUS,W,A	;  \ янупюмемхе б ярейе, щрю опнжедспю унпньн нохяюмю б MICROCHIP днйслемрюжхх
	CLRF	STATUS,A        ;  /
	MOVWF	STATUS_TEMP,A	; /

	MOVF	FSR0L,W,A	; янупюмъел б ярейе пецхярпш сйюгюрекъ FSR0  лхйпнйнмрпнкепю PIC18F252
	MOVWF	FSR_TEMP,A

	MOVF	EEADR,W,A	; янупюмъел б ярейе пецхярпш EEADR лхйпнйнмрпнкепю PIC18F252
	MOVWF	EEADR_TEMP,A

	MOVF	EEDATA,W,A	; янупюмъел б ярейе пецхярпш EEDATA лхйпнйнмрпнкепю PIC18F252
	MOVWF	EEDATA_TEMP,A
; бшъбкемхе хярнвмхйю опепшбюмхи

	BTFSS	PIE1,RCIE,A	; пюгпеьемхе опепшбюмхи нр оняк. опхелмхйю лхйпнйнмрпнкепю PIC18F252
	GOTO	NON_PRM		; наунд еякх опепшбюмхъ ме пюгпеьемш
	BTFSC	PIR1,RCIF,A	; еякх опепшбюмхе нр опхелмхйю
	CALL	PRM_PROC	; бшонкмемхе ондопнцпюллш наяксфхбюмхъ опхелмхйю лхйпнйнмрпнкепю PIC18F252
NON_PRM
	BTFSS	PIE1,TXIE,A	; еякх опепшбюмхъ опепшбюмхъ оепедюрвхйю ме пюгпеьемш лхйпнйнмрпнкепю PIC18F252
	GOTO	NON_PRD		; рн наундхл напюанрйс опепшбюмхъ 
	BTFSC	PIR1,TXIF,A	; еякх опепшбюмхе нр оепедюрвхйю
	CALL	PRD_PROC	; бшонкмемхе ондопнцпюллш наяксфхбюмхъ оепедюрвхйю PIC18F252
NON_PRD
	BTFSS	INTCON,INT0IE,A	; еякх опепшбюмхе нр яхцмюкю INT HE пюгпеьемн лхйпнйнмрпнкепю PIC18F252
	GOTO	NON_INTE	; рн ме юмюкхгхпнбюрэ ткюц опепшбюмхъ нр яхцмюкю INT
	BTFSC	INTCON,INT0IF,A	; еякх опепшбюмхе нр яхцмюкю INT
	CALL	INT_PROC	; бшонкмхрэ опнцпюллс наяксфхбюмхъ опепшбюмхъ нр бундю INT ло PIC18F252
NON_INTE
	BTFSS	INTCON,TMR0IE,A	; еякх опепшбюмхъ опепшбюмхъ нр TMR0 лхйпнйнмрпнкепю PIC18F252 ме пюгпеьемш 
	GOTO	NON_TMR0	; рн наундхл напюанрйс опепшбюмхъ TMR0
	BTFSC	INTCON,TMR0IF,A	; еякх опепшбюмхе нр рюилепю0
	CALL	TMR_PROC 	; бшонкмхрэ опнцпюллс наяксфхбюмхъ опепшбюмхъ нр TMR0 ло PIC18F252
NON_TMR0
	BTFSS	PIE1,TMR1IE,A	;  еякх опепшбюмхъ опепшбюмхъ нр TMR1 лхйпнйнмрпнкепю PIC18F252 ме пюгпеьемш
	GOTO	NON_TMR1	; рн наундхл напюанрйс опепшбюмхъ TMR1
	BTFSC	PIR1,TMR1IF,A	; еякх опепшбюмхе нр рюилепю1
	CALL	TMR1_PROC	; бшонкмхрэ опнцпюллс наяксфхбюмхъ опепшбюмхъ нр TMR1 ло PIC18F252
NON_TMR1
	BTFSS	PIE2,TMR3IE,A	; еякх опепшбюмхъ опепшбюмхъ нр TMR3 лхйпнйнмрпнкепю PIC18F252 ме пюгпеьемш
	GOTO	NON_TMR3	; рн наундхл напюанрйс опепшбюмхъ TMR3
	BTFSC	PIR2,TMR3IF,A	; еякх сярюмнбкем ткюц рн бшгбюрэ опнжедспс опепшбюмхъ
	CALL	TMR3_PROC	; бшонкмхрэ опнцпюллс наяксфхбюмхъ опепшбюмхъ нр TMR1 ло PIC18F252
NON_TMR3
	MOVF	EEADR_TEMP,W,A	; бнярюмюбкхбюел янупюмеммше б ярейе пецхярпш EEADR лхйпнйнмрпнкепю PIC18F252
	MOVWF	EEADR,A

	MOVF	EEDATA_TEMP,W,A	; бнярюмюбкхбюел янупюмеммше б ярейе пецхярпш EEDATA лхйпнйнмрпнкепю PIC18F252
	MOVWF	EEDATA,A

	MOVF	FSR_TEMP,W,A 	; бнярюмюбкхбюел янупюмеммше б ярейе пецхярпш сйюгюрекъ FSR0  лхйпнйнмрпнкепю PIC18F252
	MOVWF	FSR0L,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		; нфхдюъ яапняю он ярнпнфебни янаюйе WDT
;*******************************
INIT				; ячдю оноюдюел оняке бйкчвемхъ охрюмхъ хкх еякх япюанрюер WDT
	CALL	INIT_INTERUPT	; яюлшл оепбшл декнл  мюярпнийю яхярелш опепшбюмхи, ю бепмее гюопер бяеу опепшбюмхи
				; врнаш мхврн ме онлеьюкн хмхжхюкхгюжхх яхярелш
;******************************* 
				; гюрел  намскемхе оюлърх
	CLRF	FSR2L,A		; ярюмдюпрмюъ опнжедспю намскемхъ нгс 
	CLRF	FSR2H,A		; йнрнпюъ днярюрнвмн ондпнамн нохяюмю б днйслемрюжхх MICROCHIP
CLRMEMOR
	CLRF	POSTINC2,A	; намскемхе оюлърх он сйюгюрекч
	BTFSS	FSR2H,2,A	; опнбепъел днярхц кх сйюгюрекэ гмювемхъ 0000 01уу уууу уууу хкх 0200 меу
	GOTO	CLRMEMOR	; еякх мер рн опнднкфюел вхярхрэ оюлърэ
;********************************
				; оняке намскемхъ оюлърх мюярпюхбюел бяч оепхтепхч ло PIC18F452 хкх PIC18F252 
	CALL	INIT_FSR	; хмхжхюкхгюжхъ астепю опхелю йнлюмд
	CALL	INIT_ADC	; сярюмнбйх южо бкхъчр мю южо х онпр е, б яксвюе опхлемемхъ ло PIC18F452
	CALL	INIT_PORT	; мюярпнийю онпрнб
	CALL	INIT_TIMER	; мюярпнийю рюилепю 0
	CALL	INIT_USART	; сярюмнбйх оепедюрвхйю
;********************************
; мювюкэмше сярюмнбйх онпрнб
	CLRF	PORTA,A
	CLRF	PORTB,A
	CLRF	PORTD,A		; б яксвюе опхлемемхъ ло PIC18F452
	CLRF	PORTE,A		; б яксвюе опхлемемхъ ло PIC18F452
;******************************** 
	MOVLW	0D0 		; мюярпнийю вюярнрш опепшбюмхи нр рюилепю0
	MOVWF	TMR0L,A		; гмювемхе 0D0HEX онднапюмн дкъ пюанрш я оскэрнл хй одс тнплюрю RC5

	CALL	L_TIMER1
	MOVWF	TIMER1,A	; намнбкъел явервхй
	CALL	L_TIMER2
	MOVWF	TIMER2,A	; намнбкъел явервхй
;********************************
				; оняке рнцн йюй бяе йнмярюмрш гюцпсфемш
				; менаундхлн мюярпнхрэ яхярелс опепшбюмхи
	CLRF	INTCON,A	; яапня бяеу опепшбюмхи
	BSF	INTCON,TMR0IE,A	; пюгпеьемн опепшбюмхе нр рюилепю
	BSF	INTCON,PEIE,A	; пюгпеьемн опепшбюмхе нр оепхтепхх
	BSF	INTCON,GIE,A	; бяе люяйхпселше опепшбюмхъ пюгпеьемш
;********************************

	CALL	INIT_RC5	; хмхжхюкхгхпнбюрэ опхел RC5

; оепбнмювюкэмше гмювемхъ оепелеммшу

	CLRF	DATA1,A
	CLRF	DATA2,A
	CLRF	DATA3,A
	CLRF	DATA4,A
	CLRF	DATA5,A
	CLRF	DATA6,A
	CALL	SET_BP

	CALL	PRN_POWER_ON	; бшдюрэ б онпр , врн охрюмхе  бйкчвемн

;###########################################################################################
; щрн нямнбмни жхйк напюанрйх янашрхи яхярелш х пюяопедекемхъ бпелемхмх лефдс пюгкхвмшлх ондопнцпюллюлх
; щрн дюер цюпюмрхпнбюммши нрйкхй мю янашрхъ бмсрпх яхярелш б лнел яксвюе щрн опхлепмн 0,001яей
; рюйни люкши нрйкхй дюер бнглнфмнярэ пюанрюрэ я янашрхълх б пеюкэмнл бпелемх 
; яхярелю напюанрйх онярпнемю мю опхмжхое наяксфхбюмхъ янашрхи хкх сярюмнбкеммшу опнцпюллмшу ткюфйнб
; рюйхл напюгнл опнцпюллш напюанрйх опепшбюмхъ онксвючяъ опняршлх , йнпнрйхлх х ашярпндеиярбсчыхлх
; щрн сбекхвюбюер яйнпнярэ пеюйжхх яхярелш мю бнгдеиярбхе ( бундш опепшбюмхъ, рюилепш, COM онпр х р.д.)
; ю нямнбмюъ пюанрю опнхяундхр б щрнл жхйке нцпюмхвеммнл яхлбнкюлх ###########
;***************************************
;**** 	жхйк нфхдюмхъ опепшбюмхъ   *****
;**  хкх напюанрйх онярсохбьху гюдюв  **
;***************************************
CICL_WAIT
	; опнцпюллш напюанрйх янашрхи опхелю оепедювх
STEP	
	BTFSS	_PRCOM,A	; еякх ткюц сярюмнбкем рн гмювхр ашкю онксвемю йнлюмдю он RS232 янл онпр
	GOTO	STEP01		;
	BCF	_PRCOM,A	; яапняхрэ ткюц опхелю йнлюмдш он RS232
	CALL	DECOD_KOMAND	; дейндхпнбюрэ йнлюмдс онярсохбьсч вепег янл онпр
STEP01
	BTFSS	RC5_ANALIZ	; еякх опхмърю хй йнлюмдю рн ее мсфмн дейндхпнбюрэ
	GOTO	STEP1		; фдел сярюмнбйх ткюцю опнцпюллни опхелю дюммшу нр хй опхелмхйю
	BCF	RC5_ANALIZ	; яапняхр ткюц менаундхлнярх юмюкхгю хй йнлюмдш
	CALL	ANALIZATOR_RC5	; дейндхпнбюрэ хй йнлюмдс
;********************************
	; опнцпюллш напюанрйх янашрхи рюилепю
STEP1				; опнжедспш бшонкмъелше он йюфднлс опепшбюмхч рюилепю
	BTFSS	F_TIMER0,A	;
	GOTO	STEP2		;
	BCF	F_TIMER0,A	;

	INCF	CHET_CIKL,F,A	; яхярелмши явервхй
	CALL	DIOD		; ондопнцпюллю лхцюмхъ дхндю, ндмнбпелеммн опнхгбндхр нопня 
				; янярнъмхъ бундю х б яксвюе гюлшйюмхъ дфюлоепю опнхгбндхр 
				; хмхжхюкхгюжхч яхярелмшу йнмярюмр (яапня сярюмнбнй он слнквюмхч)

STEP2				;
	BTFSS	F_TIMER1,A
	GOTO	STEP3
	BCF	F_TIMER1,A
	CALL	L_TIMER1
	MOVWF	TIMER1,A	; намнбкъел явервхй хмрепбюкнб бшонкмемхъ опнцпюллш
;...............................; бшгнб ондопнцпюллш дкъ напюанрйх янашрхъ оепбнцн рюилепю 
				; щрх опнцпюллш бшгшбючряъ я вюярнрни б N пюг лемэье
				; нямнбмни вюярнрш опепшбюмхъ он рюилепс TMR1, цде N нопедекъеряъ
				; йнмярюмрни VAL_TIMER1 упюмхлни б EEPROM
STEP3
	BTFSS	F_TIMER2,A
	GOTO	STEP4
	BCF	F_TIMER2,A
	CALL	L_TIMER2
	MOVWF	TIMER2,A	; намнбкъел явервхй хмрепбюкнб бшонкмемхъ опнцпюллш
;...............................; бшгнб ондопнцпюллш дкъ напюанрйх янашрхъ брнпнцн рюилепю 
				; щрх опнцпюллш бшгшбючряъ я вюярнрни б N пюг лемэье
				; нямнбмни вюярнрш опепшбюмхъ он рюилепс TMR1, цде N нопедекъеряъ
				; йнмярюмрни VAL_TIMER2 упюмхлни б EEPROM
;...............................
; опнцпюллш напюанрйх янашрхи онкэгнбюрекъ
STEP4
	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 опепшбюмхи

	BTFSC	RC5_START	; еякх дюм ярюпр опхелю RC5
	GOTO	RC5_TMR0_PROC	; рн напюаюршбюрэ опхел йндю

	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	0D0 		; мюярпнийю вюярнрш опепшбюмхи нр рюилепю0
	MOVWF	TMR0L,A		; гмювемхе 0D0HEX онднапюмн дкъ пюанрш я оскэрнл хй одс тнплюрю RC5

	RETURN

;********************************
TMR3_PROC			; опепшбюмхе рюилепю TMR3 ме хяонкэгсеряъ б дюммнл опнейре
	BCF	PIR2,TMR3IF,A	; яапняхрэ ткюц рюилепю TMR3
	RETURN
;********************************

	INCLUDE INICIAL.INC	; опнцпюллю хмхжхюкхгюжхх сярпнхярб  PIC
	INCLUDE PRMPRD.INC	; опнцпюллю опхелю оепедювх йнлюмд вепег COM онпр
	INCLUDE PROG.INC	;
	INCLUDE MAP.INC	;
	INCLUDE IR_MAP.INC	; опнцпюллю дейндхпнбюмхъ онярсоючыху йнлюмд нр оскэрю хй одс
	END			; йнмеж опнцпюллш
;********************************

