Аппаратное и программное обеспечение простых микропроцессорных систем
Типовые структуры блок-схем алгоритмов обработки данных на языке "Ассемблер" для простых микропроцессорных систем управления различными процессами. Реализация типовых функций управления, ее принципы и закономерности, правила графического оформления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 02.10.2010 |
Размер файла | 572,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
АППАРАТНОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРОСТЫХ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
Методические указания
к курсовой работе по разделу
«Электроника и микропроцессорная техника»
Ростов-на-Дону 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) передать управление фрагменту программы с меткой, например, LABEL A (если 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: MVI A, 02; загрузить в аккумулятор код 000.0010
OUT, 03; выдать управляющий байт в порт 03.
Для выключения исполнительного механизма можно использовать подпрограмму «OFF»:
OFF: XRA A; обнулить аккумулятор
OUT, 03; выдать байт 0000 0000 в порт 03.
(вывести содержимое аккумулятора байт 0000 0000 в порт 03).
В том случае, если к остальным семи выводам выходного порта 03 подсоединяются другие исполнительные механизмы, формируется не двоичное управляющее воздействие, а байт управляющего слова, где каждому разряду ставится в соответствие 0 или 1 в зависимости от того, какие механизмы должны быть выключены или включены.
Программная реализация временной задержки использует метод программных циклов, при котором в какой-либо регистр блока регистров общего назначения (РОН) микропроцессора загружается число, которое при каждом проходе цикла уменьшается на единицу. Так продолжается до тех пор, содержимое регистра-счетчика не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в регистр-счетчик, и временем выполнения команд, образующих цикл. Схема алгоритма такой программы показана на рис. 6.
Рис. 6. Блок-схема временной задержки
Программа имеет символическое название «TIME» и, в случае вызова её основной программой по команде CALL, адрес TIME, должна завершаться командой возврата RET.
Предположим, что в МП-системе, использующей тактовую частоту 2 МГц (такт в этом случае составляет 0,5 мкс), необходимо реализовать временную задержку длительностью 250 мкс. Фрагмент программ, реализующей временную задержку, необходимо оформлять в виде подпрограммы, так как предполагается, что основная программа будет обращаться к ней многократно.
Текст программы, отображающей структуру алгоритма, показанного на рис. 6, следующий:
TIME: MVI B, X; загрузка регистра В числом Х
COUNT: DCR B; уменьшение на 1 содержимого
регистра В JNZ, адрес COUNT; повторить цикл, если В?0
RET; возврат в основную программу, если В=0.
Для получения требуемой временной задержки необходимо определить значение числа Х, загружаемого в регистр В. Определение числа Х выполняется на основе времени выполнения команд, образующих данную подпрограмму. При этом необходимо учитывать, что команды MVI B, X и RET выполняются однократно, а число повторений команд DCR B и JNZ, адрес COUNT равно числу Х, загружаемому в регистр В. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL, адрес TIME, время исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд МП КР580ИК80 указывается, за сколько тактов основной частоты синхронизации исполняется каждая команда МП. На основе этих данных можно записать:
CALL, TIME - 17 тактов - 8,5 мкс;
MVI B, X - 7 тактов - 3,5 мкс;
DCR B - 5 тактов - 2,5 мкс;
JNZ, адрес COUNT - 10 тактов - 5,0 мкс;
RET - 10 тактов - 5,0 мкс.
Таким образом, однократно исполняемые команды (CALL, MVI, RET) в этой подпрограмме требуют 17 мкс (8,5+3,5+5,0). Следовательно, для получения требуемой задержки в 250 мкс необходимо команды DCR B и JNZ, COUNT столько раз, чтобы время их исполнения составило 233 мкс, т.е. (250-17). Однако время выполнения этой пары команд составляет (2,5+5,0). Поэтому, если принять Х=31, возможно получение временной задержки 232,5 мкс.
Если точность подпрограммной реализации временной задержки длительностью 250 мкс с погрешностью - 0,5 мкс удовлетворяет условиям задачи, то на этом разработка программы заканчивается.
Исходя из приведенного расчета, запишем текст подпрограммы TIME:
TIME: MVI B, 31 ; загрузка в регистр В числа 31
COUNT: DCR B; декремент регистра В
JNZ, адрес COUNT; цикл, если В?0
RET; возврат в основную программу.
В том случае, если точность представления временного интервала 250 мкс с погрешностью - 0,5 мкс не удовлетворяет разработчика, можно поступить двояко:
- реализовать подпрограмму точной задержки на 50 мкс и пятикратно повторить ее вызов;
- путем внесения в подпрограмму пустых операций NOP и соответствующего изменения набора команд (с целью устранения временного рассогласования 0,5 мкс) обеспечить точную временную выдержку.
Во многих случаях применения МП-систем требуется сформировать длительные временные задержки (секунды, минуты, часы и т.д.). Сделать это при частоте, равной 2МГц с использованием ранее описанного метода невозможно, так как максимальной емкости регистровой пары FFFF не хватит для того, чтобы представить число Х, достаточное для формирования задержки в 1 секунду. Сформировать столь большую для МП задержку можно с использованием метода вложенных циклов (как показано на рис. 7).
С целью получения задержки, равной 1 мин, основная управляющая программа может 60 раз осуществлять вызов подпрограммы ONESEC. Для этого число 60 загружается, например, в регистр В, который выполняет функции декрементного счетчика секунд, и после каждого прогона подпрограммы ONESEC его содержимое уменьшается на 1. Текст программы «ONESEC» приводится ниже.
ONESEC: MVI B, FF; счетчик внешних циклов
L1: MVI C, FB; счетчик внутренних циклов
L2: NOP; точная подгонка времени
внутреннего цикла
NOP;
NOP; время
NOP;
DCR C; декремент счетчика внутренних циклов
JNZ, адрес L2; возврат во внутренний цикл, если С?0
DCR В; декремент счетчика внешних циклов
JNZ, адрес L1; возврат во внешний цикл, если В?0
RET
Рис. 7. Алгоритм задержки на 1 секунду
Блок-схема типовой процедуры сбора и формирования в ОЗУ МП-системы массива данных от одного источника показана на рис. 8. Источником вводимых данных является порт ввода с символическим адресом NN, 8100 - начальный адрес массива данных, регистр С используется в качестве счетчика данных и регистровая пара HL используется командами с косвенно-регистровой адресацией в качестве указателя данных; ETX - знак-терминатор «конец массива».
Рис. 8. Типовая процедура сбора данных
Программа имеет вид:
LXI H, 8100; запись начального адреса
8100 > (H+L)
MVI C, C, 00; счетчик = 0
SAVE: IN, NN; ввод данных из порта в А
MOV M, A; перенос данных А > ячейку ОЗУ,
адрес которой в (H+L)
INX H; (H+L) = (H+L+1)
INR C; счетчик = счетчик+1
SUI, ETX; проверка терминатора
JNZ, адрес SAVE; продолжение сбора, если не 0
DONE
Если число слов данных известно и хранится в ячейке с адресом 81N0, то программа сбора данных будет иметь вид:
LXI H, 8100;
LDA, 81N0; пересылка содержимого 81N0 > (A)
MOV C, A; счетчик = длина массива: А > (С)
SAVE: IN, NN;
MOV M, A;
INX H;
DCR C; счетчик = счетчик-1
JNZ, адрес SAVE; продолжение сбора, если не 0
DONE
Рассмотрим несколько примеров обработки массива данных.
LDA COUNT; загрузка содержимого М 8200
(COUNT) > (A)
MOV B, A; загрузка счетчика: (В) < (А)
LXI H, 8100; запоминание в (H+L) адреса начала
массива данных
SUB A; сброс аккумулятора: (А) < 0
ADDN: ADD M ; прибавление элемента М+(А) > (A)
INX H; переход к следующему адресу
(H+L) < (H+L+1)
DCR B; декремент счетчика: (В) < (В-1)
JNZ, адрес ADDN; организация цикла, если не 0
DONE
LDA COUNT; загрузка содержимого
М (COUNT) > (A)
MOV B, A; организация счета в регистре В:
(В) < (А)
LXI H;
NEWMX: MOV A, M; загрузка нового максимума
NEXTE: DCR B; декремент счетчика: (В) < (В-1)
JNZ, адрес DONE; проверка окончания цикла: если 0,
то скачок на адрес метки DONE
INX H; (H+L) < (H+L+1)
CMP M; сравнение с максимумом
JС, адрес NEWMX;
JМР, адрес NEXTE;
DONE
Литература
1. Г.И. Пухальский. Программирование микропроцессорных систем. Учебное пособие для Вузов - М. Политехника, 2002.
2. В.С. Ямпольский. Основы автоматики и электронно-вычислительной техники. - М.: Просвещение, 1991.
3. Л.Н. Ананченко, И.Е. Рогов. Составление алгоритмов и программ на языке «Ассемблер» для управления технологическими процессами: Метод. указания - Ростов-на-Дону: ДГТУ, 1993 г.
4. Л.Н. Ананченко. Набор команд микропроцессора КР580ИК80: Метод. указания - Ростов-на-Дону, РИСХМ, 1991.
Подобные документы
Приобретение навыков структурных блок-схем и листингов программ на языке "Ассемблер" для простых микропроцессорных систем управления процессами. Типовые структуры блок-схем алгоритмов обработки данных. Программная реализация типовых функций управления.
методичка [1007,8 K], добавлен 01.10.2010Программная модель МП с регистр-аккумуляторной архитектурой. Особенности программирования в машинных кодах, мнемокодах и на языке ассемблера. Правила составления схем алгоритмов. Порядок ввода, редактирования, трансляции и отладки прикладных программ.
контрольная работа [266,1 K], добавлен 21.08.2010Описание функциональных блоков микрокомпьютера. Основы построения программных средств. Принципы соединения аппаратных средств микропроцессорных систем. Разработка электрической принципиальной схемы и программы функционирования на языке Ассемблер.
курсовая работа [176,8 K], добавлен 12.01.2015Изучение области применения комплекса для проведения имитационных испытаний микропроцессорных систем железнодорожной автоматики на функциональную безопасность. Разработка программного обеспечения модуля управления и отладки. Тестирование системы команд.
курсовая работа [1,1 M], добавлен 22.11.2014Написание программного обеспечения на языке ассемблер для AVR-МК ATmega16, позволяющего осуществлять вычисление заданной функции. Введение входных данных с помощью определенного макроса с командой загрузки значений в регистры ldi. Исходный код программы.
контрольная работа [521,0 K], добавлен 23.11.2014Разработка программного обеспечения для микропроцессорных систем МК51, интерфейсы в системах связи, основы асинхронной связи. Этапы решения задачи на ЭВМ, принципы тестирования программ и их отладка. Расчет затрат на разработку программного продукта.
дипломная работа [270,6 K], добавлен 19.06.2010Логическая и физическая структура базы данных. Аппаратное и программное обеспечение системы. Создание представлений, хранимых процедур, пользовательских функций, триггеров. Описание основной структуры ASP.NET документов. Пользовательский интерфейс.
курсовая работа [4,2 M], добавлен 21.05.2013PHP как язык программирования. MySQL – компактный многопоточный сервер баз данных. Серверное программное обеспечение. Разработка агоритма, программы, блок-схемы и их использование. Автоматизированная система централизованной обработки журналов событий.
отчет по практике [25,2 K], добавлен 12.07.2010Изучение некоторых аспектов языка Ассемблера и ЭВМ в целом. Построение алгоритмов решения поставленной задачи на языках программирования Си, Ассемблер УМ и IBM PC. Составление блок-схем решений и написание программ на каждом из перечисленных языков.
курсовая работа [691,5 K], добавлен 20.10.2014Классификации архитектур вычислительных систем. Организация компьютерных систем. Устройство центрального процессора. Принципы разработки современных компьютеров. Эволюция микропроцессорных систем. Увеличение числа и состава функциональных устройств.
дипломная работа [1,4 M], добавлен 29.01.2009