Простейшая микро-ЭВМ

         

НАКОПИТЕЛЬ НА БАЗЕ БЫТОВОГО МАГНИТОФОНА


Сохранение программ на про­стом бытовом магнитофоне не только эффективно, но и необ­ходимо для записи более длинных программ без использования дорогих цифровых магнитофонов, а также взамен записи на перфоленту. Дешевые бытовые магнитофоны имеют ограни­ченную полосу пропускания, высокий уровень шумов и непо­стоянную скорость протяжки. В отличие от принятой в цифро­вых магнитофонах схемы, где записываемый сигнал с помощью специального устройства модулируется разными частотами для логического 0 и логической 1, в описываемом здесь мето­де записи требования, предъявляемые к каналу передачи дан­ных, минимальны. Вместо передачи уровней, соответствующих логическому 0 и логической 1, данные передаются в виде пачек импульсов заданной частоты (тона) с разным количеством импульсов в пачке. Основная частота должна лежать в пределах полосы пропускания магнитофона. Каждый бит передаваемой информации представляется в виде импульсной пачки, за кото­рой следует пауза. Первая треть периода передачи бита всегда занята импульсами, во второй трети либо импульсы продолжа­ются, либо наступает пауза, что означает соответственно логиче­скую 1 или логический 0, последняя треть периода — всегда пауза (рис. 10.4). Таким образом, значение бита данных за­дается отношением длины импульсной пачки к длине паузы. (Известны и другие системы записи, например основанные на количестве импульсов в пачке.) Для изучения методов форми­рования таких импульсных пачек введем в ПМ-ЭВМ следующую учебную программу:

014000016                                             MVIC, 252Q

014001 252

014002006                                 Ml: MVIB, 011Q

014003 Oil

014004257                                 М2: XRA A

014 005 323                                             OUT, OOOQ

014 006 000

014007315                                             CALL IMP

014010060

014011 014

014012171                                             MOV А, С

014013037                                             RAR




014014117                                             MOV С, А

014015322                                             JNC, МЗ

014 016 026

014017014

014 020 257                                             XRA A

014 021 323                                             OUT, OOOQ

014 022 000

014 023 303                                             JMP, M4

014 024 032

014025 014

014026076                                 МЗ: MVI A, 377Q

014027377

014 030 323                                             OUT, OOOQ

014031 000

014032315                                 М4: CALL, IMP

014 033 060

014 034 014

014035257 .                                        XRA A

014 036 057                                             СМА

014 037 323                                                 OUT, OOOQ

014 040 000

014041315                                             CALL, IMP

014 042 060

014043 014

014044171                                             MOV А, С

014 045 323                                             OUT, 002Q

014 046 002

014 047 005                                             DCR В

014050302                                             JNZ,M2

014 051 004

014052014

014 053 166                                             HLT

014 060 026                                 IMP: MVI D, 010Q

014061 010

014062257                                             XRA A

014063323                                 M5: OUT, 001Q

014 064 001

014 065 036                                                  MVI E, 040Q

014 066 040

014067315                                 M6: CALL DL

014 070 277

014071 000

014072035                                             DCRE

014073302                                             JNZ.M6

014 074 067

014075 014

014076074                                             INK A

014 077 025                                             OCR D

014100302                                             JNZ,M5

014 101 063

014 102 014

014103311                                              RET





Рис. 10.4. Диаграмма передачи одного двоичного разряда

Программа, начиная с младшего разряда, преобразует байт информации, хранящийся в регистре С, в последовательность посылок, наблюдаемую в портах 000 и 001. Индикаторы порта 000 погашены в тех частях периода передачи каждого бита, когда должна выдаваться импульсная пачка, и горят, когда она не должна выдаваться, т. е. логическому 0 соответствует после­довательность: не горит — горит — горит, а логической 1 — не горит — не горит — горит. Импульсы с заданной частотой следо­вания появляются в младшем разряде порта 001, а в целом индикаторы порта 001 подсчитывают эти импульсы. Частота следования импульсов — примерно 2 Гц. Порт 002 позволяет наблюдать преобразуемое число, каждый разряд которого последовательно анализируется программой путем сдвига в раз­ряд переноса. В ячейке 014Q 003Q хранится параметр, заноси­мый в регистр В, задающий количество преобразуемых разря­дов числа. Здесь этот параметр равен девяти, так как кроме восьми информационных пачек для обозначения конца переда­чи числа передается импульсная пачка, соответствующая нулю. Подпрограмма формирования импульсной пачки имеет метку IMP. Количество импульсов в пачке равно половине числа, хра­нящегося в ячейке 014Q 061Q, которое обязательно должно быть четным. Длительность импульса в пачке определяется за­держкой, задаваемой числом в ячейке 014Q 066Q. В учебной программе длительность импульса для наблюдаемости задана равной произведению этого числа на задержку, определяемую ПП DL. Для использования ГШ в качестве рабочей необходимо из ПП IMP изъять обращение к ПП DL, из основного текста изъять команду вывода в порт 002 (адреса с 014Q 044Q по 014Q 046Q), а вместо команды HLT ввести команду RET. Чтобы сформировать сигнал, который можно подавать непо­средственно на вход записи магнитофона, используем схему, представленную на рис. 10.5. Эта схема позволяет регулиро­вать уровень записи и ликвидирует постоянную составляющую сигнала.





Рис. 10.5. Схема формирователя сигнала для записи на магнитофон

Зададимся приемлемой для записи и воспроизведения на бы­товом магнитофоне частотой импульсов в пачках, равной 2 кГц. Тогда легко подсчитать число, заносимое в регистр Е. Действи­тельно, программный цикл от команды DCR Е до команды JNZ занимает 15 тактов. В ПМ-ЭВМ тактовая частота равна 1 МГц. Следовательно, чтобы получить задержку, равную поло­вине периода повторения импульсов 1/(2000-2) = 250 мкс, необходимо задать 250/15 ~ 16 программных циклов. В ре­гистр Е надо занести 020Q = 16. Если количество импульсов в пачке равно четырем (как задано в нашей программе), ско­рость передачи информации составит 2000/(4-3) ~ 167 бит/с.



Рис. 10.6. Формирование выходного сигнала с магнитофона

Для ввода информации с бытового магнитофона необходимо из полученного сигнала сформировать нормальные логические посылки на ТТЛ-уровнях, причем воспроизведению импульсной пачки должен соответствовать уровень логической 1, а паузе -уровень логического 0 (рис. 10.6). Количество импульсов в пачке не принимается во внимание. Такую схему легко реали­зовать на операционных усилителях или на обычных транзисто­рах. Формирователь может быть подключен к одному из входов порта 003, например выводу 4 микросхемы D23. В этом случае дальнейшие операции имеют чисто логический характер, легко реализуемый программным путем. Введем в ПМ-ЭВМ следую­щую демонстрационную программу, которую потом можно преобразовать в рабочую ПП ввода информации с бытового магнитофона:

014 000 006                                 MAG: MVI В, 010Q

014001 010

014 002 026                                                 MVI D, OOOQ

014 003 000

014004315                                 Ml: CALL IMP

014005 120

014 006 014

014007332                                             JC.M1

014010004

014011 014

014012315                                             CALL IMP

014013 120

014014014

014015332                                             JC.M1



014 016 004

014017014

014020315                                 M2: CALL IMP

014021 120

014022014

014023322                                             JNC, M2

014 024 020

014025014

014026315                                             CALL IMP

014027 120

014030014

014031 322                                             JNC, M2

014032020

014033 014

014034025                                  M3: OCR D

014035315                                              CALL IMP

014 036 120

014037014

014040332                                              JC, M3

014041 034

014042014

014043315                                              CALL IMP

014 044 120

014045014

014046332                                              JC, M3

014 047 034

014 050 014

014051024                                  M4: INR D

014052315                                              CALL IMP

014053  120

014054  014

014055322                                              JNC.M4

014056 051

014057014

014060315                                              CALL IMP

014061 120

014 062014

014 063 322                                              JNC, M4

014064051

014065 014

014 066 172                                              MOV A, D

014067.027                                              RAL

014070171                                              MOV А, С

014071037                                              RAR

014072117                                              MOVC, A

014 073 026                                              MVI D, OOOQ

014 074 000

014075005                                              OCR В

014076302                                              JNZ,M3

014077034

014 100014

014 101 171                                              MOV А, С

014 102 323                                              OUT, OOOQ

014 103 000

014104257                                              XRAA

014 105 117                                              MOVC, A



014106303                                              JMP.MAG

014 107000

014 110014

014120036                                  IMP: MVIE, 377Q

014 121 377

014122035                                  M5: DCR E

014123302                                              JNZ, M5

014 124 122

014 125 014

014126333                                              IN,003Q

014 127 003

014130037                                                RAR

014 131 311                                                RET

Программа поразрядно формирует в регистре С число, после­ довательно вводимое через младший разряд порта 003 с по­мощью ПП IMP, которая производит опрос порта в заданном темпе. В основной части программы в регистре D подсчитыва­ются опросы и формируется знаковый разряд числа в зависи­мости от соотношения длительности пачки и паузы: если пачка длиннее паузы — в знаковом разряде 1, если короче — в знако­вом разряде 0. Биты знакового разряда последовательно зано­сятся в регистр С. Темп опроса задается числом по адресу 014Q 121Q, заносимым в регистр Е. В данном случае задержка равна 15-256 = 3840 мкс, а частота опроса соответственно равна 1/0,003840 ~ 260 Гц. Следовательно, при длине импульсной пачки до 0,5 с в регистре D накопится число, не большее 130, что гарантирует отсутствие переполнения регистра.

Перед вводом программы в ПМ-ЭВМ подключим к выводу 4 микросхемы D23 вывод 16 микросхемы D16 второй ПМ-ЭВМ, в которую введена описанная выше программа вывода, на­строенная на длительность импульсной пачки не более 0,5 с. Вместо второй ПМ-ЭВМ можно подключить приведенный на рис. 10.6 формирователь и магнитофон, на ленту которого пред­варительно записаны с ПМ-ЭВМ импульсные последовательно­сти для одиночных байтов, но тогда мы сталкиваемся с пробле­мами отладки всего тракта: ПМ-ЭВМ — выходной формирова­тель — магнитофон в режиме записи, а затем магнитофон в ре­жиме воспроизведения — входной формирователь — ПМ-ЭВМ. В то же время при непосредственной связи между двумя ПМ-ЭВМ отпадают проблемы согласования уровней и при этом могут быть заданы любые временные характеристики сигналов.



Настроим программу вывода передающей ПМ-ЭВМ на выда­ чу одного байта информации из регистра С, т. е. используем программу в том виде, как она приведена в тексте. Для вывода байта необходимо нажать кнопки СБРОС и П. Если до этого в принимающей ПМ-ЭВМ были также нажаты кнопки СБРОС и П, через 3 — 4 с на индикаторах ее порта 000 можно будет на­блюдать код числа, идентичный коду, хранящемуся в регист­ре С передающей ПМ-ЭВМ. Чтобы снова передать байт инфор­мации, нужно снова нажать кнопки СБРОС и П. Меняя содер­жимое регистра С передающей ПМ-ЭВМ, можно проверить пра­вильность передачи для любых кодов. После такой проверки можно произвести проверку правильности передачи массива информации. Для этого в память передающей ПМ-ЭВМ нужно дополнительно ввести управляющую программу и внести в ос­новную программу указанные выше изменения. Управляющая программа имеет вид

014110041                                   ММ1: LXI H, ADM

014 111 000

014 112 015

014113116                                   ММ2: MOV C.M

014114315                                               CALL M1

014 115 002

014 116 014

014117054                                                INR L

014120302                                               JNZ,MM2

014 121 113

014 122014

014 123 166                                                  HLT

Здесь ADM = ADMHQ ADMLQ - символический адрес начала массива чисел, заносимый в регистровую пару H; Ml - метка начала программы вывода информации. Максимальная длина передаваемого массива - 256 байт, если он начинается с адреса ADMHQ OOOQ и кончается адресом ADMHQ 377Q.

Для проверки правильности передачи необходимо нажать кнопки СБРОС и П принимающей ПМ-ЭВМ, нажать кнопку СБРОС, набрать адрес начала управляющей программы (метка ММ1) и нажать кнопку П передающей ПМ-ЭВМ. На индикаторах порта 000 принимающей ПМ-ЭВМ будут последовательно появ­ляться коды передаваемого массива. Коды массива могут быть занесены в ОЗУ принимающей ПМ-ЭВМ.


Для этого вместо команды MOV С, А по адресу 014Q 105Q необходимо занести команду RET и ввести дополнительно управляющую программу вида

014  041                                   МА1: LXIH,ADM

014 141 000

О14 143 161                                   МА2: MOVM,C

014 144 315                                               CALL MAG

014 145 000

014 146 014

014 147 054                                                iVrS » л

014 150 302                                                JNZ, MA2

014 151 143

014 152 014

014 153 166                                                HLT

Теперь для запуска программы принимающей ПМ-ЭВМ необ­ходимо после нажатия кнопки СБРОС набрать адрес начала управляющей программы (метка МА1), а затем нажать кнопку П. Принимаемые коды по-прежнему наблюдаются на инди­каторах порта 000, но после окончания передачи правильность принятого массива легко проверить, считывая его последова­тельно на индикаторах порта 002 принимающей ПМ-ЭВМ с по­мощью клавиатуры. После такой проверки можно уже отла­дить передачу информации с рабочей скоростью порядка 150 бит/с, затем включить между передающей и принимающей ПМ-ЭВМ выходные и входные формирователи, снова прове­рить передачу и лишь после этого включать магнитофон.



Содержание раздела