- •Предисловие
- •1.2. Можно ли самому построить эвм?
- •Какую микро-эвм мы будем строить?
- •2.1. Основные блоки микро-эвм
- •2.2. Содержимое центрального блока
- •2.3. Какую микро-эвм мы будем называть "простейшей"?
- •Некоторые общие сведения о работе микро-эвм
- •3.1. Данные и программы
- •3.2. Основные логические операции
- •3.3. Основные арифметические операции
- •Архитектура
- •И компонентов
- •4.1. Конструктивное оформление пм-эвм
- •4.2. Основные связи и структура шин
- •4.3. Общая функциональная схема пм-эвм
- •4.4. Функциональная схема микропроцессора
- •4.5. Как микропроцессор выполняет команду?
- •4.6. Система команд и способы адресации
- •4.6.1. Группа команд пересылки данных
- •4.6.2. Группа арифметических команд
- •4.6.3. Группа логических команд
- •4.6.4. Группа команд переходов
- •4.6.5. Группа команд управления и работы со стеком
- •4.7. Программирование пм-эвм
- •Используемые микросхемы
- •5.1. Общие вопросы
- •5.3. Временные диаграммы
- •5.4. Микросхемы, реализующие логические функции
- •5.5. Микросхемы, содержащие элементы памяти
- •Структура и функционирование микропроцессорного блока
- •6.1. Микропроцессор кр580ик80а
- •6.2. Синхронизация
- •6.3. Шины адреса, данных и управления
- •7.2. Структура памяти
- •7.3. Клавиатура и индикация
- •7.4. Программа-монитор
- •7.5. Инструкция по работе на микро-эвм
- •Сборка и отладка
- •8.1. Этапы сборки и проверки узлов
- •8.2. Статический аппаратный эмулятор
- •8.3. Отладка в рабочем режиме
- •8.4. Подготовка пм-эвм к работе
- •9.1. Программируемый калькулятор
- •9.3. Сбор и обработка данных
- •9.4. Реализация диалогового режима
- •Расширение возможностей
- •10.1. Клавиатура и индикация
- •10.2. Внешняя память
- •10.3. Накопитель на базе бытового магнитофона
- •10.4. Дисплей на базе бытового телевизора или осциллографа
- •10.5. Простой графический дисплей
- •10.6. Звуковая сигнализация
- •10.7. Другие возможности пм-эвм
- •Приложения
- •Список рекомендуемой литературы
Расширение возможностей
ПМ-ЭВМ
10.1. Клавиатура и индикация
В предыдущей главе мы познакомились с различными способами применения ПМ-ЭВМ. Было показано, что, не используя никакого дополнительного оборудования, можно реализовать широкий круг практических задач. Читатель, без сомнения, сумеет найти и другие возможности применения ПМ-ЭВМ.
Нетрудно догадаться, что производительность и вычислительная мощность ПМ-ЭВМ могут быть увеличены путем последовательного наращивания внутренней и внешней памяти, устройств ввода/вывода и периферийного оборудования. Читателю предстоит самостоятельно оценить, насколько ПМ-ЭВМ удовлетворяет его потребности, и нужно ли ее усложнять, если стоящие задачи могут быть решены простыми средствами. Всегда следует иметь в виду, что время и трудоемкость разработки программного обеспечения обычно являются решающими факторами в процессе создания систем на базе МП.
ПМ-ЭВМ может быть использована в учебных целях, в качестве устройства отладки программ для вновь разрабатываемых МП-систем, в качестве макетного устройства для отработки аппаратной части, в качестве самостоятельной вычислительной машины и как управляющая ЭВМ. Как рабочий инструмент ПМ-ЭВМ имеет ряд очевидных недостатков: информация в нее вводится только с клавиатуры и только в цифровой форме, двоичная индикация трудна для чтения и интерпретации, при выключении питания теряется записанная в ОЗУ информация, так что при включении надо заново вводить программы и исходные данные.
Заметим, что некоторые из этих недостатков легко устранимы. В частности, нарастив порты ввода и вывода 003, обслуживающие клавиатуру до полных восьми разрядов, получим контактную сетку 8x8, образующую клавиатуру из 64 кнопок, достаточную для ввода алфавитно-цифровой информации. В связи с этим потребуется переделать программу-монитор и использовать специальные программы для обработки алфавитно-цифровой информации.
Для вывода информации можно нарастить порты 002, 001, 000 схемами преобразования двоичного кода в семисегмент-ный (рис. 10.1), при этом индикация на семисегментных индикаторах будет представлена восьмеричными или же десятичными числами. Из тех же портов вывода можно организовать динамическую систему индикации, обеспечивающую вывод любых знаков (цифр, значков и некоторых букв как русского, так и латинского алфавитов) на дисплейное устройство, содержащее до 16 семисегментных индикаторов (рис. 10.2). Программы для индикации обычно включают в состав программы-монитора. В целях изучения способов обслуживания устройств динамической индикации введем в ПМ-ЭВМ следующую программу:
014000001 Ml: LXI В, TAB
014 001 060
014002 014
014003041 LXIH, OOOQ001Q
014 004 001
014 005 000
014006012 М2: LDAX В
014007323 OUT, 002Q
014010002
014011 174 MOV A, H
014012323 OUT, 001Q
014 013 001
014014175 MOV A, L
014015323 OUT, OOOQ
014016 000
014017003 INX В
014 020 026 MVI D, 100Q
014021 100
014022315 M3: CALL DL
014023 277
014 024 000
014025025 DCRD
014 026 302 JNZ, M3
014 027022
014030014
014031051 DADH
014032322 JNC.M2
014033 006
014 034 014
014035303 JMP, Ml
014 036 000
014037 014
014 060 000 TAB:
014061 001
014 062002
014063 003
014 064 004
014 065 005
014 066 006
014067 007
014 070010
014071 O1l
014 072012
014073 013
014 074 014
014 075 015
014 076 016
014077017
Рис. 10.1. Схемы преобразования двоичного кода в семисегментный
Нажмем кнопки СБРОС и П. В портах 000 и 001 погаснут все индикаторы, за исключением младшего разряда порта 000. Через полсекунды загорится индикатор следующего разряда, а предыдущий погаснет и т. д., пока не загорится индикатор старшего разряда порта 001. При этом каждому зажженному индикатору соответствует код го таблицы TAB, индицируемый портом 002. Цикл сканирования повторяется до тех пор, пока не будет нажата кнопка СБРОС.
Эта программа демонстрационная. Она позволяет отладить схему, изображенную на рис. 10.2, устанавливая рабочий ток индикаторов подбором резисторов и задавая время сканирования значением параметра, хранимого в регистре D (ячейка 014Q 021Q). В программе используются почти все регистры МП, поэтому при применении ее в качестве стандартной ПП вывода на индикацию следует вначале поместить команды PUSH PSW, PUSH В, PUSH D, PUSH H, а в конце программы — команды XRA A, OUT OOOQ, OUT 001Q, OUT 002Q, POP H, POP D, POP B, POP PSW, RET, исключив команду CALL DL вызова ПП временной задержки и команду возврата к началу программы JMP, Ml.
В соответствии со схемой рис. 10.2 каждому сегменту семи-сегментного индикатора соответствует определенное число, выводимое через порт 002: сегменту а - 0000 0001 (001Q), b - 0000 0010 (002Q), с- 0000 0100 (0040), d-0000 1000 (010Q), е - 0001 0000 (020Q), f - 0010 0000 (040Q), £- 0100 0000(1000), h - 1000 0000 (200Q). Следовательно, изображаемый индикатором символ (цифра, буква или другой знак) представляется восьмиразрядным двоичным числом, являющимся суммой чисел, соответствующих горящим сегментам индикатора. Например, десятичные числа от 0 до 9 представляются следующими числами: 0-0011 1111 (077Q), 1 - 0000 ОНО (006Q), 2 -0101 1011 (133Q), 3 - 0100 1111 (117Q), 4 - 01100110(1460), 5 - ОНО 1101 (155Q), 6 - 0111 1101 (175Q), 7 - 0000 0111 (007Q), 8 - 0111 1111 (177Q), 9 - ОНО 1111 (157Q). С определенными условностями могут быть изображены также буквы латинского и русского алфавитов и различные знаки.
Рис. 10.2. Дисплейное устройство из 16 семисегментных индикаторов
Подключим к ПМ-ЭВМ схему, изображенную на рис. 10.2, и введем следующую программу:
014000001 Ml: LXI В, TAB
014 001 060
014 002 014
014 003 305 PUSH B
014 004 036 MVI Е, 040Q
014 005 040
014006301 М2: POP В
014007041 LXIH, OOOQ001Q
014010001
014011 000
014012012 M3: LDAX В
014 013 323 OUT, 0020
014014002
014015 174 MOV A, H
014016323 OUT, 001Q
014017 001
014020175 MOV A, L
014021323 OUT, OOOQ
014022000
014 023 003 INX В
014 024 026 MVI D, 2000
014 025 200
014026025 M4: OCR D
014027302 JNZ, M4
014 030026
014031 014
014032051 DADH
014033322 JNC, M3
014034 012
014035 014
014036035 DCRE
014037302 JNZ,M2
014 040 006
014041 014
014 042 073 OCX SP
014 043 073 DCX SP
014 044 301 POP В
014 045 003 INX В
014 046 305 PUSH В
014047012 LDAX В
014 050 376 CPI, 060Q
014 051 060
014052312 JZ, Ml
014 053 000
014 054 014
014055303 JMP, M2
014 056 006
014057 014
014 060 077 TAB:
014 061 006
014062133
014063 117
014064 146
014 065 155
014 066 175
014 067 007
014070177
014071 157
014 072 000
014 073 000
014 074 060
Рис. 10.3. Схема гашения индикаторов
Программа, построенная на базе предыдущей, выводит на дисплей, образованный 16 семисегментными индикаторами, движущийся текст (в данном примере цифры от 0 до 9 и два пробела), хранимый в ОЗУ, начиная с ячейки 014Q 060Q. Конец текста помечается символом, не использованным для обозначения букв и цифр (в данном примере символ II, его код 060Q). Он хранится в ячейке 014Q 051Q и сравнивается с символом текста, выводимым на крайний левый индикатор дисплея. Как только опознан символ конца текста, программа возвращается к началу текста. Время цикла сканирования задается числом в ячейке 014Q 025Q, а время, на которое текст останавливается, — числом в ячейке 014Q 005Q.
Программа может быть использована для подготовки и редактирования текстов, выводимых на внешние устройства.
Во избежание перегорания индикаторов при непредусмотренном прекращении сканирования схему, изображенную на рис. 10.2, следует дополнить устройством гашения индикаторов, построенным на основе одновибратора (рис. 10.3). Устройство отключает индикацию через заданный цепочкой RC интервал времени после подачи импульса выборки порта 002. Таким образом, индикаторы непрерывно (для глаза наблюдателя) горят только при периодической выдаче информации в порт 002.
Рассмотренная схема индикации весьма универсальна и обладает гЪраздо более широкими возможностями для обеспечения диалогового режима работы ПМ-ЭВМ по сравнению с простой двоичной индикацией.
