	 list      p=PIC16F873A
     #include  P16F873A.inc ;	; 16.000 MHz
	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON& _HS_OSC  &_LVP_OFF &_CPD_OFF
	errorlevel -302

Wait_GLCD	macro
	nop
	btfsc	GLCD_USE
	goto	$-2
	bsf	GLCD_USE
	endm

Free_GLCD	macro
	bcf	GLCD_USE
	endm

GClk_4094 	macro
	bsf 	GLCD_Clock			;Такт за местене на 4094
	nop
	nop
	bcf 	GLCD_Clock
	endm

#define	port_to		Modes,0	;ако е 0 => LCD,   ако е 1 => клавиатури
#define CCP_Mode	Modes,1	;ако е 0 =>CCP_0	, ако е 1 =>CCP_1
#define	ADC_Done	Modes,2	;ADC е било стартирано и завършило
#define KB_Work	Modes,3	;указател дали клавиатурата е заела PORTB
#define	show_fr		Modes,4

#define _4051_a		PORTA,2 ; 4051	A		0		1		0		1
#define _4051_b		PORTA,4 ; 4051	B		0		0		1		1
#define _4051_c		PORTA,5 ; 4051	C		0		0		1		1

#define LCD_Data	PORTB,0
#define	LCD_Clock	PORTB,1
; #define	LCD_RS	PORTB,2	;R/S  - Дисплея
#define LCD_E	 	PORTB,3	; Enable   - Дисплея 							4

#define KB1		PORTB,4
#define KB2		PORTB,5

#define	SinchC		PORTC,3	;синхро сигнал за осцилограф

;за работа с графическия дисплей
#define	GLCD_CS1	glcd_comm,0
#define	GLCD_CS2	glcd_comm,1
#define	GLCD_RW	glcd_comm,2
#define	GLCD_RS	glcd_comm,3
#define	GLCD_DIG	glcd_comm,4
#define	GLCD_USE	glcd_comm,5
;#define	GLCD_DIG	glcd_comm,5
#define  GLCD_E	PORTB,3	; Enable   - Дисплея 							4
#define  GLCD_Data	PORTB,0	;4094 Data
#define	GLCD_Clock	PORTB,1	;4094 Clk
#define	TX_Enable	PORTB,2	;пускане на преобразувателя на 12V

; --------------------------------------------------
	CBLOCK	0x7A
	W_TEMP		;storage for WREG during interrupt
	STATUS_TEMP		;storage for STATUS during interrupt
	PCLATH_TEMP		;storage for PCLATH during interrupt
	FSR_TEMP		;storage for FSR during interrupt
	Modes	
	glcd_comm_TEMP	;запазване на условията за работа на дисплея	
	endc		;0x7F

	CBLOCK 0x20
	del0		;
	del1		; за Delay
	del2		;

	An_Entry
	ADC_Cnt	;указател за АЦП-то (кое преобразува 4051)
	An_Val :8	;буфер за стойностите от потенциометрите
			; 6 байта за потенциометрите  7 и 8 за напрежението на батериите
	An_Val_Cor:8	;буфер за корекции
	
; променливи за работа с клавиатурата
	Key_Buf_D	;натиснат е клавиш за дискретна команда 
	Key_Buf_A	;натиснат е клавиш за аналогова команда
	Key_Buf_C	;натиснат е клавиш за команда +,-,S
	Key_pass	;брояч за процедурата за сканиране на клавиатурата
	tmp_buf_D	;буфер - използва се при сканирането
	tmp_buf_A	;буфер - използва се при сканирането
	tmp_buf_C	;буфер - използва се при сканирането
	tmp_rlf		;флаг  - използва се при сканирането за да местим една 0 (1)
	tmp_kb		;за да се знае къде Key_Buf_D,Key_Buf_A,Key_Buf_C ще се записва
;	BT		;запазване състочнието на порт В
;	CKT		;брояч на минаванията през процедурата	
;	KT		;междинна променлива
;	KTP		;Резултат - натиснат клавиш
;дискретни команди
	
;	CKTD		;брояч на минаванията през процедурата
;	BTD		;
;	KTD		;еждинна променлива
;	KTPD		;Резултат - натиснат клавиш
;	Key_Val	;буфер за стойностите от дискретните ключове по степените на 2	
;край клавиатура

	Char_to_LCD_Len
	FR_Active	;показва кой фрейм е активен за момента. Установява се в зависиост
			;от клавиатурата в KbdProc
	conv_FF_Val:2  ;буфер използван за преобразуване на HEX (8 бита) в 2 char
	CCP_Buf:2	;буфер за изчисляване на времената на CCP
	ic		;брояч за обработка в CCP
	itc		;временна променлива за обработка в CCP
	ptf		; временна променлива
;	Fr_Main0_Buff:.20		;буфер за Fr_Main 1 ред
;	Fr_Main1_Buff:.20		;буфер за Fr_Main 2 ред
;	lcd_char
	lcd_clk
	KVt		;променлива за Get_D
	KVc		;променлива за брояча на Get_D
; -----------------------------------
	glcd_comm	;за работата на графичния дисплей    RS,R/W, CS1,CS2
	glcd_save_comm	;за работата на графичния дисплей    RS,R/W, CS1,CS2
	glcd_col	; на коя колона ще се извежда символа
	glcd_char	;
	glcd_offset	;офсет на масива за зареждане от масивите
	glcd_high	;старша част на масива за зареждане от масивите
	glcd_tmp	;временен брояч за това на коя позиция работим
	glcd_kvt
	glcd_kvc
	glcd_itc		;в коя страница работим
	glcd_pass	;временна променлива
	eed
	eec		;0x71
	tt1:2
;	st
; ccp_tmp:2

; остават .8 байта
	endc	

;Алгоритъм:
;Зарежда се състоянието на аналоговите входове в масива An_Val 
;подготвяме CCP_Buf със стойностите за следващия импулс
;стартираме (прехвърляме в CCPR) и чакаме на прекъсване с падащ или възходящ сигнал
;аналоговата стойност се умножава по 3 и сумира с 0х300 +/- кор
;в приемника се изважда 0х100 и се предава на машинките

	org 0x0000
start 
	nop 
	goto main
	nop
	nop
  
	org 0x0004
	goto	interrupt
	

main 
	bsf		INTCON,GIE	;enable interrupt's
	bsf		INTCON,PEIE	;enable interrupt's
	bsf	    	STATUS, RP0		;bank 1

	movlw		b'00001011'	;изходи за 4051
	movwf		TRISA
	movlw		b'11110000'	;установяване на входовете за управление на LCD и клавиатура
	movwf		TRISB
	movlw		b'10000011'	;установяване на входовете
	movwf		TRISC
	movlw		b'00000101'	;всички входове, ляво подравнено, clock = Fosc/16
	movwf		ADCON1	;AN0,AN1 an inputs, Vref = AN3
;	clrf		PIE1
	movlw   	b'00000111'
    	movwf   	CMCON        ; компараторите - изключени
;	movlw   	0x4b	; 300 uS delay --
	movlw   	0x4b	; 300 uS delay --
 movlw   	0xff	; 1 mS delay --
    	movwf   	PR2        ; подготовка за интеруп за за пускане на АЦП-то

	bcf		OPTION_REG,7		;включване на pull_up
	bcf		STATUS,RP0	;bank 0
	movlw   	b'00000010'
    	movwf   	T2CON        ; TMR2-Off - Fosc/4, prescale 16
	movlw   	b'00110000'
    	movwf   	T1CON        ; TMR1 - Fosc/4, prescale 8
	movlw		b'01000001'	;ADC включено
	movwf		ADCON0	;AN0 inputs,  clock = Fosc/16
	clrf		PIR1
;	bcf		port_to		; портовете са настроени за работа с LCD
	clrf		An_Entry	;вход 0 от 4051
;	bsf		PORTC,4
;	bsf		PORTC,5	;установяваме портовете за клавиатурата в 1
;	call 		lcd_init
	bcf		SinchC		;нулиране на синхро импулса
	bsf		TX_Enable	;стопиране на преобразувателя на 12V LM2731

	bcf	ADC_Done
; goto test_start
 	bcf	GLCD_E	;Enable GLCD
	call 	GLCD_Init
	call 	GLCD_Off
	call 	fr_signal
	call	GLCD_On

	call		delay_2s	;задържаме приветствието 2 секунди
	call		delay_2s	;задържаме приветствието 2 секунди


;	goto	end_test_start 
;	incf	ttt,f
;	call	Scan_KB

test_start
;	clrf	ic
;	movf	ic,w
;	btfss	STATUS,Z
;	nop
;	incf	ic,f
;	movf	ic,w
;	btfss	STATUS,Z
;	nop


end_test_start 

;предварително превъртане на АЦП-то

	decf		An_Entry,f
prev_main_loop
; тук трябва да се прочетат корекциите от EEPROM и да се сканират потенциометрите
	call	ReadEP	;прочитаме корекциите от EEPROM
	incf		An_Entry,f
;goto	main_loop
	call		to_4051
	call 		delay_300uS 	;време за установяване на заряда на капацитете на ADC-to
	bsf		ADCON0,GO	;стартираме ADC
	btfsc		ADCON0,GO
	goto 		$-1		;изчакване за завършване на преобразуването

	call		Save_AN	;запазва аналогова променлива в буфера

;	movf		An_Entry,w
;	sublw		0x05		;имаме четене на 6 аналогови входа
;	btfss		STATUS,Z
	btfss		An_Entry,3	;имаме четене на 8 аналогови входа
	goto		prev_main_loop+1
	clrf		An_Entry

	movlw	6
	call	GLCD_page_CLS	;изчистване на стр 6
	movlw  7
	call	GLCD_page_CLS	;изчистване на стр 7
;	call	rect_batt
	call	ant_off

;	clrf	CCP_Tot
;	clrf	CCP_Tot+1
 clrf	ADC_Cnt
	bcf	PIR1,ADIF
	bsf	T2CON,TMR2ON	;ще чакаме на interrupt 300uS 

	bsf	    	STATUS, RP0		;bank 1
	bsf		PIE1,ADIE	;enable interrupt ADC
	bsf		PIE1,TMR2IE	;enable interrupt TMR2 to PR2
	bsf		PIE1,CCP1IE	;enable interrupt CCP1
	bcf	    	STATUS, RP0		;bank 0

	clrf		Key_Buf_D	;изчистваме дискретните команди

;започваме със синхро импулс   4.992 mS
	movlw		0x09
	movwf		CCP_Buf
	movlw		0xC0
	movwf		CCP_Buf+1
;	bsf	CCP_Mode	;next mode = clear output
	clrf	ic	;започваме от началото
	bsf	PIR1,CCP1IF	;предизвикваме сработване на прекъсване


; nop
 ;clrf	An_Entry
 ;goto prev_main_loop	-1
main_loop	
	call	Scan_KB

	movf	Key_Buf_A,w
	andlw	0x21	; дали са натиснати клавиши 6 и 1
	xorlw	0x21
	btfss	STATUS,Z
	goto	main_next
;	bcf	INTCON,GIE	;disable interrupt's
	bsf	glcd_comm,7	;временно
	btfss	TX_Enable
	bcf	glcd_comm,7	;временно
	btfss	glcd_comm,7
	bsf	TX_Enable
	btfsc	glcd_comm,7
	bcf	TX_Enable
;	movf	PORTB,w
;	movlw	4
;	xorwf	PORTB,f
	btfss	TX_Enable
	call 	ant_on
	btfsc	TX_Enable
	call 	ant_off
;	bsf	INTCON,GIE	;enable interrupt's
main_next

	bsf		GLCD_RS
	bcf		GLCD_RW
	incf		glcd_pass,w
	andlw		0x07
	movwf		glcd_pass
;	btfsc		glcd_pass,4
;	goto		Save_AN_Exit
	movf		glcd_pass,w
	sublw		0x05
	btfsc		STATUS,C
	call		rect_to_page
	movf		glcd_pass,w
	sublw		0x05
	btfss		STATUS,C
	call		fill_batt
;test
	movlw	6
	call	GLCD_page
	incf	ic,w
	bsf		GLCD_CS2
	bcf		GLCD_CS1
	call	GLCD_col
	bsf		GLCD_RS
	bcf		GLCD_RW
	bsf		GLCD_CS2
	bcf		GLCD_CS1
	movf	ic,w
	xorlw	0x01
	btfss	STATUS,Z
	goto	tt1skip
	call 	to_gldc-1
	movlw	6
	call	GLCD_page
	bsf		GLCD_CS1
	bcf		GLCD_CS2
	movlw	0
	call	GLCD_col
	movlw	0xff
	call 	to_gldc-1
	movlw	0xa0
	call 	to_gldc-1

	movlw	0x0
	call 	to_gldc-1
	movf	tt1,w
	call 	to_gldc-1
	movf	tt1+1,w
	call 	to_gldc-1
tt1skip
;	sublw	0x05
;	btfss	STATUS,Z
;	goto	skip_main_show
;	btfss	CCP_Mode	;стартирания пас 
;	goto	do_discret		;отиваме на цифрова команда

;	call 	Fr_Main_Disc
;	call	Fr_Main_AN
; bcf	INTCON,GIE	;disable interrupt's
;	btfss	show_fr	
;	call	Fr_Main0_Show
;	btfsc	show_fr	
;	call	Fr_Main1_Show
;	movlw	b'00010000'
;	xorwf	Modes,f		;инвертираме show_fr	
;	bsf	INTCON,GIE	;enable interrupt's
;skip_main_show
;	btfss		ADCON0,GO	; ако преобразуването е завършило 
;	call		Save_AN	;- записваме аналоговия резултат
;	call		kb_get		;
;	call	rect_batt
	goto		main_loop

;test procedure CCP interrupt
cix

;	return


;четене на дискретна стойност от Key_Buf_D на позиция  An_Entry
;може да се проверява и STATUS,C
Get_D
	movf	An_Entry,w
	movwf	KVc
	movf	Key_Buf_D,w
	movwf	KVt
	incf	KVc,f
Get_D_loop
	rrf	KVt,f
	decfsz KVc,f
	goto	Get_D_loop
	movf	STATUS,w
	andlw	0x01
	return


;процедури за работа с аналоговите променливи
;
interrupt
Gie_clear
	bcf	INTCON, GIE		; turn off interupts
	btfsc	INTCON, GIE		; да сме сигурни, че сме ги спрели
	goto	Gie_clear
	movwf	W_TEMP
	swapf	STATUS,w
	movwf	STATUS_TEMP
	clrf	STATUS
	movf 	PCLATH,w	;save PCLath
	movwf 	PCLATH_TEMP	
	clrf 	PCLATH	;assume that this ISR is in page 0
	movf 	FSR,w
	movwf 	FSR_TEMP
	movf 	glcd_comm,w
	movwf 	glcd_comm_TEMP


	bcf	STATUS,RP0	
	bcf	STATUS,RP1	

inerrupt_ADC
;завършило е последното преобразуване, подготвяме новия вход и пускаме изчакване на 300uS
	btfss	PIR1,ADIF	;от АЦП-то?
	goto	inerrupt_TMR2
	bcf	PIR1,ADIF
	movf	ADC_Cnt,w
	call	Save_AN+1
	incf	ADC_Cnt,f
	movf	ADC_Cnt,w
	andlw	0x07
	movwf	ADC_Cnt
	bcf	_4051_a
	btfsc	ADC_Cnt,0
	bsf	_4051_a
	bcf	_4051_b
	btfsc	ADC_Cnt,1
	bsf	_4051_b
	bcf	_4051_c
	btfsc	ADC_Cnt,2
	bsf	_4051_c
	incf	An_Entry,w
	andlw	0x07
	movwf	An_Entry
;	btfss	T2CON,TMR2ON
	clrf	TMR2
	bsf	T2CON,TMR2ON	;ще чакаме на interrupt 300uS 
	goto	inerrupt_done	

inerrupt_TMR2
	btfss	PIR1,TMR2IF	;от TMR2?
	goto	inerrupt_CCP
	bcf	PIR1,TMR2IF
	bsf	ADCON0,GO	;start ADC
	bcf	T2CON,TMR2ON	;спиране на TMR2
	goto	inerrupt_done	

inerrupt_CCP			
	btfss	PIR1,CCP1IF	;от  CCP1?
	goto	inerrupt_done		; не е от CCP1
	bcf	PIR1,CCP1IF		;следващия път ще си го пуснем
; call	WriteEE

	bcf		T1CON,TMR1ON  ;stop timer
 movf	ic,w
 xorlw	0x01
 btfss	STATUS,Z	;ако ne е нула	
 goto	tt1loop
 movf	TMR1L,w
 movwf	 tt1+1
 movf	TMR1H,w
 movwf	 tt1
tt1loop
	movf		CCP_Buf+1,w
	movwf		CCPR1L	
	movf		CCP_Buf,w
	movwf		CCPR1H	;подготвяме CCP1 за старт
	clrf		TMR1L
	clrf		TMR1H
	clrf		CCP1CON 
	movlw   	b'00001001'	;clear otput on match  
	btfsc		ic,0		;стартирания пас 
	movlw   	b'00001000'	;set otput on match  
  	bcf		PIR1,CCP1IF
  	movwf   	CCP1CON        ; Compare mode, set output on match
	bsf		T1CON,TMR1ON  ;start timer
	movf	ic,w
	sublw	0x0d		;ако не е 13
	btfss	STATUS,Z
	goto 	skip_SI		; пропусни сиххро сигнала
	bsf	SinchC		;=13  - синхро сигнал за осцилограф
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	bcf	SinchC		;синхро сигнал за осцилограф
skip_SI
;подготовка на следващия пас
	incf	ic,f	;следващ индекс
	movlw	0x0E
	subwf	ic,w	;ако е 0х0Е	.14
	btfsc	STATUS,Z
	clrf	ic	;нулирай брояча за следващия пас

	bcf	STATUS,C
	rrf	ic,w
	movwf	itc	;в itc ic/2

	btfsc		ic,0	;при нечетно => пауза и цифрови
	goto		next_dig	;ще подготвяме цифрова команда

next_an		;четно - ще подготвяме аналогова команда или синхро импулс
	movf	ic,w
	btfss	STATUS,Z	;ако е 0
	goto	get_an
				;ще изпълняваме синхро импулс
	movlw		0x09
	movwf		CCP_Buf
	movlw		0xC0
	movwf		CCP_Buf+1
	goto inerrupt_done
get_an			; не е 0 аналогова стойност
	decf	itc,w
	movwf	FSR
	movlw	An_Val
	addwf	FSR,f
	movf	INDF,w		;вземаме си аналоговата стойност
	clrf	CCP_Buf
	movwf	CCP_Buf+1
	bcf	STATUS,C
	rlf	CCP_Buf+1,f
	rlf	CCP_Buf,f	;ADC*2
	addwf	CCP_Buf+1,f
	btfsc	STATUS,C
	incf	CCP_Buf,f	;ADC*3
;	bcf	STATUS,C
;	rlf	CCP_Buf+1,f
;	rlf	CCP_Buf,f	;ADC*2
;тук ще трябва да се прочетат и обработят корекциите
 goto skip_kor
	movf 	An_Entry,w
	movwf	FSR
	movlw	An_Val_Cor
	addwf	FSR,f
	movf	INDF,w		; четене на стойностите от корегиращите коефициенти
;	movwf	KVc
	movwf	KVt		;запазваме корекцията
	btfss	KVt,7		; ако е 1
	goto	Cor_Sum
;корекцията се изважда
	bcf	KVt,7		;премахваме знаковия бит
	movf	KVt,w
	subwf	CCP_Buf+1,f
	btfss	STATUS,C
	decf	CCP_Buf,f	
	goto	skip_kor
Cor_Sum
;корекцията се сумира
	movf	KVt,w
	addwf	CCP_Buf+1,f
	btfsc	STATUS,C
	incf	CCP_Buf,f

skip_kor
	movlw	0x03		;0x300
	addwf	CCP_Buf,f	;=768+2*ADC+/-127
	goto inerrupt_done
next_dig	;ще подготвяме цифрова команда или синхро пауза
	movf	ic,w
	xorlw	0x01
	btfss	STATUS,Z
	goto	get_dig
;ще изпълняваме синхро пауза
	movlw		0x07
	movwf		CCP_Buf
	movlw		0xC0
	movwf		CCP_Buf+1
	goto inerrupt_done
get_dig
	movlw		0x01		;
	movwf		CCP_Buf	;
	movlw		0x80		;
	movwf		CCP_Buf+1	;Стойности за 0
;	decf	itc,w
;	movwf	KVc
; movlw 0x26
; movwf Key_Buf_D
	movf	Key_Buf_D,w
	movwf	KVt
	movf	itc,w
	movwf	KVc
Di_loop
	bcf	STATUS,C
	rrf	KVt,f
	decfsz 	KVc,f
	goto	Di_loop

	clrw
	btfss	STATUS,C	; тук имаме информация за цифровия вход
	goto	inerrupt_done
	bcf	STATUS,C
	rlf	CCP_Buf+1,f	;единица е
	rlf	CCP_Buf,f	;умножаваме по две
;	goto inerrupt_done

inerrupt_done
	movf 	glcd_comm_TEMP,w
	movwf 	glcd_comm
	movf 	FSR_TEMP,w
	movwf 	FSR
	movf 	PCLATH_TEMP,w
	movwf	 PCLATH
	swapf	STATUS_TEMP,w
	movwf	STATUS
	swapf	W_TEMP,f
	swapf	W_TEMP,w
	bsf	INTCON,GIE	;enable interrupt's
	retfie

;край на interrupt


; четене на стойностите от корегиращите коефициенти
Get_AN_Cor
	movf 	An_Entry,w
	movwf	FSR
	movlw	An_Val_Cor
	addwf	FSR,f
	movf	INDF,w
	return

; четене на стойностите от АЦП
Get_AN	
	movf 	An_Entry,w
	movwf	FSR
	movlw	An_Val
	addwf	FSR,f
	movf	INDF,w
	return


;запис на стойностите от АЦП
Save_AN
;	btfsc		ADCON0,GO
;	return
	movf		An_Entry,w
	movwf		FSR
	movlw		An_Val
	addwf		FSR,f
	movf		ADRESH,w		; тук се взема стойността от ADC
	movwf		INDF	;и се записва на позиция An_Val + отместване An_Entry или ADC_Cnt
Save_AN_Exit
	return

;сумира минатото време за да се изчисли правилното закъснение
CCP_Tot_Add
;	bcf		STATUS,C
;	movf		CCPR1L,w
;	addwf		CCP_Tot+1,f
;	btfsc		STATUS,C
;	incf		CCP_Tot,f
;	movf		CCPR1H,w
;	addwf		CCP_Tot,f
	return

;процедури за управление на CCP-то

;процедури за работа с клавиатурата
port_to_kb	;превлючва порт В за работа с клавиатурата
;	return

kb_portc_CKT	;установява PORTC:4,5 в зависимост от броячите
;	return


kb_portc_CKTD		;установява PORTC:4,5 в зависимост от броячите
;	return

;трябва да е задържан натиснат поне 15 минавания
kb_get
;	return

;
; в зависимост от натиснатото => обработка
KbdProc
;	return

KbDiscProc
	return

Scan_KB		;за промяна 
;записваме 11111110 в 4094
;  bcf		INTCON,GIE	;disable interrupt's
	bsf	KB_Work	;клавиатурата е заела PORTB	- в момвнта не се използва
	movlw	0x07
	movwf	Key_pass	; 7
	bcf	LCD_Clock
	bsf	LCD_Data	;1
Scan_KB_1_Loop
	GClk_4094	
	decfsz 	Key_pass,f
	goto 	Scan_KB_1_Loop
	bcf	LCD_Data	; и една 0
	nop
	GClk_4094	;= 0xFE
;
	clrf	tmp_buf_D	;буфер  - използва се при сканирането
	clrf	tmp_buf_A	;буфер  - използва се при сканирането
	clrf	tmp_buf_C	;буфер  - използва се при сканирането
	clrf	tmp_rlf		;флаг  - използва се при сканирането
	incf	tmp_rlf	,f	; в буфера 00000001
	clrf	tmp_kb		;за да се знае къде tmp_Buf_D,tmp_Buf_A,tmp_Buf_C ще се записва
	;сега в tmp_Buf_D
	movlw	0x08
	movwf	Key_pass
	bcf	LCD_Clock
	bsf	LCD_Data
Scan_KB_OR_Loop	;местим една 0 по 4094 и ако се появи на PORTB,4 или PORTB,5 записваме
	btfss	KB1		;PORTB,4
 	call	S4_KB_OR
	btfss	KB2		;PORTB,5
 	call	S5_KB_OR

	bcf	STATUS,C
	rlf	tmp_rlf	,f	; превъртаме си флага в 4094

	movf	Key_pass,w
	sublw	.6	
	btfsc	STATUS,Z
	call	Scan_KB_Reset
;	incf	tmp_kb,f	; ще записваме в друга променлива - tmp_buf_A
	movf	Key_pass,w
	sublw	.3	
	btfsc	STATUS,Z
	call	Scan_KB_Reset

	GClk_4094	;такт
	decfsz 	Key_pass,f
	goto 	Scan_KB_OR_Loop
;	goto	Scan_KB_done		
	
Scan_KB_done
	movf	tmp_buf_D,w
	movwf	Key_Buf_D
	movf	tmp_buf_A,w
	movwf	Key_Buf_A
	movf	tmp_buf_C,w
	movwf	Key_Buf_C
	bcf	KB_Work
	return

Scan_KB_Reset
	incf	tmp_kb,f	; ще записваме в друга променлива - tmp_buf_A,tmp_buf_D,tmp_buf_C
	movlw	0x01		;ресетваме си въртенето
	movwf	tmp_rlf
	return

S4_KB_OR
	movlw	tmp_buf_D
	movwf	FSR
	movf	tmp_kb,w
	addwf	FSR,f
	movf	tmp_rlf,w
	iorwf	INDF,f
	return	
	
S5_KB_OR
	movlw	tmp_buf_D
	movwf	FSR
	movf	tmp_kb,w
	addwf	FSR,f
	movf	tmp_rlf,w
	movwf	del2
	rlf	del2,f
	rlf	del2,f
	btfss	tmp_kb,1
	rlf	del2,f
	movf	del2,w
	iorwf	INDF,f
	return		

to_4051 		;установява входовете на 4051 
;след установяването трябва да има малко време за зареждане на кондензатора
	bcf	_4051_a
	btfsc	An_Entry,0
	bsf	_4051_a
	bcf	_4051_b
	btfsc	An_Entry,1
	bsf	_4051_b
	bcf	_4051_c
	btfsc	An_Entry,2
	bsf	_4051_c
	return
;край процедури за работа с клавиатурата


; процедури за работа с индикатора
port_to_lcd
;	btfss	port_to
;	goto	port_to_LCD_done
;	bcf	port_to		; флага за посока на порта
;	bsf	STATUS,RP0
;	movlw		b'11110000'	;установяване на входовете за управление на LCD
;	movwf		TRISB
;	bcf	STATUS,RP0
;port_to_LCD_done
	return

GLCD_Init
	bsf	GLCD_CS2
	bsf	GLCD_CS1
	bcf	GLCD_RS
	bcf	GLCD_RW

	call	GLCD_Off

	movlw	0xC0
	movwf	glcd_char
	call	to_gldc			;начален адрес 0  за скролинга

	movlw	0
	call	GLCD_col	; адрес Y = 0 

	movlw 0		; адрес X = 0 
	
GLCD_page			; във W се съдържа номера на страницата 0 - 7
	iorlw	0xb8			;добавяме командата
	andlw	0xbf
	movwf	glcd_char
	swapf	glcd_comm,w
	movwf	glcd_save_comm	;save old cimm status
	bcf	GLCD_RS
	bcf	GLCD_RW
	call	to_gldc			;  
	swapf	glcd_save_comm,w	;restore comm status
	movwf	glcd_comm
	return

GLCD_col			; във W се съдържа номера на колоната 0 - 63
	iorlw	0x40			;добавяме командата
	movwf	glcd_char
	swapf	glcd_comm,w
	movwf	glcd_save_comm	;save old cimm status
	bcf	GLCD_RS
	bcf	GLCD_RW
	call	to_gldc	
	swapf	glcd_save_comm,w	;restore comm status
	movwf	glcd_comm
	return

GLCD_On
	movlw	0x3F
	goto	GLCD_Off+1
GLCD_Off
	movlw	0x3E
	bsf	GLCD_CS2
	bsf	GLCD_CS1
	bcf	GLCD_RS
	bcf	GLCD_RW
	movwf	glcd_char
	call	to_gldc			;GLCD   Off/On
	return

GLCD_page_CLS
	bsf	GLCD_CS2
	bsf	GLCD_CS1
	call	GLCD_page
	movlw	0
;	bsf	GLCD_CS2
;	bsf	GLCD_CS1
	call	GLCD_col
	movlw	0x40
	movwf	glcd_pass
	movlw	0x0
	movwf	glcd_char
	bsf	GLCD_RS	;
	bcf	GLCD_RW	;

GLCD_CLS_Loop		
	call	to_gldc
	decfsz	glcd_pass,f
	goto 	GLCD_CLS_Loop
	return


ant_on
	Wait_GLCD
	bcf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	bsf	GLCD_RS	;
	bcf	GLCD_RW	;
	movlw	6
	call	GLCD_page	;антената се рисува на page 6 и 7
	movlw	.53
	call	GLCD_col	;антената се рисува на колона 53
	movlw	0x08
	call 	to_gldc-1
	movlw	0x10
	call 	to_gldc-1
	movlw	0x20 
	call 	to_gldc-1
	movlw	0x40
	call 	to_gldc-1
	movlw	0x84
	call 	to_gldc-1
	movlw	0xfc
	call 	to_gldc-1
	movlw 	0x84
	call 	to_gldc-1
	movlw	0x40
	call 	to_gldc-1
	movlw	0x20
	call 	to_gldc-1
	movlw	0x10
	call 	to_gldc-1
	movlw	0x08
	call 	to_gldc-1
	movlw	7
	call	GLCD_page	;антената се рисува на page 6 и 7
	movlw	.53
	call	GLCD_col	;антената се рисува на колона 53
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x81
	call 	to_gldc-1
	movlw	0xff
	call 	to_gldc-1
	movlw 	0x81
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	Free_GLCD
	return

ant_off
	Wait_GLCD
	bcf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	bsf	GLCD_RS	;
	bcf	GLCD_RW	;
	movlw	6
	call	GLCD_page	;антената се рисува на page 6 и 7
	movlw	.53
	call	GLCD_col	;антената се рисува на колона 53
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x80
	call 	to_gldc-1
	movlw	0xe0
	call 	to_gldc-1
	movlw 	0x80
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	0x00
	call 	to_gldc-1
	movlw	7
	call	GLCD_page	;антената се рисува на page 6 и 7
	movlw	.53
	call	GLCD_col	;антената се рисува на колона 53
	movlw	0x10
	call 	to_gldc-1
	movlw	0x08
	call 	to_gldc-1
	movlw	0x04
	call 	to_gldc-1
	movlw	0x02
	call 	to_gldc-1
	movlw	0x81
	call 	to_gldc-1
	movlw	0xff
	call 	to_gldc-1
	movlw 	0x81
	call 	to_gldc-1
	movlw	0x02
	call 	to_gldc-1
	movlw	0x04
	call 	to_gldc-1
	movlw	0x08
	call 	to_gldc-1
	movlw	0x10
	call 	to_gldc-1
	Free_GLCD
	return

rect_batt		;изобразява батерия на екрана в стр 7 кол 0
			; за запълване да се използва стр 7 кол 3
	btfsc	GLCD_USE
	goto	rect_batt_exit
	bsf	GLCD_USE

	bsf	GLCD_CS1	;0-63
	bcf	GLCD_CS2	;64-127
	movlw	7
	call	GLCD_page	;батерията се рисува на page 7
	movlw	0
	btfss	An_Entry,0
	addlw	.20
	call	GLCD_col	;и колона 0
	movlw	0
	call 	to_gldc-1
	movlw	0x1c		;пъпка
	call 	to_gldc-1
	movlw	0x7f		;вертикална черта
	call 	to_gldc-1
	movlw	.15
	movwf	glcd_col	;width = 16
rect_batt_loop
	movlw	0x41
	call 	to_gldc-1	;хоризонталните черти
	decfsz  glcd_col,f
	goto	rect_batt_loop	
	movlw	0x7f		;вертикална черта
	call 	to_gldc-1
	Free_GLCD
rect_batt_exit
	return

fill_batt		;изобразява батерия на екрана в стр 7 кол 0 или 20
		; и запълването й в съответствия с An_Val+6 и An_Val+7
	btfsc	GLCD_USE
	goto	fill_batt_exit
	bsf	GLCD_USE

	bsf	GLCD_CS1	;0-63
	bcf	GLCD_CS2	;64-127
	movlw	7
	call	GLCD_page	;батерията се рисува на page 7
	movlw	0
	btfss	glcd_pass,0
	addlw	.20
	call	GLCD_col	;и колона 0 или 20
	movlw	0
	call 	to_gldc-1
	movlw	0x1c		;пъпка
	call 	to_gldc-1
	movlw	0x7f		;вертикална черта
	call 	to_gldc-1
	swapf	An_Val+6,w
	btfss	glcd_pass,0
	swapf	An_Val+7,w
	xorlw	0x0f		;инвертираме
	andlw	0x0f		;маскираме старшия полубайт
	movwf	tmp_kb	
	movlw	.15
	movwf	glcd_col	;width = 15
fill_batt_loop
	movlw	0x41
	btfsc	tmp_kb	,7
	iorlw	0x7f
	call 	to_gldc-1	;запълване плюс черти
	decf	tmp_kb	,f
	decfsz  glcd_col,f
	goto	fill_batt_loop	
	movlw	0x7f		;вертикална черта
	call 	to_gldc-1
	Free_GLCD
fill_batt_exit
	return

rect_to_page
	btfsc	GLCD_USE
	goto	rect_to_page_exit
	bsf	GLCD_USE
	movf		glcd_pass,w
	movwf	glcd_tmp		;запазваме страницата
	movwf	glcd_itc
	movlw	An_Val
	addwf	glcd_tmp,w
	movwf	FSR
	movf	INDF,w
	movwf	eed		;извличаме инфо от An_Val [x]
	movf	glcd_tmp,w
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	call	GLCD_page
	bcf	STATUS,C
	rrf	eed,w
	movwf	eec	;An_Val /2
	bcf	STATUS,C
	rrf	eed,f
	bcf	STATUS,C
	rrf	eed,f
	bcf	STATUS,C
	rrf	eed,w	;An_Val /8
	subwf	eec,f	;An_Val /2 - An_Val /8

;	bsf	GLCD_CS1	;0-63
	movlw	0
	call	GLCD_col	;

	bsf	GLCD_CS1	;0-63
	bcf	GLCD_CS2	;64-127
	movlw	8
	movwf	glcd_col
sdsd0
	movlw	0
	call 	to_gldc-1
	decfsz  glcd_col,f
	goto	sdsd0

	movlw	0x7f		;вертикална черта
	call 	to_gldc-1

	clrf	glcd_tmp	;изчистваме временна променлива
	movlw	.55
	movwf	glcd_col
sdsd
	movlw	0x41
	movwf	glcd_char
	decf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x1c
	iorwf	glcd_char,f
;	movwf	glcd_char
	incf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x1c
	iorwf	glcd_char,f
	movf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x7f
	iorwf	glcd_char,w
	call 	to_gldc-1	;хоризонталните черти
	incf	glcd_tmp,f	;увеличаваме временната променлива	
	decfsz  glcd_col,f
	goto	sdsd
	
	bcf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	.41
	movwf	glcd_col
sdsd1
	movlw	0x41
	movwf	glcd_char
	decf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x1c
	iorwf	glcd_char,f
;	movwf	glcd_char
	incf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x1c
	iorwf	glcd_char,f
	movf	eec,w
	subwf	glcd_tmp,w
	movlw	0
	btfsc	STATUS,Z
	movlw	0x7f
	iorwf	glcd_char,w
	call 	to_gldc-1	;хоризонталните черти
	incf	glcd_tmp,f	;увеличаваме временната променлива	
	decfsz  glcd_col,f
	goto	sdsd1

	movlw	0x7f
	call 	to_gldc-1
	
	movlw	0
	call 	to_gldc-1
	movlw	0
	call 	to_gldc-1
	movlw	0
	call 	to_gldc-1
	movlw	0
	call 	to_gldc-1
;от тук се извежда бокса за цифровата команда
	movlw	0x7f
	call 	to_gldc-1

	movf	Key_Buf_D,w	;от тук се взема информацията за цифровата клавиатура
	movwf	glcd_kvt
	incf	glcd_itc,w
	movwf	glcd_kvc
	bcf	GLCD_DIG
Di_loop_rect
	bcf	STATUS,C
	rrf	glcd_kvt,f
	decfsz 	glcd_kvc,f
	goto	Di_loop_rect

	clrw
	btfsc	STATUS,C	; тук имаме информация за цифровия вход
	bsf	GLCD_DIG
;	goto	inerrupt_done
	bcf	STATUS,C
;	rlf	CCP_Buf+1,f
;	rlf	CCP_Buf,f

	movlw	6
	movwf	glcd_col
sdsd2
	movlw	0x41
	btfsc	GLCD_DIG
	iorlw	0x7f
	call 	to_gldc-1	;хоризонталните черти
	decfsz  glcd_col,f
	goto	sdsd2

	movlw	0x7f
	call 	to_gldc-1
	movlw	.10
	movwf	glcd_col
sdsd3
	movlw	0
	call 	to_gldc-1	;празно
	decfsz  glcd_col,f
	goto	sdsd3
	Free_GLCD
rect_to_page_exit
	return

fr_signal	;извеждане на диспея началния екран
	movlw	high	lc__1
	movwf	glcd_high
	movlw	low lc__1
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	0
	call	GLCD_page
	call	load_glcd	;lc__1
	movlw	high	lc__2
	movwf	glcd_high
	movlw	low lc__2
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	1
	call	GLCD_page
	call	load_glcd	;lc__2
	movlw	high	lc__3
	movwf	glcd_high
	movlw	low lc__3
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	2
	call	GLCD_page
	call	load_glcd	;lc__3
	movlw	high	lc__4
	movwf	glcd_high
	movlw	low lc__4
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	3
	call	GLCD_page
	call	load_glcd	;lc__4
	movlw	high	lc__5
	movwf	glcd_high
	movlw	low lc__5
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	4
	call	GLCD_page
	call	load_glcd	;lc__5
	movlw	high	lc__6
	movwf	glcd_high
	movlw	low lc__6
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	5
	call	GLCD_page
	call	load_glcd	;lc__c
	movlw	high	lc__7
	movwf	glcd_high
	movlw	low lc__7
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	6
	call	GLCD_page
	call	load_glcd	;lc__7
	movlw	high	lc__8
	movwf	glcd_high
	movlw	low lc__8
	movwf glcd_offset
	bsf	GLCD_CS1	;0-63
	bsf	GLCD_CS2	;64-127
	movlw	0
	call	GLCD_col
	movlw	7
	call	GLCD_page
	call	load_glcd	;lc__8
	Free_GLCD
	return

load_glcd
	clrf	glcd_col
;	pageselw	$
	call	load_table
	movwf	glcd_char
	pageselw	$
;  тук се извиква подпрограмата за извеждане на дисплея	
	bsf	GLCD_RS
	bcf	GLCD_RW
	bsf	GLCD_CS1
	btfsc	glcd_col,6
	bcf	GLCD_CS1	;установяване на колоните 0-63

	bcf	GLCD_CS2
	btfsc	glcd_col,6
	bsf	GLCD_CS2	;установяване на колоните 64-127

	call 	to_gldc
	incf	glcd_col,f
	btfss	glcd_col,7		;четат се 128 бита
	goto	load_glcd+1
	Free_GLCD
	return
load_table		;няма явен Return. таблицата е от инструкции Retlw
	movf	glcd_high,w
	movwf	PCLATH
	movf	glcd_offset,w
	addwf	glcd_col,w
	movwf	PCL
;end  -  load_table

; структута на предаваното към AG12864
;1       1  
;1       0          9      8      7       6      5       4       3        2        1         0
;RS   R/W     D0    D1    D2    D3    D4     D5     D6     D7      CS1     CS2

;#define	GLCD_CS1	glcd_comm,0
;#define	GLCD_CS2	glcd_comm,1
;#define	GLCD_RW	glcd_comm,2
;#define	GLCD_RS	glcd_comm,3
;#define  GLCD_E	PORTB,3	; Enable   - Дисплея 							4
;#define  GLCD_Data	PORTB,0	;4094 Data
;#define	GLCD_Clock	PORTB,1	;4094 Clk
	movwf	glcd_char
to_gldc		;Ще се предава към GLCD
	bcf	GLCD_Data	;CS2
	btfsc 	GLCD_CS2
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;CS1
	btfsc 	GLCD_CS1
	bsf	GLCD_Data
	GClk_4094
;данни без loop
	bcf	GLCD_Data	;
	btfsc 	glcd_char,7	;дата 7
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,6	;дата 6
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,5	;дата 5
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,4	;дата 4
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,3	;дата 3
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,2	;дата 2
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,1	;дата 1
	bsf	GLCD_Data
	GClk_4094
	bcf	GLCD_Data	;
	btfsc 	glcd_char,0	;дата 0
	bsf	GLCD_Data
	GClk_4094
	
	bcf	GLCD_Data	;R/W
	btfsc 	GLCD_RW
	bsf	GLCD_Data
	GClk_4094

	bcf	GLCD_Data	;RS
	btfsc 	GLCD_RS
	bsf	GLCD_Data
	GClk_4094
	bsf	GLCD_E
	nop
	nop
	nop
	nop
	nop
	nop
	bcf	GLCD_E
	return



;край на процедурите за работа с индикатора






hexASC
	andlw	0x0f
	addlw	-.10
	btfsc	STATUS,DC
	addlw	'A'-'0'	-.10
	addlw	'0'+.10	
	return

conv_FF_
	movwf		del0	;запазване на стойността в междинна променлива
	swapf		del0,w
	call	hexASC
	movwf	conv_FF_Val
	movf		del0,w
	call	hexASC
	movwf	conv_FF_Val+1
; и извеждаме на дисплей
;	movf	conv_FF_Val,w
;	call	w_to_lcd
;	movf	conv_FF_Val+1,w
;	call	w_to_lcd
;	movlw   ' '
;	call	w_to_lcd
	return

;закъснения

;W милисекунди
delay_Xms	
	movwf	del2	
;	incf	del2
	nop
delay_Xms_loop
	movlw	0x1D
;	nop
;	nop
	call 	delay_1ms+1
	decfsz	del2,f
	goto 	delay_Xms_loop	
	nop
	return

;закъснение 1uS
delay_1ms 		
	movlw	0x1F
	nop
	movwf	del0
	movlw	0x04
	movwf	del1
Delay_1ms_loop
	decfsz	del0, f
	goto	$+2
	decfsz	del1, f
	goto	Delay_1ms_loop
	nop
	nop
	return

;закъснение 2 секунди
delay_2s
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	movlw	0xFF	;255 mS
	call	delay_Xms
	return	

delay_20uS
	movlw	0x1A
	movwf	del0
Delay_20uS_Loop
	decfsz	del0, f
	goto	Delay_20uS_Loop
	nop
	return


delay_50uS
			;199 cycles
	movlw	0x42
	movwf	del0
delay_50uS_loop
	decfsz	del0, f
	goto	delay_50uS_loop

		;1 cycle
	nop
	return

delay_150uS
			;598 cycles
	movlw	0xC7
	movwf	del0
Delay_150uS_0
	decfsz	del0, f
	goto	Delay_150uS_0

			;2 cycles
	return

delay_300uS
			;1998 cycles
	movlw	0xef
	movwf	del0
	movlw	0x01
	movwf	del1
Delay_300uS_loop
	decfsz	del0, f
	goto	$+2
	decfsz	del1, f
	goto	Delay_300uS_loop
	nop
	nop
	return

;край закъснения

;процедури за работа с EEPROM
ReadEP
	movlw 	.8
	movwf 	del0			; имаме 8 байта за прочитане
	movlw 	An_Val_Cor		; тук ще записваме
	movwf 	FSR
	movlw 	AN_Cor			;адреса на константата
	bsf 	STATUS,RP1
	bcf 	STATUS,RP0
	movlw	AN_Cor			;адреса на константата
	movwf 	EEADR
	decf	EEADR,f
ReadEP_loop
;	call 	ReadEEPROM
	bsf	STATUS,RP1
	incf	EEADR,f
	bsf	STATUS,RP0
	bcf	 EECON1, EEPGD	; Искане за четене EEPROM  
	bsf	 EECON1, RD	; Искане за четене EEPROM  
	nop     
	bcf	STATUS, RP0
	movf	EEDATA, W
	bcf		STATUS, RP1

	movwf 	INDF
	incf 	FSR,F
	decf 	del0,f
	btfsc 	STATUS,Z
	goto 	ReadEP_exit
;	bsf 	STATUS,RP0
;	incf 	EEADR,F
	goto 	ReadEP_loop
ReadEP_exit	
	bcf 	STATUS,RP0
	bcf	STATUS, RP1
	return

;	Четене на низ от EEPROM до 0x00  с изход дисплей
ReadWString	
;	bsf 	STATUS,RP1	;bank 2
;	movwf	EEADR
;ReadFString
;	call	ReadEEPROM
;	andlw	0xFF
;	btfsc	STATUS, Z
;	goto	ReadFString_exit
;	call	w_to_lcd
;	bsf	STATUS, RP1	;bank2
;	incf	EEADR, F
;	goto	ReadFString
;ReadFString_exit
;	bcf 	STATUS, RP0
;	return
;;	Четене от EEPROM
;ReadEEPROM	
;	bsf 	STATUS,RP0	;bank3
;	bsf	EECON1, RD	; Искане за четене EEPROM       
;	bcf 	STATUS,RP0	;bank2
;	movf	EEDATA, W
;	bcf	STATUS, RP1 	;bank 0
	return

;запис в EEPROM
WriteEE
	movf	eec,w
	sublw	.16
	btfsc	STATUS,Z
	goto	Write_exit
	movlw	.2	;2 байта
	movwf	eed
;	btfsc	Modes,3
;	goto	Write_exit
;	bsf	PORTB,0
	movlw	CCPR1L
	movwf	FSR		;source
	rlf	An_Entry,w	;*2
	btfss	CCP_Mode	;стартирания пас 
		addlw  .14
;	btfss	CCP_Mode	;стартирания пас 
;		addwf  An_Entry,w
	addlw	.23
	bsf	STATUS,RP1	;bank 2
;	movlw	0x00		;започваме от 0x2100 +AM_Entry*2
	movwf	EEADR
	bsf	STATUS,RP0		;bank 3
	bcf	EECON1, EEPGD	; ще записваме в EEPROM  
;	bcf	INTCON,GIE		;малко да спрем прекъсванията
	bsf	EECON1,WREN	;разрешаваме записа
	bcf	STATUS,RP0		;bank 2

write_loop
	movf	INDF,w
	movwf	EEDATA
	bsf	STATUS,RP0	;bank 3
;	btfsc	EECON1,WR
;	goto	$-1
;задължителния код
	movlw	0x55
	movwf	EECON2
	movlw	0xAA
	movwf	EECON2
	bsf	EECON1,WR	;write
;край задължителния код
	btfsc	EECON1,WR
	goto	$-1
	nop
;	bcf	EECON1,WREN	;разрешаваме записа
	bcf	STATUS,RP0	;bank 2
	incf	FSR,f
	incf	EEADR,f
	decfsz	eed,f
	goto	write_loop
	bsf	STATUS,RP0	;bank 3
	bcf	EECON1,WREN	;разрешаваме записа
	bcf	STATUS,RP0		;bank 0
	bcf	STATUS,RP1		;bank 0
	bcf	PIR2,EEIF
;	bsf	INTCON,GIE		;малко да пуснем прекъсванията
;	bcf	PORTB,0
;	bsf	Modes,3
	incf	eec,f

Write_exit
	return

;край процедури за работа с EEPROM
	org	0x0C00
lc__1 
;	addwf	PCL,f
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0,  0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80   
	dt    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x20  
 	dt    0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xc0,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

	dt    0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x20
	dt    0x40, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20,   0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
    	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0,   0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc 

lc__2	
;	addwf	PCL,f
	dt    0x00, 0x00, 0xc0, 0xf8, 0xfe, 0xff, 0xff, 0x7f,   0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f
	dt    0x3f, 0x7f, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x3f, 0x44, 0x42, 0x42, 0x42
	dt    0x3c, 0x00, 0x60, 0x18, 0x0e, 0x09, 0x08, 0x09,   0x0e, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, 0x00,   0x00, 0x00, 0x00, 0x3f, 0x44, 0x42, 0x42, 0x42
	dt    0x3c, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40,   0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
   	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt   0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0x0f,  0x0f, 0x0f, 0x0f, 0x07, 0x07, 0xff, 0xff, 0xff

lc__3
;	addwf	PCL,f
	dt    0xf0, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x01, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x07, 0x3f, 0x7f, 0x7f, 0x3e,    0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0
	dt    0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00
	dt    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
	dt    0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0 
	dt    0xc0, 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 

lc__4
;	addwf	PCL,f
	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 
	dt    0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8,   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
	dt    0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,   0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f 

	dt    0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff
	dt    0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,   0x38, 0x3e, 0x7e, 0x7f, 0x1f, 0x0f, 0x07, 0x03 
	dt    0x03, 0x03, 0x03, 0x07, 0x07, 0xff, 0xff, 0xff,   0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 

lc__5
;	addwf	PCL,f
	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf0, 0xe0,   0xe0, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 
	dt    0xff, 0x80, 0xc0, 0xf0, 0xfe, 0x7f, 0x0f, 0x07,   0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00
	dt    0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

	dt    0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f,   0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff
	dt    0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0,   0xf8, 0xf8, 0xfc, 0xfe, 0x3e, 0x3e, 0x1e, 0x1e 
	dt    0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0xff, 0xff, 0xff,   0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 

lc__6
;	addwf	PCL,f
	dt    0x00, 0x07, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0xc0,   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x80, 0xe0, 0xf0, 0xfc, 0xff, 0xff, 0x7f, 0x0f,   0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 
	dt    0xff, 0x7f, 0x3f, 0x0f, 0x01, 0x00, 0x00, 0x00,   0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00
	dt    0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

	dt    0x00, 0x00, 0x0f, 0x0f, 0x1f, 0x1f, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f 
	dt    0x1f, 0x1f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x03,     0x1f, 0x3f, 0x7f, 0x7f, 0x78, 0xf8, 0xf0, 0xf0 
	dt    0xf0, 0xf0, 0xf0, 0xf8, 0xfc, 0x7f, 0xff, 0xff,     0xff, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0x80, 0xc0 
	dt    0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 

lc__7
;	addwf	PCL,f
	dt    0x00, 0x00, 0x00, 0x03, 0x0f, 0x3f, 0x3f, 0x7f,     0xff, 0xff, 0xfe, 0xfe, 0x7e, 0x7e, 0x7f, 0x3f 
	dt    0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,     0x03, 0x07, 0x06, 0x00, 0x07, 0x0f, 0x1f, 0x1f 
	dt    0x1f, 0x1f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff 

lc__8
;	addwf	PCL,f
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 

	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
	dt    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07

;LCD_1 	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0
;	dt    0xff, 0x07, 0xff, 0xff, 0xff, 0xf0, 0xfd, 0xff, 0xff, 0xf0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00
;	dt    0xfe, 0x01, 0xff, 0xff, 0xff, 0xef, 0x7a, 0xff, 0xff, 0xef, 0x6f, 0x7f, 0xff, 0xff, 0xfc, 0x00
;	dt    0xf8, 0x00, 0x7f, 0xff, 0xff, 0xef, 0xfa, 0xff, 0xef, 0xef, 0xef, 0xbf, 0xff, 0xff, 0xe0, 0x00
;	dt    0xf8, 0x00, 0x3f, 0xff, 0xff, 0xef, 0xfa, 0xff, 0xef, 0xef, 0xef, 0xbf, 0xff, 0xff, 0x80, 0x00
;	dt   0xf0, 0x00, 0x1f, 0xff, 0xff, 0xe8, 0xf7, 0x7f, 0xef, 0xe8, 0xef, 0xbf, 0xff, 0xff, 0x80, 0x00
;	dt   0xf0, 0x00, 0x0f, 0xff, 0xff, 0xe7, 0x77, 0x7f, 0x01, 0xe7, 0x6f, 0xbf, 0xff, 0xff, 0x80, 0x00
;	dt    0xe0, 0x00, 0x07, 0xff, 0xff, 0xef, 0x60, 0x3f, 0xef, 0xef, 0x6f, 0xbf, 0xff, 0xff, 0x80, 0x18
;	dt    0xe0, 0x7c, 0x07, 0xff, 0xff, 0xef, 0x6f, 0xbf, 0xef, 0xef, 0x6f, 0xbf, 0xff, 0xff, 0x81, 0xf8
;	dt    0xe0, 0xff, 0x03, 0xff, 0xff, 0xef, 0x5f, 0xdf, 0xef, 0xef, 0x6f, 0x7f, 0xff, 0xff, 0x87, 0xf8
;	dt   0xc0, 0xff, 0x83, 0xff, 0xff, 0xf0, 0xdf, 0xdf, 0xff, 0xf0, 0xe0, 0xff, 0xff, 0xff, 0x87, 0xf8
;;	dt   0xc1, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;LCD_2	dt    0xc1, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf9, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x01, 0xff, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7f, 0xc1, 0xe1, 0xff, 0xff, 0xfe, 0x0f, 0xe0, 0x00, 0xff, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7f, 0x81, 0xe0, 0x00, 0xc3, 0xfe, 0x0f, 0xe0, 0x00, 0x7f, 0x87, 0xf8 
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7f, 0x81, 0xe0, 0x00, 0xc3, 0xfe, 0x0f, 0x80, 0x00, 0x7f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7f, 0x01, 0xe0, 0x00, 0xc3, 0xfe, 0x0f, 0x81, 0xe0, 0x7f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7e, 0x01, 0xe0, 0x00, 0xc3, 0xfe, 0x0f, 0x03, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7e, 0x01, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0x07, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7c, 0x01, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0x0f, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x7c, 0x01, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0xcf, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x78, 0x01, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0xff, 0xf8, 0x3f, 0x87, 0xf8
;LCD_3	dt    0x87, 0xff, 0xff, 0xf8, 0x78, 0x41, 0xe0, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0x80, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x70, 0x41, 0xe0, 0xff, 0xc0, 0x00, 0x0f, 0xe0, 0x00, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x70, 0xc1, 0xe0, 0xff, 0xc0, 0x00, 0x0f, 0xc0, 0x00, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xff, 0xf8, 0x71, 0xc1, 0xe0, 0xff, 0xc0, 0x00, 0x0f, 0x00, 0x00, 0x3f, 0x87, 0xf8
;	dt    0x87, 0xff, 0xf9, 0xf8, 0x63, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0x00, 0x00, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf8, 0x38, 0x63, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0e, 0x03, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0x78, 0x43, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0e, 0x0f, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0x78, 0x07, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0e, 0x0f, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0x78, 0x07, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0e, 0x0f, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xf0, 0xf8, 0x0f, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0e, 0x0f, 0xf8, 0x3f, 0x87, 0xf8
;	dt    0x83, 0xff, 0xe0, 0xf8, 0x0f, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0x0f, 0xf0, 0x3f, 0x87, 0xf8
;	dt    0xc1, 0xff, 0xe0, 0xf8, 0x0f, 0xc1, 0xe0, 0xff, 0xc3, 0xfe, 0x0f, 0x03, 0xe0, 0x3f, 0x07, 0xf8
;	dt    0xc1, 0xff, 0xc1, 0xf8, 0x1f, 0xc1, 0xe0, 0xff, 0xf3, 0xfe, 0x0f, 0x00, 0x00, 0x3f, 0x07, 0xf8
;	dt    0xc1, 0xff, 0x81, 0xf8, 0x1f, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x80, 0x00, 0x3f, 0x07, 0xf8
;	dt    0xc0, 0xff, 0x81, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x32, 0x07, 0xf8
;	dt    0xe0, 0x7f, 0x03, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x04, 0x30, 0x07, 0xf8
;LCD_4	dt    0xe0, 0x3c, 0x07, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x30, 0x07, 0xf8
;	dt    0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x10, 0x0f, 0xf8
;	dt    0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0f, 0xf8
;	dt    0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xf8
;	dt    0xf8, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xf8
;	dt    0xf8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8
;	dt    0xfe, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8
;	dt    0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
;	dt    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff

;EEPROM данни
	ORG 0X2100
shello	DE	0xa4,0xe3,'p','a',0xb3,'e',0xb9,0x00		;0x2c - Здравей
sname	DE 'M',0xb8,0xbf,0xba,'o',0x00					; Митко
;sname  	DE	'B','a',0xbb,'e','p',0xb8,0xb9,0x00			; Валерий
AN_Cor de 0x0,0x0,0x00,0x00,0x00,0x00,0x00,0x00
;tt_max	de 0x7F		;максимална стойност за събиране
;tt_min	de 0xFF	;максимална стойност за изваждане
	end