Космонавтика  Архитектура 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

ПРОЕКТИРОВАНИЕ ПРОГРЛААМНОГО ОБЕСПЕЧЕНИЯ ДЛЯ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРНОЙ СИСТЕМОЙ

В настоящей главе будет рассмотрено программное обеспечение, иeoбxoдиIoe для управления техническими средствами системы, опнсаииыми в гл. 8. Каждая функция программного обеспечения будет проиллюстрирована блок-схемой. Для микропроцессоров 6800 и 8085 соответствующие блок-схемы раскрываются до уровня объектного кода. Для каждого микропроцессора приводятся полные распечатки программ.

После изучения предлагаемого материала читатель сможет самостоятельно разрабатывать программы управления микропроцессорной системой. Целью проводимого обсуждения является разбор конкретных решений по разработке программ путем установления взаимосвязи между окончательной реализацией программы и выполняемыми машиибй функциями.

9.1.

Начальный этап

Прежде чем мы сможем писать какие-либо программы, необходимо выяснить некоторые предварительные вопросы. Прежде всего необходимо выяснить, как программное обеспечение системы будет размещено; далее следует выяснить, как инициализируются технические средства или как они устанавливаются в начальное состояние при включении питания. Рассмотрим эти вопросы более подробно.

Структура размещения программного обеспечения представляет собой отображение всего адресного пространства и соответствующих функций каждого блока адресного пространства системы. Это первый уровень структуры размещения программного обеспечения. Размещение для системы, описанной в гл. 8, приведено иа рис. 9,1. Как видно, рис, 9,1 дает точную картину адресов памяти и устройств ввода-вывода, используемых микропроцессором при установлении электрического соединения со всеми техническими средствами системы. При написании управляющих программ действует предположение, что технические средства работают правильно, так что любая ошибка в выполнении программы является собственной ошибкой программы, а ие вызвана неисправностью оборудования.

Про >ктиаовдние упргнмяющего программного обаспечення 237

т написании программ обычно не знают, как физически выглядят технические средства, особенности их фуикциониро-ваиия учитываются на уровне адресов й двоичных разрядов. Имея эту информацию, можно правильно писать программы управления техническими средствами, ие вникая в детали устройства последних.

Справедливым является и противоположный подход. При проектировании технических средств совсем ие обязательно знать детали программного обеспечения. Можно так разрабо-

000-03FF ПЗУо в этих блоках ПЗУ все управ-

0400-07FF ПЗУ, ляющие программы

0800-OBFF ПЗУ2 Пока ие используются, предиа-ОСОО-OFFF ПЗУз значены для расширения си-

СТбМЫ

1000-13FF ОЗУ, Системное ОЗУ

1400-17FF ОЗУ2 Память для 2708

1800-1BFF ОЗУз Не используется

Ввод-вывод

Fo. F F2 Индикатор

FE Клавишный пульт

30, 31, 32,33, 34, 35 Программная панель

Рис. 9.1. Распределение памяти системы, описанной в гл. 8.

тать технические средства, что микропроцессор будет осуществлять надежное взаимодействие со всеми элементами технических средств системы, ие прибегая к помощи программного обеспечения. Если в оборудовании правильйо выполнены соответствующие , коммуникационные связи, программы будут использовать эти связи для реализации заданных функций.

Если же разработчик хорошо знает как программное обеспечение, так и техничеркие средства, то результатом этого явится более простая и изящная структура системы в целом. Специалист по техническим средствам, например, может спроектировать систему, ориентируясь на особенности программного обеспечения коикреТиого микропроцессора. Систему можно также создавать и таким образом, чтобы специфические особенности программных средств конкретного микропроцессора ие оказывали существенного влияния. С другой стороны, если программист зиает технические средства, он может создавать такие программы, которые наиболее полно используют их возможности. Если же в разработке системы участвуют два специалиста, то наилучшие результаты достигаются тогда, когда программист и разработчик аппаратуры тесно взаимодействуют друг с другом. В этом случае каждый из них будет знать намерения другого. Это часто позволяет достичь знаадтльной экономии усилий путем рационального распределения функций между техническими средствами и программным обеспечетнец.



Глава 9

что невозможно при отсутствии подобного сотрудничествД разработчиков.

В идеальном случае разработчик технических средств либо программного обеспечения микропроцессорных систем должей знать обе эти области настолько, чтобы суметь оценить возникающие проблемы и установить эффективное взаимодействие между техническими и программными средствами.

В технике существует отчетливая граница между техническими средствами и программным обеспечением. В ряде ситуаций соблюдение этой границы является необходимым при разработке систем. Однако для проектировщиков систем на базе микропроцессоров, как инженеров, так и техников, знание технических средств и программного обеспечения одновременно является чрезвычайно ценным.

Возвращаясь к распределению памяти рассматриваемой системы, показанному на рис. 9.1, можно заметить отсутствие некоторых деталей, относящихся к разрядам данных DO-D7, с помощью которых осуществляется управление техническими средствами. В случае ОЗУ и ПЗУ системы это видно непосредственно. Так, выходы Oi-Ое ПЗУ 2708 соединяются соответственно с D0D7. Аналогичное справедливо и для ОЗУ системы. Не имеет значения, какие разряды данных ОЗУ поступают на конкретные линии шины данных системы, поскольку при записи данных в ОЗУ и при их считывании из ОЗУ сохраняется соответствие между разрядами данных и линиями шины данных. Это означает, что в случае ОЗУ и ПЗУ конкретная привязка разрядов данных к линиям шины безразлична. Однако этот вопрос становится важным при работе с устройствами ввода-вывода.

Рассмотрим, например, случай, когда микропроцессор соединен с устройством отображения. Б этой ситуации программисту необходимо точно знать соответствие разрядов данных входам устройства, чтобы осуществлять выдачу на табло конкретных цифр. Подобная информация обеспечивается техническими средствами системы. На рис. 9.2 показано конкретное назначение разрядов данных для каждого устройства ввода-вывода системы, что снимает неопределенность, допущенную в предыдущем разделе.

Из рис. 9.2 видно, что для каждого порта ввода и вывода определена точная функция каждого разряда данных. СЬдер жимое разрядов, не описанных для конкретного устройства ввода-вывода, не используется и может быть произвольным. В документации на систему информация, приведенная на рис. 9.2, может быть представлена самым различным образом. Однако несмотря на форму представления, наличие этой специфическое информации необходимо до начала разработки программного обеспечения.

АДРЕСНОЕ ПРОСТРАНСТВО \

FE (bubV)

FE (ввод)

Р (вывод)

Fi (вывод)

Ро (вывод)

30 (вывод)

31 (ввод)

32 (вывод)

33 (вывод)

34 (вывод)

35 (вывод)

Разряды данных

Do D, Da D3

Ds, De, D,

Do D, Dj Ds D4

Ds, De, D7 D, De Ds D. D3 D2 D, Do D7 De Ds D4 D3 D2 D, Do

D7 De Ds-D4 D3 D2 D, Do

Do-D7

D0-D7

Do= 1 Do = 0 D,-D7

D0-D7

Do, D, Dj-Dr

D, = 1

Do = 0 ,D= 1 D, =0 D2-D7

функционального

Функция

Ro .

He используется Co

C2 Сз С.

He используется MSD (8-й разряд) MSD (4-й разряд) MSD (2-й разряд) MSD (1-й разряд) (MSD -1) (8-й разряд) (MSD-1) (4-й разряд) (MSD -1) (2-й разряд) (MSD -1) (Ьй разряд)

) - 2) (4-й разряд) (2-й разряд) (1-й разряд) 8-й разряд) 4-й разряд)

(MSD- , (MSD-2) (MSD -2) (LSD -I- 2) (LSD + 2)

(LSD -Ь 2) (2-й раЕ(ряд (LSD -f- 2) (1-й разряд!

I LSD-Ь 1) (8-й разряд) (LSD-fl) (4-й разряд) (LSD4-1) (2-й разряд! (LSD-f 1) (1-й разряд. tSD (8-й разряд) LSD (4-й разряд) LSD Г2-Й разряд) LSD (1-й разряд)

Данные для програнмнрования

ППЗУ

Данные с выходов ППЗУ

Чтение данных нз ППЗУ Запись данных в ППЗУ Не используется

РАо-РА7, адрес ППЗУ

РА -РАв, адрес ППЗУ Не используется

CS/WE=-bl2 В CS=0,0 В

Импульс программирования.

= -Ь 26 В

Импульс програиыирюаняя 0,& В Рна 9.2. Таблица функционального назначения разрядов для всех портов ввода н вывода системы. Для некоторых портов отмечено наличие неиспользуемых разрядов.



Глава 9

Кроме того, прежде чем приступить к написанию программ, необходимо знать, в какое состояние устанавливаюя-Дкак инициализируются) конкретные устройства ввода-вывода при подаче питания в систему. Обычно указатель стека системы всегда необходимо устанавливать в начальное состояние. Кроме того, если в системе используются прерывания, то возникает необходимость в установлении масок прерываний и разрешения либо запрещения функции прерывания. После того как выполнены подобные общие действия по инициализации, следует обратиться к специальной информации, необходимой для инициализации остальных технических средств системы.

Для рассматриваемой системы в этой связи характерно следующее:

1. Импульс программирования - О В.

2. Напряжение CS/WE-О В.

3. Для порта управления 32ie DO=I. Это открывает передачу данных из ППЗУ в систему (см. рис. 9.2),

4. Устройство отображения системы устанавливается в F00000,

5. В системе не используются прерывания.

6. Указатель стека устанавливается OSFFie (в соответствии с распределением памяти, приведенным на рнс. 9.1).

Таковы основные действия по инициализации технических средств, необходимые для рассматриваемой системы. Возможно, потребуется инициализация программных средств, связанная с присвоением определенных значений некоторым переменным. Это станет ясно при написании программ. Теперь имеется вся информация, необходимая для того, чТобы приступить к программированию.

9.2. Общее представление о программном обеспечении

Прежде чем рассматривать частные вопросы написания программ, проанализируем общую структуру программного обеспечения системы. Поскольку система взаимодействует с клавишным пультом, то, прежде чем начать выполнение некоторой подпрограммы, она ждет ввода определенного ключа. Только после ввода ключа, основываясь на функции, задаваемой этим ключом, система выполняет определенную программу. По завершении программы снова наступает состояние ожидания ввода очередного ключа.

Чтрбы заставить пользователя вводить правильную информацию, система должна дать ему подсказку с помощью табло.- Именно с помощью такого интеллектуального использования клавишного пульта и табло и реализуются функции, перечисленные для системы, рассматриваемой в гл. 8.

\ Проектирование управляющего программного обеспачения 241

06ill,aH блок-схема программного обеспечения системы приведена йа рис. 9.3, который поясняет последовательность работ при написаиии программ.

Инициализация

техничечских

средств

Рис. 9.3. Укрупненная блок-схема функционирования системы, отражающая основные выполняемые операции. Содержание каждого блока подробно раскрываетси в главе.

Ввод функции ключа в программу

Выполнение

заданной

операции

Ввод другого ключа

9.3.

Программны ввода информации с клавишного пульта

Функционирование системы зависит от ее способности различать конкретный ключ из числа ключей, формирующих клавишный пульт устройства ввода. В гл. 4 была рассмотрена программная реализация этой функции. Рассмотрим еще раз подпрограмму ввода с клавишного пульта, приведенную в гл. 4. Эта подпрограмма для удобства еще раз повторена на рис. 9.4. Отметим, что значения переменных, установленные подпрограммой рис. 9.4, являются десятичными числами, определяюцщми вес ключа в матрице пульта. Функция подпрограммы может быть представлена в виде блок-схемы, приведенной на рис. 9,5.

Согласно рис. 9.5, выход из подпрограммы ввода ключа в основную программу не происходит до тех пор, пока не определен требуемый ключ и не записан его десятичный вес в ячейку памяти. На рис. 9.6 приведены десятичные веса для всех ключей матрицы пульта. Видно, что после выполнения подпрограммы ввода ключа в ячейку KWGT заносится целое число, принимающее значения от О до 24 включительно.

Напомним, что функции ключей матрицы пока еще не определены. Определим эти функции так, как показано на рис. 9.7. Отметим, что для всех ключей данных число в ячейке KWGT соответствует значению ключа. Это означает, что при



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