Реализация фрагмента контактной схемы программным методом

 

Содержание


1. Типовое задание

1.1 Задание по варианту

2. Выполнение

2.1 Анализ поставленной задачи

2.2 Блок-схема 1

2.3 Описание алгоритма реализации программы 1

2.4 Программа 1 на языке Ассемблера

2.5 Блок-схема 2

2.6 Описание алгоритма реализации программы 2

2.7 Программа 2 на языке Ассемблера

2.9 Блок-схема 3

2.10. Описание алгоритма реализации программы 3

2.11. Программа 3 на языке Ассемблера

2.8 Карта памяти микропроцессорной системы

2.9 Анализ временных характеристик

2.9.1 Расчет времени выполнения программы 1

2.9.2 Расчет времени выполнения программы 2

2.9.3 Расчет времени выполнения программы 3

3. Вывод

4. Список литературы

1. Типовое задание


1. Выполнить анализ поставленной задачи, согласно варианту задания. Определить методы ее решения.

. Разработать общий алгоритм реализации задания и провести анализ временных и точностных параметров предлагаемого решения задачи.

. Выполнить инициализацию переменных в общем алгоритме архитектурным элементам микропроцессора КР580ВМ80А и портам ввода-вывода. Составить карту памяти микропроцессорной системы для реализации программы.

. С учетом архитектурных особенностей микропроцессора КР580ВМ80А и заданных методов адресации доступа к операндам разработать подробные алгоритмы реализации задачи.

. На языке Ассемблера микропроцессора КР580ВМ80А разработать программы реализации задачи.

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

. Вывод.


1.1 Задание по варианту


Программным способом реализовать фрагмент контактной схемы.

Текущие состояния реле поступают в порт ввода №1 непрерывно во времени в виде байта информации:


X7X6X5X4X3X2X1X0D7D6D5D4D3D2D1D0

Номер бита соответствует номеру реле.


Рисунок 1. Функциональная схема устройства


Состояние бита соответствует разомкнутому состоянию реле , т.е. напряжение на зажимах 1-2 катушки реле отсутствует. Такому состоянию реле соответствует разомкнутое состояние () нормальноразомкнутого контакта 3-4 и замкнутое состояние () нормальнозамкнутого контакта 5-6. При подаче напряжения на обмотку катушки реле (контакты 1-2) () состояние его контактов меняется на противоположное: нормальноразомкнутый контакт 3-4 замыкается (его состояние становится равным ), а нормальнозамкнутый контакт 5-6 размыкается (его состояние становится равным ).


Рисунок 2. Разомкнутое (а) и замкнутое (б) состояние реле


Согласно логического состояния цепей управления (контактов ) в разрабатываемом устройстве необходимо управлять состоянием реле . Управляющее слово состоянием реле выводится микропроцессором в порт вывода №2 в виде байта информации, где номер бита также соответствует номеру реле . Если в соответствии с текущим состоянием реле реле в данный момент должно быть замкнуто, то выводится логическая "1".

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


Рисунок 3 - Контакторная схема по варианту

алгоритм микропроцессор программный память

2. Выполнение


2.1 Анализ поставленной задачи


Необходимо реализовать фрагмент контактной схемы программным методом.

Я применил метод решения задачи, который позволяет реализовать работу данной схемы при использовании лабораторного стенда. Лабораторные стенды сопряжены с учебным микропроцессорным комплектом (УМК) на базе микропроцессора К580ВМ80А. Стенд подключен через внешний разъем, объединяющий шину адреса, шину данных и шину управления УМК. На лицевую панель стенда выведены линии шины адреса и шины управления. Стенд представляет собой набор микросхем, из которых при помощи внешних проводников собирается нужная схема. Часть соединений выполнена внутри стенда.

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

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

Ввод данных будет происходить следующим образом: входные сигналы будут подаваться непосредственно на шину данных путем подачи на контакты напряжения с уровнем логической 1 или 0 (земля) с помощью проводников. Этим я обеспечил непрерывность подачи текущих состояний реле. Во время подачи соответствующего сигнала процессору эти данные будут считываться и сохраняться в одном из регистров.


Соответствие номера реле и разряда бита шины адреса:

хX6X5X4X3X2X1X0D7D6D5D4D3D2D1D0

х - незначащий бит.

Обычно при чтении данных, прежде всего, микропроцессором выставляется адрес устройства, данные которого будут прочитаны; на управляющем выходе DBIN микропроцессор выставляет сигнал чтения (приема) данных; по сигналу чтения внешнее устройство выставляет на шину данных данные, которые считываются микропроцессором; микропроцессор снимает сигнал чтения, внешнее устройство снимает данные с шины; микропроцессор снимает адрес внешнего устройства. Стоит отметить, что нам не важен ни адрес, выставляемый микропроцессором, ни сигнал на управляющем выходе, так как процессор только считывает данные, которые непосредственно выставляются с помощью проводников.

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

При выводе предполагалось применить несколько способов, в том числе запись результатов в оперативное запоминающее устройство (ОЗУ). ОЗУ предназначено для хранения оперативной (изменяемой) информации. Для ОЗУ предусмотрено три режима работы: режим хранения данных при отсутствии обращения к ОЗУ, режим чтения данных и режим записи новых данных. Каждое запоминающее устройство включает в себя средства адресации, накопитель информации и устройство управления. Накопитель информации состоит из запоминающих элементов (элементов памяти), число которых равняется емкости запоминающего устройства. Под элементами памяти подразумеваются элементарные схемы, предназначенные для приема, хранения и выдачи одного бита информации. Для подключения ОЗУ к микропроцессорной системе используют шины: адреса, данных и управления. При подключении памяти необходимо учесть нагрузочную способность микропроцессора и применяемых ОЗУ. При необходимости для согласования нагрузочной способности между МП и памятью включают схемы согласования (буферы). В общем случае схемы согласования используются для всех трех шин. При подключении блока ОЗУ к микропроцессорной системе необходимо также учитывать временные параметры используемых микросхем. Во избежание сбоев в чтении или записи данных временные параметры микросхем ОЗУ должны соответствовать временным параметрам работы микропроцессора. Использование схем согласования увеличивает временные задержки между сигналами управления. Обычно при записи данных микропроцессором выставляется адрес устройства, в которое будут записываться данные; микропроцессором выставляются данные на шину данных; на управляющем выходе "запись" микропроцессор выставляет сигнал записи данных; микропроцессор снимает сигнал записи; микропроцессор снимает данные с шины данных и адрес с шины адреса.

Программа 2 составлена на основе таблицы 1, которая, в свою очередь, составлена на основе исходной контакторной схемы.


Таблица 1 - Таблица истинности.

X6X5X4X3X2X1X0Y1Y21x1xx101х1x1x0x01х1x11xxx1х10xxxxx1хx1xx10xх1xx101xxх1

х - незначащий бит.

Следует отметить, что при реализации данной таблицы истинности, был учтен тот факт, что значения Y1 и Y2 могут одновременно равняться единице.

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


хX0X1X2X3X4X5X6D7D6D5D4D3D2D1D0

Данное действие позволяет уменьшить время выполнения программы, которое будет зависеть от состояний реле. Например, если состояния реле Х6 и Х2 равны нулю, то цикл программы будет иметь наименьшее время выполнения.


2.2 Блок-схема 1


Ниже приведена подробная блок-схема алгоритма решения поставленной задачи.





2.3 Описание алгоритма реализации программы 1


1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Сдвиг аккумулятора на один разряд вправо, Х1 в нулевом разряде.

. Сохранение Х1 в регистре D.

5. Сдвиг аккумулятора на один разряд вправо, инвертирование аккумулятора, в нулевом разряде.

. Происходит логическое сложение аккумулятора и данных в регистре D, результат операции "" записывается в регистр D.

. После загрузки данных из регистра В происходит инвертирование аккумулятора, в нулевом разряде .

. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд.

. Происходит логическое сложение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на четыре разряда для установки Х4 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда и инвертирование аккумулятора для установки в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных регистра С, результат Y1

операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на один разряд и инвертирование аккумулятора для установки в нулевом разряде, сохранение в регистре D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда для установки Х5 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" сохраняется в регистре D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд, сохранение аккумулятора в регистре L.

. Происходит сдвиг аккумулятора на еще один разряд для установки в нулевом разряде Х4, сохранение аккумулятора в регистре Н.

. После загрузки в аккумулятор данных из регистра L происходит инвертирование аккумулятора для установки в нулевом разряде.

. Происходит логическое умножение аккумулятора и содержимого регистра Н, результата операции "" сохраняется в аккумуляторе.

. Происходит логическое сложение аккумулятора и данных регистра D, результат операции "" записывается в регистр D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо для установки Х2 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре D, результат Y2 операции "" записывается в регистре D.

. Загружается маска в регистр Е.

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

. Происходит сдвиг аккумулятора влево на один разряд, для установки Y2 в первом разряде, сохранение аккумулятора в регистре D.

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

. Происходит логическое сложение аккумулятора и данных регистра D.

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных.

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


2.4 Программа 1 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 1 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.


Таблица 2.

МеткиАдресДанныеМнемокодОписание командыКомментарий к командеМ10800 0801DB 01IN 01 (A) (01) Ввод в порт по адресу 01h входных данных080247MOV B,A (B) (A) сохранение аккумулятора в регистре В08030FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд080457MOV D,A (D) (A) сохранение аккумулятора в регистре D08050FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08062FCMA (A) () Инвертирование аккумулятора0807B2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D080857MOV D,A (D) (A) сохранение аккумулятора в регистре D080978MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор080A2FCMA (A) () Инвертирование аккумулятора080BA2ANA D (A) (A) (D) логическое умножение аккумулятора и данных в регистре D080C4FMOV C,A (C) (A) сохранение аккумулятора в регистре C080D78MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор080E0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд080F0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08100FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0811B1ORA C (A) (A) (C) логическое сложение аккумулятора и данных в C08124FMOV C,A (C) (A) сохранение аккумулятора в регистре C081378MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор08140FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08150FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08160FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08170FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0818A1ANA C (A) (A) (C) логическое умножение аккумулятора и данных в регистре C08194FMOV C,A (C) (A) сохранение аккумулятора в регистре C081A07RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево081B07RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево081C07RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево081D2FCMA (A) () инвертирование аккумулятора081EB1ORA C (A) (A) (C) логическое сложение аккумулятора и данных в C081F4FMOV C,A (C) (A) сохранение аккумулятора в регистре C082007RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево082107RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево0822A1ANA C (A) (A) (C) логическое умножение аккумулятора и данных в регистре C08234FMOV C,A (C) (A) сохранение аккумулятора в регистре C082478MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор08250FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08262FCMA (A) () инвертирование аккумулятора082757MOV D,A (D) (A) сохранение аккумулятора в регистре D082878MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор082907RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево082A07RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево082B07RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево082CA2ANA D (A) (A) (D) логическое умножение аккумулятора и данных в регистре D082D57MOV D,A (D) (A) сохранение аккумулятора в регистре D082E78MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор082F0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд 08300FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08310FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд 08326FMOV L,A (L) (A) загрузка данных с аккумулятора в регистор L08330FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд083467MOV H,A (H) (A) загрузка данных с аккумулятора в регистор H08357DMOV A,L (A) (L) загрузка данных с регистра L в аккумулятор08362FCMA (A) () инвертирование аккумулятора0837A4ANA H (A) (A) (H) логическое умножение аккумулятора и данных в регистре H0838B2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D083957MOV D,A (D) (A) загрузка данных с аккумулятора в регистор D083A78MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор083B0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд083C0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд083DA2ANA D (A) (A) (D) логическое умножение аккумулятора и данных в регистре D083E57MOV D,A (D) (A) загрузка данных с аккумулятора в регистор D083F 08401E 01MVI E,01 (E) (01) запись данных 01h в регистр E08417AMOV A,D (A) (D) загрузка данных с регистра D в аккумулятор0842A3ANA E (A) (A) (E) логическое умножение аккумулятора и данных в регистре E084307RLCСДВИГ ВЛЕВО сдвиг аккумулятора на один разряд влево084457MOV D,A (D) (A) загрузка данных с аккумулятора в регистор D084579MOV A,C (A) (C) загрузка данных с регистра C в аккумулятор0846A3ANA E (A) (A) (E) логическое умножение аккумулятора и данных в регистре E0847B2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D0848 0849D3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных084A 084B 084CC3 00 08JMP M1 (PC) (0800) безусловный переход на адрес 0800h

2.5 Блок-схема 2






2.6 Описание алгоритма реализации программы 2


М1 - 1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Загружается маска 52h в регистор Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М2 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М2 - 9. После загрузки данных из регистра В в аккумулятор, загружается маска 50h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М3 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М3 - 15. После загрузки данных из регистра В в аккумулятор, загружается маска 58h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М4 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М4 - 21. После загрузки данных из регистра В в аккумулятор, загружается маска 40h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М5 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н.

М5 - 27. После загрузки данных из регистра В в аккумулятор, загружается маска 13h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М6 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.

. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно.

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.

М6 - 34. После загрузки данных из регистра В в аккумулятор, загружается маска 23h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М7 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.

. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.

М7 - 41. После загрузки данных из регистра Н в аккумулятор, данные выводятся на шину данных.

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

2.7 Программа 2 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 2 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.


Таблица 3.

МеткиАдресДанныеМнемокодОписание командыКомментарий к командеМ10800 080126 00MVI H,01 (H) (00) запись данных 00h в регистор Н0802 0803DB 01IN 01 (A) (01) Ввод в порт по адресу 01h входных данных080447MOV B,A (B) (A) сохранение аккумулятора в регистре В0805 08061Е 52MVI E,52 (E) 52hзапись данных 52h в регистр E0807A3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е080893SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е08094FMOV С,A (C) (A) сохранение аккумулятора в регистре C080A 080B3Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор080CВ9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором080D 080E 080FC2 15 08JNZ M2JMP if Z=0 Переход при выполнении условия Z=00810 081126 01MVI H,01 (H) 01hзапись данных 01h в регистор Н0812 0813 0814CA 45 08JZ M5JMP if Z=1 Переход при выполнении условия Z=1M2081578MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор0816 08171Е 50MVI E,50 (E) 00hзапись данных 50h в регистр E0818A3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е081993SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е081A4FMOV С,A (C) (A) сохранение аккумулятора в регистре C081B 081C3Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор081DВ9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором081E 081F 0820C2 26 08JNZ M3JMP if Z=0 Переход при выполнении условия Z=0 0821 082226 01MVI Н,01 (Н) 01hзапись данных 01h в регистор Н0823 0824 0825CA 45 08JZ M5JMP if Z=1 Переход при выполнении условия Z=1M3082678MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор0827 08281Е 58MVI E,58 (E) 58hзапись данных 58h в регистр E0829A3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е082A93SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е082B4FMOV С,A (C) (A) сохранение аккумулятора в регистре C082C 082D3Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор082EВ9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором082F 0830 0831C2 37 08JNZ M4JMP if Z=0 Переход при выполнении условия Z=00832 083326 01MVI Н,01 (Н) 01hзапись данных 01h в регистор Н0834 0835 0836CA 45 08JZ M5JMP if Z=1 Переход при выполнении условия Z=1M4083778MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор0838 08391Е 40MVI E,40 (E) 40hзапись данных 40h в регистр E083AA3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е083B93SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е083C4FMOV С,A (C) (A) сохранение аккумулятора в регистре C083D 083E3Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор083FВ9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором0840 0841 0842C2 4E 08JNZ M5JMP if Z=0 Переход при выполнении условия Z=00843 084426 01MVI Н,01 (Н) 01hзапись данных 01h в регистор НM5084578MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор0846 08471Е 13MVI E,13 (E) 13hзапись данных 13h в регистр E0848A3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е084993SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е084A4FMOV С,A (C) (A) сохранение аккумулятора в регистре C084B 084C3Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор084DВ9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором084E 084F 0850C2 59 08JNZ M6JMP if Z=0 Переход при выполнении условия Z=00851 08523E 02MVI A,02 (A) 02hзапись данных 02h в аккумулятор0853В4ORA H (A) (A) (H) логическое сложение аккумулятора и данных в H0854 0855D3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных0856 0857 0858C3 00 08JMP M1JMP Безусловный переход на метку М1M6085978MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор085A 085B1Е 23MVI E,23 (E) (23) запись данных 23h в регистр E085CA3ANA Е (A) (A) (Е) логическое умножение аккумулятора и данных в регистре Е085D93SUB E (A) (A) - (Е) Вычитание из аккумулятора содержимого регистра Е085E4FMOV С,A (C) (A) сохранение аккумулятора в регистре C085F 08603Е 00MVI A,00 (A) 00hзапись данных 00h в аккумулятор0861В9CMP CIf (А) = (С) thenСравнение содержимого регистраС с аккумулятором0862 0863 0864C2 6D 08JNZ M7JMP if Z=0 Переход при выполнении условия Z=00865 08663E 02MVI A,02 (A) 02hзапись данных 02h в аккумулятор0867В4ORA H (A) (A) (H) логическое сложение аккумулятора и данных в H0868 0869D3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных086A 086B 086CC3 00 08JMP M1JMP if Z=1 Безусловный переход на начало программыM7086D7CMOV A,H (A) (H) загрузка данных с регистра H в аккумулятор086E 086FD3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных0870 0871 0872C3 00 08JMP M1JMPБезусловный переход на начало программы

2.9 Блок-схема 3



2.10. Описание алгоритма реализации программы 3


1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Сдвиг аккумулятора на один разряд вправо, значение бита Х6 сохраняется в регистре признаков С.

. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х5 сохраняется в регистре признаков С.

. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х4 сохраняется в регистре признаков С.

. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х3 сохраняется в регистре признаков С.

. Переход на метку М2 если С=1, иначе сдвиг аккумулятора вправо на три разряда, значение бита Х0 сохраняется в регистре признаков С.

. Переход на метку М1 если С=1, иначе сдвиг аккумулятора влево на три разряда, значение бита Х2 сохраняется в регистре признаков С.

. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на два разряда, значение бита Х1 сохраняется в регистре признаков С.

. Переход на метку М2 если С=1.

М1 - 11. В регистр D загружаются данные 00h (Y1=0).

. Происходит безусловный переход на метку М3.

М2 - 13. В регистр D загружаются данные 01h (Y1=1).

М3 - 14. В аккумулятор загружаются данные из регистра В.

. Происходит сдвиг аккумулятора на 4 разряда влево, значение бита Х2 сохраняется в регистре признаков С.

. Переход на метку М4 если С=0, иначе сдвиг аккумулятора влево на один разряд, значение бита Х3 сохраняется в регистре признаков С.

. Переход на метку М5 если С=1, иначе сдвиг аккумулятора влево на один разряд, значение бита Х4 сохраняется в регистре признаков С.

. Переход на метку М5 если С=0.

. В аккумулятор загружаются данные 02h (Y2=1).

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

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

М5 - 22. В аккумулятор загружаются данные из регистра В.

. Происходит сдвиг аккумулятора на 2 разряда вправо, значение бита Х5 сохраняется в регистре признаков С.

. Переход на метку М4 если С=0, иначе сдвиг аккумулятора вправо на четыре разряда, значение бита Х1 сохраняется в регистре признаков С.

. Переход на метку М4 если С=1.

. В аккумулятор загружаются данные 02h (Y2=1).

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

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

. В аккумулятор загружаются данные 00h (Y2=0).

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

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


2.11. Программа 3 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 3 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.

Таблица 4.

МеткиАдресДанныеМнемокодОписание командыКомментарий к командеМ60800 0801DB 01IN 01 (A) (01) Ввод в порт по адресу 01h входных данных080247MOV B,A (B) (A) сохранение аккумулятора в регистре В08030FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0804 0805 0806D2 23 08JNС M1JMP if С=0 Переход при выполнении условия С=008070FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0808 0809 080АD2 28 08JNС M2JMP if С=0 Переход при выполнении условия С=0080В0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд080С 080D 080ED2 23 08JNС M1JMP if С=0 Переход при выполнении условия С=0080F0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0810 0811 0812DA 28 08JС M2JMP if С=1 Переход при выполнении условия С=108130FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08140FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08150FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0816 0817 0818DA 23 08JС M1JMP if С=1 Переход при выполнении условия С=1081907RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд081A07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд081B07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд081C 081D 081ED2 28 08JNС M2JMP if С=0 Переход при выполнении условия С=0081F0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0820 0821 0822DA 28 08JС M2JMP if С=1 Переход при выполнении условия С=1М10823 082416 00MVI D,00h (D) 00hзапись данных 00h в аккумулятор0825 0826 0827C3 2A 08JMP M3JMP Безусловный переход на метку М3М20828 082916 01MVI D,01h (D) 01hзапись данных 10h в аккумуляторM3082A78MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор082B07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд082C07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд082D07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд082E07RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд082F 0830 0831D2 57 08JNС M4JMP if С=0 Переход при выполнении условия С=0083207RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд0833 0834 0835DA 42 08JС M5JMP if С=1 Переход при выполнении условия С=1083607RLCСДВИГ ВЛЕВОсдвиг аккумулятора влево на один разряд0837 0838 0839D2 42 08JNС M5JMP if С=0 Переход при выполнении условия С=0083A 083B3Е 02MVI A,02h (A) 02hзапись данных 02h в аккумулятор083CB2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D083D 083ED3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных083F 0840 0841C3 00 08JMP M6JMP Безусловный переход на начало программыM5084278MOV A,B (A) (B) загрузка данных с регистра В в аккумулятор08430FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08440FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд0845 0846 0847D2 57 08JNС M4JMP if С=0 Переход при выполнении условия С=008480FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд08490FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд084A0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд084B0FRRCСДВИГ ВПРАВОсдвиг аккумулятора вправо на один разряд084C 084D 084EDA 57 08JС M4JMP if С=1 Переход при выполнении условия С=1084F 08503Е 02MVI A,02h (A) 02hзапись данных 02h в аккумулятор0851B2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D0852 0853D3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных0854 0855 0856C3 00 08JMP M6JMP Безусловный переход на начало программыМ40857 08583Е 00MVI A,00h (A) 00hзапись данных 00h в аккумулятор0859B2ORA D (A) (A) (D) логическое сложение аккумулятора и данных в D085A 085BD3 80OUT 80 (80) (A) Вывод в порт по адресу 80h выходных данных085C 085D 085EC3 00 08JMP M6JMP Безусловный переход на начало программы2.8 Карта памяти микропроцессорной системы


УМК содержит ПЗУ объемом 2 кбайт и ОЗУ объемом 1 кбайт. Первый кбайт ПЗУ использован для хранения программы "системный монитор", а второй кбайт ПЗУ зарезервирован за пользователем. Третий кбайт памяти УМК используется для адресации ОЗУ. Необходимо отметить, что последние 54 ячейки памяти ОЗУ используются программой "системный монитор" для хранения оперативных данных.

Для удобства пользования информация о распределении адресного поля сводится в карту памяти.


19172533414957210182634425058311192735435159412202836445260513212937455361614223038465462715233139475563816243240485664Рисунок 4. Карта памяти


Пояснения к рисунку 4:

1 - программа "системный монитор" занимает 756 байт в адресном поле 0000…02FF ПЗУ;

- дополнительная область программы "системный монитор" занимает 256 байт в адресном поле 0300…03FF ПЗУ;

- программа объемом 52 байт и оставшаяся свободная память ОЗУ объемом 924 размешены в адресном поле 0800…08С6;

- рабочая область программы "системный монитор" объемом 57 байт в адресном поле 08С7…08FF ПЗУ


2.9 Анализ временных характеристик


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

Необходимо рассчитать время выполнения одного цикла каждой программы. Расчет будем вести учитывая, что частота микропроцессора 2 МГц.


2.9.1 Расчет времени выполнения программы 1

Число тактов за которые выполняются команды:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

RRC - 4 такта;

RRL - 4 такта;

CMA - 4 такта;

ANA S - 4 такта;

ORA S - 4 такта;d,data - 7 тактов;

JMP addr - 10 тактов.

Время одного цикла программы 1:


с.


2.9.2 Расчет времени выполнения программы 2

Число тактов за которые выполняются команды:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

SUB S - 7 тактов;

СМР S - 7 тактов;

JNZ,JZ - 10 тактов;

ANA S - 4 такта;d,data - 7 тактов;

JMP addr - 10 тактов.

Время одного цикла программы 2:


с.


2.9.3 Расчет времени выполнения программы 3

Следует отметить, что в программе 3 будут рассчитаны минимальное и максимальное время выполнения программы.

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

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

JNС - 10 тактов;

MVI d,data - 7 тактов;

RRC,RLC - 4 такта;

ORA S - 4 такта;

JMP addr - 10 тактов.


с.


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

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

JNС - 10 тактов;

JС - 10 тактов;

MVI d,data - 7 тактов;

RRC,RLC - 4 такта;S - 4 такта;

JMP addr - 10 тактов.


3. Вывод


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

В курсовом приведено три программы с помощью которых возможно реализовать данную схему. Анализируя временные характеристики выполнения программ можно сделать вывод, что программа 3 максимально подходит для решения задачи курсового проекта. Время выполнения программы 3 на порядок меньше чем у программ 1 и 2.

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

Для реализации программы 3 между шиной данных и портом ввода ставиться гальваническая развязка. Именно благодаря этой операции удается на порядок снизить время выполнения программы.

Также следует отметить, что говоря о времени выполнения программы, имеется ввиду время выполнения одного цикла программы.

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


xxxxxxY2Y1D7D6D5D4D3D2D1D0

где х - незначащий бит.

4. Список литературы


1. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Микропроцессоры: Учебное пособие. - Магнитогорск: МГТУ, 2004.

. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Лабораторный практикум по курсу "Электронные промышленные устройства": Учебное пособие. - Магнитогорск: МГТУ, 2004.

. Лукьянов С.И., Швидченко Д.В., Суспицын Е.С. Курсовое проектирование по дисциплинам "Машинные языки программирования" и "Основы микропроцессорной техники": Учебное пособие. Магнитогорск: МГТУ, 2005.

. Токхайм Р. Микропроцессоры: Курс и упражнения. - Москва: Энергоатомизат, 1988.


Содержание 1. Типовое задание 1.1 Задание по варианту 2. Выполнение 2.1 Анализ поставленной задачи 2.2 Блок-схема 1 2.3 Описание алгоритма

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ