Принцип действия музыкального синтезатора основывается на делении тактовой частоты микропроцессором при помощи программируемого таймера КР 580 ВИ 53. Таймер программируется для работы в режиме 3 (генерация прямоугольных сигналов). Каждой ноте соответствует строго определённая частота, получаемая путём деления тактовой частоты F2 (TTL) на соответствующие коэффициенты. Длительность звучания ноты задаётся программно. Соответствующие каждой ноте частоты и коэффициенты деления для используемой тактовой частоты 1,23 МГц, приведены в инструкции по эксплуатации конструктора микро – ЭВМ «Энерго». В этой же инструкции приводится пример программной реализации музыкального синтезатора, коды, длительность звучания нот и соответствующие им частоты.
Организация обмена данными между двумя микропроцессорными системами.
Организацию обмена данными в МП системах можно проследить на примере параллельной передачи информации между двумя конструкторами микро – ЭВМ «Энерго» (рис. 5.4.). Для этого порт А одного комплекта «Энерго» должен быть запрограммирован на вывод информации, а другого – на ввод. Косвенную адресацию к ячейкам памяти, в которых хранится передаваемая информация, рационально осуществлять с использованием регистровой пары HL. В комплекте, настроенном на приём данных, в этой же регистровой паре можно сохранять текущее значение номеров ячеек, применяемых для записи информации. Порт С используется для передачи признака 01Н, выдаче данных в порт А. С целью обеспечения надёжного приёма передаваемой информации данные в порт А должны выводиться в течение некоторого временного интервала. Как показано в приведённом фрагменте программы (табл. 5.3.), длительность данного интервала можно задавать путём записи в регистр D числа FFH с последующей его декрементацией до нуля. Для передачи следующего байта данных необходимо сбросить признак наличия информации в канале А, увеличить содержимое регистровой пары HL на единицу и выдать в порт А очередные данные. чтобы микропроцессор приёмного комплекта успел отреагировать на изменение порта с 01Н до 00Н, последующая установка данного признака производится с задержкой, вводимой путём повторения команды отсутствия операции NOP. Для организации передачи целого массива данных необходимо предусмотреть циклической выполнение фрагмента программы.
|
Таблица 5.3 | |||
Программа, осуществляющая передачу двух байт данных | |||
Метка | КОП | Операнды | Комментарий: |
MVI | A, 82H | Программирование порта А и С | |
OUT | F7H | на выход информации | |
MOV | A, M | A <= M(HL) | |
OUT | F4H | port A <= A | |
MVI | A, 01H | A <= 01H | |
OUT | F6H | port C <= A | |
MVI | D, FFH | D <= FF | |
M1: | DCR | D | D <= D - 1 |
MVI | A, 00 | A <= 00H | |
ORA | D | A <= A or D | |
JNZ | M1 | Переход по условию на метку М1 | |
MVI | A, 00H | сброс признака наличия данных | |
OUT | F6H | в канале А | |
INX | H | HL <= HL + 1 | |
MOV | A, M | A <= M(HL) | |
OUT | F4H | port A <= A | |
NOP | Введение задержки | ||
NOP | |||
NOP | |||
NOP | |||
NOP | |||
NOP | |||
NOP | |||
NOP | |||
MVI | A, 01H | Посылается в порт С признак | |
OUT | F6H | наличия данных в канале А |
При приёме информации необходимо контролировать изменение признака обновления данных в канале С. С этой целью следует циклически опрашивать порт С и при изменении данных с 00Н на 01Н производится считывание информации. При обратном изменении признака в канале С осуществляется наращивание адреса ячейки памяти, предназначенного для записи следующего байта данных. В таблице 5.4 в качестве примера представлен фрагмент программы приёма двуз байт данных. При приёме большего объёма информации необходимо предусмотреть циклическое выполнение программы.
|
Таблица 5.4 | |||
Программа, осуществляющая прием двух байт данных | |||
Метка | КОП | Операнды | Комментарий: |
MVI | A, 98H | Программирование порта А и С | |
OUT | F7H | на ввод информации | |
M1: | IN | F6H | Опрос канала С с целью |
CPI | 01H | фиксации признака | |
JNZ | M1 | наличия данных | |
IN | F4H | A <= port A | |
MOV | M, A | M(HL) <= A | |
M2: | IN | F6H | Циклический опрос канала С с целью |
ORI | 00H | фиксации изменения признака ввода | |
JNZ | M2 | данных с 01H на 00Н | |
INX | H | HL <= HL + 1 | |
M3: | IN | F6H | Опрос канала С с целью |
CPI | 01H | фиксации признака | |
JNZ | M3 | наличия данных | |
IN | F4 | A <= port A | |
MOV | M, A | M(HL) <= A | |