
;**************************************************
;**** ÏÎÄÏÐÎÃÐÀÌÌÀ ÄÈÍÀÌÈ×ÅÑÊÎÉ ÈÍÄÈÊÀÖÈÈ    *****
;**************************************************
;	INCLUDE INDICAT.INC
; ÈÑÕÎÄÍÛÅ ÄÀÍÍÛÅ ÍÀÕÎÄßÒÑß Â ÐÅÃÈÑÒÐÀÕ RGUPR1-RGUPR6
; RGUPR1 ÊÐÀÉÍÈÉ ÏÐÀÂÛÉ ÈÍÄÈÖÈÐÓÅÌÛÉ ÐÀÇÐßÄ
; ÈÑÏÎËÜÇÓÅÌÛÅ ÐÅÃÈÑÒÐÛ
; MASKA - ÐÅÃÈÑÒÐ ÌÀÑÊÈ ÈÍÄÈÖÈÐÓÅÌÛÕ ÐÀÇÐßÄÎÂ
; N_SEG - Ñ×ÅÒ×ÈÊ ×ÈÑËÀ ÑÅÃÌÅÍÒÎÂ
INDICATION
	CALL	KEY_PROC	;×ÒÅÍÈÅ ÊËÀÂÈÀÒÓÐÛ

	MOVF	MASKA,W,A	; Â ÇÀÂÈÑÈÌÎÑÒÈ ÎÒ ÒÈÏÀ ÊËÞ×ÅÉ ÐÀÇÐßÄÎÂ
;	COMF	MASKA,W,A	; Â ÇÀÂÈÑÈÌÎÑÒÈ ÎÒ ÒÈÏÀ ÊËÞ×ÅÉ ÐÀÇÐßÄÎÂ
	CALL	USTCOM		; ÓÏÐÀÂËÅÍÈÅ ÊËÞ×ÀÌÈ ÐÀÇÐßÄÎÂ

	; ÓÏÐÀÂËÅÍÈÅ ÐÅÃÈÑÒÐÎÌ ÈÍÔÎÐÌÀÖÈÈ
	CLRF	FSR0H,A
	MOVLW	RGUPR1-1
	BCF	STATUS,C,A
	ADDWF	N_SEG,W,A
	MOVWF	FSR0L,A		; Â ÓÊÀÇÀÒÅËÅ ÏÎËÓ×ÈËÈ ÀÄÐÅÑ ÂÛÂÎÄÈÌÎÉ ÈÍÔÎÐÌÀÖÈÈ
	;ÓÏÐÀÂËÅÍÈÅ ÌÈÃÀÍÈÅÌ ÈÍÄÈÊÀÒÎÐÎÂ
	MOVF	N_FLASH,W,A	; ÅÑËÈ ÍÎÌÅÐ MÅÐÖÀÞÙÅÃÎ ÑÅÃÌÅÍÒÀ ÍÅ ÑÎÂÏÀÄÀÅÒ
	ANDWF	MASKA,W,A	; Ñ ÍÎÌÅÐÎÌ ÑÅÃÌÅÍÒÀ ÎÒÎÁÐÀÆÀÅÌÎÃÎ Â ÄÀÍÍÛÉ ÌÎÌÅÍÒ
	BTFSC	STATUS,Z,A
	GOTO	INDICATION1
	BTFSC	CHET_CIKL,7,A
	GOTO	INDICATION1
;	MOVLW	0		; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '-'
	MOVLW	0FF		; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '+'
	GOTO	INDICATION2
INDICATION1
;	MOVF	INDF0,W,A	; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '-'
	COMF	INDF0,W,A	; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '+'

INDICATION2
	CALL	USTCOM		; ÓÑÒÀÍÎÂÈÒÜ ÄÀÍÍÛÅ
	CALL	USTCOM_LOAD	; ÇÀÃÐÓÇÈÒÜ ÏÐÅÓÑÒÀÍÎÂËÅÍÍÛÅ ÄÀÍÍÛÅ

	BCF	STATUS,C,A
	RLNCF	MASKA,F,A	;
	DECFSZ	N_SEG,F,A	; ÅÑËÈ ÏÐÎÁÅÆÀËÈ ÂÑÅ ÑÅÃÌÅÍÒÛ ÒÎ ÈÍÈÖÈÀËÈÇÈÐÓÅÌ ÂÛÂÎÄ
	RETURN
;***********************************
INIT_VYV
; ÓÑÒÀÍÀÂËÈÂÀÅÒ ÍÀ×ÀËÜÍÛÅ ÇÍÀ×ÅÍÈß ÌÀÑÊÈ È Ñ×ÅÒ×ÈÊÀ ÑÅÃÌÅÍÒÎÂ
	MOVLW	B'00000001'
	MOVWF	MASKA,A
	MOVLW	8
	MOVWF	N_SEG,A
	RETURN
;***********************************
; ÏÐÎÃÐÀÌÌÀ ÎÏÐÎÑÀ ÊËÀÂÈÀÒÓÐÛ
; ÈÑÕÎÄÍÛÅ ÄÀÍÍÛÅ : ÌÀÑÊÀ ÈËÈ ÍÎÌÅÐ ÑÊÀÍÈÐÓÅÌÎÉ ÑÒÐÎÊÈ
; ÂÛÕÎÄÍÛÅ ÄÀÍÍÛÅ : KEY_REG ÊÎÄ ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ
;		  : KEY_FLAG,7  =1 ÏÐÈÇÍÀÊ ÍÀÆÀÒÈß ÊÍÎÏÊÈ
;		  : KEY_FLAG,0  ÏÐÈÇÍÀÊ ÑÎÑÒÎßÍÈß ÊÍÎÏÎÊ 0 - ÎÒÏÓÙÅÍÀ ,1 - ÍÀÆÀÒÀ
KEY_PROC
	BTFSS	KEY_FLAG,0,A 	; ÊÍÎÏÊÀ ÁÛËÀ ÍÀÆÀÒÀ
	GOTO	KEY_PROC01	; ÍÅÒ ÒÎ ÎÏÐÎÑÈÒÜ ÂÕÎÄ ÂÎÇÂÐÀÒÀ Ñ ÊËÀÂÈÀÒÓÐÛ
	MOVF	KEY_REG,W,A	; ÊÎÄ ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ ÑÎÂÏÀÄÀÅÒ Ñ ÊÎÄÎÌ ÌÀÑÊÈ
	XORWF	MASKA,W,A
	BTFSS	STATUS,Z,A
	RETURN			; ÂÛÕÎÄ ÅÑËÈ ÝÒÎ ËÎÆÍÛÉ ÊÎÄ
	BTFSC	KEY_FLAG,4,A	; ÅÑËÈ ÊÍÎÏÊÀ ÁÛËÀ ÍÀÆÀÒÀ À ÇÀÒÅÌ ÎÒÏÓÙÅÍÀ - 
	GOTO	KEY_PROC1	; ÒÎ ÍÅÊÎÒÎÐÎÅ ÂÐÅÌß ÍÅ ÐÅÀÃÈÐÓÅÌ ÍÀ ÍÀÆÀÒÈÅ
KEY_PROC01
;	BTFSC	KEY_PRES	; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '-'
	BTFSS	KEY_PRES	; ÅÑËÈ ÈÍÄÈÊÀÒÎÐ Ñ ÎÁÙÈÌ '+'
	GOTO	KEY_PROC2
	BTFSS	KEY_FLAG,0,A
	GOTO	KEY_PROC3
	DECFSZ	KEY_DLIT,F,A
	RETURN
	BTFSS	KEY_FLAG,1,A
	GOTO	KEY_PROC5
	MOVLW	.10		; ÄËÈÒÅËÜÍÎÑÒÜ ÌÅÆÄÓ ÏÎÂÒÎÐÀÌÈ ÑÈÌÂÎËÀ
	MOVWF	KEY_DLIT,A
	BSF	KEY_FLAG,7,A
	RETURN
KEY_PROC1
	DECFSZ	KEY_DLIT,F,A
	RETURN
KEY_PROC11
	CLRF	KEY_FLAG,A
	RETURN
KEY_PROC2
	BTFSS	KEY_FLAG,1,A
	GOTO	KEY_PROC11
	BSF	KEY_FLAG,4,A
	BSF	_KEY_LONG	; ÅÑÒÜ ÄËÈÒÅËÜÍÎÅ ÍÀÆÀÒÈÅ
	MOVLW	.5		; ÄËÈÒÅËÜÍÎÑÒÜ ÁËÎÊÈÐÎÂÊÈ ÏÎÂÒÎÐÍÎÃÎ ÍÀÆÀÒÈß
	MOVWF	KEY_DLIT,A
	RETURN
KEY_PROC3	;ÅÑËÈ ÎÁÍÀÐÓÆÅÍÎ ÍÀÆÀÒÈÅ ÊÍÎÏÊÈ
	MOVF	MASKA,W,A	; ÍÎÌÅÐ ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ ÏÎÌÅÑÒÈÒÜ Â KEY_REG
	MOVWF	KEY_REG,A
	BSF	KEY_FLAG,0,A	; ÓÑÒÀÍÎÂÈÒÜ ÔËÀÃ ÍÀÆÀÒÈß ÍÀ ÊÍÎÏÊÓ
	MOVLW	.5		; ÄËÈÒÅËÜÍÎÑÒÜ ÄÐÅÁÅÇÃÀ ÊÎÍÒÀÊÒÎÂ
	MOVWF	KEY_DLIT,A
	RETURN
KEY_PROC5
	MOVLW	.60		; ÄËÈÒÅËÜÍÎÑÒÜ ÄÎ ÏÎÂÒÎÐÀ ÑÈÌÂÎËÀ
	MOVWF	KEY_DLIT,A
	BSF	KEY_FLAG,7,A
	BSF	KEY_FLAG,1,A	; ÓÑÒÀÍÎÂÈÒÜ ÔËÀÃ ÐÀÇÐÅØÅÍÈß ÏÎÂÒÎÐÀ ÊÎÄÀ ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ
	RETURN


;	BCF	_KEY_LONG	; ÅÑËÈ ÊÍÎÏÊÓ ÎÒÏÓÑÒÈËÈ ÒÎ ÍÅÒ ÄËÈÒÅËÜÍÎÃÎ ÍÀÆÀÒÈß
;***********************************
;ÏÎÄÏÐÎÃÐÀÌÌÀ ÂÛÒÀËÊÈÂÀÍÈß ÁÀÉÒÀ ÈÇ ÐÅÃÈÑÒÐÀ W Â ÏÎÑËÅÄÎÂÀÒÅËÜÍÛÉ ÐÅÃÈÑÒÐ ÑÄÂÈÃÀ
	#define LOAD_KLAV	PORTA,3,A	;	ÒÀÊÒÎÂÛÉ ÂÕÎÄ CLC (ÂÛÂÎÄ ÈÍÄÈÊÀÒÎÐÀ ¹1)
	#define DATA_KLAV	PORTA,4,A	;	ÄÀÍÍÛÅ ÄËß ÈÍÄÈÊÀÖÈÈ (ÂÛÂÎÄ ÈÍÄÈÊÀÒÎÐÀ ¹2)
	#define CLC_KLAV	PORTA,5,A	;	ÂÕÎÄ ÏÀÐÀËËÅËÜÍÎÉ ÇÀÃÐÓÇÊÈ
; ÈÑÏÎËÜÇÓÅÌÛÅ ÐÅÃÈÑÒÐÛ :
; W - ÂÛÂÎÄÈÌÛÉ ÁÀÉÒ
; TMPREG1 - ÂÐÅÌÅÍÍÛÉ ÐÅÃÈÑÒÐ ÄËß ÕÐÀÍÅÍÈß ÂÛÂÎÄÈÌÎÃÎ ÁÀÉÒÀ
; TMPREG2 - ÂÐÅÌÅÍÍÛÉ ÐÅÃÈÑÒÐ ÄËß ÏÎÄÑ×ÅÒÀ ÂÛÂÎÄÈÌÛÕ ÁÈÒÎÂ
USTCOM

	MOVWF	TMPREG1,A	; ÂÛÂÎÄÈÌÛÉ ÑÈÌÂÎË ÈÇ W ÏÎÌÅÑÒÈÒÜ Â REG
	MOVLW	8		; ÊÎËÈ×ÅÑÒÂÎ ÁÈÒ Â ÐÅÃÈÑÒÐÅ
	MOVWF	TMPREG2,A
USTCOM22
	BCF	DATA_KLAV
	BTFSC	TMPREG1,7,A	; ÅÑËÈ ÀÍÀËÈÇÈÐÓÅÌÛÉ ÁÈÒ ÐÀÂÅÍ 1 ÒÎ ÓÑÒÀÍÀÂËÈÂÀÅÌ 
	BSF	DATA_KLAV	; ØÈÍÓ ÄÀÍÍÛÕ Â 1, ÈÍÀ×Å ÏÐÎÏÓÑÊÀÅÌ ÓÑÒÀÍÎÂÊÓ Â 1
	BSF	CLC_KLAV	; ÏÎÄÀÅÌ ÑÈÃÍÀË ÑÒÐÎÁÈÐÎÂÀÍÈß
	NOP
	BCF	CLC_KLAV
	RLNCF	TMPREG1,1,A	; ÑÄÂÈÃ ÂËÅÂÎ ÄËß ÀÍÀËÈÇÀ ÑËÅÄÓÞÙÅÃÎ ÁÈÒÀ
	DECFSZ	TMPREG2,1,A
	GOTO	USTCOM22
	RETURN

USTCOM_LOAD
	BSF	LOAD_KLAV	; ÏÎÄÀÅÌ ÑÈÃÍÀË ÇÀÃÐÓÇÊÈ
	NOP
	BCF	LOAD_KLAV
	RETURN
;***********************************
