Космонавтика  Архитектура 3-х шинных систем 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [ 41 ] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Начало

Управление устройством ввода с пульта


Функция

Рис. 9.6. Аналогичен рис. 4.17. Показывает десятичный вес каждого переключателя матрицы пульта размерностью 5X5.

Рис. 9.5. Блок-схема, демонстрирующая реализацию функции ввода клю-~ ча с клавишного пульта. Данная последовательность действий повторяется каждый раз при выполнении программы рис. 9.4

Вес ключа, вычисляемый подпрограммой ввода ключе

Ключи

данных

Ввод

Стирание ввода

Установка адреса .

Стирание ОЗУ

Программирование

Верификация

копирование

Не используется

23,24

--------....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) оператор перехода. Выполнение этого оператора при-

УСТАНОВИТЬ НАЧАЛО ТАБЛИЩ

, 0000

8 0100

01 ООН

9 0100

10 0100

НАЧАЛО ТАВЛИЦН

и 0100

12 0100

33 OF

ENTER

13 0103

34 OF

CENTY

М OI06

35 OF

ADDSE

1 5 0109

36 OP

CLRAM

16 01 ОС

37 OF

PROG

17 01 OF

38 OF

18 0112

39 OF

COPY

19 0115

ЗА .OF

20 0118

3B OF

21 011В

22 011В

*

КОНЕЦ ТАВЛИЦЦ

23 011В

Рис. 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

TEMP=KV GT - 16,0

.TEMP = TEMP * 3

NEWA =

БАЗОВЫЙ АДРЕС

Рис. 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.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [ 41 ] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57