ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
АППАРАТНОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРОСТЫХ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
Методические указания
к курсовой работе по разделу
«Электроника и микропроцессорная техника»
Ростов-на-Дону 2006 г.
1. Цель работы
Приобретение практических навыков структурных блок-схем и листингов программ на языке «Ассемблер» для простых микропроцессорных систем (МП-систем) управления различными процессами.
2. Типовые структуры блок-схем алгоритмов обработки данных
Для успешного выполнения заданий курсовой работы студентам необходимо ознакомиться с набором команд процессора КР580 /1/, а также с требованиями, предъявляемыми к составлению программ на языке «Ассемблер» /2/, /3/, /4/, предназначенных для микропроцессорных систем автоматического управления различными измерительными и технологическими процессами.
Набор команд микропроцессора является основой для разработки структурной схемы машинных команд. За этой схемой следует только написание и кодирование программы. Поэтому структурная схема должна быть настолько детальной, чтобы каждый блок мог быть представлен не более, чем тремя командами.
Любая структурная схема может быть построена путем комбинации нескольких базовых блоков: функциональных (последовательных), цикла (повторения), разветвления (альтернативного решения).
На рис. 1 представлены типовые блоки структурных схем алгоритмов, которые широко используются в программах обработки данных.
Последовательная структура – самая распространенная (рис. 1, а); она означает, что действия должны быть выполнены друг за другом. Показанная на рис. 1, б структура ЕСЛИ–ТО–ИНАЧЕ применяется в тех случаях, когда необходимо реализовать программный переход к одной из двух вычислительных процедур в зависимости от выполнения некоторого проверяемого условия. Структура ЕСЛИ–ТО (рис. 1, в) является упрощение предыдущей и используется в случаях, когда необходимо реализовать одну вычислительную процедуру в зависимости от проверяемого условия. Структура ДЕЛАЙ–ПОКА используется для проверки условия окончания цикла (рис. 1, г). Структура ПОВТОРЯЙ–ДО–ТОГО–КАК (рис. 1, д) аналогична предыдущей, но порядок следования операторов здесь иной: процедура выполняется до проверки условия. Структура ПРОЦЕСС–ПОКА (рис. 1, е) представляет собой объединение двух предыдущих структур. И, наконец, на рис. 1, ж представлена структура ДЕЛАЙ–В–ЗАВИСИМОСТИ–ОТ, с помощью которой осуществляется выбор действия при многозначных решениях и которая используется для замены цепочек структур ЕСЛИ–ТО–ИНАЧЕ.
Все перечисленные блоки в различных комбинациях встречаются в алгоритмах выполнения программ обработки данных.
3. Программная реализация типовых функций управления
При проектировании МП-систем управления различными измерительными или технологическими процессами возникает необходимость программирования таких типовых процедур управления, как
– опрос состояния двоичного датчика;
– ожидание события;
– сканирование группы позиционных датчиков;
– формирование временных задержек;
– отыскание минимального или максимального значения вводимого массива параметров;
– операции сортировки и т.п.
Ниже приводятся некоторые способы программного обеспечения типовых функций управления процессами применительно к МП КР580ВМ80.
На рис. 2. показана схема подключения контакта двоичного датчика к входному порту МП-системы. Если контакт S разомкнут, то на входе D5 порта ввода присутствует сигнал логической единицы; если контакт S замкнут, то на D5 – логический нуль. Необходимо в некоторой части правляющей программы МП-системы оросить значение сигнала на вход D5 порта 04 и в зависимости от его значения (0 или 1) передать управление фрагменту программы с меткой, например, LABELA (если D5=0) или по адресу, отмеченному меткой LABEL В (если D5=1).
Рис. 2. Схема опроса двоичного кода
На рис. 3, а приведена блок-схема, а на рис. 3, б программа «INPKEY» (ввод ключа), реализующая процедуру опроса двоичного датчика. Символическое имя программы «INPKEY» используется в качестве метки начальной команды этой программы. При программировании с использованием подпрограмм можно обращаться к этой подпрограмме опроса двоичного датчика по команде: CALL, адрес INPKEY.
Рис. 3. Блок-схема и листинг программы опроса двоичного датчика
Контроллеры технологических объектов работают в реальном масштабе времени, и, следовательно, их работа определяется событиями, происходящими в объекте управления. Чаще всего события в объекте управления фиксируются с использованием двоичных датчиков; например, путём замыкания или размыкания нулевого переключателя при перемещении исполнительного органа объекта управления.
Если требуется по ходу выполнения управляющей программы приостановить выполнение её команд до тех пор, пока в результате процессов, происходящих в объекте управления, не замкнётся контакт S датчика перемещения, то можно использовать подпрограмму с символическим именем «NUNT» (засада), блок-схема которой приведена на рис. 4, б.
Рис. 4. Схема подключения контакта двоичного датчика к порту ввода МП-системы (а) и блок-схема алгоритма ожидания события
Основная программа МП-системы многократно по команде CALL, адрес NUNT, может вызвать эту подпрограмму. Из блок-схемы алгоритма видно, что программа должна постоянно опрашивать значение сигнала на входе D2 порта 07 до тех пор, пока оно не станет равным нулю (контакт датчика разомкнут), и в этом случае продолжить выполнение основной программы МП-системы. Если переход к циклу ожидания события из основной программы осуществляется по команде CALL, адрес NUNT, то возврат в неё из процедуры NUNT выполняется по команде RET, стоящей в конце подпрограммы.
Аналогичным образом с использованием различных кодов маски в команде ANI можно осуществлять отслеживание множества событий, фиксируемых различными двоичными датчиками, присоединенными к другим входам порта ввода информации.
На рис. 5. показана схема подключения МП-системы к некоторому исполнительному механизму объекта управления через порт вывода информации.
Рис. 5. Схема формирования управляющего сигнала
Предположим, что данный исполнительный механизм работает по принципу «включить–выключить», т.е. может управляться двоичным выходным сигналом МП-системы («1» – включить, «0» – выключить).
Подпрограмма формирования такого управляющего воздействия проста и состоит всего из двух команд. Для включения исполнительного механизма используется подпрограмма «ON»:
ON: MVIA, 02; загрузить в аккумулятор код 000.0010
OUT, 03; выдать управляющий байт в порт 03.
Для выключения исполнительного механизма можно использовать подпрограмму «OFF»:
OFF: XRAA; обнулить аккумулятор
OUT, 03; выдать байт 0000 0000 в порт 03.
(вывести содержимое аккумулятора байт 0000 0000 в порт 03).
В том случае, если к остальным семи выводам выходного порта 03 подсоединяются другие исполнительные механизмы, формируется не двоичное управляющее воздействие, а байт управляющего слова, где каждому разряду ставится в соответствие 0 или 1 в зависимости от того, какие механизмы должны быть выключены или включены.
Программная реализация временной задержки использует метод программных циклов, при котором в какой-либо регистр блока регистров общего назначения (РОН) микропроцессора загружается число, которое при каждом проходе цикла уменьшается на единицу. Так продолжается до тех пор, содержимое регистра-счетчика не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в регистр-счетчик, и временем выполнения команд, образующих цикл. Схема алгоритма такой программы показана на рис. 6.
Рис. 6. Блок-схема временной задержки
Программа имеет символическое название «TIME» и, в случае вызова её основной программой по команде CALL, адрес TIME, должна завершаться командой возврата RET.
Предположим, что в МП-системе, использующей тактовую частоту 2 МГц (такт в этом случае составляет 0,5 мкс), необходимо реализовать временную задержку длительностью 250 мкс. Фрагмент программ, реализующей временную задержку, необходимо оформлять в виде подпрограммы, так как предполагается, что основная программа будет обращаться к ней многократно.
Текст программы, отображающей структуру алгоритма, показанного на рис. 6, следующий:
TIME: MVIB, X; загрузка регистра В числом Х
COUNT: DCRB; уменьшение на 1 содержимого
регистра В JNZ, адрес COUNT; повторить цикл, если В≠0
RET; возврат в основную программу, если В=0.
Для получения требуемой временной задержки необходимо определить значение числа Х, загружаемого в регистр В. Определение числа Х выполняется на основе времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MVIB, X и RET выполняются однократно, а число повторений команд DCRB и JNZ, адрес COUNT равно числу Х, загружаемому в регистр В. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL, адрес TIME, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд МП КР580ИК80 указывается, за сколько тактов основной частоты синхронизации исполняется каждая команда МП. На основе этих данных можно записать: