Аппаратное и программное обеспечение простых микропроцессорных систем

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПООБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ДОНСКОЙ ГОСУДАРСТВЕННЫЙТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

АППАРАТНОЕ И ПРОГРАММНОЕОБЕСПЕЧЕНИЕ ПРОСТЫХ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
 
Методические указания
к курсовой работе по разделу
«Электроника имикропроцессорная техника»
Ростов-на-Дону 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; выдать байт 00000000 в порт 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;
MOVM, 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.