Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoduchka_per.doc
Скачиваний:
4
Добавлен:
18.11.2018
Размер:
518.14 Кб
Скачать

Результати роботи

0 0 0 0 X1 X2 X3 0

Лабораторна робота №2

Тема: Складання простих програм на прикладі програмування звукових ефектів

Мета: Написати програму, що створює гудки пивної частоти, проекспериментувати з програмою і на основі результатів зробити висновки.

У мікропроцесорній лабораторії гучномовець приєднано до молодшого біта порта світло-діодів. Якщо змінювати по послідовному каналу десятки разів на секунду стан молодшого біта порту з одиниці на нуль і навпаки, то в гучномовці буде звук певної частоти. Наприклад, нота «ля» 1-ої октави-це коливання фізичного тіла (камертон, струна) 440 раз в секунду, тобто 440 Гц. Програмним шляхом можна змінювати часові затримки між командами (імпульсами) і тим самим змінювати висоту звуку.

Завдання 1

Відтранслювати та виконати програму, яка видає гудок певної частоти.

Знаки запитання у програмі означають довільний байт. Зірочками помічені команди, які треба поміняти для виконання наступного етапу.

Результат

Адреса

Програма

Коментар

8000

NOP

Зарезервоване місце

8001

NOP

Порожні команди

8002

MVI A, #81

Завантажити в акумулятор код для програмування інтефейсу

8004

OUT #FB

Вивести вміст акумулятора на програмний порт інтерфейсу

8006

M1: INR A

Інвертування молодшого біта шляхом збільшення на одиницю

8007

MVI C, #FF

Завантажити в регістр “С” період затримки між імпульсами, вираженими у часі виконання команд “DCR” та “JNZ”

8009

M2: DCR C

Зменшення лічильника циклів затримки на одиницю

800A

JNZ M2

Перехід на початок циклу

800D

OUT #F9

Вивід молодшого біта акумулятора на гучномовець

800F

NOP

Зарезервоване місце для подальших етапів роботи

8010

JMP M1

Перехід на підготовку до виконання наступного імпульсу

Завдання 2

Замінити у введеній програмі команди, що помічені зірочками. Запустити програму. Визначити за яким законом змінюється частота звуку.

Результат

Адреса

Програма

Коментар

8000

NOP

Зарезервоване місце

8001

NOP

Порожні команди

8002

MVI A, #81

Завантажити у акумулятор код для програмування інтерфейсу

8004

OUT #FB

Вивести вміст акумулятора на програмний порт інтерфейсу

8006

M1: INR B

інкремент регістра В (інвертувати молодший біт регістру В)

8007

MOV A, B

Вміст регістра В передати в акумулятор А

8008

MOV C, B

Підготовка до затримки

8009

M2: DCR C

Зменшення лічильника циклів затримки на одиницю

800A

JNZ M2

Реалізація затримки

800D

OUT #F9

Вивід інвертованого імпульсу на гучномовець

800F

NOP

Зарезервоване місце для подальших етапів роботи

8010

JNZ M1

Перехід на підготовку до видачі наступного імпульсу

Завдання 3

Виконати програму, яка видає короткий гудок і зупиняється.

Результат

Адреса

Програма

Коментар

8000

+MVI E, #FF

Завантажити у регістр “Е” кількість імпульсів, яку треба видати на гучномовець

8002

MVI A, #81

Завантажити в акумулятор код для програмування інтерфейсу

8004

OUT #FB

Вивести вміст акумулятора на програмуючий порт інтерфейсу

8006

M1: INR A

Інвертування молодшого біта шляхом збільшення на одиницю

8007

MVI C, #FF

Завантажити у регістр “С” період затримки між імпульсами, вираженими у часі виконання команд “DCR” та “INZ”

8009

M2: DCR C

Зменшення лічильника циклів затримки на одиницю

800A

JNZ M2

Перехід на початок циклу, якщо не нуль

800D

OUT #F9

Вивід інвертованого імпульсу на гучномовець

800F

DCR E

Зменшити лічильник імпульсів на одиницю

8010

JNZ M1

Перехід на підготовку до видачі наступного імпульсу, якщо не нуль

8013

HLT

Зупинка процесора

Завдання 4

З поданої вище програми зробити підпрограму, яка видає гудок у залежності від коду натиснутої клавіші. Основну програму розмістити в пам’яті за адресою #8100. У основній програмі використання підпрограми вводу з клавіатури, яка знаходиться у моніторі за адресою #216. Код клавіші після звернення до підпрограми буде знаходитись в акумуляторі.

Результат

Адреса

Програма

Коментар

8100

M3: CALL #0216

Опитати клавіатуру

8103

RLC

Збільшити код клавіші в 4 рази

8104

RLC

8105

MOV B, A

Зберегти його у “В” як параметр частоти

8106

CALL #8000

Викликати підпрограму для видачі звуку

8109

JMP M3

Зробити нескінчений цикл

8000

MVI E, #FF

Завантажити у регістр “Е” кількість імпульсів, яку треба видати на гучномовець

8002

MVI A, #81

Завантажити в акумулятор код для програмування інтерфейсу

8004

OUT #FB

Вивести вміст акумулятора на програмуючий порт інтерфейсу

8006

M1: INR A

Інвертування молодшого біта шляхом збільшення на одиницю

8007

MOV C, B

Переслати у регістр “С” параметри затримки

8008

NOP

Порожня команда

8009

M2: DCR C

Зменшення лічильника циклів затримки на одиницю

800A

JNZ M2

Перехід на початок циклу, якщо не нуль

800D

OUT #F9

Вивід інвертованого імпульсу на гучномовець

800F

DCR E

Зменшити лічильник імпульсів на одиницю

8010

JNZ M1

Перехід на підготовку до видачі наступного імпульсу, якщо не нуль

8013

RET

Безумовне повернення з підпрограми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]