Меню
Главная
Прикосновение космоса
Человек в космосе
Познаем вселенную
Космонавт
Из авиации в ракеты
Луноход
Первые полеты в космос
Баллистические ракеты
Тепло в космосе
Аэродром
Полёт человека
Ракеты
Кандидаты наса
Космическое будущее
Разработка двигателей
Сатурн-аполлон
Год вне земли
Старт
Подготовки космонавтов
Первые полеты в космос
Психология
Оборудование
Модель ракеты
|
Космонавтика Архитектура 3-х шинных систем Начало Управление устройством ввода с пульта Функция Рис. 9.6. Аналогичен рис. 4.17. Показывает десятичный вес каждого переключателя матрицы пульта размерностью 5X5. Рис. 9.5. Блок-схема, демонстрирующая реализацию функции ввода клю-~ ча с клавишного пульта. Данная последовательность действий повторяется каждый раз при выполнении программы рис. 9.4 Вес ключа, вычисляемый подпрограммой ввода ключе
--------....V о, Рис. 9.7. Функции ключей (левая колонка) и их веса (правая колонка). Проектирование управляющего программного обеспечения нажатии на пульте ключа В в KWGT записывается двоичное число 1011, представляющее значение десятичного 11 (Bie). Таким образом, прн программной реализации процедуры нет необходимости вычислять двоичное значение ключа данных, поскольку это значение автоматически записывается в ячейку. О О О О О Сброс о о о о о о о о о о F Ввод Стирание Установка Стирание ОЗУ ввода адреса - О Ор Програм- Верифи- Копиро-мироваиие кация ванне Не используется Рис. 9.8. Пространственное расположение клавиатуры с пометкой функций ключей. Ключ сброса ие является частью матрицы пульта. Этот ключ играет особую роль и используется просто для сброса системы. В соответствии с определением ключей, приведенным на рис. 9.7, физическая реализация клавишного пульта будет со ответствовать представленной на рис. 9.8. Здесь ключ сброса не входит в матрицу ключей. Этот ключ играет особую роль, осуществляя немедленный сброс системы вне зависимости от выполняемой ею функции. На рис. 9.4 были приведены программные средства микропроцессора 8085, необходимые для реализации функции подпрограммы KEYIN. Эти средства подробно рассматривались в гл. 4, так что любые неясности рис. 9.4 можно устранить, используя материалы этой главы, 9.4. Главная управляющая лрограмма Обратимся теперь к особенностям построения главной управляющей программы. Эта программа управляет работой системы на основе значения введенного ключа. После реализации каждой частной функции системы управление возвращается в главную управляющую программу. На рис. 9.3 была показана укрупненная блок-схема этой основной операционной программы. На рис, 9.9 представлена более подробная блок-схема этой программы. Видно, что одним из первых действий главной управляющей программы является вызов подпрограммы ввода ключа - шаг 1а. Вспомним, что система выполняет эту подпрограмму до тех пор, пока не будет введено требуемое значение ключа. После выхода из подпрограммы ввода ключа производится проверка значения ключа, записанного в ячейке KWGT. Если это значение соответствует допустимой функции, осуществляется переход к шагу 5. Система ожидает ввода функционального ключа, а после осуществления этой операции ей безразлично конкретное значение ключа. По значениям функциональных ключей видно, что любое число в ячейке KWGT, большее чем 15, определяет допустимую функцию. Поэтому на шаге 2 блок-схемы рис. 9.9 осуществляется проверка логического условия, является ли число в ячейке KWGT больше 15. Если же число в KWGT не больше 15, на табло высвечивается системная ошибка. Этой частной ошибке приписан номер 1, так что на табло заносится число EOOOOlie. Это чрусло, определяющее факт ввода недопустимого ключа (ошибки), высвечивается до тех пор, пока не будет нажат ключ сброса. Поскольку в процессе написания программного обеспечения генерируются коды других ошибок, необходимо привести и. включить в документацию список кодов ошибок и Их смысловые значения. На шаге 5 рис. 9.9 вычисляется адрес программного модуля, который осуществляет управление системой при реализации заданной функции. Вычисление адреса производится следующим образом. Прежде всего подготовим таблицу операторов перехода, содержащую обращение к меткам системы, как это показано на рис. 9.10. Адрес, определяемый на основе числа, записанного в ячейку KWGT, указывает на один из операторов перехода, приведенных на рис. 9.10; этот оператор позволяет осуществить передачу управления в ячейку, с которой начинается частный модуль программного обеспечения, соответствующий введенному ключу. Оператор перехода рис. 9.10, выбираемый для выполнения, соотносится конкретному значению числа в KWGT. Например, если в эту ячейку записано число 16io, то будет выполнен оператор JMP ENTER; в случае числа 17io -оператор JMP CENTY. Отметим, что каждый раз при увеличении на единицу числа в KWQT, получаемого в результате выполнения подпрограммы KEYIN, осуществляется выбор следующего по порядку оператора перехода на рис. 9.10. Вычисление адреса Установка на табло кода ошибки Е00001 , Переход по адресу Рис. 9.9. Блок-схема главной управляющей программы системы. Таблица
Рис. 9.10. Таблица операторов перехода, указывающих модули программы, реализующие отмеченные функции. Поэтому Требуемый оператор JMP относительно первого оператора может быть вычислен следующим образом JMP относительно JMP ENTER = KWGT-16io. Для иллюстрации этой формулы положим, что в ячейке KWGT записано число 19io, сформированное подпрограммой KEYIN, что сооответствует ключу СТИРАНИЕ ОЗУ. По приведенной формуле вычисляется следующий оператор перехода: JMP относительно JMP ENTER=KWGT-16=19-16=3. Таким образом, выполняется третий по порядку (от JMP ENTER) оператор перехода. Выполнение этого оператора при- УСТАНОВИТЬ НАЧАЛО ТАБЛИЩ
Рис. 9.11. Таблица операторов перехода рис. 9.10 после трансляции. Начало таблицы соответствует адресу 0100 (шестиадцатеричному). Каждый оператор перехода занимает 3 байта памяти. ведет к реализации последовательности команд, управляющей стиранием ОЗУ. Однако проведенное рассмотрение не раскрывает полной картины. Если осуществить трансляцию программы, то модуль рис. 9.10 представится в виде, показанном на рис. 9.11, где указаны абсолютные адреса каждого оператора перехода в таблице. Теперь использование указанных взаимосвязей так, как они приведены, порождает следующий порядок действий. Предположим, что адрес первого оператора перехода в таблице принят в качестве базового. Тогда указатель нового адреса (NEWA) в таблице вычисляется как функция базового адреса и некоторой переменной Vi. В соответствии с рассмотренным выще соотношением имеем NEWA=Базовый aflpec+(KWGT- -16), что вызывает определенное беспокойство, поскольку принятый базовый адрес, как показано на рис. 9.11, есть MOOie. Как и прежде, KWGT=19, и требуется определить адрес NEWA, соответствующий оператору JMP CLRAM. В соответст- Начало J
Рис. 9.12. Блок-схема вычисления точ-иого адреса входа в таблицу операторов переходов. NEWA-NEWA + TEMP Переход к NEWA 7 0000 8 0000 ЗА 00 9 0003 D6 10 10 0005 47 11 0006 12 0006 13 0006 87 1 4 0007 80 15 0008 16 0008 17 0008 01 00 18 ОООВ 4Р 19 ОООС 21 00 20 ООО? 21 OOOF 22 0O0F 09 23 0010 24 0010 25 0010 26 0011 27 ООП 28-0011 29 colt 30 0100 31 0100 32 0100 33 0100 03 33 34 0103 сз 34 35 0106 СЗ 35 36 0109 СЗ 36 37 ОЮС сз 37 38 OloF СЗ .38 39 0112 СЗ 39 40 0115 03 ЗА 41 0118 СЗ ЗВ 42 011Н ♦3 01 m ORG 00 LDA KWGHT SUI 16 MOV B,A ♦ * 00 01 ADD ADD LXI MOV LXI B,00 C,A Н,ТАВЬЕ ♦ DAD В PCHL АККУМУЛЯТОР=КЖ(ЗНТ AKKУMУЛЯK>P=KWGHT-1 б ЗАПОМНИТЬ В РЕГИСТРЕ В АККУМУЛЯТОР*2 АККУМУЛЯТОР ? ОБНУЛЕНИЕ РЕГИСТРОВ В,0 ЗАПОМНИТЬ В РЕГИСТРЕ С . ЗАГРУЗИТЬ ВАЗОНЫИ АДРЕС ТШИЩ ЮйаЙАДР.=БАЗ.АДР.+С0ДЕРХИШВ РВГ. В ПЕРЕХОД ПО АДРЕСУ 1ДВЛ№ она 01 ООН устАшвить начало 5Шда НАЧАЛО ТАБЛИда; 01? ТАВЬЕ JMP ENTER OP JMP cEwre OP JMP ADDSE OF JMF CLBAIC OF JMP РЮО OP JMP VEY - OF JMP COPX OF JMP NA1 JMP UAZ **** КОВЩ ХШИЦР * * Рис. 9.13. Реализация блок-схемы рис. 9.12 в кодах символического языка микропроцессора 8080.
|