Состояние разрядов шины адреса
Разряды ША | |||||||||||||||||
ОЗУ | |||||||||||||||||
0BFF | |||||||||||||||||
ПЗУ | 0С00 | ||||||||||||||||
0FFF | |||||||||||||||||
На входы дешифратора | На входы микросхем емкостью 1 Кб |
Дешифраторы, в зависимости от используемой элементной базы, можно выполнить по-разному. Три варианта схем дешифраторов показаны на рис.4.
В микросхеме К580ВВ55, используемой для связи МП с внешними устройствами, содержатся 4 регистра, 3 из которых являются портами ввода-вывода, а 1 – регистром управляющего слова (РУС). Для обращения к ним используются младшие биты шины адресов А0, А1 или А8, А9. Поэтому для системы с изолированной шиной из области адресов A8…AF можно использовать, например, АС…АF, а в системе с общей шиной из области 9060…9067 - область 9060…9063. Оставшиеся адреса могут быть использованы для выбора других внешних устройств, например, программируемого интервального таймера, программируемого контроллера прерываний и т.п. В данном примере из возможных внешних устройств применим лишь ППИ.
Двоичные разряды шины адреса, соответствующие области адресов АС…АF, сведены в таблицу 6, а области адресов 9060…9063 - в таблицу 7.
Таблица 6
Разряды ША | Старшие разряды шины адреса | Младшие разряды шины адреса | ||||||||||||||||
Порт | Адрес порта | |||||||||||||||||
РА | АС | |||||||||||||||||
РВ | AD | |||||||||||||||||
РC | АЕ | |||||||||||||||||
РУС | AF | |||||||||||||||||
К дешифратору | К микросхеме ППИ | К дешифратору | К микросхеме ППИ | |||||||||||||||
Таблица 7
Разряды ША | Старшие разряды шины адреса | Младшие разряды шины адреса | |||||||||||||||||
Порт | Адрес порта | ||||||||||||||||||
РА | |||||||||||||||||||
РВ | |||||||||||||||||||
РC | |||||||||||||||||||
РУС | |||||||||||||||||||
К дешифратору | К микросхеме ППИ | ||||||||||||||||||
На рис.5а,б приведены два варианта построения дешифратора адреса для системы с изолированной шиной, формирующего сигнал нулевого уровня в области адресов АС…AF. На рис. 5в приведена схема дешифратора для системы с общей шиной, формирующая сигнал низкого уровня в области адресов 9060…9063.
6.4. Разработка принципиальной электрической схемы МПСУ
Приведем пример разработки МПСУ с изолированной шиной. В качестве контроллера системы используем схему, показанную на рис.7, которая формирует стандартные сигналы шины адреса, шины данных и шины управления. В качестве ПЗУ используем микросхему типа КР573РФ2, емкостью 16 Кбит с организацией 2К*8. В качестве ОЗУ используем микросхему типа КР537РУ10, емкостью 16 Кбит с организацией 2К*8. Емкость этих микросхем вдвое больше области адресного пространства, отведенного для ОЗУ и ПЗУ, поэтому используем половину емкости микросхемы, подав на вход старшего разряда микросхемы логический 0. Интерфейс связи с объектом управления организуем на микросхеме КР580ВВ55.
Принципиальная схема интерфейса ОЗУ, ПЗУ и устройства ввода-вывода на основе ППИ КР580ВВ55 приведена на рис 6. Соединив ее с контроллером системы, получим
принципиальную схему МПСУ. Применение микросхем программируемого интервального таймера КР580ВИ53 и программируемого контроллера прерываний КР580ВН59 описано в [1…5, 11], а в данных методических указаниях не рассматриваются.
6.5. Разработка программы, заносимой в ПЗУ МПСУ
Программа разработана в соответствии с сигнальным алгоритмом, приведенным на рис.3. Участки алгоритма, которые являются однотипными и часто повторяемыми, оформим в виде подпрограмм и блоков программы, которые потом соединим в основную программу МПСУ.
6.5.1. Программа опроса портa A
Адрес | Код команды | Метка | Мнемокод | Комментарии |
ADR1 | MVI C, FF | Занести в регистр С число 255 | ||
IN АС | Содержимое порта РА (по адресу АС) занести в аккумулятор А микропроцессора | |||
MOV B, A | Копию порта РА поместить в регистр В | |||
ADR2 | IN AC | Содержимое порта РА в аккумулятор А | ||
XRA B | Сравнить содержимое порта РА с предыдущим его состоянием | |||
JNZ ADR1 | Если не равны, идти на ADR 1 | |||
DCR С | Уменьшить содержимое регистра С на 1 | |||
JNZ ADR2 | Если С≠0 (Z=0), идти к ADR2 |
Программа позволяет отстроиться от помех, поступающих с контактов кнопок и концевых выключателей, путем опроса порта РА 256 раз. Если за это время состояние порта РА не изменилось, что свидетельствует о стабильности поступившего сигнала, то микропроцессор выходит из подпрограммы и в регистре В сохраняется состояние порта РА. Эта подпрограмма располагается в самом начале алгоритма и результат ее выполнения используется в последующих блоках программы. Поэтому она должна быть в тексте как фрагмент основной программы.
6.5.2. Блок задержки
Задержка длительностью 0,5 секунды вводится для того, чтобы после отключения электродвигателя его повторное включение на его реверс происходило лишь после погасания дуги на контактах отключенного контактора. Задержку целесообразно реализовать на базе программируемого интервального таймера КР580ВИ53. Здесь рассмотрен
вариант программной реализации выдержки времени длительностью 0,5 с.
В цикле программе задержки, выполняемой М раз (метка М4 основной программы), используются команды DCX H, MOV A,H, ADD L и JNZ. Число М, заносимое в две последовательные ячейки памяти, начиная с адреса BASE (в программе BASE=0C73), которое загружаемся в регистровую пару HL, можно определить по формуле
М = Тзад · fт / N
Длина команд (в тактах): DCX Н – 5; MOV A,H – 5, ADD L – 4; JNZ – 10. Всего N=5+5+4+10=24 тактов.
Для реализации заданной задержки Тзад=0,5 с при тактовой частоте микропроцессора fт = 2 МГц, получим
М=0,5·2·106/24=4166710=А2С3Н
Таким образом, в ячейку памяти BASЕ при программировании ПЗУ надо записать число С3Н, в ячейку BASE+1 - число А2Н.
6.5.3. Подпрограмма управления электродвигателем лифта
Можно увидеть, что в алгоритме программы рис.3 есть две группы аналогичных блоков: 4…9 для движения "Вверх" и 10…14 для движения "Вниз", отличающихся только разрядами битов, условий и битами управляющих сигналов. Эти группы блоков оформляем в виде одной подпрограммы. Для настройки ее на выполнение движений "Вверх" и "Вниз" используем внутренние регистры МП.
В регистре В хранится содержимое порта РА: информация о состоянии кнопок и конечных выключателей системы. В регистре С содержится код 04Н=0000.0100 или 08Н=0000.1000 маски для проверки конечных выключателей, соответственно, S4 или S5. В регистре Е содержится код 08Н=0000.1000 или 10Н=0001.0000 маски для зажигания ламп, соответственно, Н1 или Н2. В регистре Н содержится код 20Н=0010.0000 маски для зажигания лампы Н5 "Стоп". В регистре L содержится код 02Н=0000.0010 или 04Н=0000.0100 маски для включения электродвигателя для движения лифта , соответственно, "Вверх" или "Вниз".
Адрес | Код команды | Метка | Мнемокод | Комментарии |
PUSH PSW | Запомнить в стеке содержимое регистров | |||
PUSH D | PSW и DЕ | |||
MVI D, 10 | Занести в регистр D константу 10 маски для проверки состояния кнопки "Стоп" | |||
ADR5 | MOV A,B | Переслать в регистр А содержимое порта РА | ||
ANA С | Конечный выключатель "Лифт вверху" ("Лифт внизу") сработал? | |||
JNZ ADR6 | Если нет, проверить состояние кнопки "Стоп" | |||
MOV А,Е | Если да, зажечь, подключенную к порту РВ | |||
OUT AD | лампу "Лифт вверху (внизу)", электродвигатель не включать и выйти на подпрограмму | |||
JMP ADR7 | задержки 0,5 с | |||
ADR6 | MOV A,B | Переслать в регистр А содержимое порта РА | ||
ANA D | Кнопка "Стоп" нажата? | |||
JNZ ADR7 | Если нет, идти к ADR7 | |||
MOV А,Н | Если да, зажечь подключенную к порту РВ | |||
OUT AD | лампу "Стоп", и электродвигатель не | |||
JMP ADR8 | включать | |||
ADR7 | MOV A,L | Включить электродвигатель "Вверх (Вниз)" и | ||
OUT AD | зажечь лампу "Движение вверх (вниз)" | |||
JMP ADR5 | Идти в начало подпрограммы управления двигателем | |||
ADR8 | POP D | Извлечь из стека содержимое регистра DЕ | ||
POP PSW | Извлечь из стека содержимое регистра PSW | |||
RET | Возврат в основную программу |
6.5.4. Основная программа
В соответствии с алгоритмом рис.3 основная программа должна содержать команды настройки интерфейса ввода-вывода, инициализации стека, программы чтения порта РА интерфейса, команд опроса кнопок управления, команд обращения к подпрограмме управления электродвигателем лифта и программы задержки, Программа. размещается в ПЗУ, начальный адрес которого в памяти МП - системы 0С00, потому первой команде программы, помещенной в ячейку 000 ПЗУ, соответствует адрес 0С00 адресного пространства микропроцессора.
Адрес | Код команды | Метка | Мнемокод | Комментарии |
Инициализация | ||||
0С00 | 3E 90 | М1 | MVI A, 90 | Послать в РУС ППИ код 90 настройки |
0С02 | D3 AF | OUT AF | портов: порт РА - ввод, порт РВ - вывод | |
0С04 | 31 00 0В | LXI SP, 0B00 | Занести в регистр-указатель стека адрес вершины стека - 0В00 | |
Чтение порта А | ||||
0С07 | 0E FF | М2 | MVI C, FF | Комментарии см. в п.6.5.1 |
0С09 | DB AC | IN АС | ||
0С0В | MOV B,A | |||
0С0С | DB AC | IN АС | ||
0С0Е | A8 | XRA B | ||
0C0F | C2 07 0С | JNZ | ||
0C0F | 0D | DCR C | ||
0С13 | C2 0С 0С | JNZ 0С0С | ||
Проверка состояния кнопки пуска "Вверх" | ||||
0С16 | NOP | Пустая команда | ||
0С17 | MOV А,В | Занести в регистр А содержимое порта РА | ||
0С18 | Е6 01 | ANI 01 | Кнопка "вверх" нажата? | |
0С1А | С2 2В 0С | JNZ 0С2В | Если нет, идти к 0С2В – проверке кнопки пуска "Вниз" | |
Подготовка регистров C, E, H, L перед обращением к подпрограмме управления электродвигателем "Вверх" | ||||
0C1D | 0Е 04 | MVI C, 04 | Маска проверки концевика "Лифт вверху" | |
0C1F | 1Е 08 | MVI E, 08 | Маска включения лампы "Лифт вверху" | |
0С21 | 26 20 | MVI H, 20 | Маска включения лампы "Стоп" | |
0С23 | 2Е 02 | MVI L, 02 | Маска включения электродвигателя "Вверх" | |
0С25 | CD 50 0С | CALL 0C50 | Идти к подпрограмме управления электродвигателем | |
0С28 | СЗ ЗС 0С | JMP 0C3C | Идти к программе задержки 0,5 с после завершения движения лифта "Вверх" | |
Проверка состояния кнопки пуска "Вниз" | ||||
0С2В | М3 | MOV A,B | Переслать в регистр А содержимое порта РА | |
0С2С | Е6 02 | ANI 02 | Кнопка "вниз" нажата? | |
0С2Е | С2 ЗС 0С | JNZ 0C3C | Если нет, идти к программе задержки 0,5 с |
Подготовка регистров C, E, H, L перед обращением к подпрограмме управления электродвигателем "Вниз" | ||||
0С31 | 0Е 08 | MVI C, 08 | Маска проверки концевика "Лифт внизу" | |
0СЗЗ | 1E 10 | MVI E, 10 | Маска включения лампы "Лифт внизу" | |
0С35 | 26 20 | MVI H, 20 | Маска включения лампы "Стоп" | |
0С37 | 2E 04 | MVI L, 04 | Маска включения электродвигателя "Вниз" | |
0С39 | CD 50 0С | CALL 0C50 | Идти к подпрограмме управления электродвигателем | |
Программа задержка на 0,5 секунды | ||||
0С3С | 2А 73 0С | М4 | LHLD 0C73 | Комментарии см. в п.6.5.2 |
0C3F | 2В | DCX H | ||
0С40 | 7С | MOV A,H | ||
0С41 | ADD L | |||
0С42 | С2 3F 0С | JNZ 0C3F | ||
0С45 | C3 07 0C | JMP 0C07 | ||
Подпрограмма управления электродвигателем лифта "Вверх" или "Вниз" | ||||
0С50 | F5 | М5, М10 | PUSH PSW | Комментарии см. в п.6.5.3 |
0С51 | D5 | PUSH D | ||
0С52 | 16 10 | MVI D, 10 | ||
0С54 | MOV A,B | |||
0С55 | А1 | ANA С | ||
0С56 | С2 5F 0С | JNZ 0C5F | ||
0С59 | 7В | М6, М11 | MOV А,Е | |
0С5А | D3 AD | OUT AD | ||
0С5С | СЗ 70 0С | JMP 0C70 | ||
0C5F | MOV A,B | |||
0С60 | А2 | М7, М12 | ANA D | |
0С61 | С2 6А 0С | JNZ 0C6A | ||
0С64 | 7С | М8, М13 | MOV A,H | |
0С65 | D3 AD | OUT AD | ||
0С67 | СЗ 70 0С | JMP 0С70 | ||
0С6А | 7D | М9, М14 | MOV A,L | |
0С6В | D3 AD | OUT AD | ||
0C6D | СЗ 54 0С | JMP 0С54 | ||
0С70 | D1 | POP D | ||
0С71 | F1 | POP PSW | ||
0С72 | С9 | RET | ||
0С73 | C3 | Константа младшего байт счетчика, используемая в программе задержки 0,5 с | ||
0С74 | А2 | Константа старшего байта счетчика, используемая в программе задержки 0,5 с |
6.6. Прошивка ПЗУ
Программа занимаем в ПЗУ ячейки с 000 по 074. Коды программы, помещаемой в ПЗУ, сведем в таблицу.
А | В | С | D | Е | F | |||||||||||
3Е | D3 | AF | 0B | 0Е | FF | DB | AC | DB | AC | А8 | С2 | |||||
0С | 0D | С2 | 0С | 0С | E6 | С2 | 2В | 0С | 0Е | 1Е | ||||||
2Е | CD | 0С | C3 | 3C | 0С | E6 | С2 | ЗС | ||||||||
0С | 0Е | 1Е | 2Е | CD | 0С | 2А | 0С | 2В | ||||||||
7С | С2 | 3F | 0С | C3 | 0С | |||||||||||
F5 | D5 | A1 | С2 | 5F | 0С | 7B | D3 | AD | C3 | 0С | ||||||
А2 | С2 | 6А | 0С | 7С | D3 | AD | C3 | 0С | 7D | D3 | AD | C3 | 0С | |||
D1 | F1 | С9 | C3 | A2 |
В графической части курсового проекта для рассмотренного примера разработки МПСУ должны быть представлены три чертежа:
1. Устройство управления грузовым лифтом. Блок-схема сигнального алгоритма программы.
2. Устройство управления грузовым лифтом. Схема электрическая принципиальная.
3. Сборочный чертеж платы МПСУ.
В схеме электрической принципиальной на одном чертеже должны быть изображены контроллер системы (рис.7) и интерфейс ОЗУ, ПЗУ и УВВ (рис.6).
Студенты, которые разрабатывают систему на основе МП типа КР1821ВМ85 (Intel 8085), могут воспользоваться разработками контроллера системы, изображенного на рис.8.
Система команд микропроцессора КР1821ВМ85 полностью совпадает с системой команд микропроцессора КР580ВМ80.
Контроллеры систем
На рис.7 и 8 схем контроллеров систем на основе микропроцессоров КР580ВМ80, и КР1821ВМ85 отражены:
- схемы формирования шин адреса, данных и управления;
- буферные схемы для микропроцессоров КР580ВМ80 и КР1821ВМ85;
- схемы формирования тактовых импульсов и сигналов сброса системы;
- входы запросов прерывания общего типа, к которым должны подключаться контроллеры прерывания;
- блокировки режимов "Ожидания" и прямого доступа к памяти МПСУ.
Ó Дворак Николай Маркович, к.т.н., доцент,
Безгачин Николай Иванович, к.т.н., доцент
МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА: Методические указания и задания к курсовому проекту для студентов направления 6.092201 "Электромеханика" специальности "Электрические системы и комплексы транспортных средств"
Тираж ____экз. Подписано к печати ________
Заказ №_____ Объём ______п.л.
Изд-во "Керченский государственный морской технологический университет"
98309 г. Керчь, ул. Орджоникидзе, 82