/*
 * svetoeffekt1.asm
 *
 *  Created: 09.10.2014 14:16:18
 *   Author: SVShishkin
 */ 
 ; устройство световых эффектов для схемы с регистром К555ИР23

;Назначение флагов регистра flo1
;0 разряд - флаг для кнопки №1 "1"
;1 разряд - флаг для кнопки №2 "2"
;2 разряд - флаг для кнопки №3 "3"
;3 разряд - флаг для кнопки №4 "4"
;4 разряд - флаг для кнопки №5 "5"

;Назначение флагов регистра flo

;4 разряд - флаг реверса
;5 разряд - флаг для кнопки включения всех индикаторов
;6 разряд - флаг разрешения работы
;7 разряд - флаг выбора режимов "номер эффекта" или "скорость"


.DEF	tm1=r2
.DEF	sek1=r8
.DEF	min1=r13
.DEF	KLAV=r14
.DEF	speed=r16
.DEF	regim=r17
.DEF	tec=r18
.DEF	flo=r19
.DEF	beg1=r20
.DEF	t1=r21
.DEF	catod=r22
.DEF	cod=r23
.DEF	SSREG=r24
.DEF	flo1=r25
.DEF	nomer=r26
.DEF	registr=r27 
.equ 	RAM=$060

.eseg
.org 0

.CSEG
.ORG	0
		rjmp	INIT
		reti
		reti
		reti
		rjmp	TIM0
		reti;rjmp	TIM0
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		
INIT:	ldi  tec,low (RAMEND) 
		out  SPL,tec
		;cli

		ldi  nomer,0 ;ДОБАВЛЕНО
		ldi  registr,0

		ldi  tec,255
		mov  sek1,tec
		ldi  speed,1
		mov  min1,speed
		
		clr	 flo			
		CBR  flo1,0b00000001   
		CBR  flo1,0b00000100
		CBR  flo1,0b00001000
		SBR  flo,0b01100000
		CBR  flo,0b00010000

		ldi	 regim,0
		ldi	 beg1,0b11111110
		;ldi	nomer,0
;		ldi catod1,0
;		ldi catod,1
		ldi	tec,$DF
        out	SPL,r30
						
		ldi	tec,$FF		; настройка направления 
		out	DDRB,tec	;работы линий порта B и D
		out	PORTB,tec
		ldi	tec,0b11111111	
		out PORTD,tec
		ldi	tec,0b11101111	
		out DDRD,tec

		ldi	r30,12		; режим работы таймера 1
		out	TCCR1B,r30	;с максимальным предварительным делением
		ldi	r30,0
		out	OCR1AH,r30
		ldi	r30,$8  ;$10      ;$64
		out	OCR1AL,r30		
				
		ldi	r30,0b01000000
		out	TIMSK,r30

		ldi	YL,low(RAM)
		ldi	YH,high(RAM)		
		ldi cod,1		;1  60
		st	Y+,cod
		ldi cod,1		;2  61
		st	Y+,cod
		ldi cod,0b11111111			;3  62
		st	Y+,cod		;3  64
		st	Y+,cod
		st	Y+,cod	;3  66
		st	Y+,cod	;3  67
		st	Y+,cod
		st	Y+,cod
		st	Y+,cod
		st	Y+,cod
		sei	

SE1:    nop
		nop							    		
		rjmp  SE1				
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
										
TIM0:	in	 SSREG,SREG ;Обработка прерывания от таймера Т/С1
		
L1:		dec  sek1			;Декремент регистра одной секунды
		brne selo3
		ldi  tec,10
		mov  sek1,tec

		dec  min1
		brne selo3
		ldi tec,10
		sub tec,speed
		mov  min1,tec

		sbrc flo,6			;Проверка флага разрешение работы
selo3:	rjmp SEL2

		sbrc flo,0
		rjmp MLA1
		SBR  flo,0b00000001
		;sbi PORTD,6
		rjmp SW0
MLA1:	CBR  flo,0b00000001
		;cbi PORTD,6
			
SW0:	;sbrc flo,6
		;rjmp SEL2
	
		cpi  nomer,0 ;(работает) выполнение св. эфф. №1 (мерцающая елка)
		brne SVET2
		sbrs flo,0;
		rjmp F1

		ldi  tec,9			;изменил
		mov  tm1,tec

		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K10:	ldi tec, 0b01010101
		st	Y+,tec
		dec  tm1
		brne K10
		;SBR  flo,0b00010000
		rjmp SEL2

F1:		ldi  tec,9			;изменил
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K11:	ldi 	tec, 0b10101010
		st	Y+,tec
		dec  tm1
		brne K11
		CBR  flo,0b00010000
		rjmp SEL2

SVET2:	cpi  nomer,1 ; (работает)выполнение св. эфф. №2 (поочередно, все инд. вкл и все выкл.)
		brne SVET3

		sbrs flo,0;
		rjmp slon2
		ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K20:	ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne K20
		rjmp SEL2

slon2:	ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K21:	ldi tec, 0b00000000
		st	Y+,tec
		dec  tm1
		brne K21
		rjmp SEL2

SVET3:	cpi  nomer,2 ;(работает) выполнение св. эфф. №3 (бегущий инд. на каждой ветке)
		brne svet4
			
		inc regim
mkk1:	cpi regim,1
		brne sol1 
		ldi	 beg1, 0b11111110
		rjmp VVV3
sol1:	cpi regim,2
		brne sol2 
		ldi	 beg1, 0b11111101
		rjmp VVV3
sol2:	cpi regim,3
		brne sol3 
		ldi	 beg1, 0b11111011		
		rjmp VVV3
sol3:	cpi regim,4
		brne sol4 
		ldi	 beg1, 0b11110111
		rjmp VVV3
sol4:	cpi  regim,5
		brne sol5 
		ldi	 beg1, 0b11101111
		rjmp VVV3
sol5:	cpi  regim,6
		brne sol6 
		ldi	 beg1, 0b11011111
		rjmp VVV3
sol6:	cpi  regim,7
		brne sol7 
		ldi	 beg1, 0b10111111
		rjmp VVV3
sol7:	cpi  regim,8
		brne sol8 
		ldi	 beg1, 0b01111111
		rjmp VVV3
sol8:	cpi  regim,9
		brne out1
		ldi	 beg1, 0b11111111
		ldi	 regim,0			
    				
VVV3:	ldi tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K30:	st	Y+,beg1
		dec  tm1
		brne K30
out1:	rjmp SEL2

SVET4:	cpi  nomer,3 ;(работает)выполнение св. эфф. №4 (2 бегущих инд. на каждой ветке)
		brne SVET5
		inc regim

		cpi  regim,1
		brne solk1 
		ldi	 beg1, 0b11111110
		rjmp VVV4
solk1:	cpi  regim,2
		brne solk2 
		ldi	 beg1, 0b11111100
		rjmp VVV4
solk2:	cpi  regim,3
		brne solk3 
		ldi	 beg1, 0b11111001
		rjmp VVV4
solk3:	cpi  regim,4
		brne solk4 
		ldi	 beg1, 0b11110011
		rjmp VVV4
solk4:	cpi  regim,5
		brne solk5 
		ldi	 beg1, 0b11100111
		rjmp VVV4
solk5:	cpi  regim,6
		brne solk6 
		ldi	 beg1, 0b11001111
		rjmp VVV4
solk6:	cpi  regim,7
		brne solk7 
		ldi	 beg1, 0b10011111
		rjmp VVV4
solk7:	cpi  regim,8
		brne solk8 
		ldi	 beg1, 0b00111111
		rjmp VVV4
solk8:	cpi  regim,9
		brne solk9
		ldi	 beg1, 0b01111111
		rjmp VVV4
solk9:	cpi  regim,10
		brne out1
		ldi	 beg1, 0b11111111
		ldi	 regim,0			
    				
VVV4:	ldi tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K40:	st	Y+,beg1
		dec  tm1
		brne K40
		rjmp SEL2

SVET5:	cpi  nomer,4 ;(работает) выполнение св. эфф. №5 (3 бегущих инд. на каждой ветке)
		brne SVET6

		inc regim

		cpi  regim,1
		brne solm1 
		ldi	 beg1, 0b11111110
		rjmp VVV5
solm1:	cpi  regim,2
		brne solm2 
		ldi	 beg1, 0b11111100
		rjmp VVV5
solm2:	cpi  regim,3
		brne solm3 
		ldi	 beg1, 0b11111000
		rjmp VVV5
solm3:	cpi  regim,4
		brne solm4 
		ldi	 beg1, 0b11110001
		rjmp VVV5
solm4:	cpi  regim,5
		brne solm5 
		ldi	 beg1, 0b11100011
		rjmp VVV5
solm5:	cpi  regim,6
		brne solm6 
		ldi	 beg1, 0b11000111
		rjmp VVV5
solm6:	cpi  regim,7
		brne solm7 
		ldi	 beg1, 0b10001111
		rjmp VVV5
solm7:	cpi  regim,8
		brne solm8 
		ldi	 beg1, 0b00011111
		rjmp VVV5
solm8:	cpi  regim,9
		brne solm9
		ldi	 beg1, 0b00111111
		rjmp VVV5
solm9:	cpi  regim,10
		brne solm10
		ldi	 beg1, 0b01111111
		rjmp VVV5			
    				
solm10:	cpi  regim,11
		brne out2
		ldi	 beg1, 0b11111111
		ldi	 regim,0		

VVV5:	ldi tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K50:	st	Y+,beg1
		dec  tm1
		brne K50
out2:	rjmp SEL2


SVET6:	cpi  nomer,5 ;выполнение св. эфф. №6 (включение гирлянд, потом общее ;выключение)
		brne SVET7 ;SVET7

		sbrs flo,0;
		rjmp slon6
		ldi  tec,4
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K60:	ldi tec, 0b00000000
		st	Y+,tec
		ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne K60
		rjmp SEL2

slon6:	ldi  tec,4
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K61:	ldi tec, 0b11111111
		st	Y+,tec
		ldi tec, 0b00000000
		st	Y+,tec
		dec  tm1
		brne K61
		rjmp SEL2

SVET7:	cpi  nomer,6 ;(работает) выполнение св. эфф. №7 (поочередное включение в каждой ;гирлянде 4-х индикаторов, №1…№4 - включены, №5…№8 - выключены, и наоборот)
		brne SVET8
		sbrs flo,0;
		rjmp slon7
		ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K70:	ldi tec, 0b00001111
		st	Y+,tec
		dec  tm1
		brne K70
		rjmp SEL2

slon7:	ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K71:	ldi tec, 0b11110000
		st	Y+,tec
		dec  tm1
		brne K71
		rjmp SEL2


SVET8:	cpi  nomer,7 ;выполнение св. эфф. №8 (бегущая лента огонек по всей елке)
		brne SVE9
	
		inc regim

SL80:	cpi regim,1
		brne SL81
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi beg1, 0b11111110
		rjmp K81

SVE9:   rjmp SVET9

SL81:	cpi regim,9
		brne SL82
		
		ldi	YL,low(RAM+3)
		ldi	YH,high(RAM+3)

		ldi beg1, 0b11111110
		rjmp K81

SL82:	cpi regim,17
		brne SL83

		ldi	YL,low(RAM+4)
		ldi	YH,high(RAM+4)

		ldi beg1, 0b11111110
		rjmp K81

SL83:	cpi regim,25
		brne SL84
		;adiw YL,3
		ldi	YL,low(RAM+5)
		ldi	YH,high(RAM+5)
		ldi beg1, 0b11111110
		rjmp K81

SL84:	cpi regim,33
		brne SL85
		;adiw YL,4
		ldi	YL,low(RAM+6)
		ldi	YH,high(RAM+6)
		ldi beg1, 0b11111110
		rjmp K81

SL85:	cpi regim,41
		brne SL86
		ldi	YL,low(RAM+7)
		ldi	YH,high(RAM+7)

		ldi beg1, 0b11111110
		rjmp K81

SL86:	cpi regim,49
		brne SL87
		ldi	YL,low(RAM+8)
		ldi	YH,high(RAM+8)
		ldi beg1, 0b11111110
		rjmp K81

SL87:	cpi regim,57
		brne SL88
		ldi	YL,low(RAM+9)
		ldi	YH,high(RAM+9)
		ldi beg1, 0b11111110	
		rjmp K81

SL88:	cpi regim,65
		brne k81
		ldi	YL,low(RAM+9)
		ldi	YH,high(RAM+9)
		ldi beg1, 0b11111110

		ldi  tec,8
		mov tm1,tec
		ldi	YL,low(RAM+10)
		ldi	YH,high(RAM+10)
K800:	ldi beg1, 0b11111111
		st	-Y,beg1
		dec  tm1
		brne K800
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi beg1, 0b11111110
		ldi regim,0
		rjmp sel2
		
K81:	lsl beg1
		st	Y,beg1
		rjmp sel2
	
		
SVET9:	cpi  nomer,8 ;(работает)выполнение св. эфф. №9 (бегущий инд. на каждой ветке с реверсом)
		brne SVET10

		sbrs flo,0;
		rjmp SEL2
		inc regim

		sbrs flo,4
		rjmp REVS

VVV9:	lsl beg1
		brcc fff1
		ldi	beg1,0b10000000

		sbrc flo,4
		rjmp MLAS9
		SBR  flo,0b00010000
		rjmp MLA9
MLAS9:	CBR  flo,0b00010000
MLA9:	rjmp SEL2

fff1:	ldi tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K90:	st	Y+,beg1
		dec  tm1
		brne K90
		rjmp SEL2

REVS:	lsr beg1
		brcc fff2
		ldi	beg1, 0b00000001
		ldi	regim,0
		sbrc flo,4
		rjmp RLAS9
		SBR  flo,0b00010000
		rjmp RLA9
RLAS9:	CBR  flo,0b00010000

RLA9:	rjmp SEL2

fff2:	ldi tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
SR30:	st	Y+,beg1
		dec  tm1
		brne SR30
		rjmp SEL2

SVET10:	cpi  nomer,9 ;(работает) выполнение св. эфф. №10 (бегущая гирлянда)
		brne SVET11
		inc regim

		cpi regim,1
		brne VVV10
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
VVV10:	ldi tec, 0b00000000
		st	Y+,tec
		ldi tec, 0b11111111
		st	Y,tec
		cpi regim,9
		brne SELO2
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi tec, 0b00000000
		st	Y,tec
		ldi regim,0
		rjmp SEL2

SVET11:	cpi  nomer,10 ;выполнение св. эфф. №11 (поочередное включение всех ;гирлянд, затем общее выключение)
		brne SVET12
		sbrs flo,0;
		rjmp SEL2
		inc regim

		cpi regim,1
		brne VVV11
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)

VVV11:	ldi tec,0b00000000
		st	Y+,tec
		cpi regim,9
		brne SELO2
		ldi regim,0
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi  tec,9
		mov tm1,tec
K711:	ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne K711
SELO2:	rjmp SEL2
  

SVET12:	cpi  nomer,11 ; (работает)выполнение св. эфф. №12 (поочередное включение всех ;гирлянд, затем поочередное выключение (реверс))
		brne SVET13
		sbrs flo,0;
		rjmp SEL2
		inc regim

		sbrc flo,4
		rjmp REVS1

		cpi regim,1
		brne VVV12
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
VVV12:	ldi tec,0b00000000
		st	Y+,tec
		cpi regim,9
		brne SELO2
		ldi regim,0
		SBR  flo,0b00010000
		rjmp SEL2

REVS1:	ldi tec, 0b11111111
		st	-Y,tec
		cpi regim,9
		brne SELO2
		ldi regim,0
		CBR  flo,0b00010000
		rjmp SEL2

SVET13:	cpi  nomer,12 ;(работает)выполнение св. эфф. №13 (включение сначало левой половины елки, а затем правой и наоборот) 
		brne SVET14

		sbrc flo,0
		rjmp REVS2

		ldi tec,4
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)

K130:	ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne K130

		ldi tec,4
		mov tm1,tec
		ldi	YL,low(RAM+6)
		ldi	YH,high(RAM+6)
K131:	ldi tec, 0b00000000
		st	Y+,tec
		dec  tm1
		brne K131
		SBR  flo,0b00010000
		rjmp SEL2



REVS2:	ldi tec,4
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K132:	ldi tec,0b00000000
		st	Y+,tec
		dec tm1
		brne K132

		ldi tec,4
		mov tm1,tec
		ldi	YL,low(RAM+6)
		ldi	YH,high(RAM+6)
K133:	ldi tec,0b11111111
		st	Y+,tec
		dec  tm1
		brne K133
		CBR  flo,0b00010000

		rjmp SEL2

SVET14:	cpi  nomer,13 ;выполнение св. эфф. №14 (сначало включение всех гирлянд; затем поочередное выключение)
		brne  SVET15
		sbrs flo,0;
		rjmp SEL2
		inc regim

		sbrc flo,4
		rjmp REVS3

		ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
K141:	ldi tec, 0b00000000
		st	Y+,tec
		dec  tm1
		brne K141
		SBR  flo,0b00010000
		rjmp SEL2

REVS3:	ldi tec, 0b11111111
		st	-Y,tec
		cpi regim,10
		brne SEL22
		ldi regim,0
		CBR  flo,0b00010000
SEL22:	rjmp SEL2

SVET15:	cpi  nomer,14 ;выполнение св. эфф. №15 (бегущий огонек по всей гирлянде)
		brne SVE16

		inc regim

SLA80:	cpi regim,1
		brne SLA81
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi beg1, 0b00000001
		rjmp KA81
SVE16:	rjmp SVET16


SLA81:	cpi regim,9
		brne SLA82
	
		ldi	YL,low(RAM+3)
		ldi	YH,high(RAM+3)

		ldi beg1, 0b00000001
		rjmp KA81

SLA82:	cpi regim,17
		brne SLA83

		ldi	YL,low(RAM+4)
		ldi	YH,high(RAM+4)

		ldi beg1, 0b00000001
		rjmp KA81

SLA83:	cpi regim,25
		brne SLA84
		
		ldi	YL,low(RAM+5)
		ldi	YH,high(RAM+5)
		ldi beg1, 0b00000001
		rjmp KA81

SLA84:	cpi regim,33
		brne SLA85
		
		ldi	YL,low(RAM+6)
		ldi	YH,high(RAM+6)
		ldi beg1, 0b00000001
		rjmp KA81

SLA85:	cpi regim,41
		brne SLA86
		
		ldi	YL,low(RAM+7)
		ldi	YH,high(RAM+7)

		ldi beg1, 0b00000001
		rjmp KA81

SLA86:	cpi regim,49
		brne SLA87
		
		ldi	YL,low(RAM+8)
		ldi	YH,high(RAM+8)
		ldi beg1, 0b00000001
		rjmp KA81

SLA87:	cpi regim,57
		brne SLA88
		ldi	YL,low(RAM+9)
		ldi	YH,high(RAM+9)
		ldi beg1, 0b00000001
		rjmp KA81

SLA88:	cpi regim,65
		brne KA81
		ldi	YL,low(RAM+9)
		ldi	YH,high(RAM+9)
		
		ldi  tec,8
		mov tm1,tec
		ldi	YL,low(RAM+10)
		ldi	YH,high(RAM+10)
KA800:	ldi beg1, 0b11111111
		st	-Y,beg1
		dec  tm1
		brne KA800
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		ldi beg1, 0b00000001
		ldi regim,0
		rjmp sel2
		
KA81:	lsl beg1
		ldi tec, 0xFF
		eor tec,beg1
		st	Y,tec
		rjmp sel2

SVET16: cpi  nomer,15 ;выполнение св. эфф. №16 (бегущий огонек по всей гирлянде с реверсом)
		brne SVE17

		sbrs flo,4;
		rjmp DEV1
		dec regim
		rjmp SLV80

DEV1:	inc regim


SLV80:	cpi regim,1
		brne SLV81
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
		CBR  flo,0b00010000
KVV1:	sbrs flo,4;
		rjmp SD1		
		ldi beg1, 0b10000000
		rjmp BN1
SD1:	ldi beg1, 0b00000001
BN1:	rjmp KV81

SVE17:	rjmp sel2

SLV81:	cpi regim,9
		brne SLV82
	
		ldi	YL,low(RAM+3)
		ldi	YH,high(RAM+3)

		sbrs flo,4;
		rjmp SD2		
		ldi beg1, 0b10000000
		rjmp BN2
SD2:	ldi beg1, 0b00000001
BN2:	rjmp KV81


SLV82:	cpi regim,17
		brne SLV83

		ldi	YL,low(RAM+4)
		ldi	YH,high(RAM+4)

		sbrs flo,4;
		rjmp SD3		
		ldi beg1, 0b10000000
		rjmp BN3
SD3:	ldi beg1, 0b00000001
BN3:	rjmp KV81

SLV83:	cpi regim,25
		brne SLV84
		
		ldi	YL,low(RAM+4)
		ldi	YH,high(RAM+4)

		sbrs flo,4;
		rjmp SD4		
		ldi beg1, 0b10000000
		rjmp BN4
SD4:	ldi beg1, 0b00000001
BN4:	rjmp KV81

SLV84:	cpi regim,33
		brne SLV85
		
		ldi	YL,low(RAM+6)
		ldi	YH,high(RAM+6)

		sbrs flo,4;
		rjmp SD5		
		ldi beg1, 0b10000000
		rjmp BN5
SD5:	ldi beg1, 0b00000001
BN5:	rjmp KV81

SLV85:	cpi regim,41
		brne SLV86
		
		ldi	YL,low(RAM+7)
		ldi	YH,high(RAM+7)

		sbrs flo,4;
		rjmp SD6		
		ldi beg1, 0b10000000
		rjmp BN6
SD6:	ldi beg1, 0b00000001
BN6:	rjmp KV81

SLV86:	cpi regim,49
		brne SLV87
		
		ldi	YL,low(RAM+8)
		ldi	YH,high(RAM+8)

		sbrs flo,4;
		rjmp SD7		
		ldi beg1, 0b10000000
		rjmp BN7
SD7:	ldi beg1, 0b00000001
BN7:	rjmp KV81

SLV87:	cpi regim,57
		brne SLV88
		ldi	YL,low(RAM+9)
		ldi	YH,high(RAM+9)

		sbrs flo,4;
		rjmp SD8		
		ldi beg1, 0b10000000
		rjmp BN8
SD8:	ldi beg1, 0b00000001
BN8:	rjmp KV81

SLV88:	cpi regim,65
		brne KV81
	
		SBR  flo,0b00010000
			
KV81:	sbrs flo,4;
		rjmp SD14		
		lsr beg1

  		rjmp BN14

SD14:	lsl beg1

BN14:	ldi tec, 0xFF
		eor tec,beg1
		st	Y,tec
		
sel2:   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Работа с клавиатурой		dec	 Klav
		
		ldi  tec,0b11111110;кнопка № 1 ;Увеличение значения
		out  PORTB,tec
		nop
		nop
		nop
		sbic PIND,4
		rjmp S1
		sbrc flo1,0
mss1:	rjmp ms1
		SBR  flo1,0b00000001

		sbrc  flo,7	
		rjmp  v1
		inc nomer
		cpi  nomer,16
		brne SNN1
		ldi	nomer,0
SNN1:	ldi	YL,low(RAM)	;предварительная запись
		ldi	YH,high(RAM)			;
		st	Y,nomer
		rjmp ms1

v1:		inc speed
		cpi  speed,10
		brne v2
		ldi	speed,1
v2:		ldi	YL,low(RAM+1)	;предварительная запись
		ldi	YH,high(RAM+1)			;
		st	Y,speed
		rjmp ms1

S1:		CBR  flo1,0b00000001

S11:	ldi  tec,0b11111101;кнопка № 2 ;Уменьшения значения
		out  PORTB,tec
		nop
		nop
		nop
		sbic PIND,4
		rjmp S2
		sbrc flo1,1
		rjmp ms1
		SBR  flo1,0b00000010

		sbrc  flo,7	
		rjmp  v3

		cpi  nomer,0
		breq SNV1
		dec nomer
SNV1:	ldi	YL,low(RAM)	;предварительная запись
		ldi	YH,high(RAM)			;
		st	Y,nomer
		rjmp ms1

v3:		cpi  speed,1
		breq v4
		dec speed
v4:		ldi	YL,low(RAM+1)	;предварительная запись
		ldi	YH,high(RAM+1)			;
		st	Y,speed
		rjmp ms1


S2:		CBR  flo1,0b00000010
		
S12:	ldi  tec,0b11111011;кнопка № 3 ; Cтарт/стоп
		out  PORTB,tec
		nop
		nop
		nop
		sbic PIND,4
		rjmp S3
		sbrc flo1,2
		rjmp ms1
		SBR  flo1,0b00000100

		CBR flo,0b00010000
		ldi	regim,0
		ldi  tec,9
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
KS2:	ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne KS2

		sbrc flo,6
		rjmp MLAS1
		SBR  flo,0b01000000
		rjmp MLA2
MLAS1:	CBR  flo,0b01000000
MLA2:	rjmp  ms1

S3: 	CBR  flo1,0b00000100
	
		ldi  tec,0b11110111;кнопка № 4 ; Включение/выключение всех индикаторов
		out  PORTB,tec
		nop
		nop
		nop
		sbic PIND,4
		rjmp S4
		sbrc flo1,3
		rjmp ms1
		SBR  flo1,0b00001000

		sbrc flo,5
		rjmp MLAX1
		SBR  flo,0b00100000
		ldi  tec,14
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
KX2:	ldi tec, 0b11111111
		st	Y+,tec
		dec  tm1
		brne KX2
		rjmp MLX2

MLAX1:	CBR  flo,0b00100000
		ldi  tec,14
		mov tm1,tec
		ldi	YL,low(RAM+2)
		ldi	YH,high(RAM+2)
KX3:	ldi tec, 0b00000000
		st	Y+,tec
		dec  tm1
		brne KX3
MLX2:	rjmp  ms1

S4: 	CBR  flo1,0b00001000

		ldi	 tec,0b11101111		;кнопка № 5
		out  PORTB,tec
		nop
		nop
		nop
		sbic PIND,4
		rjmp S5
		sbrc flo1,4
		rjmp ms1
		SBR  flo1,0b00010000	

		sbrc flo,7
		rjmp ML1
		SBR  flo,0b10000000
		rjmp ms1
ML1:	CBR  flo,0b10000000
		rjmp ms1
S5: 	CBR  flo1,0b00010000

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;отобраажение дисплея
ms1:	ldi	ZL,low(RAM)
		ldi	ZH,high(RAM)
		ldi	catod,0b11111111
		sbi PORTD,6
		sbi PORTD,5
		inc registr
		cpi registr,11
		brne m0	
		ldi	 registr,0

m0:		cpi  registr,1
		brne m1	
		ldi	 catod,0b11111110
		adiw ZL,0
		rjmp  mVX

m1:		cpi  registr,2
		brne m2
		ldi	 catod,0b11111101
		adiw ZL,1
		rjmp  mVX
						
m2:		cpi  registr,3
		brne m3
		ldi	 catod,0b11111011
		adiw ZL,2
		rjmp  mVX

m3:		cpi  registr,4
		brne m4	
		ldi	 catod,0b11110111
		adiw zL,3
		rjmp  mVX

m4:		cpi  registr,5
		brne m5	
		ldi	 catod,0b11101111
		adiw ZL,4
		rjmp  mVX

m5:		cpi  registr,6
		brne m6	
		ldi	 catod,0b11011111
		adiw ZL,5
		rjmp  mVX

m6:		cpi  registr,7
		brne m7
		ldi	 catod,0b10111111
		adiw ZL,6
		rjmp  mVX

m7:		cpi  registr,8
		brne m8
		ldi	 catod,0b01111111
		adiw ZL,7
		rjmp  mVX

m8:		cpi  registr,9
		brne m9
		cbi PORTD,5
		adiw ZL,8
		rjmp  mVX

m9:		cpi  registr,10
		brne  mVX
		cbi PORTD,6
		adiw ZL,9
				
mVX:	;mov tec,catod
		;com  tec1
		out  PORTB,catod
		cbi PORTD,2
		nop
		nop
		nop
		sbi PORTD,2

		ld cod,Z
		cpi  registr,1
		brne m40
		rjmp  m30

m40:	cpi  registr,2
		brne m26

m30:	CPI  cod,0
		brne m10
		ldi  tec,0b11000000
m10:	CPI  cod,1
		brne m11
		ldi  tec,0b11111001
m11:	CPI  cod,2
		brne m12
		ldi  tec,0b10100100
m12:	CPI  cod,3
		brne m13
		ldi  tec,0b10110000
m13:	CPI  cod,4
		brne m14
	    ldi  tec,0b10011001
m14:	CPI  cod,5
		brne m15
		ldi  tec,0b10010010
m15:	CPI  cod,6
		brne m16
		ldi  tec,0b10000010
m16:	CPI  cod,7
		brne m17
		ldi  tec,0b11111000
m17:	CPI  cod,8
		brne m18
		ldi  tec,0b10000000
m18:	CPI  cod,9
		brne m19
		ldi  tec,0b10010000

m19:	CPI  cod,10
		brne m20
		ldi  tec,0b10001000

m20:	CPI  cod,11
		brne m21
		ldi  tec,0b00000000

m21:	CPI  cod,12
		brne m22
		ldi  tec,0b11000110

m22:	CPI  cod,13
		brne m23
		ldi  tec,0b01000000

m23:	CPI  cod,14
		brne m24
		ldi  tec,0b10000110

m24:	CPI  cod,15
		brne m25
		ldi  tec,0b10001110

m25:	out  PORTB,tec
		rjmp  m202

m26:    out  PORTB,cod
			
m202:	sbrc  catod,1
		rjmp m203

		sbrc  flo,7	
		rjmp  m201
		sbi   PORTB,7
		rjmp  m203
m201:	cbi   PORTB,7
		
m203:	out SREG,SSREG
		sei
		reti		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.EXIT
