Главная страница

лабы. Laboratornye_raboty_1-5 Микропроцессорные системы. Методические указания к лабораторным работам 15 по дисциплине "Микропроцессорные системы" для студентов направления подготовкиспециальности


Скачать 1.97 Mb.
НазваниеМетодические указания к лабораторным работам 15 по дисциплине "Микропроцессорные системы" для студентов направления подготовкиспециальности
Дата03.03.2023
Размер1.97 Mb.
Формат файлаdocx
Имя файлаLaboratornye_raboty_1-5 Микропроцессорные системы.docx
ТипМетодические указания
#966409
страница4 из 4
1   2   3   4

//ТАБЛИЦЫ МЕЛОДИЙ

//В траве сидел кузнечик

7 flash unsigned char mell[] = {109, 104, 109, 104, 109, 108, 108, 96, 108, 104, 108, 104, 108, 109, 109, 96, 109, 104, 109, 104, 109, 108, 108, 96, 108, 104, 108, 104, 108, 141, 96, 109, 111, 79, 78, 111, 111, 112, 80, 80, 112, 112, 112, 111, 109, 108, 109, 109, 96, 111, 79, 79, 111, 111, 112, 80, 80, 112, 112, 112, 111, 109, 108, 141, 128, 96, 255};

//Улыбка

32 flash unsigned char mel7[] = {107, 104, 141, 139, 102, 105, 104, 102, 164, 128, 104, 107, 109, 109, 109, 111, 114, 112, 111, 109, 144, 139, 128, 109, 111, 144, 96, 111, 109, 104, 107, 105, 173, 128, 111, 109, 112, 107, 111, 109, 109, 107, 102, 104, 134, 132, 128, 100, 103, 107, 107, 107, 107, 139, 112, 100, 103, 102, 102, 102, 134, 102, 103, 107, 105, 107, 108, 108, 108, 108, 107, 105, 107, 108, 144, 142, 128, 112, 107, 110, 140, 112, 105, 108, 107, 107, 107, 105, 140, 139, 139, 112, 103, 102, 103, 105, 108, 107, 105, 103, 128, 112, 107, 110, 108, 108, 108, 140, 112, 105, 108, 107, 107, 107, 139, 112, 103, 102, 103, 105, 108, 107, 105, 103, 105, 139, 132, 128, 96, 96, 96, 255};

//ТАБЛИЦА АДРЕСОВ ВСЕХ МЕЛОДИЙ

flash unsigned char *tabm[]={mel1,mel2,mel3,mel4,mel5,mel6,mel7};

void main(void){

unsigned char count; // Определяем переменную count-номер мелодии

unsigned char temp; //Определяем переменную temp

unsigned char fnota; //Код тона ноты

unsigned char dnota; //Код длительности ноты

flash unsigned char *nota; //Ссылка на текущую ноту

PORTB=0x08; //Инициализация порта РВ

DDRB=0x08;

PORTD=0x7F; //Инициализация порта PD

DDRD=0x00;

ACSR=0x80; //Инициализация (отключение) компаратора

TCCR1A=0x00; //Инициализация таймера счетчика Т1

TCCR1B=0x0 9;

while (1) {

m1: temp=PIND;

for (count=0; count<7; count++){ //Цикл сканирования датчиков

if ((temp&l)==0) goto m3; //Проверка младшего бита переменной temp

temp >>= 1; // Сдвиг содержимого temp

}

m2: TCR1A = 0x00; //Выключение звука

goto m1; //Переход на начало

//Воспроизведение мелодии

m3: nota = tabm[count]; //Устанавливаем указатель на первую ноту

m4: if (PIND==0x7F) goto m2 //Если ни одна кнопка не нажата, закончить

if (*nota==0xFF) goto m3; //Проверка на конец мелодии

fnota =(*nota)&0x1F; //Определяем код тона

dnota = ((*nota)>>5)&0x07; //Определяем код длит-ти

if (fnota==0) goto m5; //Если пауза не воспр-м звук

OCR1A=tabkd[fnota]; //Программируем частоту звука

TCCR1A=0x40; // Включаем звук

m5: delay_ms(tabz[dnota]); //Формируем задержку

TCCR1A=0x00; //Выключаем звук

delay_ms(tabz[0]); //Задержка между нотами

nota++; //Перемещаем указатель на следующую ноту

goto m4; //Переход к началу цикла

}

}
1   2   3   4


написать администратору сайта