ЗВУКОВАЯ СИГНАЛИЗАЦИЯ
В рассмотренной в § 9.2 конструкции кодового замка мы уже использовали звуковую сигнализацию для подачи сигнала тревоги. Для этого наушник или репродуктор подключался через резистор 200 Ом к младшему разряду порта 001 между выводом 16 микросхемы D18 и источником +5 В. Определенный звуковой тон получался в результате того, что в порт 001 выводилось содержание регистра, инкрементируемого в постоянном темпе. Частота сигнала, получаемого с младшего разряда порта, равна половине частоты инкрементирования и задается временной задержкой соответствующего программного цикла. В следующем разряде частота вдвое меньше и т. д. Следовательно, подключая репродуктор не к младшему разряду порта, а к старшим, получим тон на соответствующее число октав ниже. Подавая на репродуктор через резисторы сигналы с разных разрядов порта, получим звуки одного тона, но с разным содержанием гармоник. Если же в несколько портов выводить содержимое регистров, к которым с постоянной частотой прибавляются различные числа, то, подключив репродуктор, к выходам портов через резисторы, можно получить различные аккорды.
Таким образом, звуки разных частот можно получать, прибавляя к содержимому регистра разные числа или же меняя частоту суммирования.
Подключим репродуктор и введем в ПМ-ЭВМ следующую программу:
014000061 Ml: LXISP,TAB
014001 036
014002014
014003301 М2: POP В
014 004 170 MOV A, B
014 005 267 ORA A
014006312 JZ.M1
014 007 000
014010014
014011171 МЗ: MOVA.C
014012267 ORA A
014013312 JZ,M4
014014 023
014015 014
014016034 INRE
014017173 MOV A, E
014020323 OUT, 0010
014 021 001
014022171 MOV А, С
014023075 М4: DCRA
014024302 JNZ,M4
014025 023
014026014
014 027 005 UCR B
014030302 JNZ,M3
014031 Oil
014032 014
014 033 303 JMP, M2
014 034 003
014035 014
014 036 175 TAB: до
014037 145
014040160 ре
014041161
014 042 144 ми
014043 177
014 044 136 фа
014 045 207
014 046 124 соль
014 047 230
014050113 ля
014 050 252
014051102 си
014 052 277
014 053 077 до
014054 313
014 055 000
014 056 000
Нажмем кнопки СБРОС и Ц. Репродуктор начинает наигры вать гамму. Воспроизводимая мелодия запрограммирована таблицей, начинающейся с метки TAB. Таблица содержит пары чисел, последовательно извлекаемые процессором из памяти с помощью команды POP В. Первое число из пары заносится в регистр С и задает высоту тона, второе число заносится в регистр В и задает длительность звучания ноты. Если в регистре В оказывается нуль, программа возвращается к началу таблицы. Если в регистре С оказывается нуль, формируется пауза. Подсчитав длительности программных циклов, нетрудно определить, какие числа в таблице соответствуют различным нотам, и запрограммировать любую мелодию. Надо иметь в виду следующее: для того чтобы различные ноты имели одинаковую длительность звучания, произведение первого числа из пары на второе должно быть постоянным.
Читатель может усложнить программу, чтобы получить более интересное звучание. Он может также самостоятельно разработать программу "музыкального ящика", позволяющую самому наигрывать различные мелодии, пользуясь клавиатурой ПМ-ЭВМ.Мир машинной музыки необъятен, и начав с простейших программ, читатель при желании может достичь в этой области новых и оригинальных результатов.