            LIST        P=PIC16F84A
            __CONFIG    0x3FF1
STATUS      EQU         0x03
PORTA       EQU         0x05
PORTB       EQU         0x06
TRISA       EQU         0x05
TRISB       EQU         0x06
W           EQU         0x00
OPTION_REG  EQU         0x01
INTCON		EQU         0x0B
REZ1		EQU         0x0C
REZ2		EQU         0x0D
REZ3		EQU         0x0E
REZ4		EQU         0x0F
RC			EQU			0x10
dis			EQU			0x11
did			EQU			0x12
klav		EQU			0x13
sp0			EQU			0x14
sp1			EQU			0x15
sp2			EQU			0x16
c0			EQU			0x17
v0			EQU			0x18
v1			EQU			0x19
v2			EQU			0x1A
v3			EQU			0x1B
lv0			EQU			0x1C
lv1			EQU			0x1D
lv2			EQU			0x1E
RC0			EQU			0x1F
RC1			EQU			0x20
RC2			EQU			0x21
RC3			EQU			0x22
del0		EQU			0x23
del1		EQU			0x24
del00		EQU			0x25
del10		EQU			0x26
lv00		EQU			0x27
lv10		EQU			0x28
lv20		EQU			0x29
;b0			EQU			0x2A
;b1			EQU			0x2B
;b2			EQU			0x2C
;b3			EQU			0x2D
;			EQU			0x2E
;c1			EQU			0x2F

			org         0x00
			goto		start
			org			0x04			;обработка прерываний
			bcf			INTCON,7		;запрет прерываний

			bcf			STATUS,2
			decf		v3,1
			btfss		STATUS,2
			goto		exit
			movlw		0x09
			movwf		v3
			bcf			STATUS,2
			decf		v2,1
			bsf			c0,1
			btfss		STATUS,2
			goto		exit			
			movlw		0x09
			movwf		v2
			bcf			STATUS,2
			decf		v1,1
			bsf			c0,2
			btfss		STATUS,2
			goto		exit			
			movlw		0x09
			movwf		v1
			bcf			STATUS,2
			decf		v0,1
			bsf			c0,3
			btfss		STATUS,2
			goto		exit			
			goto		finish
exit
			movf		v3,0
			movwf		klav
			call		mode
			movwf		REZ4
			movf		v2,0
			movwf		klav
			btfss		c0,2
			decf		klav,1
			call		mode
			movwf		REZ3
			movf		v1,0
			movwf		klav
			btfss		c0,1
			decf		klav,1
			call		mode
			movwf		REZ2
			movf		v0,0
			movwf		klav
			btfss		c0,0
			decf		klav,1
			call		mode
			movwf		REZ1

			bcf			STATUS,2
			decf		lv20,1
			btfss		STATUS,2
			goto		exit1
			movlw		0x09
			movwf		lv20
			bcf			STATUS,2
			decf		lv10,1
			btfss		STATUS,2
			goto		exit1
			movlw		0x09
			movwf		lv10
			bcf			STATUS,2
			decf		lv00,1
			btfss		STATUS,2
			goto		exit1
			movf		lv0,0
			movwf		lv00
			movf		lv1,0
			movwf		lv10
			movf		lv2,0
			movwf		lv20
			incf		lv00,1
			incf		lv10,1
			incf		lv20,1
			clrw		
			btfss		PORTB,3
			bsf			W,0
			bcf			PORTB,3
			btfsc		W,0
			bsf			PORTB,3


			

exit1

			bcf			INTCON,1		;сброс флага
			bsf			INTCON,7		;разрешение прерывания
			RETFIE						;выход из прерывания

start		
			

;установки портов
			bsf         STATUS,5        ; установка бита 5 в 1,переход в банк 1
			bcf			TRISA,0			; установка RA0 на выход
			bcf			TRISA,1			; установка RA1 на выход
			bcf			TRISA,2			; установка RA2 на выход
			bcf			TRISA,3			; установка RA3 на выход
			bcf			TRISA,4			; установка RA4 на выход
			bsf			TRISB,7			; установка RB7 на вход
			bsf			TRISB,0			; установка RB0 на вход
			bsf			TRISB,1			; установка RB1 на вход
			bsf			TRISB,2			; установка RB2 на вход
			bcf			TRISB,3			; установка RB3 на выход
			bsf			TRISB,4			; установка RB4 на вход
			bsf			TRISB,5			; установка RB5 на вход
			bsf			TRISB,6			; установка RB6 на вход
			bsf			TRISB,7			; установка RB7 на вход

			bcf         STATUS,5        ; cброс, бита 5 в 1,переход в банк 0
			bcf			PORTA,1		    ; установка CHCP 0
			bsf         PORTA,0			; установка STCP 1
			bcf         PORTA,2		    ; установка DS 0
			bcf         PORTA,3
			bcf         PORTA,4
			bcf         PORTB,3

			clrf		REZ1
			clrf		REZ2
			clrf		REZ3
			clrf		REZ4
			clrf		dis
			clrf		klav
			clrf		RC1
			clrf		RC2
			clrf		RC3
			movlw		0x10				
			movwf		dis

			clrf		did



ust			;юстировка
			movlw		0x00			
			movwf		RC
			movlw		0x09			
			movwf		sp0
			movlw		0x09			
			movwf		sp1
			movlw		0x09			
			movwf		sp2
			movlw		0x89			;"У"	
			movwf		REZ1
			movlw		0x62			;"С."	
			movwf		REZ2
			movlw		0xFF			;" "	
			movwf		REZ3
			movlw		0x03			;"0"	
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2
			movlw		0x01			
			subwf		klav,0
			btfsc		STATUS,2		;если результат <>0, то 			
			goto		ustL
			bcf			STATUS,2
			movlw		0x03			
			subwf		klav,0
			btfsc		STATUS,2		;если результат <>0, то 			
			goto		ustR
			bcf			STATUS,2
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если результат <>0, то 			
			goto		prog			
			goto		ust
ustL		; движение в лево
			bsf			PORTB,3
			call		delay
			bsf			PORTA,4
			call		delay
			bcf			PORTA,4
			goto		ust
ustR		; движение в право
			bcf			PORTB,3
			call		delay
			bsf			PORTA,4
			call		delay
			bcf			PORTA,4
			goto		ust


prog
			movlw		0x09			
			movwf		RC
			movlw		0x13			;"П"	
			movwf		REZ1
			movlw		0x31			;"Р"	
			movwf		REZ2
			movlw		0x03			;"О"	
			movwf		REZ3
			movlw		0x73			;"Г"	
			movwf		REZ4
			call		delay
			call		scan

			bcf			STATUS,2
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат <>0, то 			
			goto		prog

speed
			clrf		sp0
			clrf		sp1
			clrf		sp2
			movlw		0x49			;"S"	
			movwf		REZ1
			movlw		0x31			;"P"	
			movwf		REZ2
			movlw		0x61			;"E "	
			movwf		REZ3
			movlw		0x03			;"D"	
			movwf		REZ4			
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		prog

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		speed
;первая цифра
			movlw		0xFF			;" "	
			movwf		REZ1
			movlw		0xEF			;"_"	
			movwf		REZ2
			movlw		0xEF			;"_"	
			movwf		REZ3
			movlw		0xEF			;"_"	
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		speed

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если результат = 0, то 			
			goto		speed

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,0
			movwf		sp0
			call		mode
			movwf		REZ2
			call		delay
			call		scan
;вторая цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		speed

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,W
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		sp1			
			call		mode
			movwf		REZ3
			call		delay
			call		scan
;третья цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		speed

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		sp2		
			call		mode
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если =0, то 			
			goto		speed
			
vit
			clrf		v0
			clrf		v1
			clrf		v2
			clrf		v3
			clrf		c0
			movlw		0x01			;"В"	
			movwf		REZ1
			movlw		0xFF			;" "	
			movwf		REZ2
			movlw		0xFF			;" "	
			movwf		REZ3
			movlw		0xFF			;" "	
			movwf		REZ4			
			call		delay
			call		scan

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		speed

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		vit
;первая цифра
			movlw		0xEF			;"_"	
			movwf		REZ1
			movlw		0xEF			;"_"	
			movwf		REZ2
			movlw		0xEF			;"_"	
			movwf		REZ3
			movlw		0xEF			;"_"	
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если результат = 0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,0
			movwf		v0
			call		mode
			movwf		REZ1
			call		delay
			call		scan
;вторая цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,W
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		v1			
			call		mode
			movwf		REZ2
			call		delay
			call		scan
;третья цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		v2		
			call		mode
			movwf		REZ3
			call		delay
			call		scan

;четвертая цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		v3		
			call		mode
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если =0, то 			
			goto		vit

rast
			clrf		lv0
			clrf		lv1
			clrf		lv2
			movlw		0x01			;"В"	
			movwf		REZ1
			movlw		0xFF			;" "	
			movwf		REZ2
			movlw		0xFF			;" "	
			movwf		REZ3
			movlw		0x31			;"P"	
			movwf		REZ4			
			call		delay
			call		scan

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		vit

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		rast
;первая цифра
			movlw		0xFF			;" "	
			movwf		REZ1
			movlw		0xEF			;"_"	
			movwf		REZ2
			movlw		0xEF			;"_"	
			movwf		REZ3
			movlw		0xEF			;"_"	
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если результат = 0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,0
			movwf		lv0
			call		mode
			movwf		REZ2
			call		delay
			call		scan
;вторая цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		del

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,W
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		lv1			
			call		mode
			movwf		REZ3
			call		delay
			call		scan
;третья цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		del

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		lv2		
			call		mode
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если =0, то 			
			goto		rast
del
			clrf		del0
			clrf		del1
			movlw		0x03			;"D"	
			movwf		REZ1
			movlw		0x61			;"E"	
			movwf		REZ2
			movlw		0xE3			;"L "	
			movwf		REZ3
			movlw		0xFF			;""	
			movwf		REZ4			
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		rast

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		del
;первая цифра
			movlw		0xFF			;" "	
			movwf		REZ1
			movlw		0xFF			;" "	
			movwf		REZ2
			movlw		0xEF			;"_"	
			movwf		REZ3
			movlw		0xEF			;"_"	
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		del

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если результат = 0, то 			
			goto		del

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,0
			movwf		del0
			call		mode
			movwf		REZ3
			call		delay
			call		scan
;вторая цифра
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		ready

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		del

			bcf			STATUS,2		;проверка на 0
			movlw		0x0A			
			subwf		klav,W
			btfsc		STATUS,2		;если =0, то 			
			clrf		klav		
			movf		klav,W
			movwf		del1			
			call		mode
			movwf		REZ4
			call		delay
			call		scan
			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если =0, то 			
			goto		del

ready
			movlw		0x43			;"G"	
			movwf		REZ1
			movlw		0x02			;"0."	
			movwf		REZ2
			movlw		0xFF			;" "	
			movwf		REZ3
			movlw		0xFF			;" "	
			movwf		REZ4			
			call		delay
			call		scan

			bcf			STATUS,2		;проверка на отмену
			movlw		0x0B			
			subwf		klav,0
			btfsc		STATUS,2		;если =0, то 			
			goto		prog

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		ready
			
; намотка, начальная установка, разрешение прерывания

			bsf         STATUS,5        ;переход в банк 1
			movlw		0xC0			;разрешение прерываний, сброс флагов
			movwf		OPTION_REG		;запись

			bcf         STATUS,5        ;переход в банк 0
			movlw		0x90			;разрешение прерываний, сброс флагов
			movwf		INTCON			;запись
			movf		lv0,0
			movwf		lv00
			movf		lv1,0
			movwf		lv10
			movf		lv2,0
			movwf		lv20
			incf		lv00,1
			incf		lv10,1
			incf		lv20,1
			clrf		RC
			bcf			PORTB,3			;установка направления в право
			bsf			PORTA,3
			bsf			PORTA,4
			movf		del0,0
			movwf		del00
			movf		del1,0
			movwf		del10
			incf		del00,1
			incf		del10,1
			




run1		;проверка длинны, изменение направления
			btfsc		PORTB,2
			goto		pause
			
			bcf			STATUS,2
			decf		del10,1
			btfss		STATUS,2
			goto		run2
			movlw		0x09
			movwf		del10
			bcf			STATUS,2
			decf		del00,1
			btfss		STATUS,2
			goto		run2
			bcf			PORTA,4
			movf		del0,0
			movwf		del00
			movf		del1,0
			movwf		del10
			incf		del00,1
			incf		del10,1


run2
			bcf			PORTA,3
			call		delay
			bsf			PORTA,3
			bsf			PORTA,4
			call		delay
			goto		run1







pause
			call		delay
			btfss		PORTB,2
			goto		run1			
			goto		pause



			










		













mode		;запись в аккумулятор кода для восьмерки
			bcf			STATUS,2		;проверка на 0 
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 			
			movlw		0x03
			decf		klav,1
			bcf			STATUS,2		;проверка на 1
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x9F
			decf		klav,1
			bcf			STATUS,2		;проверка на 2
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x25
			decf		klav,1
			bcf			STATUS,2		;проверка на 3
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x0D
			decf		klav,1
			bcf			STATUS,2		;проверка на 4
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x99
			decf		klav,1
			bcf			STATUS,2		;проверка на 5
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x49
			decf		klav,1
			bcf			STATUS,2		;проверка на 6
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x41
			decf		klav,1
			bcf			STATUS,2		;проверка на 7
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x1F
			decf		klav,1
			bcf			STATUS,2		;проверка на 8
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x01
			decf		klav,1
			bcf			STATUS,2		;проверка на 9
			movf		klav,1
			btfsc		STATUS,2		;если =0, то 	
			movlw		0x09

			return










scan		call		displ
			clrf		klav
			btfsc		PORTB,4
			bsf			klav,0
			btfsc		PORTB,5
			bsf			klav,1
			btfsc		PORTB,6
			bsf			klav,2
			btfsc		PORTB,7
			bsf			klav,3
			bcf			STATUS,2
			movf		klav,1			;проверка klav на равенство 0, если klav=0, то Z=1				
			btfsc		STATUS,2		;если klav=0, то 
			goto		scan
			call		displ
			call		displ
			clrf		klav
			btfsc		PORTB,4
			bsf			klav,0
			btfsc		PORTB,5
			bsf			klav,1
			btfsc		PORTB,6
			bsf			klav,2
			btfsc		PORTB,7
			bsf			klav,3
			bcf			STATUS,2
			movf		klav,1			;проверка klav на равенство 0, если klav=0, то Z=1				
			btfsc		STATUS,2		;если klav=0, то 
			goto		scan
			return













delay		;подпрограмма задержки 
			movf		RC,0				
			movwf		RC0
			movf		sp0,0				
			movwf		RC1
			movf		sp1,0				
			movwf		RC2
			movf		sp2,0				
			movwf		RC3
			incf		RC0,1
			incf		RC1,1
			incf		RC2,1
			incf		RC3,1
dela
			call		displ
			bcf			STATUS,2
			decf		RC3,1
			btfss		STATUS,2
			goto		dela
			movlw		0x09
			movwf		RC3
			bcf			STATUS,2
			decf		RC2,1
			btfss		STATUS,2
			goto		dela			
			movlw		0x09
			movwf		RC2
			bcf			STATUS,2
			decf		RC1,1
			btfss		STATUS,2
			goto		dela			
			movlw		0x09
			movwf		RC1
			bcf			STATUS,2
			decf		RC0,1
			btfss		STATUS,2
			goto		dela			
			return











displ		
			btfsc		dis,7
			movlw		0x10
			btfsc		dis,6
			movlw		0x80
			btfsc		dis,5
			movlw		0x40
			btfsc		dis,4
			movlw		0x20
			movwf		dis

			btfsc		dis,7
			movf		REZ4,W
			btfsc		dis,6
			movf		REZ3,W
			btfsc		dis,5
			movf		REZ2,W
			btfsc		dis,4
			movf		REZ1,W
			movwf		did			


			
			bcf         PORTA,1		    ; установка CHCP 0	
			bsf			PORTA,0			; установка STCP 1 (разрешаем прием)
			NOP
			bcf			PORTA,0			; установка STCP 0 (разрешаем прием)
			bcf			PORTA,2			; установка DS 0
			btfsc		did,0			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 0
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,1			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 1
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,2			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 2
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,3			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 3
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,4			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 4
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,5			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 5
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,6			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 6
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		did,7			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 7
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,0			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 8
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,1			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 9
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,2			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 10
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,3			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 11
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,4			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 12
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,5			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 13
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,6			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 14
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bcf			PORTA,2			; установка DS 0
			btfsc		dis,7			; пропустить след. ком если бит =0
			bsf			PORTA,2			; установка DS 1
			NOP
			bsf         PORTA,1		    ; установка CHCP 1	пердаем бит 15
			NOP
			bcf         PORTA,1		    ; установка CHCP 0
			bsf			PORTA,0			; установка STCP 1 (запрещаем прием)
			NOP	
			bcf			PORTA,0			; установка STCP 0 (запрещаем прием)
			NOP
			return
		
finish
			movlw		0x09			
			movwf		RC
			movlw		0x43			;"G"	
			movwf		REZ1
			movlw		0x03			;"0"	
			movwf		REZ2
			movlw		0x03			;"0"	
			movwf		REZ3
			movlw		0x03			;"0"	
			movwf		REZ4			
			call		delay
			call		scan

			bcf			STATUS,2		;проверка на ввод
			movlw		0x0C			
			subwf		klav,0
			btfss		STATUS,2		;если результат = 0, то 			
			goto		finish
			goto		ust			
			goto		start


			end     
