Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт до 3 лаби саніне.doc
Скачиваний:
1
Добавлен:
21.07.2019
Размер:
423.42 Кб
Скачать

Xorwf temp3,w ;Последний светодиод был?

jnz Snake2label ;Нет - следующий светодиод

decfsz TEMP2,F ;Последний круг был?

goto RIGHT_SNAKE ;Нет - еще круг

return

; --- НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ ---

;__________________________________________________________________________________________________

Begin movf PORTA,F ;Приводим в соответствие

movf PORTB,F ;защелки портов

bcf STATUS,RP1

bsf STATUS,RP0 ;Обращение к банку 1 для доступа к TRIS и OPTION_REG

mvi TRISA,B'00000001';Устанавливаем выводы порта А как 'OOxOOOOI'

mvi TRISB,B'00000000';Устанавливаем выводы порта B как 'OOOOOOOO' (I-in, O-out)

mvi OPTION_REG,0 ;Коэффициент деления 2

bcf STATUS,RP0 ;Обращение к банку 0

clrf PORTA

mvi PORTB,0FFh ;Гасим светодиоды

clrf OUT

clrf NUMBER

movlw BYTE00 ;Заносим адрес ячейки BYTE00

movwf ADDRESS ;в ячейку ADDRESS (см обработчик прерываний)

mvi LONGTIMER,5 ;Начальное значение - воспроизведение через 5 циклов

clrf TMR0

mvi INTCON,B'10100000' ;Разрешаем прерывания по переполнению TMR0

GOTO Mainloop_label

;--------------------------------------------------------------------------------------------------

Mainloop_label ;ОСНОВНОЙ ЦИКЛ

;ЭФФЕКТ 11 - "змейка" вправо

mvi TIME,DELAY5 ;Задержка между сменой комбинаций

mvi TEMP2,5 ;Сколько оборотов влево

mvi CHANGE,D'255' ;Изменение скорости (ускорение на 1)

call RIGHT_SNAKE

mvi TEMP2,5 ;Сколько оборотов влево

mvi CHANGE,D'1' ;Изменение скорости (замедление на 1)

call RIGHT_SNAKE

decf LONGTIMER,F ;Цикл пройден - декрементируем

goto Mainloop_label ;Возвращаемся к началу основного цикла

;--------------------------------------------------------------------------------------------------

;МЕЛОДИИ

;--------------------------------------------------------------------------------------------------

;--------------------------------------------------------------------------------------------------

Melody11 mvi SPEED,D'140' ;Темп исполнения

;Три танкиста (хитрость - коды нот хранятся в EEPROM)

bsf STATUS,RP0 ;Управляющие регистры EEPROM все в банке 1 (PIC16F628)

mvi EEADR,D'107' ;Начальный адрес данной мелодии - со 107-й ячейки

EE3_label bsf STATUS,RP0 ;Банк 1

bsf EECON1,RD ;Команда чтения данных из EEPROM

nop ;Пауза для гарантии чтения

movf EEDATA,W ;Пересылаем прочитанные данные в W

bcf STATUS,RP0 ;Банк 0

call Sound ;Воспроизведение

bsf STATUS,RP0 ;Банк 1

incf EEADR,F ;Инкремент адреса

movf EEADR,W

bcf STATUS,RP0 ;Банк 0

xorlw D'128' ;21 нота всего в данной мелодии

jz Finish ;Если нота была последней - переход

goto EE3_label

data B'10010010' ; ;Игрушка (из к/ф) - 49 нот

data B'01111010'

data B'01101100'

data B'01010100'

data B'01111010'

data B'01111010'

data B'01101010'

data B'01111010'

data B'01011100'

data B'01000100'

data B'11111100'

data B'00110010'

data B'01000010'

data B'01010100'

data B'11111010'

data B'01010010'

data B'10001010'

data B'10001010'

data B'01111010'

data B'01110010'

data B'01111100'

;--------------------------------------------------------------------------------------------------

GOTO Begin

end