Описание компьютера Микро-80 | Журнал РАДИО |
Модуль сопряжения.
Для долговременного хранения информации в ЭВМ используют самые различные устройства. Наиболее распространенными являются устройства, в которых для записи и хранения информации применяют магнитные носители: магнитные ленты, магнитные диски и т. д. Обычно эти устройства из-за своей сложности имеют высокую стоимость, поэтому с появлением дешевых микро-ЭВМ для долговременного хранения информации стали все чаще и чаше использовать кассетные магнитофоны. Для этой цели были разработаны как специализированные цифровые магнитофоны, так и устройства сопряжения с бытовыми кассетными магнитофонами.
В этой статье вы познакомитесь с описанием модуля сопряжения бытового кассетного магнитофона с микроЭВМ, Модуль позволяет записывать и считывать информацию со скоростью 1500 бит/с. Плотность записи при этом составляет около 32 бит на миллиметр. Совместно с модулем авторы используют кассетный магнитофон "Романтик-306" и кассеты МК-60-2. однако возможно использование любого другого близкого по параметрам монофонического или стереофонического кассетного магнитофона. При указанной скорости записи и чтения данных на одну кассету МК-60-2 с двух сторон можно записать до 600 килобайт информации.
Как и всегда, при разработке устройств, работающих совместно с микропроцессором, необходимо решить задачу распределения выполняемых функций между программой и аппаратурой. Мы стремились максимально использовать "программируемость" микропроцессора, чтобы упростить аппаратуру и еще раз подчеркнуть универсальность микропроцессора как электронного компонента. При этом оказалось возможным программно реализовать весь алгоритм работы модуля, возложив на аппаратуру только задачу электрического согласования.
Запись информации на ленту производится последовательно бит за битом по методу двухфазного кодирования. На рис.1 приведены временные диаграммы, поясняющие принцип работы модуля сопряжения. На диаграмме "А" показан байт Е6Н (его двоичное представление имеет вид 11100110), преобразованный в последовательную форму. Отдельные разряды байта следуют с периодом Тслед причем запись байта начинается со старшего разряда, т.е. сначала должен быть записан разряд D7, затем D6, D5 и т.д. Однако непосредственно записать такой сигнал на магнитную ленту нельзя, так как частотная характеристика магнитофона не соответствует спектру записываемого сигнала. Это происходит потому, что в потоке данных неравномерно чередуется количество нулей и единиц, а следовательно, имеется постоянная составляющая, которая не может быть записана на обычный магнитофон. Для того чтобы записать такой поток данных, обычно применяют один из известных способов модуляции несущей частоты - по амплитуде, частоте или фазе.
Используя метод двухфазного кодирования, можно так преобразовать (закодировать) поток данных, что он не будет содержать постоянной составляющей. Это позволит записывать данные (двухфазные коды) на магнитную ленту непосредственно без предварительной модуляции.
На диаграмме "Б" (см. рис.1) показан двухфазный код байта данных Е6Н, записываемый на ленту. Этот код формируется следующим образом. Всегда в середине передаваемого бита (моменты времени Тс) происходит изменение его значения на противоположное, причем изменение с "1" на "0" означает, что передан бит, равный "0", а обратное изменение, с "0" на "1" - бит, равный "1".
На границе двух одинаковых по значению смежных битов (моменты времени Тr) также всегда происходит изменение значения двухфазного кода. На границе разных по значению смежных битов изменение двухфазного кода не происходит.
Подобным образом должны быть закодированы все биты информации, записываемые на ленту. Период времени Тслед, выбран равным 0,666 мс. При этом скорость записи-считывания равна 1500 бит/с. Опыт показал, что при такой скорости можно обеспечить надежное. практически безошибочное считывание информации.
Рассмотрим теперь, каким образом при чтении происходит декодирование двухфазных кодов. Предположим, что считывание данных началось в момент времени, обозначенный на рис.2 t0. Подпрограмма чтения, которая будет описана ниже, позволяет считывать и распознавать информацию примерно 1 раз в 15 мкс. Начиная с момента времени t0, подпрограмма считывания производит чтение информации и ее анализ (момент времени ta на рис.2) до тех пор, пока не произойдет изменение уровня сигнала по сравнению с предыдущим считанным значением. На рис.2 эти моменты времени обозначены tб. Уровень сигнала, считанный в момент времени tб, рассматривается как полезная информация и поэтому запоминается.
После распознавания и запоминания принятого бита происходит задержка в работе программы, равная 0,75 Тслед, и весь процесс считывания информации начинается вновь.
Рассмотрим, каким образом описанный алгоритм работы модуля сопряжения реализован аппаратно и программно.
На рис.3 приведена принципиальная электрическая схема блока сопряжения кассетного магнитофона с микроЭВМ. Шинный формирователь D1 связывает блок с младшим разрядом шины данных ШД[0]. На элементах D2 и D3.1 собран дешифратор адреса устройства. При наличии на младших восьми разрядах шины адресов адреса 01Н он формирует низкий уровень на входе "выбор модуля" (ВМ) микросхемы D1, разрешая тем самым работу шинного формирователя. На вход ВШ шинного формирователя поступает сигнал ЧТВВ с шины управления микро-ЭВМ. Если на входе ВШ низкий уровень, то информация со входа DI1 поступает 1 линию ШД[0] шины данных.
При записи на магнитную ленту на D - триггере D4 очередной бит данных хранится до прихода следующего сигнала записи в устройство с адресом 01Н. С выхода триггера D4 через инвертор D3.3 и фильтр нижних частот закодированный бит данных поступает на вход "запись с звукоснимателя" кассетного магнитофона.
При воспроизведении сигнал с линейного выхода магнитофона через фильтр нижних частот поступает на вход операционного усилителя А1. На выходе усилителя формируются прямоугольные импульсы амплитудой ±5 В. Диод V1 срезает отрицательную составляющую сигнала. Далее считанный и сформированный сигнал через микросхему D1 поступает на шину данных микро-ЭВМ.
Итак, описанный модуль сопряжения позволяет записать на магнитную ленту информацию с младшего разряда шины данных, а считанный с ленты сигнал подать на тот же разряд шины данных. Конечно, два этих процесса не могут идти одновременно.
Программное обеспечение блока сопряжения выполняет следующие функции:
На рис.4 представлен текст подпрограммы записи ЗПМАГ. Эта подпрограмма производит запись одного байта информации. Для записи последовательности байтов необходимо несколько раз обратиться к этой подпрограмме. Для этого основная программа помещает байт информации, который необходимо записать, в регистр А и после этого вызывает подпрограмму по команде CALL ЗПМАГ.
Fl00 |
C5 |
ЗПМАГ: |
PUSH |
B |
;СОХРАНИТЬ СОДЕРИИМОЕ ВС |
F101 |
D5 |
PUSH |
D |
;СОХРАНИТЬ СОДЕРЖИМОЕ DE |
|
Fl02 |
F5 |
PUSH |
PSW |
;СОХРАНИТЬ СОДЕРЖИМОЕ PSW |
|
F103 |
57 |
MOV |
D, A |
;D= ЗАПИСЫВАЕМОМУ БАЙТУ |
|
F104 |
0E08 |
MVI |
С, 8 |
;С=8 (СЧЕТЧИК БИТОВ В БАЙТЕ) |
|
F106 |
7A |
ЗПЦКЛ: |
MOV |
А,0 |
;А=ЗАПИСЫВАЕМОМУ БАЙТУ |
F107 |
07 |
RLC |
;МЛ. РАЗРЯД А= ЗАПИС. БИТУ |
||
Fl08 |
57 |
MOV |
D, А |
;D = ЗАПИСЫВАЕМОМУ БАЙТУ |
|
|
;ФОРМИРОВАНИЕ ДВУХФАЗН. КОДА |
||||
F109 |
3E00 |
MVI |
A, 1 |
;МЛ. РАЗРЯДА А=1 |
|
F10B |
АА |
XRA |
D |
;"ИСКЛ. ИЛИ" С ЗАПИС. БИТОМ |
|
F10C |
D301 |
OUT |
01 |
;ВЫВОД РЕЗУЛЬТАТА |
|
F10E |
CD21F1 |
CALL |
ЗАДР05 |
;ЗАДЕРЖКА ПОЛПЕРИОДА Тслед. |
|
F111 |
3E00 |
MVI |
А, 0 |
;МЛ. РЯЗРЯД А = 0 |
|
F113 |
AA |
XRA |
D |
;"ИСКЛ. ИЛИ" С ЗАПИС. БИТОМ |
|
F114 |
D301 |
OUT |
01 |
;ВЫВОД РЕЗУДЬТАТА |
|
F116 |
CD21F1 |
CALL |
ЗАДР05 |
;ЗАДЕРЖКА ПОЛПЕРИОДА Тслед. |
|
Р119 |
0D |
DСR |
С |
;ВСЕ БИТЫ ЗАПИСАНЫ? |
|
F11A |
C206F1 |
JNZ |
ЗПЦКЛ |
;ЕСЛИ НET, ТО ПОВТОРИТЬ |
|
F11D |
Fl |
POP |
РSW |
;ВОССТАНОВИТЬ СОДЕРЖ. PSW |
|
F11E |
D1 |
POP |
D |
;ВОССТАНОВИТЬ СОДЕРЖ. DE |
|
F11F |
C1 |
POP |
В |
;ВОССТАНОВИТЬ СОДЕРЖ. ВС |
|
F120 |
С9 |
RET |
;ВОЗВРАТ В ОСНОВНУЮ ПРОГР. |
||
F121 |
0628 |
ЗАДР05: |
MVI |
B, 40D |
;В КОНСТАНТЕ ЗАДЕРЖКИ |
F123 |
05 |
ЗАДР55: |
DCR |
В |
;В = В - 1 |
Р124 |
C223F1 |
JNZ |
ЗАДР55 |
;ЕСЛИ В НЕ РАВНО 0, ТО ПОВТОР |
|
F127 |
C9 |
RET |
; ВОЗВРАТ ИЗ ПОДПРОГ. ЗАДР05 |
Рис. 4
Перед началом своей работы подпрограмма "сохраняет" содержимое всех регистров микропроцессора в стеке, а по окончании - восстанавливает содержимое регистров. Параллельно-последовательное преобразование происходит при выполнении команды циклического сдвига содержимого аккумулятора - RLC. При этом в младший разряд аккумулятора при каждом выполнении этой команды оказывается записанным очередной бит данных, начиная со старшего бита записываемого байта данных.
Двухфазное кодирование реализовать очень просто, если использовать операцию "исключающее ИЛИ" над содержимым аккумулятора и какого-либо внутреннего регистра микропроцессора.
Напомним, что при выполнении операции "исключающее ИЛИ" над двумя битами в результате будет "1" в том и только в том случае, если входные величины имеют разные значения. Первые полпериода (0,5Тслед), в этот временный интервал формирует специальная подпрограмма "ЗАДР05", выполняется операция "исключающее ИЛИ" над передаваемым битом и "1", вторые полпериода аналогичная операция выполняется с "0".
Теперь несколько слов о подпрограмме "ЗАДР05". При обращении к этой подпрограмме в работе основной программы происходит временная задержка (в нашем случае полпериода тактовой частоты), длительность которой определяется числом, помещенным в регистр В. При частоте тактовых сигналов С1 и С2 микропроцессора, равной 2 МГц. это число равно 40. При любой другой (меньшей) частоте задающего генератора эта величина может быть пересчитана по формуле:В поле комментариев приведены соответствующие разъяснения для каждой команды.
Подпрограмма чтения несколько сложнее подпрограммы записи и вот по каким причинам. Во-первых, информация записывается на ленту в виде сплошного потока битов, а нам важно выделить из этого потока отдельные байты, так как разрядность микроЭВМ равна 8 битам, т.е. 1 байту, поэтому для достижения байтовой синхронизации должны быть предусмотрены дополнительные меры. Во-вторых, общая проблема при использовании метода двухфазного кодирования - это задача распознавания: не является ли считанный сигнал инвертированным (в магнитофоне сигнал может инвертироваться как четное, так и нечетное число раз).
F128 |
C5 |
УТМАГ: |
PUSH |
В |
; СОХРАНИТЬ СОДЕРЖИМОЕ ВС |
F129 |
D5 |
PUSH |
D |
; СОХРАНИТЬ СОДЕРЖИМОЕ DE |
|
F12A |
0E00 |
MVI |
C, 0 |
; В НАЧАЛЕ РЕЗУЛЬТАТ 0 |
|
F12C |
57 |
MOV |
D, A |
; D = ПРИЗНАКУ; БЫЛА ЛИ СИН- |
|
|
; ХРОНИЗАЦИЯ ДОСТИГНУТА РАНЕЕ |
||||
F12D |
DВ01 |
IN |
01 |
; ВВОД С МАГНИТОФОНА |
|
F12F |
5F |
MOV |
Е, A |
; Е = ПРИНЯТОМУ БИТУ |
|
F130 |
79 |
ЦКЛУТ: |
MOV |
А, С |
; А = РЕЗУЛЬТАТУ |
F131 |
E67F |
ANI |
7FH |
; СТАРШИЙ ВИТ = 0 |
|
Р133 |
07 |
RLC |
; СДВИГ РЕЗУЛЬТАТА ВЛЕВО |
||
F134 |
4F |
MOV |
С, А |
; ЗАМЕНИТЬ РЕЗУЛЬТАТ |
|
F135 |
DB01 |
ИЗМСИГ: |
IN |
01 |
; ВВЕСТИ БИТ ДАННЫХ |
F137 |
ВВ |
СМР |
Е |
; ТАКОИ ЖЕ КАК И ПРЕДЫ- |
|
|
; ДУЩИЙ СЧИТАННЫИ БИТ? |
||||
F138 |
CA35F1 |
JZ |
ИЭМСИГ |
; ДА -> ПОВТОРИ ВВОД |
|
F13B |
E60l |
ANI |
1 |
; ТОЛЬКО МЛАДШИЙ БИТ |
|
F13D |
Bl |
ORA |
С |
; ОБЪЕДИНИТЬ С ПРЕДЫД. РЕ3. |
|
F13E |
4F |
MOV |
С, A |
; НОВЫЙ РЕЗУЛЬТАТ |
|
F13F |
CD6EF1 |
CALL |
ЗАДР75 |
; ЗАДЕРЖКА НА 0,75 Тслед. |
|
F142 |
DB01 |
IN |
01 |
; ВВОД БИТА |
|
F144 |
5F |
MOV |
Е, А |
; СОХРАНИТЬ ПРИНЯТЫЙ БИТ |
|
F145 |
7A |
MOV |
A, D |
; А = ПРИЗНАКУ ДОСТИЖ. СИНХР. |
|
F146 |
B7 |
ORA |
A |
; СИНХРОНИЗАЦИЯ ДОСТИГНУТА |
|
F147 |
F263F1 |
JP |
СТАРТ |
; ДА -> ПЕРЕХОД НА СТАРТ |
|
F14A |
79 |
MOV |
A, С |
; А = РЕЗУЛЬТАТУ |
|
F14B |
FEE6 |
СРI |
0Е6Н |
; СРАВНИТЬ С БАИТОМ СИНХР. Е6Н |
|
F14D |
C257F1 |
JNZ |
ПИНВС |
; ПОПРОВОВАТЬ СРАВНЕНИЕ С |
|
|
; ИНВЕРСНЫМ БАЙТОМ СИНХР. |
||||
F150 |
AF |
XRA |
A |
; ОЧИСТИТЬ АККУМУЛАТОР |
|
F151 |
3200F2 |
STA |
ИНВЕРС |
; УСТАНОВИТЬ ПРИЗНАК ИНВЕРСИИ |
|
F154 |
C361F1 |
JMP |
СТAРТ1 |
; СИНХРОНИЗАНИЯ ДОСТИГНУТА |
|
F157 |
FE19 |
ПИНВС: |
СРI |
19Н |
; СРАВНИТЬ С ИНВЕРСН. БАЙТОМ |
|
; СИНХРОНИЗАЦИИ |
||||
F159 |
C230F1 |
JNZ |
ИЗМСИГ |
; НЕТ -> ПОВТОР |
|
F15C |
3EFF |
MVI |
A, 0FFH |
; А = ПРИЗНАКУ ИНВЕРСИИ |
|
F15E |
3200F2 |
SТA |
ИНВЕРС |
; ЗАПОМНИТЬ ЕГО |
|
F161 |
1609 |
СТAРТ1: |
MVI |
D, 9 |
; D = 8 ВИТ + 1 |
Fl63 |
15 |
СТAРТ: |
DCR |
D |
; D = D - 1 |
F164 |
C230F1 |
JNZ |
ИЗМСИГ |
; ЕСЛИ # 0 -> ПОВТОР |
|
F167 |
3A00F2 |
LDA |
ИНВЕРС |
; А = ПРИPНАКУ ИНВЕРСИИ |
|
F16A |
A9 |
XRA |
С |
; "ИСКЛЮЧ. ИЛИ" С РЕЗУЛЬТАТОМ |
|
F16B |
D1 |
POP |
D |
; ВОССТАНОВИТЬ СОДЕРЖИМОЕ DE |
|
Fl6C |
Cl |
POP |
В |
; ВОССТАНОВИТЬ СОДЕРЖИМОЕ ВС |
|
F16D |
С9 |
RET |
; ВОЗВРАТ В OCHOBHУЮ ПРОГР. |
||
|
; ПОДПРОГРАММА ЗАДЕРЖКИ |
||||
|
; НА 0,75 ПЕРИОДА Тслед. |
||||
F16E |
063С |
ЗAДР75: |
MVI |
В, 60D |
; В = КОНСТАНТЕ ЗАДЕРЖКИ |
F170 |
05 |
ЗAДР77: |
DCR |
В |
;'B = B - 1 |
F171 |
C270F1 |
JNZ |
ЗАДР77 |
; В = 0 ? |
|
F174 |
С9 |
RET |
; |
||
F175 |
ИНВЕРС: |
EOU |
0F175H |
; ЯЧЕЙКА ДЛЯ ПРИЗНАКА ИНВЕРСИИ |
Рис. 5
Обе эти задачи решены следующим образом. Перед записью блока информации на ленту сначала записывают специальный байт синхронизации. Его значение в данном случае Е6Н. При чтении программа прежде всего определяет, равен ли считанный байт байту синхронизации. Возврат в основную программу не происходит, пока на ленте не будет обнаружен либо байт синхронизации, либо его инверсное значение (19Н). Если обнаруженный байт синхронизации инвертирован, то перед возвратом из подпрограммы инвертируются и все остальные считываемые байты.
Текст подпрограммы чтения "ЧТМАГ" приведен на рис.5. Основная программа вызывает подпрограмму "ЧТМАГ", помещая в аккумулятор величину FFH, что "говорит ей" о необходимости поиска байта синхронизации, или величину 08Н - указатель того, что синхронизация уже была достигнута ранее. Подпрограмма "ЧТМАГ" не изменяет содержимого регистров микропроцессора, за исключением содержимого регистра А, в котором при возврате из подпрограммы находится байт информации, считанный с ленты. Подпрограмма производит считывание информации с ленты бит за битом, пока не будут "накоплены" все 8 битов одного байта.
F000 |
31FFF0 |
LXI |
SP, 0F0FFH |
;HАCTPОЙKА УКАЗАТЕЛЯ СТЕКА |
|
F003 |
110020 |
LXI |
D, 2000H |
;DE = КОЛИЧ. ЗАПИСЫВ. БАЙТОВ |
|
F006 |
3E00 |
MVI |
A, 00Н |
;"ПУСТОЙ" БАЙТ ПЕРЕД СИНХРО |
|
F00B |
CD00F1 |
CALL |
ЗПМАГ |
;ЗАПИСЬ БАЙТА |
|
F00B |
3EE6 |
MVI |
A, 0EH |
;БАЙТ СИНХРОНИЗАНИИ |
|
F00D |
C000F1 |
CALL |
ЗПМАГ |
;ЗАПИСЬ БАИТА |
|
F010 |
3E22 |
ЗАП22: |
MVI |
A, 22H |
;"ТЕСТ" БАЙТ |
F012 |
C000F1 |
CALL |
ЗПМАГ |
;ЗАПИСЬ БАЙТА |
|
F0I5 |
1В |
DCX |
D |
;УМЕНЬШИТЬ СЧЕТЧИК БАЙТОВ |
|
F016 |
7А |
MOV |
A, D |
; |
|
F017 |
ВЗ |
ОRА |
Е |
;ПРОВЕРКА НА DE = 0 |
|
F018 |
C210F0 |
JNZ |
ЗАП22 |
;ПОВТОР ЗАПИСИ 22Н |
|
F01B |
74 |
HLT |
;KOHEЦ РАБОТЫ ПРОГРАММЫ |
||
Рис. 6 |
|||||
F100 |
ЗПМАГ: |
EQU |
0F100H |
;АДРЕС ПОДПРОГРАММЫ ЗАПИСИ |
|
F01C |
31FFF0 |
LXI |
SP, 0F0FFH |
;НАСТРОЙКА УКАЗАТЕЛЯ СТЕКА |
|
F0IF |
110020 |
LXI |
В, 2000Н |
;DE = КОЛИЧ. БАЙТОВ В ЗАПИСИ |
|
F022 |
3EFF |
MVI |
A, 0FFH |
;ПРИЗНАК = ИСКАТЬ СИНХРОБАЙТ |
|
F024 |
CD28F1 |
ЧТ22: |
CALL |
ЧТМАГ |
;ЧТЕНИЕ ОДНОГО БАЙТА |
F027 |
FE22 |
СРI |
22Н |
;ПРАВИЛЬНО ЛИ СЧИТАН БАЙТ? |
|
F029 |
C239F0 |
JNZ |
ОШБК |
;ПЕРЕХОД, ЕСЛИ ОШИБКА |
|
F02C |
1В |
DСХ |
D |
;DE = DE - 1 |
|
F02D |
7А |
MOV |
A, D |
;ПРОВЕРКА НА D = Е = 0 |
|
F02E |
ВЗ |
ORA |
Е |
; |
|
F02F |
ЗЕ08 |
MVI |
А, О8Н |
;СИНХРОВАЙТ НАЙДЕН РАНЕЕ |
|
F031 |
С224F0 |
JNZ |
ЧТ22 |
;ЧТЕНИЕ СЛЕДУЮЩЕГО БАЙТА |
|
F034 |
ЗЕ81 |
MVI |
А, 81Н |
;CООБЩЕНИЕ О ВЕРНОМ ЧТЕНИИ |
|
F036 |
D300 |
OUT |
00H |
;BЫBОД НА СВЕТОДИОДЫ |
|
F038 |
76 |
HLT |
;КОНЕЦ РАБОТЫ |
||
F039 |
3E0F |
ОШБК: |
MVI |
A, 0FH |
;СООБЩЕНИЕ ОБ ОШИБКЕ ЧТЕНИЯ |
F0ЗВ |
D300 |
OUT |
00Н |
;ВЫВОД НА СВЕТОДИОДЫ |
|
F03D |
76 |
HLT |
;КОНЕЦ РАБОТЫ |
||
F12В |
ЧТМАГ: |
EQU |
0F128Н |
;АДРЕС ПОДПРОГРАММЫ ЧТМАГ |
Рис. 7
Для временного хранения результата использован регистр С, в который первоначально записывают величину 00Н. В начале роботы подпрограммы "ЧТМАГ" происходит считывание информации из порта 01Н до тех пор, пока не произойдет изменение сигнала из "0" в "1" или наоборот из "1" в "0". После этого выполняется операция логического сложения (ИЛИ) считанного бита и предыдущего результата, находящегося в регистре С, содержимое которого предварительно должно быть сдвинуто влево, для освобождения места для нового бита. Далее происходит задержка работы программы на 0,75Тслед (подпрограмма "ЗАДР75"). Это необходимо для уверенного считывания данных в середине "полубита".
После декодирования принятого бита программа всегда проверяет: была ли синхронизация достигнута или нет. Об этом можно узнать по содержимому аккумулятора, которое определяется основной программой, как было описано выше. Если синхронизация не достигнута, то после приема каждого бита происходит сравнение результата с байтом синхронизации (Е6Н) или его инверсией (19Н) до тех пор, пока байт синхронизации не будет принят. Если он инвертирован, то в специально отведенную ячейку памяти "ИНВЕРС" записывается величина FFH - признак инверсии, в противном случае в эту ячейку записывается 00Н. Если синхронизация уже достигнута и в ячейке "ИНВЕРС" записан код FFH, то "собранный" в аккумуляторе байт перед возвратом в основную программу инвертируется. Напомним, что константу. определяющую время работы подпрограммы "ЗАДР75", необходимо изменить, если частота сигналов С1 и С2 отличается от 2 МГц. Дополнительные разъяснения по программе даны в поле комментариев.
Подпрограммы "ЧТМАГ" и "ЗПМАГ" входят в состав основной управляющей программы микро-ЭВМ. Приведенные на рис.4 и 5 подпрограммы специально оттранслированы для работы в той части адресов памяти, где в нашей микро-ЭВМ находится ОЗУ. Подпрограммы можно ввести в ОЗУ с помощью описанного ранее отладочного модуля и использовать для тестирования модуля сопряжении. Кроме этих подпрограмм, нам потребуются еще две небольшие программы. На рис.6 приведена программа, позволяющая записать на ленту длинную серию байтов, имеющих значение 22Н. С помощью этой программы можно получить "тест-ленту" для проверки модуля сопряжения.
Если в магнитофоне отсутствует АРУЗ, уровень записи необходимо установить по индикатору так же, как и при записи музыки. Допускается несколько превысить номинальный уровень записи. Уровень записи устанавливают при неподвижной ленте после запуска в работу программы, приведенной на рис.6. Затем программу запускают вновь и производят запись. После записи ленту перематывают на начало записи и магнитофон включают в режим воспроизведения. Щуп осциллографа подключают к выходу усилители А1. Резистором R1 устанавливают уровень входного сигнала, при котором на экране осциллографа видны прямоугольные импульсы с крутыми фронтами и плоской вершиной.
После этого ленту опять перематывают в начало, запускают в работу программу, приведенную на рис.7, и включают в магнитофоне режим "Воспроизведение". Программа сравнивает считанный с ленты байт с байтом 22Н. Если будет обнаружено несоответствие. то на светодиодах D0-D7 отладочного модуля появится комбинация 0FH - сообщение об ошибке и работа программы прекратится. Если при считывании не будет обнаружено ни одной ошибки, то после прочтения всей записи на светодиодах отладочного модуля появится комбинация 81Н - сообщение о верном считывании.
При работе с основной управляющей программой микро-ЭВМ информация на ленту записывается в определенном формате. Кроме полезной информации, на ленту записываются и специальные служебные байты. Формат, таких записей будет подробно рассмотрен при описании основной управляющей программы микро-ЭВМ.
Описанный модуль сопряжения отличают простота, высокая достоверность и большая скорость записи-считывания информации.
Г. ЭЕЛЕНКО, В. ПАНОВ, С. ПОПОВ
Отсканировано с журнала Радио №9 1983 г.
Отредактировано Лесных Ю.И. 1999 г.
Описание компьютера Микро-80 | Журнал РАДИО |