Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
173
Добавлен:
16.04.2015
Размер:
207.87 Кб
Скачать

5.7.4 Реализация подпрограмм обработки прерываний на языке asm51.

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

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

Пример подпрограммы обработки прерывания :

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

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

5.8 Структурное программирование на языке asm-51.

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

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

Для реализации методов структурного программирования огромное значение имеет использование "говорящих меток". Метка используется для обозначения переменных и констант, а также имён подпрограмм и программных модулей.

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

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

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

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

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

Третий структурный оператор - это оператор цикла с проверкой условия после тела цикла. Такой оператор легко реализуется на языке программирования ассемблер при помощи команды условного или безусловного перехода. Отличие от условного оператора заключается в том, что передача управления осуществляется не вперёд, а назад. На языке программирования ассемблер для реализации этого оператора можно воспользоваться любой условной операцией. Однако для реализации оператора цикла в системе команд микроконтроллера MCS-51 предусмотрена специальная команда, выполняющая сразу два алгоритмических действия - DJNZ.

Четвёртый структурный оператор - это оператор цикла с проверкой условия до тела цикла. В отличие от предыдущего оператора тело цикла в этом операторе может ни разу не выполниться, если условие цикла сразу же выполнено. Этот оператор как и условный оператор невозможно реализовать на одной машинной команде.

Соседние файлы в папке Пособие51GB