Реализация фрагмента контактной схемы программным методом
Инициализация переменных архитектурным элементам микропроцессора КР580ВМ80А и портам ввода-вывода в общем алгоритме. Составление карты памяти микропроцессорной системы для реализации программы. Анализ соответствия временных и точностных характеристик.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.11.2012 |
Размер файла | 217,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- 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. Выполнить анализ поставленной задачи, согласно варианту задания. Определить методы ее решения.
2. Разработать общий алгоритм реализации задания и провести анализ временных и точностных параметров предлагаемого решения задачи.
3. Выполнить инициализацию переменных в общем алгоритме архитектурным элементам микропроцессора КР580ВМ80А и портам ввода-вывода. Составить карту памяти микропроцессорной системы для реализации программы.
4. С учетом архитектурных особенностей микропроцессора КР580ВМ80А и заданных методов адресации доступа к операндам разработать подробные алгоритмы реализации задачи.
5. На языке Ассемблера микропроцессора КР580ВМ80А разработать программы реализации задачи.
6. Выполнить анализ соответствия временных и точностных характеристик разработанного устройства заданным.
7. Вывод.
1.1 Задание по варианту
Программным способом реализовать фрагмент контактной схемы.
Текущие состояния реле поступают в порт ввода №1 непрерывно во времени в виде байта информации:
X7 |
X6 |
X5 |
X4 |
X3 |
X2 |
X1 |
X0 |
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Номер бита соответствует номеру реле.
Рисунок 1. Функциональная схема устройства
Состояние бита соответствует разомкнутому состоянию реле , т.е. напряжение на зажимах 1-2 катушки реле отсутствует. Такому состоянию реле соответствует разомкнутое состояние () нормальноразомкнутого контакта 3-4 и замкнутое состояние () нормальнозамкнутого контакта 5-6. При подаче напряжения на обмотку катушки реле (контакты 1-2) () состояние его контактов меняется на противоположное: нормальноразомкнутый контакт 3-4 замыкается (его состояние становится равным ), а нормальнозамкнутый контакт 5_6 размыкается (его состояние становится равным ).
Рисунок 2. Разомкнутое (а) и замкнутое (б) состояние реле
Согласно логического состояния цепей управления (контактов ) в разрабатываемом устройстве необходимо управлять состоянием реле . Управляющее слово состоянием реле выводится микропроцессором в порт вывода №2 в виде байта информации, где номер бита также соответствует номеру реле . Если в соответствии с текущим состоянием реле реле в данный момент должно быть замкнуто, то выводится логическая "1".
Логический контроллер, реализуемый на микропроцессоре, работает непрерывно во времени, и управляет состоянием реле в зависимости от текущего состояния реле. Время между изменением состоянием реле и изменением состояния должно быть минимальным. Данное требование должно быть учтено при разработке алгоритмов системы управления.
Рисунок 3 - Контакторная схема по варианту
алгоритм микропроцессор программный память
2. Выполнение
2.1 Анализ поставленной задачи
Необходимо реализовать фрагмент контактной схемы программным методом.
Я применил метод решения задачи, который позволяет реализовать работу данной схемы при использовании лабораторного стенда. Лабораторные стенды сопряжены с учебным микропроцессорным комплектом (УМК) на базе микропроцессора К580ВМ80А. Стенд подключен через внешний разъем, объединяющий шину адреса, шину данных и шину управления УМК. На лицевую панель стенда выведены линии шины адреса и шины управления. Стенд представляет собой набор микросхем, из которых при помощи внешних проводников собирается нужная схема. Часть соединений выполнена внутри стенда.
Следует сказать несколько слов о вводе-выводе данных. Ввод-вывод данных - это режим, при котором микропроцессор принимает данные из внешнего устройства или передает их во внешнее устройство. Для организации обмена данными используются три шины: адреса, данных и управления. На шину адреса микропроцессор выставляет адрес внешнего устройства, по шине данных передаются данные, шина управления управляет внешними устройствами в соответствии с их временными диаграммами.
Подключение устройств ввода-вывода к микропроцессорной системе осуществляется через порты ввода-вывода. В общем случае порт ввода - это обычный буфер, а порт вывода - буферный регистр. Активизация портов происходит при выставлении адреса порта и управляющем сигнале "чтение" или "запись".
Ввод данных будет происходить следующим образом: входные сигналы будут подаваться непосредственно на шину данных путем подачи на контакты напряжения с уровнем логической 1 или 0 (земля) с помощью проводников. Этим я обеспечил непрерывность подачи текущих состояний реле. Во время подачи соответствующего сигнала процессору эти данные будут считываться и сохраняться в одном из регистров.
Соответствие номера реле и разряда бита шины адреса:
х |
X6 |
X5 |
X4 |
X3 |
X2 |
X1 |
X0 |
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
х - незначащий бит.
Обычно при чтении данных, прежде всего, микропроцессором выставляется адрес устройства, данные которого будут прочитаны; на управляющем выходе DBIN микропроцессор выставляет сигнал чтения (приема) данных; по сигналу чтения внешнее устройство выставляет на шину данных данные, которые считываются микропроцессором; микропроцессор снимает сигнал чтения, внешнее устройство снимает данные с шины; микропроцессор снимает адрес внешнего устройства. Стоит отметить, что нам не важен ни адрес, выставляемый микропроцессором, ни сигнал на управляющем выходе, так как процессор только считывает данные, которые непосредственно выставляются с помощью проводников.
Далее идет обработка сигнала, сохраненного в регистре. В программе 1 применяется сдвиг аккумулятора вправо и влево для того, чтобы сигналы использовали одинаковый разряд, что позволяет производить над ними нужные мне логические операции. Так как данную схему можно представить в виде логической схемы, то при реализации метода я использовал операции логического сложения, умножения, а также инвертирование аккумулятора, которое использовалось для описания логики работы нормальнозамкнутых контактов. Также применялось маскирование данных во избежание ошибки при выводе выходных данных.
При выводе предполагалось применить несколько способов, в том числе запись результатов в оперативное запоминающее устройство (ОЗУ). ОЗУ предназначено для хранения оперативной (изменяемой) информации. Для ОЗУ предусмотрено три режима работы: режим хранения данных при отсутствии обращения к ОЗУ, режим чтения данных и режим записи новых данных. Каждое запоминающее устройство включает в себя средства адресации, накопитель информации и устройство управления. Накопитель информации состоит из запоминающих элементов (элементов памяти), число которых равняется емкости запоминающего устройства. Под элементами памяти подразумеваются элементарные схемы, предназначенные для приема, хранения и выдачи одного бита информации. Для подключения ОЗУ к микропроцессорной системе используют шины: адреса, данных и управления. При подключении памяти необходимо учесть нагрузочную способность микропроцессора и применяемых ОЗУ. При необходимости для согласования нагрузочной способности между МП и памятью включают схемы согласования (буферы). В общем случае схемы согласования используются для всех трех шин. При подключении блока ОЗУ к микропроцессорной системе необходимо также учитывать временные параметры используемых микросхем. Во избежание сбоев в чтении или записи данных временные параметры микросхем ОЗУ должны соответствовать временным параметрам работы микропроцессора. Использование схем согласования увеличивает временные задержки между сигналами управления. Обычно при записи данных микропроцессором выставляется адрес устройства, в которое будут записываться данные; микропроцессором выставляются данные на шину данных; на управляющем выходе "запись" микропроцессор выставляет сигнал записи данных; микропроцессор снимает сигнал записи; микропроцессор снимает данные с шины данных и адрес с шины адреса.
Программа 2 составлена на основе таблицы 1, которая, в свою очередь, составлена на основе исходной контакторной схемы.
Таблица 1 - Таблица истинности.
X6 |
X5 |
X4 |
X3 |
X2 |
X1 |
X0 |
Y1 |
Y2 |
|
1 |
x |
1 |
x |
x |
1 |
0 |
1 |
х |
|
1 |
x |
1 |
x |
0 |
x |
0 |
1 |
х |
|
1 |
x |
1 |
1 |
x |
x |
x |
1 |
х |
|
1 |
0 |
x |
x |
x |
x |
x |
1 |
х |
|
x |
1 |
x |
x |
1 |
0 |
x |
х |
1 |
|
x |
x |
1 |
0 |
1 |
x |
x |
х |
1 |
х - незначащий бит.
Следует отметить, что при реализации данной таблицы истинности, был учтен тот факт, что значения Y1 и Y2 могут одновременно равняться единице.
Программа 3 составлена для минимизации времени выполнения поставленной задачи. Для этого между шиной данных и портом ввода данных в микропроцессорный комплект необходимо установить гальваническую развязку, благодаря которой входное слово будет иметь следующий вид:
х |
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Данное действие позволяет уменьшить время выполнения программы, которое будет зависеть от состояний реле. Например, если состояния реле Х6 и Х2 равны нулю, то цикл программы будет иметь наименьшее время выполнения.
2.2 Блок-схема 1
Ниже приведена подробная блок-схема алгоритма решения поставленной задачи.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
2.3 Описание алгоритма реализации программы 1
1. Входные данные загружаются в аккумулятор.
2. Для последующего использования данные сохраняются в регистре В.
3. Сдвиг аккумулятора на один разряд вправо, Х1 в нулевом разряде.
4. Сохранение Х1 в регистре D.
5. Сдвиг аккумулятора на один разряд вправо, инвертирование аккумулятора, в нулевом разряде.
6. Происходит логическое сложение аккумулятора и данных в регистре D, результат операции "" записывается в регистр D.
7. После загрузки данных из регистра В происходит инвертирование аккумулятора, в нулевом разряде .
8. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" записывается в регистре С.
9. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд.
10. Происходит логическое сложение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.
11. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на четыре разряда для установки Х4 в нулевой разряд.
12. Происходит логическое умножение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.
13. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда и инвертирование аккумулятора для установки в нулевой разряд.
14. Происходит логическое умножение аккумулятора и данных регистра С, результат Y1
операции "" записывается в регистре С.
15. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на один разряд и инвертирование аккумулятора для установки в нулевом разряде, сохранение в регистре D.
16. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда для установки Х5 в нулевой разряд.
17. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" сохраняется в регистре D.
18. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд, сохранение аккумулятора в регистре L.
19. Происходит сдвиг аккумулятора на еще один разряд для установки в нулевом разряде Х4, сохранение аккумулятора в регистре Н.
20. После загрузки в аккумулятор данных из регистра L происходит инвертирование аккумулятора для установки в нулевом разряде.
21. Происходит логическое умножение аккумулятора и содержимого регистра Н, результата операции "" сохраняется в аккумуляторе.
22. Происходит логическое сложение аккумулятора и данных регистра D, результат операции "" записывается в регистр D.
23. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо для установки Х2 в нулевой разряд.
24. Происходит логическое умножение аккумулятора и данных в регистре D, результат Y2 операции "" записывается в регистре D.
25. Загружается маска в регистр Е.
26. После загрузки в аккумулятор данных из регистра D происходит логическое умножение аккумулятора и данных регистра Е, тем самым обнуляются незначащие биты числа.
27. Происходит сдвиг аккумулятора влево на один разряд, для установки Y2 в первом разряде, сохранение аккумулятора в регистре D.
28. После загрузки в аккумулятор данных из регистра С, происходит логическое умножение аккумулятора и данных регистра Е, тем самым обнуляются незначащие биты числа.
29. Происходит логическое сложение аккумулятора и данных регистра D.
30. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных.
31. После указанных операций происходит безусловный переход к началу программы, в результате получается бесконечный цикл ввода, преобразования и вывода данных.
2.4 Программа 1 на языке Ассемблера
Ниже приведена таблица, в которой дано подробное описание программы 1 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.
Таблица 2.
Метки |
Адрес |
Данные |
Мнемокод |
Описание команды |
Комментарий к команде |
|
М1 |
0800 0801 |
DB 01 |
IN 01 |
(A) (01) |
Ввод в порт по адресу 01h входных данных |
|
0802 |
47 |
MOV B,A |
(B) (A) |
сохранение аккумулятора в регистре В |
||
0803 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0804 |
57 |
MOV D,A |
(D) (A) |
сохранение аккумулятора в регистре D |
||
0805 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0806 |
2F |
CMA |
(A) () |
Инвертирование аккумулятора |
||
0807 |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
0808 |
57 |
MOV D,A |
(D) (A) |
сохранение аккумулятора в регистре D |
||
0809 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
080A |
2F |
CMA |
(A) () |
Инвертирование аккумулятора |
||
080B |
A2 |
ANA D |
(A) (A) (D) |
логическое умножение аккумулятора и данных в регистре D |
||
080C |
4F |
MOV C,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
080D |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
080E |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
080F |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0810 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0811 |
B1 |
ORA C |
(A) (A) (C) |
логическое сложение аккумулятора и данных в C |
||
0812 |
4F |
MOV C,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
0813 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
0814 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0815 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0816 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0817 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0818 |
A1 |
ANA C |
(A) (A) (C) |
логическое умножение аккумулятора и данных в регистре C |
||
0819 |
4F |
MOV C,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
081A |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
081B |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
081C |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
081D |
2F |
CMA |
(A) () |
инвертирование аккумулятора |
||
081E |
B1 |
ORA C |
(A) (A) (C) |
логическое сложение аккумулятора и данных в C |
||
081F |
4F |
MOV C,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
0820 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
0821 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
0822 |
A1 |
ANA C |
(A) (A) (C) |
логическое умножение аккумулятора и данных в регистре C |
||
0823 |
4F |
MOV C,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
0824 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
0825 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0826 |
2F |
CMA |
(A) () |
инвертирование аккумулятора |
||
0827 |
57 |
MOV D,A |
(D) (A) |
сохранение аккумулятора в регистре D |
||
0828 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
0829 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
082A |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
082B |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
082C |
A2 |
ANA D |
(A) (A) (D) |
логическое умножение аккумулятора и данных в регистре D |
||
082D |
57 |
MOV D,A |
(D) (A) |
сохранение аккумулятора в регистре D |
||
082E |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
082F |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0830 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0831 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0832 |
6F |
MOV L,A |
(L) (A) |
загрузка данных с аккумулятора в регистор L |
||
0833 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0834 |
67 |
MOV H,A |
(H) (A) |
загрузка данных с аккумулятора в регистор H |
||
0835 |
7D |
MOV A,L |
(A) (L) |
загрузка данных с регистра L в аккумулятор |
||
0836 |
2F |
CMA |
(A) () |
инвертирование аккумулятора |
||
0837 |
A4 |
ANA H |
(A) (A) (H) |
логическое умножение аккумулятора и данных в регистре H |
||
0838 |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
0839 |
57 |
MOV D,A |
(D) (A) |
загрузка данных с аккумулятора в регистор D |
||
083A |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
||
083B |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
083C |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
083D |
A2 |
ANA D |
(A) (A) (D) |
логическое умножение аккумулятора и данных в регистре D |
||
083E |
57 |
MOV D,A |
(D) (A) |
загрузка данных с аккумулятора в регистор D |
||
083F 0840 |
1E 01 |
MVI E,01 |
(E) (01) |
запись данных 01h в регистр E |
||
0841 |
7A |
MOV A,D |
(A) (D) |
загрузка данных с регистра D в аккумулятор |
||
0842 |
A3 |
ANA E |
(A) (A) (E) |
логическое умножение аккумулятора и данных в регистре E |
||
0843 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора на один разряд влево |
||
0844 |
57 |
MOV D,A |
(D) (A) |
загрузка данных с аккумулятора в регистор D |
||
0845 |
79 |
MOV A,C |
(A) (C) |
загрузка данных с регистра C в аккумулятор |
||
0846 |
A3 |
ANA E |
(A) (A) (E) |
логическое умножение аккумулятора и данных в регистре E |
||
0847 |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
0848 0849 |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
084A 084B 084C |
C3 00 08 |
JMP M1 |
(PC) (0800) |
безусловный переход на адрес 0800h |
2.5 Блок-схема 2
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
2.6 Описание алгоритма реализации программы 2
М1 - 1. Входные данные загружаются в аккумулятор.
2. Для последующего использования данные сохраняются в регистре В.
3. Загружается маска 52h в регистор Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
4. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
5. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
6. Переход на метку М2 если результат не равен нулю.
7. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.
8. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.
М2 - 9. После загрузки данных из регистра В в аккумулятор, загружается маска 50h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
10. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
11. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
12. Переход на метку М3 если результат не равен нулю.
13. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.
14. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.
М3 - 15. После загрузки данных из регистра В в аккумулятор, загружается маска 58h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
16. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
17. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
18. Переход на метку М4 если результат не равен нулю.
19. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.
20. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.
М4 - 21. После загрузки данных из регистра В в аккумулятор, загружается маска 40h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
22. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
23. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
24. Переход на метку М5 если результат не равен нулю.
25. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.
26. Загрузка данных аккумулятора в регистор Н.
М5 - 27. После загрузки данных из регистра В в аккумулятор, загружается маска 13h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
28. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
29. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
30. Переход на метку М6 если результат не равен нулю.
31. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.
32. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно.
33. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.
М6 - 34. После загрузки данных из регистра В в аккумулятор, загружается маска 23h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).
35. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.
36. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.
37. Переход на метку М7 если результат не равен нулю.
38. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.
39. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно
40. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.
М7 - 41. После загрузки данных из регистра Н в аккумулятор, данные выводятся на шину данных.
42. Происходит безусловный переход на начало программы, в результате получается бесконечный цикл ввода, преобразования и вывода данных.
2.7 Программа 2 на языке Ассемблера
Ниже приведена таблица, в которой дано подробное описание программы 2 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.
Таблица 3.
Метки |
Адрес |
Данные |
Мнемокод |
Описание команды |
Комментарий к команде |
|
М1 |
0800 0801 |
26 00 |
MVI H,01 |
(H) (00) |
запись данных 00h в регистор Н |
|
0802 0803 |
DB 01 |
IN 01 |
(A) (01) |
Ввод в порт по адресу 01h входных данных |
||
0804 |
47 |
MOV B,A |
(B) (A) |
сохранение аккумулятора в регистре В |
||
0805 0806 |
1Е 52 |
MVI E,52 |
(E) 52h |
запись данных 52h в регистр E |
||
0807 |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
0808 |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
0809 |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
080A 080B |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
080C |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
080D 080E 080F |
C2 15 08 |
JNZ M2 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0810 0811 |
26 01 |
MVI H,01 |
(H) 01h |
запись данных 01h в регистор Н |
||
0812 0813 0814 |
CA 45 08 |
JZ M5 |
JMP if Z=1 |
Переход при выполнении условия Z=1 |
||
M2 |
0815 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
0816 0817 |
1Е 50 |
MVI E,50 |
(E) 00h |
запись данных 50h в регистр E |
||
0818 |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
0819 |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
081A |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
081B 081C |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
081D |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
081E 081F 0820 |
C2 26 08 |
JNZ M3 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0821 0822 |
26 01 |
MVI Н,01 |
(Н) 01h |
запись данных 01h в регистор Н |
||
0823 0824 0825 |
CA 45 08 |
JZ M5 |
JMP if Z=1 |
Переход при выполнении условия Z=1 |
||
M3 |
0826 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
0827 0828 |
1Е 58 |
MVI E,58 |
(E) 58h |
запись данных 58h в регистр E |
||
0829 |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
082A |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
082B |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
082C 082D |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
082E |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
082F 0830 0831 |
C2 37 08 |
JNZ M4 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0832 0833 |
26 01 |
MVI Н,01 |
(Н) 01h |
запись данных 01h в регистор Н |
||
0834 0835 0836 |
CA 45 08 |
JZ M5 |
JMP if Z=1 |
Переход при выполнении условия Z=1 |
||
M4 |
0837 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
0838 0839 |
1Е 40 |
MVI E,40 |
(E) 40h |
запись данных 40h в регистр E |
||
083A |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
083B |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
083C |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
083D 083E |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
083F |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
0840 0841 0842 |
C2 4E 08 |
JNZ M5 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0843 0844 |
26 01 |
MVI Н,01 |
(Н) 01h |
запись данных 01h в регистор Н |
||
M5 |
0845 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
0846 0847 |
1Е 13 |
MVI E,13 |
(E) 13h |
запись данных 13h в регистр E |
||
0848 |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
0849 |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
084A |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
084B 084C |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
084D |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
084E 084F 0850 |
C2 59 08 |
JNZ M6 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0851 0852 |
3E 02 |
MVI A,02 |
(A) 02h |
запись данных 02h в аккумулятор |
||
0853 |
В4 |
ORA H |
(A) (A) (H) |
логическое сложение аккумулятора и данных в H |
||
0854 0855 |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
0856 0857 0858 |
C3 00 08 |
JMP M1 |
JMP |
Безусловный переход на метку М1 |
||
M6 |
0859 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
085A 085B |
1Е 23 |
MVI E,23 |
(E) (23) |
запись данных 23h в регистр E |
||
085C |
A3 |
ANA Е |
(A) (A) (Е) |
логическое умножение аккумулятора и данных в регистре Е |
||
085D |
93 |
SUB E |
(A) (A) - (Е) |
Вычитание из аккумулятора содержимого регистра Е |
||
085E |
4F |
MOV С,A |
(C) (A) |
сохранение аккумулятора в регистре C |
||
085F 0860 |
3Е 00 |
MVI A,00 |
(A) 00h |
запись данных 00h в аккумулятор |
||
0861 |
В9 |
CMP C |
If (А) = (С) then |
Сравнение содержимого регистраС с аккумулятором |
||
0862 0863 0864 |
C2 6D 08 |
JNZ M7 |
JMP if Z=0 |
Переход при выполнении условия Z=0 |
||
0865 0866 |
3E 02 |
MVI A,02 |
(A) 02h |
запись данных 02h в аккумулятор |
||
0867 |
В4 |
ORA H |
(A) (A) (H) |
логическое сложение аккумулятора и данных в H |
||
0868 0869 |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
086A 086B 086C |
C3 00 08 |
JMP M1 |
JMP if Z=1 |
Безусловный переход на начало программы |
||
M7 |
086D |
7C |
MOV A,H |
(A) (H) |
загрузка данных с регистра H в аккумулятор |
|
086E 086F |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
0870 0871 0872 |
C3 00 08 |
JMP M1 |
JMP |
Безусловный переход на начало программы |
2.9 Блок-схема 3
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
2.10. Описание алгоритма реализации программы 3
1. Входные данные загружаются в аккумулятор.
2. Для последующего использования данные сохраняются в регистре В.
3. Сдвиг аккумулятора на один разряд вправо, значение бита Х6 сохраняется в регистре признаков С.
4. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х5 сохраняется в регистре признаков С.
5. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х4 сохраняется в регистре признаков С.
6. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х3 сохраняется в регистре признаков С.
7. Переход на метку М2 если С=1, иначе сдвиг аккумулятора вправо на три разряда, значение бита Х0 сохраняется в регистре признаков С.
8. Переход на метку М1 если С=1, иначе сдвиг аккумулятора влево на три разряда, значение бита Х2 сохраняется в регистре признаков С.
9. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на два разряда, значение бита Х1 сохраняется в регистре признаков С.
10. Переход на метку М2 если С=1.
М1 - 11. В регистр D загружаются данные 00h (Y1=0).
12. Происходит безусловный переход на метку М3.
М2 - 13. В регистр D загружаются данные 01h (Y1=1).
М3 - 14. В аккумулятор загружаются данные из регистра В.
15. Происходит сдвиг аккумулятора на 4 разряда влево, значение бита Х2 сохраняется в регистре признаков С.
16. Переход на метку М4 если С=0, иначе сдвиг аккумулятора влево на один разряд, значение бита Х3 сохраняется в регистре признаков С.
17. Переход на метку М5 если С=1, иначе сдвиг аккумулятора влево на один разряд, значение бита Х4 сохраняется в регистре признаков С.
18. Переход на метку М5 если С=0.
19. В аккумулятор загружаются данные 02h (Y2=1).
20. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.
21. Данные аккумулятора выводятся на шину данных, происходит безусловный переход на начало программы.
М5 - 22. В аккумулятор загружаются данные из регистра В.
23. Происходит сдвиг аккумулятора на 2 разряда вправо, значение бита Х5 сохраняется в регистре признаков С.
24. Переход на метку М4 если С=0, иначе сдвиг аккумулятора вправо на четыре разряда, значение бита Х1 сохраняется в регистре признаков С.
25. Переход на метку М4 если С=1.
26. В аккумулятор загружаются данные 02h (Y2=1).
27. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.
28. Данные аккумулятора выводятся на шину данных, происходит безусловный переход на начало программы.
29. В аккумулятор загружаются данные 00h (Y2=0).
30. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.
31. Данные аккумулятора выводятся на шину данных, происходит безусловный переход на начало программы. В результате получается бесконечный цикл ввода, преобразования и вывода данных.
2.11. Программа 3 на языке Ассемблера
Ниже приведена таблица, в которой дано подробное описание программы 3 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.
Таблица 4.
Метки |
Адрес |
Данные |
Мнемокод |
Описание команды |
Комментарий к команде |
|
М6 |
0800 0801 |
DB 01 |
IN 01 |
(A) (01) |
Ввод в порт по адресу 01h входных данных |
|
0802 |
47 |
MOV B,A |
(B) (A) |
сохранение аккумулятора в регистре В |
||
0803 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0804 0805 0806 |
D2 23 08 |
JNС M1 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
0807 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0808 0809 080А |
D2 28 08 |
JNС M2 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
080В |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
080С 080D 080E |
D2 23 08 |
JNС M1 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
080F |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0810 0811 0812 |
DA 28 08 |
JС M2 |
JMP if С=1 |
Переход при выполнении условия С=1 |
||
0813 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0814 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0815 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0816 0817 0818 |
DA 23 08 |
JС M1 |
JMP if С=1 |
Переход при выполнении условия С=1 |
||
0819 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
081A |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
081B |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
081C 081D 081E |
D2 28 08 |
JNС M2 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
081F |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0820 0821 0822 |
DA 28 08 |
JС M2 |
JMP if С=1 |
Переход при выполнении условия С=1 |
||
М1 |
0823 0824 |
16 00 |
MVI D,00h |
(D) 00h |
запись данных 00h в аккумулятор |
|
0825 0826 0827 |
C3 2A 08 |
JMP M3 |
JMP |
Безусловный переход на метку М3 |
||
М2 |
0828 0829 |
16 01 |
MVI D,01h |
(D) 01h |
запись данных 10h в аккумулятор |
|
M3 |
082A |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
082B |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
082C |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
082D |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
082E |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
082F 0830 0831 |
D2 57 08 |
JNС M4 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
0832 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
0833 0834 0835 |
DA 42 08 |
JС M5 |
JMP if С=1 |
Переход при выполнении условия С=1 |
||
0836 |
07 |
RLC |
СДВИГ ВЛЕВО |
сдвиг аккумулятора влево на один разряд |
||
0837 0838 0839 |
D2 42 08 |
JNС M5 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
083A 083B |
3Е 02 |
MVI A,02h |
(A) 02h |
запись данных 02h в аккумулятор |
||
083C |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
083D 083E |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
083F 0840 0841 |
C3 00 08 |
JMP M6 |
JMP |
Безусловный переход на начало программы |
||
M5 |
0842 |
78 |
MOV A,B |
(A) (B) |
загрузка данных с регистра В в аккумулятор |
|
0843 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0844 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0845 0846 0847 |
D2 57 08 |
JNС M4 |
JMP if С=0 |
Переход при выполнении условия С=0 |
||
0848 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
0849 |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
084A |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
084B |
0F |
RRC |
СДВИГ ВПРАВО |
сдвиг аккумулятора вправо на один разряд |
||
084C 084D 084E |
DA 57 08 |
JС M4 |
JMP if С=1 |
Переход при выполнении условия С=1 |
||
084F 0850 |
3Е 02 |
MVI A,02h |
(A) 02h |
запись данных 02h в аккумулятор |
||
0851 |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
0852 0853 |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
0854 0855 0856 |
C3 00 08 |
JMP M6 |
JMP |
Безусловный переход на начало программы |
||
М4 |
0857 0858 |
3Е 00 |
MVI A,00h |
(A) 00h |
запись данных 00h в аккумулятор |
|
0859 |
B2 |
ORA D |
(A) (A) (D) |
логическое сложение аккумулятора и данных в D |
||
085A 085B |
D3 80 |
OUT 80 |
(80) (A) |
Вывод в порт по адресу 80h выходных данных |
||
085C 085D 085E |
C3 00 08 |
JMP M6 |
JMP |
Безусловный переход на начало программы |
2.8 Карта памяти микропроцессорной системы
УМК содержит ПЗУ объемом 2 кбайт и ОЗУ объемом 1 кбайт. Первый кбайт ПЗУ использован для хранения программы "системный монитор", а второй кбайт ПЗУ зарезервирован за пользователем. Третий кбайт памяти УМК используется для адресации ОЗУ. Необходимо отметить, что последние 54 ячейки памяти ОЗУ используются программой "системный монитор" для хранения оперативных данных.
Для удобства пользования информация о распределении адресного поля сводится в карту памяти.
1 |
9 |
17 |
25 |
33 |
41 |
49 |
57 |
|
2 |
10 |
18 |
26 |
34 |
42 |
50 |
58 |
|
3 |
11 |
19 |
27 |
35 |
43 |
51 |
59 |
|
4 |
12 |
20 |
28 |
36 |
44 |
52 |
60 |
|
5 |
13 |
21 |
29 |
37 |
45 |
53 |
61 |
|
6 |
14 |
22 |
30 |
38 |
46 |
54 |
62 |
|
7 |
15 |
23 |
31 |
39 |
47 |
55 |
63 |
|
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
Рисунок 4. Карта памяти
Пояснения к рисунку 4:
1 - программа "системный монитор" занимает 756 байт в адресном поле 0000…02FF ПЗУ;
2 - дополнительная область программы "системный монитор" занимает 256 байт в адресном поле 0300…03FF ПЗУ;
3 - программа объемом 52 байт и оставшаяся свободная память ОЗУ объемом 924 размешены в адресном поле 0800…08С6;
4 - рабочая область программы "системный монитор" объемом 57 байт в адресном поле 08С7…08FF ПЗУ
2.9 Анализ временных характеристик
В данном курсовом проекте были предложены две программы реализации контакторной схемы на программном уровне. Для выбора наиболее подходящей программы проведем анализ временных характеристик двух программ.
Необходимо рассчитать время выполнения одного цикла каждой программы. Расчет будем вести учитывая, что частота микропроцессора 2 МГц.
2.9.1 Расчет времени выполнения программы 1
Число тактов за которые выполняются команды:
IN port - 10 тактов;
OUT port - 10 тактов;
MOV d,S - 5 тактов;
RRC - 4 такта;
RRL - 4 такта;
CMA - 4 такта;
ANA S - 4 такта;
ORA S - 4 такта;
MVI d,data - 7 тактов;
JMP addr - 10 тактов.
Время одного цикла программы 1:
с.
2.9.2 Расчет времени выполнения программы 2
Число тактов за которые выполняются команды:
IN port - 10 тактов;
OUT port - 10 тактов;
MOV d,S - 5 тактов;
SUB S - 7 тактов;
СМР S - 7 тактов;
JNZ,JZ - 10 тактов;
ANA S - 4 такта;
MVI d,data - 7 тактов;
JMP addr - 10 тактов.
Время одного цикла программы 2:
с.
2.9.3 Расчет времени выполнения программы 3
Следует отметить, что в программе 3 будут рассчитаны минимальное и максимальное время выполнения программы.
Минимальное время программы будет при выполнении следующих команд:
IN port - 10 тактов;
OUT port - 10 тактов;
MOV d,S - 5 тактов;
JNС - 10 тактов;
MVI d,data - 7 тактов;
RRC,RLC - 4 такта;
ORA S - 4 такта;
JMP addr - 10 тактов.
с.
Максимальное время программы будет при выполнении следующих команд:
IN port - 10 тактов;
OUT port - 10 тактов;
MOV d,S - 5 тактов;
JNС - 10 тактов;
JС - 10 тактов;
MVI d,data - 7 тактов;
RRC,RLC - 4 такта;
ORA S - 4 такта;
JMP addr - 10 тактов.
3. Вывод
В данном курсовом проекте была разработана реализация фрагмента контактной схемы программным методом с использованием учебного микропроцессорного комплекта и лабораторного стенда с сохранением выходных данных в память.
В курсовом приведено три программы с помощью которых возможно реализовать данную схему. Анализируя временные характеристики выполнения программ можно сделать вывод, что программа 3 максимально подходит для решения задачи курсового проекта. Время выполнения программы 3 на порядок меньше чем у программ 1 и 2.
Для упрощения программы 2 рациональным выглядит использование подпрограммы, но данное действие привело бы к увеличению времени выполнения программы. Это не соответствует условию, что время между изменением состоянием реле и изменением состояния должно быть минимальным.
Для реализации программы 3 между шиной данных и портом ввода ставиться гальваническая развязка. Именно благодаря этой операции удается на порядок снизить время выполнения программы.
Также следует отметить, что говоря о времени выполнения программы, имеется ввиду время выполнения одного цикла программы.
В конце цикла каждой программы на шину данных выводится слово, в котором биты имеют следующее значение:
x |
x |
x |
x |
x |
x |
Y2 |
Y1 |
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
где х - незначащий бит.
4. Список литературы
1. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Микропроцессоры: Учебное пособие. - Магнитогорск: МГТУ, 2004.
2. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Лабораторный практикум по курсу "Электронные промышленные устройства": Учебное пособие. - Магнитогорск: МГТУ, 2004.
3. Лукьянов С.И., Швидченко Д.В., Суспицын Е.С. Курсовое проектирование по дисциплинам "Машинные языки программирования" и "Основы микропроцессорной техники": Учебное пособие. Магнитогорск: МГТУ, 2005.
4. Токхайм Р. Микропроцессоры: Курс и упражнения. - Москва: Энергоатомизат, 1988.
Размещено на Allbest.ru
Подобные документы
Общее устройство микропроцессора. Структура 64-битной подсистемы памяти. Селекция портов ввода/вывода. Особенности интерфейса микропроцессорных систем. Проектирование подсистемы памяти на базе Itanium 2. Расчёт информативности и необходимых объёмов.
курсовая работа [3,7 M], добавлен 05.12.2012Описание алгоритма работы и разработка структурной схемы МКС. Схема вывода аналогового управляющего сигнала, подключения ЖК-дисплея, клавиатуры и аварийного датчика. Разработка блок-схемы алгоритма главной программы работы МКС. Функция инициализации.
курсовая работа [5,7 M], добавлен 26.06.2016Отличительные особенности микроконтроллеров AVR семейства Mega. Характеристики процессора, подсистемы ввода-вывода. Архитектура ядра и организация памяти. Регистры общего назначения. Алгоритмы моделирования команд. Реализация модели внешнего устройства.
курсовая работа [3,7 M], добавлен 24.06.2013Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.
лабораторная работа [40,4 K], добавлен 06.07.2009Изучение подсистемы ввода-вывода и файловой системы ОС семейства Windows NT. Анализ особенностей работы приложения TotalCommander и его взаимодействия с файловой системой и подсистемой ввода-вывода. Взаимодействие TotalCommander с сетевыми адаптерами.
лабораторная работа [1,1 M], добавлен 12.06.2012Характеристика назначения микропроцессора, системной шины, основной и внешней памяти, портов ввода-вывода внешних устройств и адаптеров. Сравнительный анализ элементной базы и математического обеспечения персональных компьютеров разных поколений.
реферат [34,4 K], добавлен 25.03.2010Рассмотрение особенностей объявления функций на языке СИ. Определение понятий аргументов функции и их переменных (локальных, регистровых, внешних, статических). Решение задачи программным методом: составление блок-схемы, описание функций main и sqr.
презентация [125,5 K], добавлен 26.07.2013Применение цифровых микросхем для вычисления, управления и обработки информации. Назначение микропроцессора и устройств микропроцессорной системы, их структурная и принципиальная схемы. Системная шина процессора и распределение адресного пространства.
курсовая работа [1,5 M], добавлен 29.02.2012Общая характеристика и принцип работы электронных весов. Порядок преобразования аналогового сигнала веса в цифровую форму с участием микропроцессора. Составление блок-схемы алгоритма работы электронных весов. Описание интерфейсов ввода и вывода.
курсовая работа [784,9 K], добавлен 28.06.2011Структура персонального компьютера и принцип его работы. Состав и назначение основных блоков. Классификация компонентов: устройства ввода-вывода информации и ее хранения. Физические характеристики микропроцессора, оперативной памяти, жесткого диска.
реферат [185,6 K], добавлен 02.06.2009