Реализация диалогового режима
Диалоговый режим реализует взаимодействие человека с вычислительной машиной. Наиболее употребительными техническими средствами, обеспечивающими обмен информацией между человеком и машиной в процессе диалога, являются клавишные устройства и устройства визуального отображения (дисплеи). Поскольку ПМ-ЭВМ имеет, хотя и ограниченные по своим возможностям, клавиатуру и светодиодную индикацию, можно попытаться организовать на ней диалоговый режим. Введем в ПМ-ЭВМ следующую программу, предназначенную для оценки реакции оператора в диалоговом режиме:
014000041 Ml: LXI H, TAB 014001 110 014002 014 014003257 М2: XRA А 014 004 323 OUT, OOOQ 014005 000 014006323 OUT.001Q 014007 001 014010323 OUT, 003Q 014011 003 014012107 MOV В, А 014 013 117 MOVC, A 014 014 057 CMA 014015323 OUT, 002Q 014 016 002 014017176 MOV A, M 014 020 267 ORA A 014021312 JZ,M1 014 022 000 0140243-15 M3: CALL DL 014025 277 014 026 000 014027075 DCRA 014030302 JNZ, M3 014031 024 014 032014 014033323 OUT, 002Q 014034 002 014035333 M4: IN, 003Q 014 036 003 014037057 CMA 014 040 267 ORA A 014041312 JZ.M6 014 043 014 014044171 MOV А, С 014045323 OUT, OOOQ 014 046 000 014047170 MOV А, В 014050323 OUT, 001Q 014051 001 014052333 M5: IN, 003Q 014 053 003 014 054 057 CMA 014055267 ORA A 014056302 JNZ,M5 014 057 052 014 060014 014061315 M6: CALLDL 014 063 000 014064171 MOV А, С 014 065 074 INR A 014 066 047 DAA 014067117 MOVC, A 014070170 MOV А, В 014071316 ACI, OOOQ 014 072 000 014073047 DAA 014074107 MOVB.A 014075376 CPI,005Q 014077332 JC, M4 014 100035 014 101 014 014102043 INXH 014 103 303 JMP, M2 014 104 003 014 105 014 014110377 TAB: 014 111 200 014 112300 014 113 330 014 114000
После ввода программы нажмем кнопки СБРОС и П. Порт 002 высветит число 377Q (все единицы), а индикаторы портов 001 и 000 погашены. Через неизвестный оператору интервал времени индикаторы порта 002 гаснут. В этот момент оператор должен нажать любую (кроме СБРОС) кнопку клавиатуры. В портах 001 и 000 высветится выраженное в двоично-десятичном коде время задержки между погасанием индикаторов порта 002 и нажатием кнопки. Порт 001 индицирует десятки и единицы секунд (считая слева), а порт 000 — десятые и сотые доли секунды. После отпускания кнопки через заданный интервал времени индикаторы портов 001 и 000 гаснут, а индикаторы порта 002 снова загораются, чтобы погаснуть через неизвестный интервал времени. Если ни одна кнопка не нажата после погасания индикаторов порта 002, через заданный интервал времени они снова загорятся. Если кнопка нажата до погасания индикаторов, то портами 001 и 000 индицируется нулевая задержка, т. е. не загорается ни один индикатор.
Оценки времени реакции оператора (в секундах):
0,00 — 0,09 — ошибочное значение, Вы поторопились, попробуйте снова; 0,10 — 0,14 — исключительная, почти фантастическая реакция; 0,15 — 0,19 — очень хорошая; 0,20 — 0,24 -нормальная; 0,25 — 0,29 -посредственная; 0,30 — 0,34 — плохая; 0,35 — 5,00 - Вы, вероятно, уснули.
Программа может быть использована как для оценки, так и для тренировки реакции. Время задержки гашения индикаторов порта 002 задается количеством циклов задержки, начинающихся с метки МЗ. В аккумулятор при каждом замере заносятся последовательно числа из таблицы, хранящейся в ячейках памяти, начиная с адреса, задаваемого командой LXIH. Длина таблицы практически неограниченная. Если в таблице помещено число OOOQ, то при его занесении в аккумулятор на очередном шаге происходит возврат к началу программы и, следовательно, к началу таблицы. Цена младшего разряда, задающего задержку числа, равна задержке, вырабатываемой ПП DL, т. е. 10 мс. После того как индикаторы порта 002 погашены (команда по адресу 014Q 033Q) и до нажатия кнопки с помощью счетчика, организованного на регистровой паре В, подсчитывается количество циклов обращения к ПП DL (команды, начиная с метки Мб). В счетчиках используется команда DAA, поэтому результат получается в двоично-десятичном коде. При нажатии кнопки содержимое регистровой пары В выводится в порты 001 и 000. Счетчик циклов снова задействуется после отпускания кнопки, и после достижения заданного числа циклов происходит возврат к метке М2 программы, при этом регистровая пара Н инкрементируется, в результате чего при следующем замере в качестве параметра задержки извлекается следующее число из таблицы. Параметры, определяющие работу программы, помещаются по следующим адресам: 014Q 001Q, 014Q 002Q — адрес начала таблицы; 014Q 076Q — время, в течение которого индикаторы порта 002 погашены; цена младшего разряда — около 1 с.
Обратим внимание на то, что для ввода информации с клавиатуры не использована ПП SKL, так как при обращении к ней невозможно организовать счет времени (до нажатия кнопки процессор не выходит из ПП). РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПМ-ЭВМ КЛАВИАТУРА И ИНДИКАЦИЯ
В предыдущей главе мы познакомились с различными способами применения ПМ-ЭВМ. Было показано, что, не используя никакого дополнительного оборудования, можно реализовать широкий круг практических задач. Читатель, без сомнения, сумеет найти и другие возможности применения ПМ-ЭВМ. Нетрудно догадаться, что производительность и вычислительная мощность ПМ-ЭВМ могут быть увеличены путем последовательного наращивания внутренней и внешней памяти, устройств ввода/вывода и периферийного оборудования. Читателю предстоит самостоятельно оценить, насколько ПМ-ЭВМ удовлетворяет его потребности, и нужно ли ее усложнять, если стоящие задачи могут быть решены простыми средствами. Всегда следует иметь в виду, что время и трудоемкость разработки программного обеспечения обычно являются решающими факторами в процессе создания систем на базе МП. ПМ-ЭВМ может быть использована в учебных целях, в качестве устройства отладки программ для вновь разрабатываемых МП-систем, в качестве макетного устройства для отработки аппаратной части, в качестве самостоятельной вычислительной машины и как управляющая ЭВМ. Как рабочий инструмент ПМ-ЭВМ имеет ряд очевидных недостатков: информация в нее вводится только с клавиатуры и только в цифровой форме, двоичная индикация трудна для чтения и интерпретации, при выключении питания теряется записанная в ОЗУ информация, так что при включении надо заново вводить программы и исходные данные.
Заметим, что некоторые из этих недостатков легко устранимы. В частности, нарастив порты ввода и вывода 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 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 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
Рис. 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 014011 000 014012012 M3: LDAX В 014 013 323 OUT, 0020 014015 174 MOV A, H 014016323 OUT, 001Q 014017 001 014020175 MOV A, L 014021323 OUT, OOOQ 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 014063 117 014064 146 014 065 155 014 066 175 014 067 007 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. Рассмотренная схема индикации весьма универсальна и обладает гЪраздо более широкими возможностями для обеспечения диалогового режима работы ПМ-ЭВМ по сравнению с простой двоичной индикацией. ВНЕШНЯЯ ПАМЯТЬ
Постепенно осваивая методы программирования и приемы работы на ПМ-ЭВМ, читатель рано или поздно столкнется с необходимостью, во-первых, увеличения объема памяти для размещения все более длинных программ и, во-вторых, сохранения уже отработанных программ в памяти при многократном включении и выключении питания. Поскольку ПМ-ЭВМ построена в соответствии со стандартной архитектурой вычислительных систем на базе МП типа КР580ИК80А, ее прямо адресуемая память может быть легко расширена до максимального объема 64 Кбайта. Непосредственно на плате ПМ-ЭВМ могут быть дополнительно установлены микросхемы памяти на 2 Кбайта. При этом не потребуется никакого дополнительного оборудования, так как для выдачи сигналов выборки микросхем ОЗУ используются ранее не задействованные выводы дешифратора К155ИД4 (микросхема D11). Память большего объема потребует для своего размещения дополнительной платы, на которой должны быть установлены свои адресные дешифраторы и другие микросхемы (кроме микросхем памяти), обеспечивающие нормальную работу устройства. В этом случае на плате ПМ-ЭВМ необходимо установить шинные буферы-формирователи для умощнения шин адреса и данных (например, на микросхемах типа К589АП16), причем буферы шины данных должны быть двунаправленными. Аналогично внутреннему буферу шины данных (микросхемы D9 и D10) для управления направлением передачи данных используется буферированный сигнал DBIN. Для формирования энергонезависимой части памяти могут быть применены микросхемы ПЗУ с однократной записью информации, например типа КР556РТ4, которые уже использованы в ПМ-ЭВМ для хранения программы-монитора. Более удобными могут оказаться микросхемы ППЗУ с электрической записью и ультрафиолетовым стиранием типов К573РФ1, К573РФ2, К573РФ4, К573РФ5. Наконец, могут быть использованы микросхемы ППЗУ с электрической записью и стиранием информации, например типов КР558РР1 и КР558РР11. Для сохранения информации могут быть использованы внешние носители, такие, например, как перфолента или магнитная лента. В этом случае поступают следующим образом: с помощью специальной программы вывода содержащуюся в ОЗУ информацию передают побайтно (параллельный вывод) или побитно (последовательный вывод) через устройство вывода на перфоратор или на магнитофон. Записанная на внешнем носителе информация может храниться неограниченно долго. При необходимости восстановить в ОЗУ ранее выведенную информацию она считывается с помощью перфосчитывающего устройства или магнитофона и вводится через устройство ввода в ОЗУ микро-ЭВМ под управлением программы ввода. Подчеркнем, что информация (данные, программы), считываемая из внешнего накопителя, обычно не используется непосредственно при исполнении рабочей программы, а сначала помещается в виде одного или нескольких массивов в ОЗУ, а затем уже используется в работе.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|