;
; ÒÀÉÌÅÐ 999,9 ÑÅÊ.
; ÏÐßÌÎÉ È ÎÁÐÀÒÍÛÉ ÎÒÑ×ÅÒ, ÑÒÎÏ.
; ÂÛÊËÞ×ÅÍÈÅ ÍÀÃÐÓÇÊÈ, ÂÊËÞ×ÅÍÈÅ ÇÓÌÌÅÐÀ.
; ÈÍÄÈÊÀÖÈß - 4 ÐÀÇÐßÄÀ 7-ÑÅÃÌÅÍÒÍÛÅ ÈÍÄÈÊÀÒÎÐÛ Ñ ÎÊ.
; ÐÀÇÐÀÁÎÒÀË ÍÈÊÎËÀÉ ÇÀÅÖ
; ÄËß ÑÂÎÁÎÄÍÎÃÎ ÈÑÏÎËÜÇÎÂÀÍÈß ÐÀÄÈÎËÞÁÈÒÅËßÌÈ.
; ï.ÂÅÉÄÅËÅÂÊÀ, ÁÅËÃÎÐÎÄÑÊÎÉ.
; saes@mail.ru
;
; ÏÐÎÃÐÀÌÌÀ = TAIM99.ASM
; ÂÅÐÑÈß: 12-04-06.
; ÀÑÑÅÌÁËÅÐ È ÎÒËÀÄ×ÈÊ: MPLAB IDE, ÂÅÐÑÈß: 5.70.40.
;
	LIST P=16F73
            #INCLUDE P16F73.INC
            __CONFIG 3FB9H
;========================================================
; ÈÑÏÎËÜÇÓÅÒÑß ÊÂÀÐÖ ×ÀÑÒÎÒÎÉ 4,0 MÃÖ.
; ÊÎÝÔÔÈÖÈÅÍÒ ÄÅËÅÍÈß 200, 500
; È ÖÈÊËÎÌ, ÐÀÂÍÛÌ 4 ÒÀÊÒÀÌ
; ÄÀÅÒ ÍÀ ÂÛÕÎÄÅ 0,1 ÑÅÊÓÍÄÓ (4õ200õ500=400000).
;========================================================
; RB0 - RB7 - ÀÍÎÄÛ.
; RA0 - RA3 - ÊÀÒÎÄÛ.
; RC1 - ÏÓÑÊ/ÑÒÎÏ.
; RC5 - ÊÍÎÏÊÀ "ÓÑÒÀÍÎÂÊÀ".
; RC4 - ÊÍÎÏÊÀ "ÐÀÇÐßÄ".
; RA4 - ÂÛÕÎÄ ÏÎÒÅÍÖÈÀË.
; RC0 - ÑÈËÎÂÎÉ ÂÛÕÎÄ.
;==============================================
; ÐÅÃÈÑÒÐÛ ÎÁÙÅÃÎ ÍÀÇÍÀ×ÅÍÈß.
;==============================================
	CBLOCK  H'20'
KATOD		;ÏÎÇÈÖÈÎÍÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
KATOD2		;ÄÂÎÈ×ÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
MCK		;ÐÅÃÈÑÒÐÛ Ñ×ÅÒÀ ÍÀ ÏËÞÑ. ÌÈËËÈÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
MCKL		;ÑÎÒÛÅ ÑÅÊÓÍÄ.
MCKH		;ÄÅÑßÒÛÅ ÑÅÊÓÍÄ.
CEK		;ÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
CEKL		;ÅÄÈÍÈÖÛ ÑÅÊÓÍÄ.
CEKH		;ÄÅÑßÒÊÈ ÑÅÊÓÍÄ.
MCKI		;ÐÅÃÈÑÒÐÛ Ñ×ÅÒÀ ÍÀ ÌÈÍÓÑ. ÌÈËËÈÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
MCKLI		;ÑÎÒÛÅ ÑÅÊÓÍÄ.
MCKHI		;ÄÅÑßÒÛÅ ÑÅÊÓÍÄ.
CEKI		;ÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
CEKLI		;ÅÄÈÍÈÖÛ ÑÅÊÓÍÄ.
CEKHI		;ÄÅÑßÒÊÈ ÑÅÊÓÍÄ.
MCKY		;ÐÅÃÈÑÒÐÛ ÓÑÒÀÍÎÂÊÈ. ÌÈËËÈÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
MCKLY		;ÑÎÒÛÅ ÑÅÊÓÍÄ.
MCKHY		;ÄÅÑßÒÛÅ ÑÅÊÓÍÄ.
CEKY		;ÑÅÊÓÍÄÛ ÄÂÎÈ×ÍÛÅ.
CEKLY		;ÅÄÈÍÈÖÛ ÑÅÊÓÍÄ.
CEKHY		;ÄÅÑßÒÊÈ ÑÅÊÓÍÄ.
IN0		;ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ. 0 ÐÀÇÐßÄ.
IN1		;1 ÐÀÇÐßÄ.
IN2		;2 ÐÀÇÐßÄ.
IN3		;3 ÐÀÇÐßÄ.
TEMP		;ÂÐÅÌÅÍÍÛÉ.
COU		;Ñ×ÅÒ×ÈÊ ÏÅÐÅÑ×ÅÒÀ.
WTEMP		;ÂÐÅÌÅÍÍÛÉ.
STEMP		;ÂÐÅÌÅÍÍÛÉ.
FTEMP		;ÂÐÅÌÅÍÍÛÉ.
SEG		;ÑÅÃÌÅÍÒÛ.
ZPTI		;ÇÀÏßÒÀß ÈÍÄÈÊÀÖÈÈ.
MKC		;:20.
	ENDC
;==============================================
; ÎÏÐÅÄÅËÅÍÈÅ ÁÈÒÎÂ ÑÎÑÒÎßÍÈß ÐÅÃÈÑÒÐÎÂ ÔËÀÃÎÂ.
;==============================================
FLAG	EQU	50H	;
;	0-> ÐÅÂÅÐÑÈÂÍÛÉ Ñ×ÅÒ.
;	1-> ÏÓÑÊ/ÑÒÎÏ.
;	2-> ÊÍÎÏÊÈ "ÓÑÒÀÍÎÂÊÀ".
;	4-> ÊÍÎÏÊÈ "ÐÀÇÐßÄ".
;	6-> ÐÀÂÅÍÑÒÂÀ.
;	7-> 1 ÑÅÊÓÍÄÛ.
;=======================================
ZY	EQU	4	;ÏÎÒÅÍÖÈÀË.
CUL	EQU	0	;ÑÈËÎÂÎÉ ÂÛÕÎÄ.
SBR	EQU	1	;ÏÓÑÊ/ÑÁÐÎÑ.
YCT	EQU	5	;ÓÑÒÀÍÎÂÊÀ.
PAZ	EQU	4	;ÐÀÇÐßÄ.
;=======================================
; 1. ÏÓÑÊ.
;======================
        ORG 0
	GOTO	INIT
        ORG 4
	GOTO	PRER
;======================
; 2. ÈÍÈÖÈÀËÈÇÀÖÈß.
;======================
INIT
 BCF	STATUS,RP1	;
 BSF	STATUS,RP0	;ÏÅÐÅÕÎÄÈÌ Â ÁÀÍÊ 1.
 MOVLW	B'00000000'	;ÏÐÅÄÄÅËÈÒÅËÜ ÏÅÐÅÄ ÒÀÉÌÅÐÎÌ,
 MOVWF	OPTION_REG^80H	;
 MOVLW	B'11000000'	;ÐÀÇÐÅØÅÍÈÅ ÏÐÅÐÛÂÀÍÈß ÏÅÐÈÔÅÐÈÈ.
 MOVWF	INTCON		;
 MOVLW	B'00000000'	;ÂÑÅ - ÍÀ ÂÛÕÎÄ.
 MOVWF	TRISA^80H
 MOVLW	B'00000000'	;ÂÑÅ - ÍÀ ÂÛÕÎÄ.
 MOVWF	TRISB^80H
 MOVLW	B'11111010'	;RC0, RC2 - ÂÛÕÎÄ, ÎÑÒÀËÜÍÛÅ - ÂÕÎÄÛ.
 MOVWF	TRISC^80H
 MOVLW	B'00000100'	;ÐÀÇÐÅØÅÍÎ
 MOVWF	PIE1^80H	;ÏÐÅÐÛÂÀÍÈÅ ÎÒ ÌÎÄÓËß ÑÑÐ1.
 CLRF	PIE2^80H	;
 MOVLW	0x07		;ÂÑÅ ÂÕÎÄÛ ÖÈÔÐÎÂÛÅ.
 MOVWF	ADCON1		;
 BCF	STATUS,RP0	;ÏÅÐÅÕÎÄÈÌ Â ÁÀÍÊ 0.
 CLRF	CCP2CON		;ÂÛÊËÞ×ÅÍ.
 CLRF	RCSTA		;USART ÂÛÊËÞ×ÅÍ.
 CLRF	T2CON		;ÒÀÉÌÅÐ 2 ÂÛÊËÞ×ÅÍ.
 MOVLW	.1		;1H
 MOVWF	CCPR1H		;ÄÅËÈÒÅËÜ ÍÀ 500.
 MOVLW	.244		;F4H
 MOVWF	CCPR1L		;
 CLRF	ADCON0		;ÀÖÏ ÂÛÊËÞ×ÅÍÎ.
 CLRF	T1CON		;ÒÀÉÌÅÐ 1 ÎÒÊËÞ×ÅÍ.
 BSF	T1CON,0		;ÂÊËÞ×ÅÍ.
 MOVLW	B'00001011'	;
 MOVWF	CCP1CON		;ÐÅÆÈÌ ÑÐÀÂÍÅÍÈß.
 MOVLW	.254		;ÓÑÒÀÍÀÂËÈÂÀÅÌ 0 ÐÀÇÐßÄ Â
 MOVWF	KATOD		;ÏÎÇÈÖÈÎÍÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
 CLRF	TMR0		;ÂÑÅ ÎÁÍÓËßÅÌ È ÓÑÒÀÍÀÂËÈÂÀÅÌ.
 CLRF	FLAG
 CLRF	PORTA
 CLRF	PORTB
 CLRF	PORTC
 BSF	PORTA,ZY	;ÂÛÊËÞ×ÈÌ ÑÈÃÍÀË.
 CLRF	MCK
 CLRF	CEKH
 CLRF	MCK
 CLRF	MCKL
 CLRF	MCKH
 CLRF	CEK
 CLRF	CEKL
 CLRF	CEKHI
 CLRF	MCKI
 CLRF	MCKLI
 CLRF	MCKHI
 CLRF	ZPTI
 CLRF	CEKY
 CLRF	CEKLY
 CLRF	CEKHY
 CLRF	MCKY
 CLRF	MCKLY
 CLRF	MCKHY
 CLRF	KATOD2
 CALL	INDYC
 GOTO	ZDEM
;========================================
; 3. ÂÛÁÎÐ ÐÀÇÐßÄÀ ÈÍÄÈÊÀÖÈÈ.
;========================================
WIND
	MOVFW	KATOD2	;
	ADDWF	PCL,1	;
	GOTO	IND0	;
	GOTO	IND1	;
	GOTO	IND2	;
	GOTO	IND3	;
;=======================================
; 4. ÒÀÁËÈÖÀ ÑÅÃÌÅÍÒÎÂ ÄËß ÎÁÙÅÃÎ ÊÀÒÎÄÀ.
;=======================================
SEGDATA                      ;7, 6, 5, 4, 3, 2, 1, 0.
         ADDWF   PCL,F       ;H, G, F, E, D, C, B, A.
;                   ÊÀÒÎÄ            ÀÍÎÄ
	RETLW   B'00111111'	; 0 B'11000000'
	RETLW   B'00000110'	; 1 B'11111001'
	RETLW   B'01011011'	; 2 B'10100100'
	RETLW   B'01001111'	; 3 B'10110000'
	RETLW   B'01100110'	; 4 B'10011001'
	RETLW   B'01101101'	; 5 B'10010010'
	RETLW   B'01111101'	; 6 B'10000010'
	RETLW   B'00000111'	; 7 B'11111000'
	RETLW   B'01111111'	; 8 B'10000000'
	RETLW	B'01101111'	; 9 B'10010000'
;=======================================
; 5. ÂÛÁÎÐ ÐÀÇÐßÄÀ ÓÑÒÀÍÎÂÊÈ.
;=======================================
YCTA
	BTFSS	PORTC,YCT	;
	RETURN			;
	BCF	FLAG,2		;ÑÁÐÎÑ ÔËÀÃÀ ÐÅÆÈÌÀ.
	MOVFW	ZPTI		;
	ADDWF	PCL,1		;ÍÀÕÎÄÈÌ ÐÀÇÐßÄ ÓÑÒÀÍÎÂÊÈ.
	GOTO	YC0		;
	GOTO	YC1		;
	GOTO	YC2		;
	GOTO	YC3		;
;========================================================
; 6. ÒÀÁËÈÖÛ ÏÅÐÅÂÎÄÀ ÄÅÑßÒÊÎÂ Â ÄÂÎÈ×ÍÎÅ ×ÈÑËÎ.
;========================================================
DEBIN
	ADDWF	PCL,1	;
	RETLW	.0
	RETLW	.10
	RETLW	.20
	RETLW	.30
	RETLW	.40
	RETLW	.50
	RETLW	.60
	RETLW	.70
	RETLW	.80
	RETLW	.90
;=======================================
; 7. ÏÐÎÂÅÐÊÀ ÊÍÎÏÎÊ.
;=======================================
KHOP
	BTFSC	FLAG,2		;ÅÑËÈ ÐÀÍÅÅ ÁÛËÀ ÍÀÆÀÒÀ ÊÍÎÏÊÀ "ÓÑÒÀÍÎÂÊÀ",
	CALL	YCTA		;ÒÎ ÈÄÅÌ ÍÀ ÓÑÒÀÍÎÂÊÓ ÐÀÇÐßÄÀ.
	BTFSS	PORTC,YCT	;ÅÑËÈ ÊÍÎÏÊÀ "ÓÑÒÀÍÎÂÊÀ" ÍÀÆÀÒÀ,
	BSF	FLAG,2		;ÏÎÑÒÀÂÈÌ ÔËÀÃ.
	BTFSC	FLAG,4		;ÅÑËÈ ÐÀÍÅÅ ÁÛËÀ ÍÀÆÀÒÀ ÊÍÎÏÊÀ "ÐÀÇÐßÄ",
	CALL	YCTPAZ		;ÒÎ ÈÄÅÌ ÍÀ ÓÑÒÀÍÎÂÊÓ ÐÀÇÐßÄÀ.
	BTFSS	PORTC,PAZ	;ÅÑËÈ ÊÍÎÏÊÀ "ÐÀÇÐßÄ" ÍÀÆÀÒÀ,
	BSF	FLAG,4		;ÏÎÑÒÀÂÈÌ ÔËÀÃ.
	RETURN			;
;=================================================
; 8. ÂÛÁÎÐ ÐÀÇÐßÄÀ ÓÑÒÀÍÎÂÊÈ.
;=================================================
YCTPAZ
	BTFSS	PORTC,PAZ	;
	RETURN			;
	BCF	FLAG,4		;ÑÁÐÎÑÈÌ ÔËÀÃ ÊÍÎÏÊÈ.
	BCF	FLAG,0		;ÑÁÐÎÑÈÌ ÐÅÂÅÐÑ.
	CALL	INDYC		;ÇÀÏÎËÍÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
	INCF	ZPTI,1		;ÏÐÈÁÀÂÈÌ ÅÄÈÍÈÖÓ Â ÐÀÇÐßÄ.
	MOVLW	.4		;ÍÅ ÁÎËÅÅ 3.
	SUBWF	ZPTI,0		;
	SKPNZ			;ÅÑËÈ ÐÀÂÍÎ 4,
	BSF	FLAG,0		;ÒÎ ÂÊËÞ×ÈÌ ÔËÀÃ ÐÅÂÅÐÑÈÂÍÎÃÎ Ñ×ÅÒÀ.
	MOVLW	.5		;ÍÅ ÁÎËÅÅ 4.
	SUBWF	ZPTI,0		;
	SKPC			;
	RETURN			;
	CLRF	ZPTI		;ÈÍÀ×Å ÎÁÍÓËÈÌ.
	RETURN			;
;=======================================
; 9. ÓÑÒÀÍÎÂÊÀ.
;=======================================
YC0
	INCF	MCKLY,1		;ÓÂÅËÈ×ÈÌ ÅÄÈÍÈÖÛ ÌÈÍÓÒ.
	MOVLW	.10		;ÍÅ ÁÎËÅÅ 9.
	SUBWF	MCKLY,0		;
	SKPNC			;ÅÑËÈ ÁÎËÜØÅ ÈËÈ ÐÀÂÍÎ 10,
	CLRF	MCKLY		;ÒÎ ÎÁÍÓËÈÌ.
	MOVFW	MCKHY		;ÏÅÐÅÊÎÄÈÐÓÅÌ Â ÄÂÎÈ×ÍÛÉ
	MOVWF	MCKHI		;
	CALL	DEBIN		;ÊÎÄ ÄÅÑßÒÊÈ.
	ADDWF	MCKLY,0		;ÏÐÈÁÀÂÈÌ ÅÄÈÍÈÖÛ È
	MOVWF	MCKY		;ÇÀÏÈØÅÌ Â ÄÂÎÈ×ÍÎÌ ÊÎÄÅ.
	GOTO	INDYC		;ÈÇÌÅÍÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
YC1
        INCF	MCKHY,1		;ÓÂÅËÈ×ÈÌ ÄÅÑßÒÊÈ ÌÈÍÓÒ.
        MOVLW	.10		;ÍÅ ÁÎËÅÅ 9.
        SUBWF	MCKHY,0		;
        SKPNC			;ÅÑËÈ ÁÎËÜØÅ ÈËÈ ÐÀÂÍÎ 10,
        CLRF	MCKHY		;ÒÎ ÎÁÍÓËÈÌ.
	MOVFW	MCKHY		;ÏÅÐÅÊÎÄÈÐÓÅÌ Â ÄÂÎÈ×ÍÛÉ
	CALL	DEBIN		;ÊÎÄ ÄÅÑßÒÊÈ.
	ADDWF	MCKLY,0		;ÏÐÈÁÀÂÈÌ ÅÄÈÍÈÖÛ È
	MOVWF	MCKY		;ÇÀÏÈØÅÌ Â ÄÂÎÈ×ÍÎÌ ÊÎÄÅ.
	GOTO	INDYC		;ÈÇÌÅÍÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
YC2
	INCF	CEKLY,1		;ÓÂÅËÈ×ÈÌ ÅÄÈÍÈÖÛ ÑÅÊÓÍÄ.
	MOVLW	.10		;ÍÅ ÁÎËÅÅ 9.
	SUBWF	CEKLY,0		;
	SKPNC			;
	CLRF	CEKLY		;ÅÑËÈ ÁÎËÜØÅ, ÒÎ ÎÁÍÓËÈÌ.
	MOVFW	CEKHY		;ÏÅÐÅÊÎÄÈÐÓÅÌ Â ÄÂÎÈ×ÍÛÉ
	CALL	DEBIN		;ÊÎÄ ÄÅÑßÒÊÈ.
	ADDWF	CEKLY,0		;ÏÐÈÁÀÂÈÌ ÅÄÈÍÈÖÛ È
	MOVWF	CEKY		;ÇÀÏÈØÅÌ Â ÄÂÎÈ×ÍÎÌ ÊÎÄÅ.
	GOTO	INDYC		;ÈÇÌÅÍÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
YC3
        INCF	CEKHY,1		;ÓÂÅËÈ×ÈÌ ÄÅÑßÒÊÈ ÑÅÊÓÍÄ.
        MOVLW	.10		;ÍÅ ÁÎËÅÅ 9.
        SUBWF	CEKHY,0		;
        SKPNC			;ÅÑËÈ ÁÎËÜØÅ ÈËÈ ÐÀÂÍÎ 10,
        CLRF	CEKHY		;ÒÎ ÎÁÍÓËÈÌ.
	MOVFW	CEKHY		;ÏÅÐÅÊÎÄÈÐÓÅÌ Â ÄÂÎÈ×ÍÛÉ
	CALL	DEBIN		;ÊÎÄ ÄÅÑßÒÊÈ.
	ADDWF	CEKLY,0		;ÏÐÈÁÀÂÈÌ ÅÄÈÍÈÖÛ È
	MOVWF	CEKY		;ÇÀÏÈØÅÌ Â ÄÂÎÈ×ÍÎÌ ÊÎÄÅ.
;=======================================
; 10. ÇÀÏÈÑÜ Â ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
;=======================================
INDYC
	MOVFW	MCKLY		;ÏÅÐÅÏÈÑÛÂÀÅÌ ÂÑÅ ÐÅÃÈÑÒÐÛ ÓÑÒÀÍÎÂÊÈ
	MOVWF	IN0		;Â ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ
	MOVWF	MCKLI		;È ÐÅÃÈÑÒÐÛ ÐÅÂÅÐÑÈÂÍÎÃÎ Ñ×ÅÒÀ.
	MOVFW	MCKHY		;
	MOVWF	IN1		;
	MOVWF	MCKHI		;
	MOVFW	MCKY		;
	MOVWF	MCKI		;
	MOVFW	CEKLY		;
	MOVWF	IN2		;
	MOVWF	CEKLI		;
	MOVFW	CEKHY		;
	MOVWF	IN3		;
	MOVWF	CEKHI		;
	MOVFW	CEKY		;
	MOVWF	CEKI		;
	CLRF	CEK		;ÎÁÍÓËßÅÌ ÐÅÃÈÑÒÐÛ
	CLRF	CEKL		;ÏÐßÌÎÃÎ Ñ×ÅÒÀ.
 	CLRF	CEKH		;
	CLRF	MCK		;
	CLRF	MCKL		;
 	CLRF	MCKH		;
	RETURN			;
INS2
	MOVFW	MCKLI		;ÐÅÃÈÑÒÐÛ ÎÁÐÀÒÍÎÃÎ Ñ×ÅÒÀ ÏÅÐÅÏÈØÅÌ
	MOVWF	IN0		;Â ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
	MOVFW	MCKHI		;
	MOVWF	IN1		;
	MOVFW	CEKLI		;
	MOVWF	IN2		;
	MOVFW	CEKHI		;
	MOVWF	IN3		;
	RETURN			;
INS1
	MOVFW	MCKL		;ÐÅÃÈÑÒÐÛ ÏÐßÌÎÃÎ Ñ×ÅÒÀ ÏÅÐÅÏÈØÅÌ
	MOVWF	IN0		;Â ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
	MOVFW	MCKH		;
	MOVWF	IN1		;
	MOVFW	CEKL		;
	MOVWF	IN2		;
	MOVFW	CEKH		;
	MOVWF	IN3		;
	GOTO	CPABH		;ÑÐÀÂÍÈÌ Ñ ÐÅÃÈÑÒÐÀÌÈ ÓÑÒÀÍÎÂÊÈ.
;=======================================
; 11. ÏÅÐÅÊÎÄÈÐÎÂÊÀ ÈÇ 2-ÃÎ Â 2_10.
;=======================================
BIDE				;ÏÅÐÅÊÎÄÈÐÎÂÊÀ ÄÅÑßÒÊÎÂ
	CLRF	COU		;ÎÁÍÓËßÅÌ Ñ×ÅÒ×ÈÊ.
	ADDLW	-.10		;ÂÛ×ÒÅÌ 10.
	BTFSS	STATUS,0	;ÅÑËÈ ÅÑÒÜ ÏÅÐÅÕÎÄ ×ÅÐÅÇ ÍÎËÜ,
	GOTO	$+4		;ÒÎ ÇÀÂÅÐØÀÅÌ ÏÅÐÅÊÎÄÈÐÎÂÊÓ.
	MOVWF	TEMP		;ÈÍÀ×Å ÏÅÐÅÏÈØÅÌ ÍÎÂÎÅ ÇÍÀ×ÅÍÈÅ ÂÎ ÂÐÅÌÅÍÍÛÉ.
	INCF	COU,1		;ÓÂÅËÈ×ÈÌ Ñ×ÅÒ×ÈÊ.
	GOTO	$-5		;ÏÎÂÒÎÐÈÌ ÂÛ×ÈÒÀÍÈÅ.
	MOVFW	COU		;ÇÍÀ×ÅÍÈÅ Ñ×ÅÒ×ÈÊÀ (ÐÀÂÍÎ ×ÈÑËÓ ÄÅÑßÒÊÎÂ) ÏÅÐÅÏÈØÅÌ Â ÐÀÁÎ×ÈÉ ÐÅÃÈÑÒÐ.
	RETURN			;ÂÅÐÍÅÌÑß.
;===================================================================
; 12. ÑÎÕÐÀÍÅÍÈÅ È ÂÎÑÑÒÀÍÎÂËÅÍÈÅ ÇÍÀ×ÅÍÈÉ ÐÅÃÈÑÒÐÎÂ ÏÐÈ ÏÐÅÐÛÂÀÍÈÈ.
;===================================================================
PRER
        MOVWF	WTEMP		;ÑÎÕÐÀÍÅÍÈÅ ÇÍÀ×ÅÍÈÉ ÐÅÃÈÑÒÐÎÂ W È
        MOVFW	STATUS		;STATUS,
        MOVWF	STEMP		;
        MOVFW	FSR		;FSR.
        MOVWF	FTEMP		;
	INCF	MKC,1		;ÏÐÈÁÀÂÈÌ 1 Â ÐÅÃÈÑÒÐ ÌÈËËÈÑÅÊÓÍÄ.
	MOVFW	MKC		;
	ADDLW	-.200		;Ñ×ÈÒÀÅÌ ÄÎ 200.
	BTFSS	STATUS,2	;ÅÑËÈ ÍÅ ÐÀÂÍÎ,
	GOTO	$+.7		;ÏÐÎÏÓÑÒÈÌ ÏÎÄÑ×ÅÒ.
	CLRF	MKC		;Â ÏÐÎÒÈÂÍÎÌ ÑËÓ×ÀÅ ÎÁÍÓËÈÌ. 
	BSF	FLAG,7		;ÂÊËÞ×ÈÌ ÔËÀÃ 1 ÑÅÊÓÍÄÛ.
	BTFSC	FLAG,6		;ÅÑËÈ ÐÀÂÅÍÑÒÂÎ,
	GOTO	$+.3		;ÒÎ ÂÐÅÌß ÍÅ Ñ×ÈÒÀÅÌ.
	CALL	S1		;ÏÐßÌÎÉ Ñ×ÅÒ.
	CALL	S2		;ÎÁÐÀÒÍÛÉ Ñ×ÅÒ.
	CALL	IND		;ÏÐÎÈÍÄÈÖÈÐÓÅÌ.
REPER                   	;ÂÎÑÑÒÀÍÎÂËÅÍÈÅ ÑÎÕÐÀÍÅÍÍÛÕ ÇÍÀ×ÅÍÈÉ.
        MOVFW	STEMP		;ÂÎÑÑÒÀÍÎÂËÅÍÈÅ ÐÅÃÈÑÒÐÎÂ:
        MOVWF	STATUS		;STATUS,
        MOVFW	FTEMP		;
        MOVWF	FSR		;FSR,
        MOVFW	WTEMP		;W.
        BCF	PIR1,2		;ÑÁÐÀÑÛÂÀÅÌ ÔËÀÃ ÏÐÅÐÛÂÀÍÈß ÎÒ CCP1.
        RETFIE          	;ÂÎÇÂÐÀÒ ÈÇ ÏÐÅÐÛÂÀÍÈß.
;=============================================
; 13. ÏÐßÌÎÉ Ñ×ÅÒ.
;=============================================
S1
	BTFSS	FLAG,1		;ÅÑËÈ ÍÅ ÂÊËÞ×ÅÍ ÏÓÑÊ,
	RETURN			;ÒÎ ÍÅÒ Ñ×ÅÒÀ.
	MOVFW	MCK		;ÇÀÃÐÓÇÊÀ ÇÍÀ×ÅÍÈÉ MCK Â ÐÀÁ. ÐÅÃÈÑÒÐ.
	ADDLW	-63H		;ÂÛ×ÅÑÒÜ ÈÇ ÐÅÃÈÑÒÐÀ 99.
	BZ	M1		;ÑÐÀÂÍÈÒÜ ÍÀ 0,  ÅÑËÈ ÐÀÂÍÎ, ÏÅÐÅÉÒÈ ÍÀ M1,
	INCF	MCK,1		;ÈÍÀ×Å ÏÐÈÁÀÂÈÒÜ 1 Â ÐÅÃÈÑÒÐ.
	MOVFW	MCK		;ÏÅÐÅÊÎÄÈÐÓÅÌ ÒÅÊÓÙÅÅ ÇÍÀ×ÅÍÈÅ
	MOVWF	TEMP		;ÈÇ 2-ÃÎ Â 2_10-Å.
	CALL	BIDE		;ÒÎËÜÊÎ ÄÎ 99!
	MOVWF	MCKH		;ÏÅÐÅÏÈØÅÌ ÄÅÑßÒÛÅ ÑÅÊÓÍÄ.
	MOVFW	TEMP		;
	MOVWF	MCKL		;ÏÅÐÅÏÈØÅÌ ÑÎÒÛÅ ÑÅÊÓÍÄ.
	RETURN			;
M1
	CLRF	MCK		;ÎÁÍÓËÅÍÈÅ ÐÅÃÈÑÒÐÀ  ÑÅÊÓÍÄ.
	CLRF	MCKL		;ÎÁÍÓËÈÌ ÅÄÈÍÈÖÛ ÑÅÊÓÍÄ.
	CLRF	MCKH		;ÄÅÑßÒÊÈ ÑÅÊÓÍÄ.
	MOVFW	CEK		;ÇÀÃÐÓÇÊÀ  Â ÐÀÁ. ÐÅÃÈÑÒÐ.
	ADDLW	-63H		;-99.
	BZ	H1		;ÑÐÀÂÍÈÒÜ ÍÀ 0, ÅÑËÈ ÐÀÂÍÎ, ÏÅÐÅÉÒÈ ÍÀ H1.
	INCF	CEK,1		;ÏÐÈÁÀÂÈÒÜ 1.
	MOVFW	CEK		;ÏÅÐÅÊÎÄÈÐÓÅÌ ÒÅÊÓÙÅÅ ÇÍÀ×ÅÍÈÅ
	MOVWF	TEMP		;ÈÇ 2-ÃÎ Â 2_10-Å.
	CALL	BIDE		;ÒÎËÜÊÎ ÄÎ 99!
	MOVWF	CEKH		;ÏÅÐÅÏÈØÅÌ ÄÅÑßÒÊÈ.
	MOVFW	TEMP		;
	MOVWF	CEKL		;ÏÅÐÅÏÈØÅÌ ÅÄÈÍÈÖÛ.
	RETURN			;
H1
	BSF	FLAG,6		;ÂÊËÞ×ÈÌ ÔËÀÃ ÐÀÂÅÍÑÒÂÀ.
	GOTO	INS1		;ÇÀÏÎËÍÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
;=============================
; 14. ÎÁÐÀÒÍÛÉ Ñ×ÅÒ.
;=============================
S2
	BTFSS	FLAG,1		;ÅÑËÈ ÍÅ ÂÊËÞ×ÅÍ ÏÓÑÊ,
	RETURN			;ÒÎ ÍÅÒ Ñ×ÅÒÀ.
	TSTF	MCKI		;ÅÑËÈ ÌÈËËÈÑÅÊÓÍÄÛ ÐÀÂÍÛ ÍÓËÞ,
	BZ	M2		;ÏÐÎÂÅÐÈÌ ÑÅÊÓÍÄÛ.
	DECF	MCKI,1		;ÈÍÀ×Å ÏÐÈÁÀÂÈÌ 1 Â ÐÅÃÈÑÒÐ ÌÈËËÈÑÅÊÓÍÄ.
	MOVFW	MCKI		;ÏÅÐÅÊÎÄÈÐÓÅÌ ÒÅÊÓÙÅÅ ÇÍÀ×ÅÍÈÅ
	MOVWF	TEMP		;ÈÇ 2-ÃÎ Â 2_10-Å.
	CALL	BIDE		;ÒÎËÜÊÎ ÄÎ 99!
	MOVWF	MCKHI		;ÏÅÐÅÏÈØÅÌ ÄÅÑßÒÊÈ.
	MOVFW	TEMP		;
	MOVWF	MCKLI		;ÏÅÐÅÏÈØÅÌ ÅÄÈÍÈÖÛ.
	RETURN			;
M2
	TSTF	CEKI		;ÅÑËÈ ÑÅÊÓÍÄÛ ÐÀÂÍÛ ÍÓËÞ,
	BZ	H2		;ÂÊËÞ×ÈÌ ÑÈÃÍÀË.
	MOVLW	.99		;ÓÑÒÀÍÎÂÈÌ
	MOVWF	MCKI		;ÐÅÃÈÑÒÐ ÄÂÎÈ×ÍÛÕ ÌÈËËÈÑÅÊÓÍÄ.
	MOVLW	.9		;ÓÑÒÀÍÎÂÈÌ
	MOVWF	MCKLI		;ÐÅÃÈÑÒÐ ÅÄÈÍÈÖ ÌÈËËÈÑÅÊÓÍÄ.
	MOVWF	MCKHI		;ÐÅÃÈÑÒÐ ÄÅÑßÒÊÎÂ ÌÈËËÈÑÅÊÓÍÄ.
	DECF	CEKI,1		;ÂÛ×ÒÅÌ 1 ÈÇ ÑÅÊÓÍÄ.
	MOVFW	CEKI		;ÏÅÐÅÊÎÄÈÐÓÅÌ ÒÅÊÓÙÅÅ ÇÍÀ×ÅÍÈÅ
	MOVWF	TEMP		;ÈÇ 2-ÃÎ Â 2_10-Å.
	CALL	BIDE		;ÒÎËÜÊÎ ÄÎ 99!
	MOVWF	CEKHI		;ÏÅÐÅÏÈØÅÌ ÄÅÑßÒÊÈ.
	MOVFW	TEMP		;
	MOVWF	CEKLI		;ÏÅÐÅÏÈØÅÌ ÅÄÈÍÈÖÛ.
	RETURN			;
H2
	BSF	FLAG,6		;ÂÊËÞ×ÈÌ ÔËÀÃ ÐÀÂÅÍÑÒÂÀ.
	BCF	PORTA,ZY	;ÂÊËÞ×ÈÌ ÑÈÃÍÀË.
	BCF	PORTC,CUL	;ÂÛÊËÞ×ÈÌ ÍÀÃÐÓÇÊÓ.
	GOTO	INDYC		;ÂÎÑÑÒÀÍÎÂÈÌ ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
;==============================
; 15. ÈÍÄÈÊÀÖÈß.
;==============================
IND
	BTFSS	FLAG,1		;ÅÑËÈ ÈÄÅÒ ÓÑÒÀÍÎÂÊÀ,
	GOTO	$+5		;ÒÎ ÏÐÎÏÓÑÊÀÅÌ ÂÛÁÎÐ ÈÍÄÈÊÀÖÈÈ.
	BTFSS	FLAG,0		;ÅÑËÈ ÔËÀÃ ÑÁÐÎØÅÍ,
	CALL	INS1		;ÒÎ ÈÍÄÈÊÀÖÈß ÏÐßÌÎÃÎ Ñ×ÅÒÀ.
	BTFSC	FLAG,0		;ÅÑËÈ ÔËÀÃ ÂÊËÞ×ÅÍ,
	CALL	INS2		;ÒÎ ÈÍÄÈÊÀÖÈß ÎÁÐÀÒÍÎÃÎ Ñ×ÅÒÀ.
	MOVFW	KATOD2		;ÄÂÎÈ×ÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ
	ADDLW	-4		;Ñ×ÈÒÀÅÌ ÄÎ 3.
	BTFSS	STATUS,2	;ÏÐÈ ÐÀÂÅÒÑÒÂÅ, ÓÑÒÀÍÎÂÈÌ 0 ÐÀÇÐßÄ.
	GOTO	WIND		;ÂÛÁÅÐÅÌ ÐÀÇÐßÄ ÈÍÄÈÊÀÖÈÈ.
	MOVLW	.254		;ÓÑÒÀÍÀÂËÈÂÀÅÌ ÍÓËÅÂÎÉ ÐÀÇÐßÄ Â
	MOVWF	KATOD		;ÏÎÇÈÖÈÎÍÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
	CLRF	KATOD2		;ÎÁÍÓËÈÌ ÄÂÎÈ×ÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
IND0
	MOVFW	IN0		;ÇÀÃÐÓÆÀÅÌ ÐÅÃÈÑÒÐ ÈÍÄÈÊÀÖÈÈ.
	GOTO	INDZ		;ÏÐÎÈÍÄÈÖÈÐÓÅÌ.
IND1
	MOVFW	IN1		;ÂÑÅ ÎÑÒÀËÜÍÛÅ ÐÀÇÐßÄÛ-
	GOTO	INDZ		;ÀÍÀËÎÃÈ×ÍÎ ÍÓËÅÂÎÌÓ.
IND2
	MOVFW	IN2		;
	GOTO	INDZ		;
IND3
	MOVFW	IN3		;
INDZ
	CALL	SEGDATA		;ÎÏÐÅÄÅËÈÌ ÑÅÌÈÑÅÃÌÅÍÒÍÎÅ ÇÍÀ×ÅÍÈÅ.
	MOVWF	SEG		;ÇÀÏÈØÅÌ ÅÃÎ Â ÐÅÃÈÑÒÐ.
	BTFSS	PORTA,ZY	;ÂÂÅÄÅÌ ÇÍÀ×ÅÍÈÅ ÁÓÄÈËÜÍÈÊÀ Â ÊÀÒÎÄ.
	BCF	KATOD,ZY	;ÓÑÒÀÍÎÂÈÌ ÁÈÒ Â ÍÎËÜ.
	BTFSC	PORTA,ZY	;ÅÑËÈ ÇÍÀ×ÅÍÈÅ ÅÄÈÍÈ×ÍÎÅ,
	BSF	KATOD,ZY	;ÒÎ ÓÑÒÀÍÎÂÈÌ Â ÅÄÈÍÈÖÓ.
	MOVFW	ZPTI		;ÑÐÀÂÍÈÌ ÐÀÇÐßÄ ÇÀÏßÒÎÉ
	SUBWF	KATOD2,0	;Ñ ÐÀÇÐßÄÎÌ ÈÍÄÈÊÀÖÈÈ.
	SKPNZ			;ÅÑËÈ ÎÍÈ ÍÅ ÑÎÂÏÀÄÀÞÒ, ÒÎ ÏÐÎÏÓÑÒÈÌ ÓÑÒÀÍÎÂÊÓ.
	BSF	SEG,7		;ÂÊËÞ×ÈÌ ÑÅÃÌÅÍÒ ÇÀÏßÒÎÉ.
	MOVFW	SEG		;ÏÅÐÅÏÈØÅÌ ÇÍÀ×ÅÍÈÅ
	MOVWF	PORTB		;Â ÏÎÐÒ B.
	MOVFW	KATOD		;ÂÊËÞ×ÈÌ ÐÀÇÐßÄ.
	MOVWF	PORTA		;Â ÏÎÐÒ A.
	BSF	STATUS,0	;ÍÓËÅÂÎÉ ÁÈÒ =1, ×ÒÎÁÛ Â ÊÀÒÎÄ ÇÀÏÈÑÀËÀÑÜ 1.
	RLF	KATOD,1		;ÑÄÂÈÍÅÌ ÍÎËÜ ÍÀ ÐÀÇÐßÄ ÂËÅÂÎ.
	INCF	KATOD2,1	;ÓÂÅËÈ×ÈÌ ÄÂÎÈ×ÍÎÅ ÇÍÀ×ÅÍÈÅ ÊÀÒÎÄÀ.
	RETURN			;ÂÅÐÍÅÌÑß.
;====================================
; 16. ÑÐÀÂÍÅÍÈÅ.
;====================================
CPABH
	MOVFW	MCKY		;ÑÐÀÂÍÈÌ ÌÈËËÈÑÅÊÓÍÄÛ.
	SUBWF	MCK,0		;
	SKPZ			;ÅÑËÈ ÍÅÐÀÂÅÍÑÒÂÎ,
	GOTO	HEPABHO		;ÂÛÊËÞ×ÈÌ ÑÈÃÍÀË.
	MOVFW	CEKY		;ÑÐÀÂÍÈÌ ÑÅÊÓÍÄÛ.
	SUBWF	CEK,0		;
	SKPZ			;ÅÑËÈ ÍÅÐÀÂÅÍÑÒÂÎ,
	GOTO	HEPABHO		;ÂÛÊËÞ×ÈÌ ÑÈÃÍÀË.
	BSF	FLAG,6		;ÈÍÀ×Å - ÂÊËÞ×ÈÌ ÔËÀÃ ÐÀÂÅÍÑÒÂÀ.
	BCF	PORTA,ZY	;ÂÊËÞ×ÈÌ ÑÈÃÍÀË.
	BCF	PORTC,CUL	;ÂÛÊËÞ×ÈÌ ÍÀÃÐÓÇÊÓ.
	RETURN			;
HEPABHO
	BCF	FLAG,6		;ÍÅÒ ÐÀÂÅÍÑÒÂÀ.
	BSF	PORTA,ZY	;ÂÛÊËÞ×ÈÌ ÑÈÃÍÀË.
	BSF	PORTC,CUL	;ÂÊËÞ×ÈÌ ÍÀÃÐÓÇÊÓ.
	RETURN			;
;===================================
; 17. ÎÆÈÄÀÍÈÅ ÏÐÅÐÛÂÀÍÈß.
;===================================
ZDEM
	BTFSS	FLAG,7		;ÅÑËÈ 1 C. ÏÐÎØËÀ,
	GOTO	$+3		;
	CALL	KHOP		;ÏÐÎÂÅÐÈÌ ÊÍÎÏÊÈ.
	BCF	FLAG,7		;ÑÁÐÎÑÈÌ ÔËÀÃ 1 Ñ.
	BTFSC	PORTC,SBR	;ÅÑËÈ ÊÍÎÏÊÀ "ÏÓÑÊ" ÍÀÆÀÒÀ,
	GOTO	$+8		;ÒÎ ÊÍÎÏÊÈ ÍÅ ÏÐÎÂÅÐßÅÌ.
	BSF	FLAG,1		;ÂÊËÞ×ÈÌ ÔËÀÃ ÏÓÑÊÀ.
	MOVLW	1		;ÇÀÏßÒÓÞ Â 1 ÐÀÇÐßÄ.
	MOVWF	ZPTI		;
	BSF	PORTC,CUL	;ÂÊËÞ×ÈÌ ÍÀÃÐÓÇÊÓ.
	BCF	FLAG,6		;ÑÁÐÎÑÈÌ ÔËÀÃ ÐÀÂÅÍÑÒÂÀ.
	CLRF	MKC		;
	CALL	INDYC		;ÇÀÏÈØÅÌ Â ÐÅÃÈÑÒÐÛ ÈÍÄÈÊÀÖÈÈ.
	BTFSS	FLAG,1		;ÅÑËÈ ÂÊËÞ×ÅÍ ÏÓÑÊ, ÒÎ ÏÐÎÏÓÑÒÈÌ.
	GOTO	ZDEM		;ÏÎÂÒÎÐÈÌ.
	BTFSC	FLAG,6		;ÅÑÒÜ ÐÀÂÅÍÑÒÂÎ?
	GOTO	$+3		;ÄÀ, ÈÄÅÌ ÍÀ ÏÀÓÇÓ.
	BTFSC	PORTC,SBR	;ÅÑËÈ ÊÍÎÏÊÀ ÍÅ ÍÀÆÀÒÀ,
	GOTO	$-3		;ÆÄÅÌ ÍÀÆÀÒÈß.
	CALL	PAUZ		;ÏÀÓÇÀ ÄËß ÓÑÒÐÀÍÅÍÈß ÄÐÅÁÅÇÃÀ.
	BTFSS	PORTC,SBR	;ÆÄÅÌ ÎÒÏÓÑÊÀÍÈß ÊÍÎÏÊÈ.
	GOTO	$-4		;
	BTFSC	PORTC,YCT	;ÅÑËÈ ÊÍÎÏÊÀ ÍÅ ÍÀÆÀÒÀ,
	GOTO	$+9		;ÏÐÎÏÓÑÒÈÌ ÑÌÅÍÓ ÈÍÄÈÊÀÖÈÈ.
	CALL	PAUZ		;
	BTFSS	PORTC,YCT	;ÆÄÅÌ ÎÒÏÓÑÊÀÍÈß ÊÍÎÏÊÈ.
	GOTO	$-2		;
	BTFSC	FLAG,0		;ÑÌÅÍÈÌ ÈÍÄÈÊÀÖÈÞ ÍÀ ÏÐÎÒÈÂÎÏÎËÎÆÍÓÞ.
	GOTO	$+3		;
	BSF	FLAG,0		;ÈÍÄÈÊÀÖÈß ÐÅÂÅÐÑÈÂÍÎÃÎ Ñ×ÅÒÀ.
	GOTO	$+2		;
	BCF	FLAG,0		;ÈÍÄÈÊÀÖÈß ÏÐßÌÎÃÎ Ñ×ÅÒÀ.
	BTFSC	PORTC,SBR	;ÅÑËÈ ÍÅÒ ÑÒÎÏÀ,
	GOTO	$-.11		;ÏÐÎÂÅÐÈÌ ÊÍÎÏÊÓ ÑÌÅÍÛ ÈÍÄÈÊÀÖÈÈ.
	CALL	PAUZ		;
	BTFSS	PORTC,SBR	;ÆÄÅÌ ÎÒÏÓÑÊÀÍÈß ÊÍÎÏÊÈ.
	GOTO	$-4		;
	BCF	FLAG,1		;ÑÁÐÎÑ ÐÀÁÎÒÛ.
	BCF	FLAG,6		;ÂÛÊËÞ×ÈÌ ÐÀÂÅÍÑÒÂÎ.
	BSF	PORTA,ZY	;ÂÛÊËÞ×ÈÌ ÑÈÃÍÀË.
	CLRF	ZPTI		;ÇÀÏßÒÀß Â ÍÓËÅÂÎÉ ÐÀÇÐßÄ.
	BCF	PORTC,CUL	;ÂÛÊËÞ×ÈÌ ÍÀÃÐÓÇÊÓ.
	GOTO	ZDEM		;ÆÄÅÌ ÄÀËÜÍÅÉØÈÕ ÄÅÉÑÒÂÈÉ.
PAUZ
        MOVLW   .255		;ÌÎÆÍÎ ÏÎÄÁÈÐÀÒÜ ÇÍÀ×ÅÍÈÅ ÏÀÓÇÛ.
        ADDLW   -1		;ÏÀÓÇÀ = ×ÈÑËÎ Õ 4 ÌÊÑ.
        BTFSS   STATUS,2	;
        GOTO    $-2		;ÏÎÂÒÎÐÈÌ.
        RETURN			; 
;========================================
	END
;========================================

