Радио-86РК/Радио 11-87/Таймер КР580ВИ53

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: И. КРЫЛОВА

Источник: http://retro.h1.ru/RK86/RS232/Timer.php

Возможности формирователя звукового сигнала компьютера «Радио-86РК» (далее — просто РК) ограничены, а качество синтезированного звука невысоко. Значительно лучших результатов можно добиться, оснастив РК звукосинтезатором всего на двух микросхемах: КР580ВИ53 и К561ЛЕ5. БИС КР580ВИ53 (КР580ВИ53) предназначена для формирования временных интервалов, длительность и период повторения которых управляются программно. Микросхема содержит три совершенно одинаковых счетчика (таймера) с независимым управлением. Особенность счетчиков — многорежимность: любой из них может работать в шести режимах, в каждом из этих режимов возможны три способа задания коэффициента пересчета, который, в свою очередь, может быть либо двоичным, либо двоично-десятичным. Иными словами, каждый из трех счетчиков можно запрограммировать тридцатью шестью способами!

Счетчики таймера КР580ВИ53 — 16-разрядные с пред установкой и работают на вычитание. Максимальный коэффициент пересчета соответствует загрузке в них всех нулей и составляет 65 536 (216) при работе в двоичном коде и 10000 (104) в двоично-десятичном.

RK86-Timer-P01.png

Из всего многообразия режимов таймера для работы в звукосинтезаторе необходимо выбрать наиболее удобные для этой цели. Число вариантов можно сразу уменьшить вдвое, если условиться работать в двоичном коде, при котором коэффициент пересчета максимален. Дальнейшее сокращение вариантов зависит от выбора структурной схемы синтезатора звука. Одна из них приведена на рис.1.

Счетчик канала 0 интервального таймера является генератором тона. Высота самого низкого тона определяется коэффициентом деления: при максимальном его значении 216 и тактовой частоте 1,78МГц он равен примерно 27Гц. Канал 2 использован в качестве генератора импульса строба, определяющего продолжительность звучания тона. Длительность этого импульса зависит от коэффициента пересчета счетчика канала 2 и периода повторения сигнала на его входе. Период же повторения, в свою очередь, целиком определяется коэффициентом деления счетчика канала 1. Таким образом, каналы 0 и 1 работают в режиме программируемого деления частоты. Скважность выходного сигнала этих каналов принципиального значения не имеет, однако, по ряду соображений, целесообразно выбрать скважность, равную двум (меандр). Такая форма сигнала получается при работе счетчика таймера в режиме 3. Если необходимый коэффициент деления четное число, скважность сигнала на выходе точно равна двум, а если нечетное, то высокий уровень на выходе будет присутствовать в течение (N+1)/2 периодов входного сигнала, а низкий — в течение (N-1)/2 периодов.

Формировать сигнал строба (канал 2) можно несколькими способами. Наиболее просто это сделать, инициировав счетчик канала 2 в режиме 0 (он носит название режима генерации задержанного сигнала прерывания, но мы будем называть его режимом генерации строба в соответствии с функцией, выполняемой этим счетчиком в звукосинтезаторе). В этом случае счетчик работает следующим образом. В исходном состоянии уровень сигнала на выходе счетчика высокий. Сразу же после инициализации по программе режима 0 па выходе появляется низкий уровень. После загрузки числа N (коэффициента пересчета) начинается счет входных импульсов. При поступлении на вход счетчика N импульсов на выходе вновь устанавливается низкий уровень и остается таким до тех пор, пока не будет установлен иной режим работы или вновь загружен коэффициент пересчета.

Узел совпадения в звукосинтезаторе может быть выполнен на двухвходовом элементе «ИЛИ».

Итак, применительно к структурной схеме звукосинтезатора (рис. 1) из всего многообразия режимов работы таймера выбраны всего два: режим 0 (в нашем случае генератор импульса строба) для канала 2 и режим 3 генератор меандра) для каналов 0 и 1. При этом все счетчики работают в двоичном коде.

RK86-Timer-P02.png

Принципиальная схема звукосинтезатора приведена на рис.2.

Узел совпадения, разрешающий прохождение тональной посылки только во время действия импульса строба, выполнен на элементе DD2.1. Элемент DD2.2 суммирует сигналы тональных посылок, и сигнал с выхода INTE микропроцессора, который появляется в момент нажатия клавиши. При необходимости этот сигнал можно отключить кнопкой SB1.

Рассмотрим теперь, каким образом программируют счетчики. Таймер КР580ВИ53 содержит общий для всех трех счетчиков блок управления, состоящий из буфера канала данных и внутренней магистрали данных []. Чтобы задать необходимый режим работы и коэффициент пересчета, необходимо по шине данных компьютера ввести в блок управления так называемые управляющие слова и числа, определяющие начальные состояния каждого из счетчиков. Доступ к таймеру открывается подачей сигнала низкого уровня на вход CS (выбор микросхемы), ввод информации по такому же уровню на входе WR, а выбор конкретного счетчика (канала) определяется комбинацией сигналов на адресных входах А0 и А1, подключенных к шине адреса РК параллельно адресным входам программируемого интерфейса D14(КР580ИК55). При этом подразумевается, что он будет инициирован в режиме ввода. При использовании микросхемы D14 для вывода информации она будет «программировать» звукосинтезатор, что, естественно, вызовет генерацию непредсказуемых звуков. Если это нежелательно, следует позаботиться о принудительном отключении звука при выводе информации через D14. В простейшем случае для этого достаточно отключить вход CS от дешифратора адресов D11 и соединить его с источником питания +5В через резистор сопротивлением 10 кОм. Для этой же цели можно использовать и входы Е0, El, E2 счетчиков. Для загрузки управляющего слова на адресные входы А0 и А1 необходимо подать высокие уровни, а на вход записи коэффициента пересчета канала 0 — низкие. Счетчик канала 1 программируют при высоком уровне на входе А0 и низком на А1, а счетчик канала 2 — при низком на А0 и высоком на А1

При программировании звукосинтезатор рассматривается как набор ячеек памяти с адресами 0А000Н (счетчик канала 0), 0А001Н (счетчик канала 1), 0А002Н (счетчик канала 2) и 0А00ЗН (регистр управляющего слова) Управляющее слово восьмиразрядное, его формат

D7 D6 D5 D4 D3 D2 D1 D0, где

  • разряд D0 определяет вид кода, в котором будут заданы коэффициенты пересчета
    • D0=0-двоичный,
    • D0=1 — двоично-десятичный;
  • разрядами D1, D2, D3 устанавливают режим работы счетчика
    • D1=0, D2=0, D3=0 — режим 0;
    • D1=1, D2=1, D3=0 — режим 3;
  • разряды D4 и D5 задают способ ввода коэффициента пересчета
    • D4=0, D5=1 — только старший байт,
    • D4=1, D5=0 — только младший байт,
    • D4=1, D5=1 — младший, затем старший байт;
  • разряды D6 и D7 определяют номер канала
    • D6=0, D7=0 — счетчик канала 0,
    • D6=1, D7=0 — счетчик канала 1,
    • D6=0, D7=1 — счетчик канала 2

Счетчики программируют в любой последовательности записью соответствующего управляющего слова. Если режим работы счетчика в процессе работы не изменяется, то новое значение коэффициента пересчета N можно вводить без управляющего слова. Это позволяет в некоторые случаях производить однократную инициализацию таймера.

Отметим также, что коэффициент пересчета N можно задать тремя способами: вводом либо старшего байта, либо младшего, либо двух байтов — сначала младшего, а затем старшего. Двухбайтовый ввод используют в тех случаях, когда исходную частоту необходимо поделить очень точно, например, в «музыкальных» программах. При малом коэффициенте пересчета ограничиваются вводом только младшего байта, а если требуемая точность деления невелика, то вводят один старший байт. Если необходимо изменить режим работы счетчика в процессе выполнения программы, например, перейти от однобайтового ввода коэффициента пересчета к двухбайтовому, то в начале этого блока программы следует записать управляющее слово, задающее новый режим, а в конце восстановить прежнее управляющее слово, вернув, таким образом, счетчик таймера в первоначальный режим работы.


Значения управляющего слова в двоичном, шестнадцатиричном и десятичном виде приведены в табл.1. Как определить коэффициент пересчета для получения сигнала требуемой частоты, покажем на примере. Предположим, что необходимо запрограммировать счетчик канала 0 на частоту выходного сигнала 100 Гц Требуемый коэффициент N при тактовой частоте 1777778 Гц примерно равен 17778, или в шестнадцатиричном виде — 4572Н.

Таблица 1

Номер канала Режим работы канала Управляющее слово
Двоичное шестнадцатеричное десятичное
D7 D6 D5 D4 D3 D2 D1 D0
0 двоичный код, генератор меандра, старший байт 0 0 1 0 0 1 1 0 26H 38
0 меандра, младший, затем старший байты 0 0 1 1 0 1 1 0 36Н 54
1 двоичный код, генератор меандра, старший байт 0 1 1 0 0 1 1 0 66Н 102
1 двоичный код, генератор меандра, младший, затем старший байты 0 1 1 1 0 1 1 0 76Н 118
2 двоичный код, генератор строба, старший байт 1 0 1 0 0 0 0 0 0A0H 160
2 двоичный код, генератор строба, младший байт 1 0 0 1 0 0 0 0 90H 144
2 двоичный код, генератор строба, младший, затем старший байты 1 0 1 1 0 0 0 0 0B0H 176

При двухбайтовом задании коэффициента пересчета старший байт равен 45Н, младший — 72Н. Если задать коэффициент пересчета только старшим байтом (режим однобайтового программирования), то частота выходного сигнала будет равна 100,644 Гц. Для простейших программ такое отличие частоты от заданной несущественно и вполне допустимо, однако при написании музыкальных программ целесообразно применять только двухбайтовое программирование канала 0.

Итак, все необходимые данные для программирования таймера у нас есть. Рассмотрим, как это делается практически. Предположим, необходимо запрограммировать звукосинтезатор на выдачу сигнала частотой 1 кГц длительностью 1 с. Для этого счетчик канала 0 следует перевести в режим генератора меандра, задав N=1 778 в двоичном коде двумя байтами. Счетчик канала 1 должен работать в таком же режиме, но с N=17778 и управлением в двоичном коде старшим байтом (частота выходного сигнала примерно 100Гц). И, наконец, счетчик канала 2 должен быть установлен в режим генерации строба с N=100 и управлением в двоичном коде младшим байтом. Для этого необходимо проделать следующие операции:

  • по адресу 0А00ЗН записать для канала 0 управляющее слово 36Н;
  • по адресу 0А000Н ввести сначала младший байт коэффициента пересчета F2H, а затем (по этому же адресу) старший байт 06Н;
  • по адресу 0А00ЗН записать для канала 1 управляющее слово 66Н;
  • по адресу 0А000Н ввести значение старшего байта коэффициента пересчета 45Н;
  • по адресу 0А00ЗН записать для канала 2 управляющее слово 90Н;
  • по адресу 0А002Н ввести значение младшего байта коэффициента пересчета 64Н.

Звукосинтезатор начнет работать сразу же после выполнения шестой операции — загрузки коэффициента пересчета генератора строба. Для повторного запуска достаточно повторить только шестую операцию. При этом можно одновременно изменить и длительность строба.

Если необходимо изменить и высоту тона, следует повторить сначала вторую операцию, а затем шестую.

При однобайтовом программировании канала 0 необходимо повторить еще и первую операцию, изменив соответствующим образом управляющее слово (табл. 1).

По ходу выполнения программы каналы звукосинтезатора можно перепрограммировать многократно, выполняя только те из названных операций, которые непосредственно определяют изменяемый параметр. Необходимо только помнить, что при изменении режима работы какого-либо канала таймера нужно каждый раз предварительно вводить управляющее слово, обращая внимание на то, сколько байтов определяют коэффициент пересчета.

Используя рассмотренный синтезатор, звуковое сопровождение можно включить в программы, написанные на любом компьютерном языке. Для «Радио-86РК» наиболее употребительным языком, конечно, является Бейсик. Рассмотрим несколько простейших «звуковых» программ, написанных на этом языке.

Самая простая программа (см табл. 2) — одиночный тональный сигнал (номера строк в этом и последующих примерах присвоены произвольно) Адреса и значения коэффициентов пересчета — десятичные.

Параметр Т определяет высоту тона, а Р — его длительность.

Значению Т=3 соответствует высота тона примерно 2,3 кГц, а Т=34 — около 200 Гц.

Длительности Р=10 соответствует примерно 0.1 с, а Р=255 — около 2,5 с

По существу, эта программа состоит из операций, описанных ранее.

Таблица 2

1000 POKE -24573 38 
1010 POKE -24576 Т 
1020 POKE -24573 102 
1030 POKE -24373 69 
1040 POKE -24373 144 
1050 POKE -24574 P

Операции в строках 1000, 1020 1030, 1040 во многих случаях необходимо выполнить один раз в начале программы, поэтому представляется целесообразным введение в интерпретатор языка Бейсик подпрограммы в машинных кодах, обеспечивающей инициализацию таймера при каждом запуске интерпретатора.


Возможный вариант такой подпрограммы для интерпретатора [4] приведен в табл.3.

Таблица 3

АДРЕС КОД    МНЕМОН.ОПЕРАНД КОММЕНТАРИИ
04D8H С3011А  JMP  1А01Н    ПЕРЕХОД В СВОБОДНУЮ ОБЛАСТЬ
1А01Н CD03F8  CALL 0F803H   ОБРАЩЕНИЕ К ПОДПРОГРАММЕ ВВОДА СИМВОЛА МОНИТОРА
1А04Н Е5      PUSH H	    ЗАПИСАТЬ В СТЕК СОДЕРЖИМ ПАРЫ РЕГИСТРОВ HL
1А05Н F5      PUSH PSW	    ЗАПИСАТЬ В СТЕК СОДЕРЖИМОЕ РЕГИСТРАПРИЗНАКОВ
1А06Н 2102А0  LXI  Н,0А002Н ЗАГРУЗИТЬ ВРЕГИСТРОВУЮ ПАРУ HL АДРЕС КАНАЛА 2
1АВ9Н 3603    MVI  М,03Н    ЗАГРУЗИТЬ КОЭФФИЦИЕНТ ДЕЛЕНИЯ СЧЕТЧИКА КАНАЛА 2
1А0ВН F1      POP  PSW	    ВОЗВРАТИТЬ ИЗ СТЕКА СОДЕРЖИМОЕ РЕГИСТРА ПРИЗНАКОВ
1А0СН E1      POP  H	    ВОЗВРАТИТЬ ИЗ СТЕКА СОДЕРЖИМОЕ ПАРЫ РЕГИСТРО В HL
1A0DH С3DB04  JMP  4DBН     ВОЗВРАТ ИЗ ПОДПРОГРАММЫ

Она размещена на месте подпрограммы настройки порта БИС D14 (о запуске интерпретатора звукосинтезатор сигнализирует коротким звуковым сигналом частотой примерно 200 Гц). Благодаря такому решению подпрограмма выдачи одиночного тонального сигнала может быть записана одной строкой:

1000 POKE -24376, Т: POKE -24374, P

Несколько усложнив рассмотренную программу, можно получить более разнообразные звуки и использовать их в компьютерных играх.

Примером может служить программа (табл. 4), формирующая десятикратный сигнал «SOS» в коде Морзе (например, для игры «Морской бой»).

Таблица 4

1000 REM * ДЕСЯТИКРАТНЫЙ “SOS” 
1010 POKE -24576,6
1020 FOR K=0 TO 9: FOR I=1 TO 9
1030 P=4: P1=8
1040 IF I>3 AND К<7 THEN P=4*P 
1050 IF I=3 OR I=6 THEN P1=10*P1
1060 IF I=4 Oft I=5 THEN P1=6*P1
1070 IF I=9 THEN P1=20*P1
1080 POKE -24374, P
1090 FOR J=0 TO P1: NEXT J, I, K
1100 STOP

В строке 1010 задается частота тонального сигнала — примерно 1кГц. Длительность тональной по ссылки определяется коэффициентом Р. строке 1030. Коэффициент Р1 задает временную задержку в выполнении программы (цикл по переменной J в строке 1090). Если бы этой задержки не было то компьютер, выполняя цикл по I, произвел бы перезагрузку канала 2 таймера, не дожидаясь окончания тональной посылки и нарушив тем самым выполнение программы. Кроме того, цикл по 1 ответствен за паузы между тональными посылками. В строках 1040—1070 определяется номер посылки и корректируется ее длительность («точка» или «тире»), а также определяется продолжительность цикла по J, т. с. длительность пауз между посылками.

Следует отметить, что в реальных «звуковых» программах звучание группы тональных посылок может несколько отличаться от задуманного из-за нарушения длительности посылок, пауз и соотношений между ними. Это связано с тем, что, выполняя подпрограмму компьютер «просматривает» ОЗУ, отыскивая требуемые операнды. Время «просмотра» может быть различным, поэтому после введения «звуковой» подпрограммы в основную необходимо откорректировать значение временных интервалов Р и Р1 в строке 1030.

Звукосинтезатор можно использовать и как простейший одноголосый музыкальный инструмент. Основные принципы кодирования остаются прежними, однако, для верного воспроизведения запрограммированной мелодии коэффициент пересчета канала 0 следует задавать двумя байтами.

Для упрощения программирования мелодий в табл.5 приведены значения коэффициентов пересчета, а также младшего и старшего байтов, соответствующие той или иной ноте (для тактовой частоты 1 777 778Гц).

малая октава
ми 10787 42 2АН 35 23Н
фа 10181 39 27Н 197 0C5H
фа# 9610 37 25Н 138 8АН
соль 9070 35 23Н 110 6ЕН
соль# 8561 33 21Н 113 71Н
ля 8081 31 1FH 145 91Н
ля# 7627 29 1DH 203 0СВН
си 7199 28 1CH 31 1FH
Первая октава
до 679S 26 1АН 139 8BH
до# 6670 26 1 АН 14 0EH
ре 6054 23 17H 166 0A6H
ре# 3714 22 16H 82 52H
ми 5393 21 15H 17 11H
фа 5091 19 13H 227 0E3H
фа# 4805 18 12H 197 BC5H
соль 4535 17 11H 183 0B7H
соль# 4281 16 10H 185 0B9H
ля 4040 15 0FH 200 0C8H
ля# 3814 14 0ЕН 230 0Е6Н
си 3600 14 0EH 16 10H
Вторая октава
до 3398 13 0DH 46H
до# 3207 12 0CH 135 87H
ре 3027 11 0BH 211 0D3Н
ре# 2857 11 0ВН 41 29H
ми 2697 10 0АН 137 89H
фа 2545 9 241 0F1H
фа# 2402 9 98 62H
соль 2268 8 220 0DCH
соль# 2140 8 92 5CH
ля 2020 7 228 0E4H
ля# 1907 7 113 73H
си 1800 7 8
Третья октава
до 1699 6 163 0A3H
до# 1683 6 67 43H
ре 1513 5 233 0E9H
ре# 1428 5 5H 148 94H
ми 1348 5 5H 68 44H
фа 1273 4 249 0F9H
фа# 1201 4 177 0B1H
соль 1134 4 110 6ЕН

Написание «музыкальных» программ сводится к последовательному заданию требуемых коэффициентов пересчета канала 0, длительности строба в канале 2 и организации пауз необходимой продолжительности. В некоторых случаях объем программы можно сократить, воспользовавшись оператором DATA.

Рассмотрим в качестве примера программу (табл.6), воспроизводящую фрагмент детской песенки «В лесу родилась елочка».

Таблица 6

 
0999 REM * В ЛЕСУ РОДИЛАСЬ ЕЛОЧКА * <br>
1000 DATA 183,17,137,10,137,10,211,11,137,10,70,13,183,17,183,17<br>
1010 DATA 183,17,137,10,137,10,241,9,228,7,220,8,220,8,200,15<br>
1020 DATA 200,15,241,9,241,9,137,10,211,11,70,13,183,17,137,10<br>
1030 DATA 137,10,211,11,211,11,70,13<br>
1040 POKE -24573,54<br>
1050 FOR J=l TO 28: READ M, S<br>
1060 T=60: IF J=14 THEN T=120<br>
1070 POKE -24576,М; POKE -24376,S; POKE -24574,.4*T <br>
1080 FOR I=0 TO T: NEXT I IF J=14 THEN FOR I=0 TO T: NEXT I<br>
1090 NEXT J: RESTORE<br>
1100 STOP

Фрагмент состоит из 28 тактов. Значения коэффициентов пересчета канала 0, необходимые для воспроизведения соответствующих нот, записаны в первых четырёх строках. Выполнение программы начинается со строки 1040, в которой с помощью оператора POKE счетчик-делитель канала 0 настраивается на режим двухбайтового кодирования коэффициента пересчета. В строках 1050 1090 организуется цикл из 28 шагов, при выполнении которого сначала считываются значения младшею (М) и старшего (S) байтов коэффициента пересчета, а затем задастся длительность задержки Т и корректируется ее значение для 14-го шага цикла (строка 1060). Операторы строки 1070 определяют режимы работы счетчиков каналов 0 и 2. Необходимая временная задержка в выполнении программы создается с помощью операторов FOR и NEXT (строка 1080). Для 14-го шага цикла задержка удваивается. Выполнение цикла завершается в строке 1090 перемещением указателя считывания в первую позицию, что позволяет обращаться к этой подпрограмме неоднократно. Если строки 1000 — 1100 являются подпрограммой, в строке 1100 вместо оператора STOP может быть использован другой, например RETURN.

Звукосинтезатор можно применить и для «озвучивания» клавиатуры компьютера. Дело в том, что сигнал INTE, используемый в «Радио-86РК» для звуковой индикации нажатия на клавишу, на слух воспринимается, как щелчок, и при длительной работе с ЭВМ вызывает неприятные ощущения. «Озвучить» клавиатуру с помощью таймера можно двумя способами: программно и аппаратно. В первом случае в МОНИТОР или в интерпретатор языка Бейсик вводят специальную подпрограмму генерации звука при каждом нажатии клавиши. Проще всего это сделать, «внедрившись» в подпрограмму ввода символа с клавиатуры. Один из <A HREF="TmrTbl7.txt" tppabs="http://retro.h1.ru/RK86/RS232/TmrTbl7.txt">вариантов такой подпрограммы</A> приведен в табл.7.

Таблица 7.

Адрес Код    Мнемон.Операнд  Комментарий
19B8H 2103A0 LXI  H,0A003H    Загрузить в пару регистров HL адрес РУ слова
19BBH C3EE19 JMP  19EEH       Переход в свободную область
19BEH 00     NOP  

19EEH 3626   MVI  M,26H       Загрузить управляющее слово канала 0 таймера
19F0H 3666   MVI  M,66H       Загрузить управляющее слово канала 1
19F2H 3690   MVI  M,90H       Загрузить управляющее слово канала 2
19F4H 2B     DCX  H           Перход к адресу A002H
19F5H 3622   MVI  M,22H       Загрузить коэффициент пересчета канала 2
19F7H 2B     DCX  H           Преход к адресу A001H
19F8H 3645   MVI  M,45H       Загрузить коэф. пересчета канала 1
19FAH 2B     DCX  H           Переход к адресу A000H
19FBH 3622   MVI  M,22H       Загрузить коэф. пересчкта канала 0
19FDH C9     RET              Возврат из подпрограммы

Программное «озвучивание» клавиатуры имеет недостатки:

  • удлиняется время выполнения программы
  • в режиме М МОНИТОРА клавиши остаются «немыми»,
  • при работе в диалоговом режиме тон сигнала изменяется, так как в приведенной выше подпрограмме коэффициент пересчета канала 0 не задается.

При желании это легко сделать, но, во-первых, что еще больше увеличит время выполнения подпрограммы, во-вторых, в основной программе каждый раз придется перенастраивать канал 0.

RK86-Timer-P03.png

Для аппаратного озвучивания можно использовать устройство на микросхеме К561ЛЕ5 (рис.3). На элементах DD3.1 и DD3.2 выполнен ждущий мультивибратор, запускаемый фронтом сигнала INTE. Низкий уровень с выхода элемента DD3.1 разрешает работу тонального генератора, собранного на элементах DD3.3, DD3.4.

По окончании импульса, формируемого ждущим мультивибратором, на выходе элемента DD3.1 устанавливается высокий уровень, запрещающий работу тонального генератора. В результате на выходе элемента DD3.4 формируется серия импульсов, длительность которых зависит от постоянной времени цепи R2C1 (около 0,1с). Частоту тонального сигнала можно варьировать в больших пределах, изменяя постоянную времени цепи R4C2. В паузе между сериями сигнала на выходе элемента DD34 присутствует низкий уровень, поэтому устройство можно включить в разрыв провода идущего от выхода INTE микропроцессора (вывод 16 БИС D6) к переключателю SB1 (см. рис. 2).

В простейшем звукосинтезаторе входы Е0 — Е2 счетчиков таймера не используются, поэтому генерация сигнала начинается сразу после поступления от микропроцессора соответствующей команды. По этой же причине при первом включении компьютера возможна генерация произвольного звукового сигнала, зависящего от того — что записано в регистры таймера КР580ВИ53 при включении. Заставить таймер «замолчать» нетрудно: с помощью директивы М МОНИТОРА необходимо записать в один из каналов таймера любое управляющее слово, например по адресу 0А00ЗН записать 38 (26Н). Таймер перейдет в режим ожидания ввода коэффициента пересчета, и генерация звука прекратится.

И. КРЫЛОВА, г. Москва

Скопировано с журнала РАДИО № 11 1987 г.
Отредактировано Лесных Ю. И. 1999 г.