



countL	equ	0x20	;Всякие счетчики
countH	equ	0x21	;и мусорники
tmp1	equ	0x22
tmp2	equ	0x23
btmrL	equ	0x24
btmrH	equ	0x25
rand_lo	equ	0x26
rand_hi	equ	0x27


w_temp	equ	0x70
s_temp	equ	0x71
vport	equ	0x72	;Виртуальный порт
fmax	equ	0x73	;Вершина стека
tmax	equ	0x74	;Точка отсчета для TMR1
flags	equ	0x76	;Флаговая переменная
effect	equ	0x77	;Номер эффекта


	__config _WDT_OFF & _MCLRE_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF & _BODEN_ON

	include "p16f628A.inc"


	org 0x000
	clrwdt
	goto start

	org 0x004
	movwf w_temp
	swapf STATUS,W
	movwf s_temp
	clrf STATUS

	movf INDF,W		;Переносим содержимое регистра INDF
	movwf vport		;В переменную VPORT
	call loader		;Выгружаем данные на индикацию
	incf FSR,f		;инкрементируем указатель стека эффектов
	movf fmax,W
	subwf FSR,W
	btfss STATUS,Z		;если дошло, то сбрасуем стек
	goto gohome		;а если не дошло, то выходим из прерывания.
	movlw 0xA0
	movwf FSR

gohome	movf tmax,W
	movwf TMR1H
	incf TMR1H,f
	movf tmax,W
	movwf TMR1L
	bcf PIR1,TMR1IF		;Сбрасуем флаг переполнения таймера
	swapf s_temp,W
	movwf STATUS
	swapf w_temp,f
	swapf w_temp,W
	retfie



;**************************************
;	Основной цикл

main	
	btfss PORTB,7
	call kn_plus
	btfss PORTB,6
	call kn_minus
	btfss PORTB,5
	call kn_effect_change	
	btfss PORTB,4
	call mode_change

	btfsc flags,0
	call LMD		;Если включен режим цветомузыки
	goto main


;**************************************
;	Обработка кнопки Смена эффекта СДУ

kn_effect_change
	call delay
	call effect_change

	movlw 0xA0	;Сброс указателя стека
	movwf FSR	
	incf fmax,f	;Увеличиваем на единичку указатель предела

	bsf INTCON,GIE	;Разрешаем прерывания

	call delay

_kch_loop
	nop
	clrwdt
	nop
	btfss PORTB,5
	goto _kch_loop
	call pause
	return

effect_change
	bcf INTCON,GIE	;Запрет прерываний
	incf effect,f
	movlw d'27'
	subwf effect,W
	btfsc STATUS,Z
	clrf effect

	movlw 0xA0	;Сброс указателя стека
	movwf FSR	

	movf effect,W
	addwf PCL,f
	goto effect0	;0
	goto effect1	;1
	goto effect2	;2
	goto effect3	;3
	goto effect4	;4
	goto effect5	;5
	goto effect6	;6
	goto effect7	;7
	goto effect8	;8
	goto effect9	;9
	goto effect10	;10
	goto effect11	;11
	goto effect12	;12
	goto effect13	;13
	goto effect14	;14
	goto effect15	;15
	goto effect16	;16
	goto effect17
	goto effect18
	goto effect19
	goto effect20
	goto effect21
	goto effect22
	goto effect23
	goto effect24
	goto effect25
	goto effect26

effect0
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return
	
effect1	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect2	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	movf FSR,W
	movwf fmax
	return
	
effect3	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'01000010'
	movwf INDF
	incf FSR,f
	movlw b'00100100'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'00100100'
	movwf INDF
	incf FSR,f
	movlw b'01000010'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect4	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'11000000'
	movwf INDF
	incf FSR,f
	movlw b'11100000'
	movwf INDF
	incf FSR,f
	movlw b'11110000'
	movwf INDF
	incf FSR,f
	movlw b'11111000'
	movwf INDF
	incf FSR,f
	movlw b'11111100'
	movwf INDF
	incf FSR,f
	movlw b'11111110'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'01111111'
	movwf INDF
	incf FSR,f
	movlw b'00111111'
	movwf INDF
	incf FSR,f
	movlw b'00011111'
	movwf INDF
	incf FSR,f
	movlw b'00001111'
	movwf INDF
	incf FSR,f
	movlw b'00000111'
	movwf INDF
	incf FSR,f
	movlw b'00000011'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return


effect5	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect6
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'11000011'
	movwf INDF
	incf FSR,f
	movlw b'11100111'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'01111110'
	movwf INDF
	incf FSR,f
	movlw b'00111100'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect7
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'11111110'
	movwf INDF
	incf FSR,f
	movlw b'11111101'
	movwf INDF
	incf FSR,f
	movlw b'11111011'
	movwf INDF
	incf FSR,f
	movlw b'11110111'
	movwf INDF
	incf FSR,f
	movlw b'11101111'
	movwf INDF
	incf FSR,f
	movlw b'11011111'
	movwf INDF
	incf FSR,f
	movlw b'10111111'
	movwf INDF
	incf FSR,f
	movlw b'01111111'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect8	movlw b'00000000'		;Стробоскоп
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect9	movlw b'00000000'		;Двойной стробоскоп
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movlw b'11110000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movwf INDF
	incf FSR,f
	movlw b'00001111'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect10				;Случайный набор
	movlw d'60'
	movwf countL
	call random
	call random
_e10lop	clrwdt
	call random
	movf rand_lo,W
	movwf INDF
	incf FSR,f
	decfsz countL,f
	goto _e10lop
	movf rand_hi,W
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect11
	movlw b'10101010'
	movwf INDF
	incf FSR,f
	movlw b'01010101'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect12
	movlw b'11000000'
	movwf INDF
	incf FSR,f
	movlw b'01100000'
	movwf INDF
	incf FSR,f
	movlw b'00110000'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'00001100'
	movwf INDF
	incf FSR,f
	movlw b'00000110'
	movwf INDF
	incf FSR,f
	movlw b'00000011'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect13
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00010001'
	movwf INDF
	incf FSR,f
	movlw b'00100100'
	movwf INDF
	incf FSR,f
	movlw b'01010000'
	movwf INDF
	incf FSR,f
	movlw b'11000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect14
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'11000011'
	movwf INDF
	incf FSR,f
	movlw b'11100111'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'11100111'
	movwf INDF
	incf FSR,f
	movlw b'11000011'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect15
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'01000010'
	movwf INDF
	incf FSR,f
	movlw b'00100100'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'00100100'
	movwf INDF
	incf FSR,f
	movlw b'01000010'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'11000000'
	movwf INDF
	incf FSR,f
	movlw b'11100000'
	movwf INDF
	incf FSR,f
	movlw b'11110000'
	movwf INDF
	incf FSR,f
	movlw b'11111000'
	movwf INDF
	incf FSR,f
	movlw b'11111100'
	movwf INDF
	incf FSR,f
	movlw b'11111110'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'01111111'
	movwf INDF
	incf FSR,f
	movlw b'00111111'
	movwf INDF
	incf FSR,f
	movlw b'00011111'
	movwf INDF
	incf FSR,f
	movlw b'00001111'
	movwf INDF
	incf FSR,f
	movlw b'00000111'
	movwf INDF
	incf FSR,f
	movlw b'00000011'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'10000001'
	movwf INDF
	incf FSR,f
	movlw b'11000011'
	movwf INDF
	incf FSR,f
	movlw b'11100111'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'01111110'
	movwf INDF
	incf FSR,f
	movlw b'00111100'
	movwf INDF
	incf FSR,f
	movlw b'00011000'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'11111110'
	movwf INDF
	incf FSR,f
	movlw b'11111101'
	movwf INDF
	incf FSR,f
	movlw b'11111011'
	movwf INDF
	incf FSR,f
	movlw b'11110111'
	movwf INDF
	incf FSR,f
	movlw b'11101111'
	movwf INDF
	incf FSR,f
	movlw b'11011111'
	movwf INDF
	incf FSR,f
	movlw b'10111111'
	movwf INDF
	incf FSR,f
	movlw b'01111111'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'00000000'		;Двойной стробоскоп
	movwf INDF
	incf FSR,f
	movlw b'11110000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect16
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect17
	movlw b'00000001'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect18
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect19
	movlw b'00000010'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect20
	movlw b'00000100'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect21
	movlw b'00001000'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect22
	movlw b'00010000'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect23
	movlw b'00100000'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect24
	movlw b'01000000'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect25
	movlw b'10000000'
	movwf INDF
	incf FSR,f
	movwf INDF
	movf FSR,W
	movwf fmax
	return

effect26
	movlw b'11111111'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00110000'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00001100'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	incf FSR,f
	movlw b'00000011'
	movwf INDF
	incf FSR,f
	movlw b'00000000'
	movwf INDF
	movf FSR,W
	movwf fmax
	return
	



	





;***************************************************
;Подпрограмма генерации случайного числа
;
random	movf rand_hi,W
	iorwf rand_lo,W
	btfsc STATUS,Z
	comf rand_lo,f
	btfss rand_hi,6
	movlw 0x00
	btfsc rand_hi,6
	movlw 0x80
	xorwf rand_hi,f
	btfss rand_hi,4
	movlw 0x00
	btfsc rand_hi,4
	movlw 0x80
	xorwf rand_hi,f
	btfss rand_lo,3
	movlw 0x00
	btfsc rand_lo,3
	movlw 0x80
	xorwf rand_hi,f
	
	rlf rand_hi,W
	rlf rand_lo,f
	rlf rand_hi,f
	return


;**************************************
;Обработка кнопки СМЕНА РЕЖИМА ЦМУ/СДУ
mode_change
	call delay

	movlw b'00000001'
	xorwf flags,f

	btfss flags,0		;Если включена цветомузыка то прерывания запрещены.
	bsf INTCON,GIE
	btfsc flags,0		;А если выключена то разрешены.
	bcf INTCON,GIE

_md_lop	clrwdt
	btfss PORTB,4
	goto _md_lop

	call pause
	return

;**************************************
;Обработка кнопки +1
kn_plus
	call delay

	incf tmax,f
	movlw d'250'
	subwf tmax,W
	btfsc STATUS,Z
	decf tmax,f

	call pause
	return

;**************************************
;Обработка кнопки -1
kn_minus
	call delay

	decf tmax,f
	movlw d'2'
	subwf tmax,W
	btfsc STATUS,Z
	incf tmax,F

	call pause
	return

;**************************************
;	Выгрузка данных в порты
;
loader	movf vport,W
	movwf PORTA	;Младший полубайт сюды, в порт А
	swapf vport,W
	movwf PORTB	;А старший полубайт сюды, в порт Б
	clrwdt
	return

;**************************************
;	Задержка короткая
;
delay	movlw 0xFF
	movwf countL
_loop	decfsz countL,f
	goto _loop
	clrwdt
	return

;**************************************
;	Задержка длительная
;
pause	movlw 0x6F
	movwf countH
_loop2	movlw 0xFF
	movwf countL
_loop1	decfsz countL,f
	goto _loop1
	clrwdt
	decfsz countH,f
	goto _loop2
	return

;**************************************
;	Цветомузыка
LMD	bcf INTCON,GIE
	clrf TMR0
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay
	call delay

	
	clrf vport
	
	movlw d'2'
	subwf TMR0,W
	movlw b'00000001'
	btfsc STATUS,C
	movwf vport

	movlw d'4'
	subwf TMR0,W
	movlw b'00000010'
	btfsc STATUS,C
	movwf vport

	movlw d'6'
	subwf TMR0,W
	movlw b'00000100'
	btfsc STATUS,C
	movwf vport

	movlw d'8'
	subwf TMR0,W
	movlw b'00001000'
	btfsc STATUS,C
	movwf vport

	movlw d'10'
	subwf TMR0,W
	movlw b'00010000'
	btfsc STATUS,C
	movwf vport

	movlw d'12'
	subwf TMR0,W
	movlw b'00100000'
	btfsc STATUS,C
	movwf vport


	movlw d'14'
	subwf TMR0,W
	movlw b'01000000'
	btfsc STATUS,C
	movwf vport


	movlw d'16'
	subwf TMR0,W
	movlw b'10000000'
	btfsc STATUS,C
	movwf vport

	movf vport,f		;Проверяем есть ли сигнал
	btfss STATUS,Z
	goto loader		;Если есть, то цветан
	bsf INTCON,GIE		;а если нету то возвращаем СДУ как фоновый канал.
	return


;**************************************
;	Начальная инициализация
start
	clrf PORTA
	clrf PORTB
	movlw b'00000111'	;Отключаем компараторы
	movwf CMCON 
	bsf STATUS,RP0		;Банк 1
	movlw b'11110000'	
	movwf TRISA
	movlw b'11110000'
	movwf TRISB
	movlw b'00110001'
	movwf OPTION_REG
	movlw b'00000001'
	movwf PIE1
	bcf STATUS,RP0
	clrf PORTA
	clrf PORTB
	movlw b'00110001'
	movwf T1CON
	clrf TMR1L		;Сбрасуем таймер 1
	clrf TMR1H
	clrf TMR1L
	movlw b'11000000'	;Разрешаем прерывания от переферии и глобально!
	movwf INTCON

	movlw d'170'
	movwf tmax

	clrf vport		;
	clrf flags		;
	clrf effect		;

	movlw 0xA0	;Сброс указателя стека
	movwf FSR	
	call effect0		;Загружаем набор эффекта №1
	movlw 0xA0	;Сброс указателя стека
	movwf FSR	
	incf fmax,f

	goto main		


	end
	
