Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА№19.doc
Скачиваний:
13
Добавлен:
18.03.2015
Размер:
1.1 Mб
Скачать

Прерывания

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

Аналогичные события могут произойти и в микропроцессорной системе. Например, рассмотрим вольтметр со встроенным МП, который иметр на передней панели кнопку калибровки. Когда нажимается эта кнопка, работа МП прерывается и МП переходит к подпрограмме калибровки. После выполнения калибровки управление возвращается к основной программе , которая была прервана. Эти действия называются прерываниями. Кристалл МП имеет вход, который при­нимает прерывания. Сигнал высокого уровня на этом входе вызывает переход процессора к специальной под­программе прерывания. Эта подпрограмма выполняет задачу, требуемую прерывающим устройством. Команда, стоящая в конце подпрограммы прерывания, возвращает МП к прерванной программе.

Иногда нужно, чтобы МП не реагировал на прерывание. Поэтому пре­рывание может быть запрещено программой. Существуют две команды: ЕI - разрешить прерывание, DI -запретить прерывание.

МП КР580ИК80 реагирует на прерывание следующим образом. Не увеличивая содержимого счетчика адреса, он принимает информацию с шины данных, и в зависимости от кода, установленного на шине данных, начинает выполнять программу с определенного адреса в соответствии с табл.4.

Таблица 4 Таблица прерываний

Номер прерывания

Код на шине данных

Адрес, с кото рого начинает ся программа обработки прерывания

RST0

С7

0000

RST 1

СF

0008

RST 2

D7

0010

RST З

DF

0018

RST 4

Е7

0020

RST 5

ЕF

0028

RST 6

F7

0030

RST 7

FF

0038

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

В "Микролаб" прерывание используется для организации шагового режима. Подробнее это будет описано в последующих разделах.

Подпрограммы и стек

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

Для обращения к подпрограмме применяется команда CALL. Во время ее выполнения МП посылает содержимое программного счетчика /адрес

возврата/ в СТЕК - специально выбранную часть памяти. МП вернется к адресу возврата, когда выполнится команда RET в конце подпрограммы. После RET программа переходит к команде, непосредственно следующей за CALL.

Адрес возврата можно хранить в 16-разрядном регистре. Но в этом случае, если одна подпрограмма использует другую подпрограмму /вложение подпрограмм/, первый адрес возврата будет теряться.

Для решения этой проблемы и используется СТЕК. Когда одна программа вызывает другую, адреса возврата запоминаются в последовательных ячейках памяти. Рис. б. показывает последовательность действий, когда программа А вызывает программу В, которая вызывает программу С. Содержимое программного счетчика и СТЕКА в каждом шаге показано на рис.7. Последовательность следующая:

1 - выполняется программа А;

2 - программа А обращается к подпрограмме В. Адрес возврата запоминается в СТЕКЕ, а программный счетчик загружается стартовым адресом программы В;

3 - программа В обращается к программе С. Адрес возврата для программы В помещается в СТЕК, а в программный счетчик загружается стартовый адрес программы С;

4 - возврат из программы С. Последняя строка СТЕКА загружается в программный счетчик, и управление возвращается к программе В;"

5 - возврат из программы В к программе А. МП КР580ИК80 использует ОЗУ в качестве СТЕКА, емкость которого неограничена. Специальный регистр процессора - указатель СТЕКА /SP/ содержит адрес вершины СТЕКА. Область СТЕКА в ОЗУ определяется при занесении в указатель СТЕКА нужного адреса.

Рис.6. Вложение программы

Монитор микролаборатории при включении питания и после нажатия кнопки СБРОС заносит в указатель СТЕКА число 83С7. Это позволяет применять СТЕК без предварительной установки указателя СТЕКА. Для программы возможна самостоятельная установка указателя СТЕКА, если это требуется. Однако, когда вы в следующий раз нажмете СБРОС, монитор установит содержимое указателя СТЕКА в 83С7.

Можно проверить указатель СТЕКА так же, как и регистры МП. Указатель СТЕКА находится в ячейке 83ЕЗ /старший байт/ и 83Е2 /младший байт/.

Команды PUSH и POP

Команды CALL и RET оперируют указателем СТЕКА автоматически. Существуют команды, позволяющие использовать СТЕК по вашему желанию. Команда PUSH засылает данные пары регистров в СТЕК, а команда POP считывает данные назад в регистры. Например, PUSH В проталкивает в СТЕК данные регистра В, а затем регистра С. Команда POP В возвращает оба эти регистра с вершины СТЕКА.

Эти команды совместно применяются для временного хранения содержимого регистров. Допустим, что программа использует В и С регистры для запоминания каких-то данных. Она вызывает подпрограмму, которая также использует эти регистры. Подпрограмма может сохранить первоначальное содержимое этих регистров /как предустановку при вызове подпрограммы/ при использовании PUSH В. Затем, перед окончанием подпрограммы команда POP В используется для возвращения регистрам В и С их первоначальных значений. Запоминание содержимого этих регистров может осуществить и главная программа, если перед CALL выполнить команду PUSH В, а после CALL - POP В.

.МЕТОДЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

СИСТЕМА РАЗРАБОТКИ

При написании программ с использованием "Микролаб" нужно вручную переводить язык Ассемблер на машинный язык. Затем машинный код с клавиатуры вводится в "Микролаб". Эта система подходит для написания коротких программ, но она слишком трудоемка для больших программ.

Большая часть программного обеспечения МП написана с использованием системы разработки, т.е. специально предназначенной для этого микро-ЭВМ. В типичную систему входит ОЗУ емкостью 32-64К байт, дисководы гибких дисков с двойной плотностью записи для хранения программ, терминал ЭЛТ с клавиатурой и печатающее устройство. Программное обеспечение системы разработки включает редактор для ввода и редактирования программ на языке Ассемблер, Ассемблер для перевода на машинный язык и монитор или отладчик для установки точек прерывания, проверки регистров и т.д. Такая система значительно облегчает процесс разработки.

Для облегчения отладки программного обеспечения многие системы разработки включают внутрисхемный эмулятор /ICE/. МП вынимается из испытуемой системы, а на его место вставляется кабель из системы разработки с 40-выводным разъемом на конце. Внутрисхемный эмулятор - одно из наиболее сложных отладочных устройств

ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

При разработке сложных программ необходимо придерживаться следующей последовательности:

определить задачу;

принять решение - разделить на функциональные блоки;

составить алгоритм программы;

написать программу;

испытать и отладить каждую'команду;

испытать и отладить полную программу.

Первый шаг очевиден. До того, как принять решение, необходимо понять задачу. Нужно составить набор характеристик программы: определить, что является входными параметрами, как их нужно обработать, что является выходом.

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

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

После определения задачи, выбора метода и разделения программы на модули можно приступить к составлению алгоритмов. Обычно составляется обгдий алгоритм, в котором каждый модуль программы изображается в виде квадрата. Составляются алгоритмы и для каждого модуля.

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

После составления программы ее необходимо проверить. Модульность программы облегчает проверку. Каждый модуль может быть проверен отдельно. Когда все модули проверены, можно соединить их вместе и проверять всю программу.

Пример разработки программного обеспечения

Рассмотрим описание программы контроллера "бегущие огни".

Индикаторы выходного порта /светодиоды/ используются как имитаторы "бегущих огней". Контроллер должен регулировать следующую последовательность чередования горения светодиодов:

1. Горят светодиоды 1, 4, 7; остальные погашены.

2. Время горения установленных светодиодов.

3. Горят светодиоды 2, 5, 8; остальные погашены.

4. Время горения установленных светодиодов.

5. Горят светодиоды 3, 6; остальные погашены.

6. Время горения установленных светодиодов.

7. Повторение процесса /переход к шагу 1/.

На рис.1, приведен алгоритм работы контроллера.

Выходные индикаторы /светодиоды YDI...YD8/ подключаются к шине данных с помощью программируемого интерфейса.

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

VD1 VD2 VD3 VD4 VD5 VD6 VD7 VD8

КОД

1 0 0 1 0 0 1 0

0 1 0 0 1 0 0 1

0 0 1 0 0 1 0 0

92 16

49 16

24 16

Рис.1. Алгоритм программы последовательности горения светодиодов