Министерство высшего образования Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
___________...
139 downloads
199 Views
532KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство высшего образования Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
_____________________________________________________________________ 621.3 А 224
№ 2146
АВТОМАТИЧЕСКОЕ УПРАВЛЕНИЕ ЭТС Методические указания к лабораторным работам для студентов ЭМФ (специальность 18.07) дневного и заочного отделений Часть 1
НОВОСИБИРСК 2001
УДК 621.33:681.325.5(076.5) А 224
Составил: М.В. Калугин Рецензент канд. техн. наук, доц., Л.В. Никитин Работа подготовлена на кафедре электрического транспорта
©
Новосибирский государственный технический университет, 2001 г.
ВВЕДЕНИЕ Микролаб КР580ИК80 907 представляет собой микропроцессорную лабораторию, предназначенную для изучения элементов аппаратного и программного обеспечения микропроцессорных систем на базе ЦП КР580ВМ80А. Основные области применения: разработка, производство и сервисное обслуживание устройств управления и обработки данных со встроенными микроЭВМ на базе ЦП КР580ВМ80А; подготовка и обучение специалистов в области микропроцессорной техники. КРАТКИЕ ТЕХНИЧЕСКИЕ ДАННЫЕ Прибор является одноплатной микропроцессорной системой с шинной структурой. В качестве ЦП используется микропроцессор КР580ВМ80, имеющий фиксированную систему команд и способный работать при длительности такта от 400 нс до 2 мкс в зависимости от частоты задающего генератора. Прибор имеет три шины: шину данных разрядностью 8 бит; шину адреса разрядностью 16 бит; шину управления разрядностью 10 бит. Память прибора включает: ПЗУ на двух ИС КР556РТ5 суммарной емкостью 1 килобайт (1024х8), которая может быть расширена на 0,5 килобайта установкой дополнительного кристалла КР556РТ5 в специальный адаптер, имеющийся на плате прибора. Адрес основного ПЗУ – 0000÷03FF, дополнительного – 0400÷05FF; запоминающее устройство с произвольной выборкой на восьми ИС КР565РУ2 в качестве оперативной памяти (ОЗУ), емкость ОЗУ – 1 килобайт, адреса 8000÷83FF. Ввод/вывод информации от внешних устройств осуществляется через программируемый интерфейс КР580ВВ55. В приборе предусмотрена имитация внешних датчиков информации. В качестве датчиков параллельного кода введены три ключа, формирующих ТТЛ уровни. Приемниками параллельной информации являются восемь светодиодных индикаторов. Приемником последовательной информации служит динамик. Для связи с оператором прибор имеет клавиатуру ручного ввода и внутренний дисплей. Вводимая и выводимая информация представлена в шестнадцатеричной системе счисления. Прибор имеет восемь операционных команд и команд загрузки, каждой из которых соответствует функциональная клавиша на плате прибора. Конструкция Микролаба обеспечивает следующие режимы и функции: автоматический режим выполнения программ; шаговый режим; сброс и инициализацию системы монитором 3
при включении питания, при поступлении сигнала СБРОС от соответствующей клавиши на плате прибора; ручной ввод информации в ОЗУ с клавиатуры; автоматический ввод данных из ОЗУ на дисплей; контроль и коррекцию записанной информации; выполнение программ начиная с любой точки; прерывание программы в любой заданной точке; индикацию на табло содержимого аккумулятора ЦП и флагов состояний при остановке программы во время выполнения ее в шаговом режиме или режиме прерывания; коррекцию содержимого аккумулятора, флагов, регистров общего назначения ЦП в любом шаге выполнения программы; повторный запуск по таблице переходов по прерываниям, подаваемым на прибор с внешних устройств. ЛАБОРАТОРНАЯ РАБОТА № 1 ИЗУЧЕНИЕ РЕЗИДЕНТНОГО МОНИТОРА ЦЕЛЬ РАБОТЫ
Изучение архитектуры Микролаба КР580ИК80 907; изучение структуры и команд резидентного монитора; написание, загрузка и отладка простейших программ. СОСТАВ И ПРИНЦИП ДЕЙСТВИЯ МИКРОЛАБА КР580ИК80 907
Принцип работы прибора заключается в том, что программы пользователя, записанные в машинных кодах ЦП КР580ВМ80А, загружаются во внутреннюю память прибора, хранятся и исполняются под управлением монитора системы в автоматическом режиме на рабочей частоте и в шаговом режиме, позволяющем Устройство индикации производить ее выполнение на любом шаге. Прибор построен на основе микроПЗУ ОЗУ схем процессорного набора КР580. В его состав входят: блок ЦП, основным элеменБлок ЦП том которого является микропроцессор КР580ВМ80, блок памяти, включающий в ППИ себя ОЗУ и ПЗУ (рис. 1.1). ОЗУ используется для хранения проКлавиатура граммы пользователя и для определения рабочей области монитора. Рис. 1.1. Структурная схема ПЗУ содержит закодированную в маМикролаба шинных кодах программу монитора, управляющую всеми элементами схемы. Для обеспечения связи оператора с прибором последний имеет устройство индикации, отображающее информацию о текущем адресе и данных в шест4
надцатеричном коде, а также периферийное устройство – клавиатуру, служащую для ввода информации в ОЗУ и управления операциями монитора. Клавиатура соединена с системой через блок ППИ, реализованный на БИС КР580ВВ55. Через него же осуществляется связь с внешним магнитофоном, датчиками кодов и динамиками. Средством управления всеми операциями системы является программа монитора. Все функции монитора задают с помощью простых операций клавиатуры. Используя набор команд прибора, пользователь может записать свою программу и данные в ОЗУ прибора и выполнить ее, проведя отладку с помощью шагового режима и режима прерывания. Все органы управления прибора, кроме клавиши включения питания, расположены на плате. Назначение каждой клавиши приведено ниже (рис. 1.2): СБРОС – сброс системы и возврат к монитору в любой момент времени; АД+ – приращение адреса на 1 и считывание данных из памяти; АД- – уменьшение адреса на 1 и считывание данных из памяти; УСТ. АД. – установка адреса и считывание данных с памяти; ВОЗВР. – возвращение к выполнению программы, начатой по команде ПУСК; ПУСК – выполнение программы с индицируемого адреса; ЗП – запись данных в память и приращение адреса на 1; ВЫВОД – вывод данных из памяти на внешний магнитофон; ВВОД – ввод данных из внешнего магнитофона в память системы; 0÷F – ввод данных в шестнадцатеричном коде.
Сброс
Возвр.
Пуск
C
D
E
F
Уст. АД
ЗП
8
9
A
B
АД +
АД –
4
5
6
7
Ввод
Вывод
0
1
2
3
Рис. 1.2. Клавиатура прибора ФУНКЦИИ КЛАВИШ ДАННЫХ
Все шестнадцатеричные данные, используемые для работы монитора, вводятся в систему через 16 клавиш 0÷F. Такие данные могут включить один байт (2 цифры) для записи в ОЗУ и 2 байта адресной информации для записи или считывания из памяти, начала выполнения программы и указания блока памяти, выводимого с магнитофона. Данные, вводимые с клавиатуры, запоми-
5
наются в регистре данных рабочей области монитора для дальнейшего использования их программой монитора. Данные из регистра данных преобразуются монитором из шестнадцатеричного кода в семисегментный и высвечиваются на четырех правых индикаторах. Последняя цифра, вводимая с клавиатуры, высвечивается на крайнем правом индикаторе (рис. 1.3). Нажатие клавиши
ИАР
ИРД
Сброс
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
8
0
0
0
0
0
0
1
8
Рис. 1.3. Ввод данных
При последующем нажатии на клавишу данных все цифры сдвигаются на одну позицию влево. Если вводится более четырех цифр, то предшествующие данные стираются и остаются последние четыре цифры. ФУНКЦИИ ОДИНОЧНЫХ КОМАНД
В описанных ниже примерах вводимые адреса однозначны с действительными, а данные, считываемые из ОЗУ по этим адресам, могут отличаться от приведенных. При нажатии кнопки УСТ. АД. четыре цифры шестнадцатеричных данных, индицируемые на ИРД, устанавливаются в ИАР. Данные из ячейки памяти с адресом, соответствующим ИАР, высвечиваются в двух крайних правых позициях ИРД. Предшествующие им две цифры сдвигаются на две позиции влево (рис. 1.4) Нажатие клавиши
ИАР
Сброс
8
2
1 Уст. АД
2
ИРД
0
0
0
0
0
0
0
0
0
0
0
0
8
2
1
2
8
2
1
2
1
2
0
0
Данные по адресу 8212 Рис. 1.4. Установка адреса
6
При нажатии на кнопку АД+ адрес, высвечиваемый на ИАР, увеличивается на единицу. Данные из памяти, соответствующие новому адресу, индицируются двумя крайними цифрами ИРД. Предыдущие две цифры сдвигаются на две позиции влево (рис. 1.5). Нажатие клавиши
АД +
ИАР
ИРД
8
2
1
2
1
2
0
0
8
2
1
3
0
0
0
1
Данные по адресу 8213 Рис. 1.5. Приращение адресного регистра
При нажатии на кнопку АД– адрес, индицируемый на ИАР, уменьшается на единицу. Данные из ячейки памяти с этим адресом высвечиваются двумя крайними правыми цифрами ИРД. Предыдущие две цифры сдвигаются на две позиции влево (рис. 1.6) ИАР
Нажатие клавиши АД –
ИРД
8
2
1
3
0
0
0
1
8
2
1
2
0
1
0
0
Данные по адресу 8212 Рис. 1.6. Уменьшение адресного регистра
При нажатии на кнопку ЗП две цифры данных (один байт), высвечиваемых на крайних правых индикаторах ИРД, записываются в ячейку памяти, адрес которой в данный момент высвечивается на ИАР. Затем этот адрес увеличивается на единицу и данные, записанные по этому новому адресу, высвечиваются в двух младших разрядах ИРД. Данные, записанные по начальному адресу, сдвигаются влево на две позиции (рис. 1.7). При нажатии кнопки ПУСК начинается выполнение программы пользователя с адреса, указанного содержимым программного счетчика, хранящимся в рабочей области монитора. Этот адрес должен указывать ту ячейку памяти, в которой хранится первый байт команды. При нажатии на кнопку ВЫВОД задний блок данных из памяти последовательно выдается на шину РСО ППИ КР580ВВ55.
7
ИАР
Нажатие клавиши
A
B
ИРД
8
2
1
2
0
1
0
0
8
2
1
2
0
0
A
6
Данные по адресу 8212
ЗП
8
2
1
3
A
6
0
1
Данные по адресу 8213 Рис. 1.7. Запись и приращение адресного регистра
В приборе предусмотрены два режима работы: автоматический и шаговый. Шаговый режим важен при наблюдении за состоянием системы после выполнения ею каждой команды программы пользователя в процессе проверки и отладки этой программы. Переключатель ШАГ./АВТ. используется для выбора одного из этих режимов работы. Нажатие клавиши
8
3
0 Уст. АД
0
8
2
1
3
A
B
0
1
8
2
1
3
8
3
0
0
8
3
0
0
0
0
2
1
Переход из программы монитора к адресу 8300
Пуск
Рис. 1.8. Запуск программы
КАРТА ПАМЯТИ МИКРОЛАБ КР580ИК80 907
В основной конфигурации монитору отводятся адреса с 0000 по 03FF (табл. 1.1). Пользователь может расширить эту область до 05FF, запрограммировав ППЗУ и поставив его в зарезервированное на плате место.
8
Т а б л и ц а 1.1 Карта памяти Адрес
Емкость памяти
ПЗУ/ОЗУ
FFFF÷8400
31 кбайт
83FF÷83C7
57 байт
ОЗУ
83C6÷8000
967 байт
ОЗУ
7FFF÷0600
30,5 кбайт
05FF÷0400
512 байт
ПЗУ
03FF÷0300
256 байт
ПЗУ
02FF÷0000
768 байт
ПЗУ
Использование Неиспользуемая область Рабочая область монитора Область пользователя Неиспользуемая область Область пользователя Дополнительная область применения Область применения
Основному ОЗУ емкостью 1 кбайт отведены адреса с 8000 по 83FF, в которых старшие 57 байтов отводятся рабочей области монитора, а остальные могут использоваться по выбору пользователя (табл. 1.2, 1.3). Другие адреса, кроме определенных выше, не используются на плате прибора и остаются в распоряжении пользователя, так как все шины адреса и данных выведены на разъем. Т а б л и ц а 1.2 Рабочая область монитора Адрес 83FF÷83F8 83F7÷83F4 83F3 83F2 83F1÷83F0 83ED÷83EE 83ED÷83EC
Использование Буферный регистр сегментных данных Регистр данных, высвечиваемых на табло Флаг ввода клавиатуры Счетчик циклов прерывания Старший байт (регистр адреса прерывания) Младший байт Старший байт (адресный регистр) Младший байт Старший байт (регистр данных) Младший байт
9
Буфер сегмента данных (адреса 83F7÷83FF). Область запоминания закодированных сегментных данных для восьми цифр индикатора, которая опрашивается с помощью прямого доступа к памяти. Регистр данных, высвечиваемых на табло (адреса 83F4÷83F7). Запоминает восемь цифр (4 байта) в шестнадцатеричном коде, которые надо вывести на индикацию. Эти данные обрабатываются монитором, преобразуются в семисегментный код и заносятся в буфер сегментных данных. Флаг ввода клавиатуры (адрес 83F3). Используется монитором для определения и фиксации ввода с клавиатуры: был ввод или нет. Т а б л и ц а 1.3 Адреса регистров Адрес 83ЕВ 83ЕА 83Е9 83Е8 83Е7 83Е6 83Е5 83Е4 83Е3 83Е2 83E1 83E0 83DF÷83D1 83D0÷83D7
Использование Регистр А Регистр F Регистр B Область запоминания содержимого Регистр C регистров ЦП Регистр D Регистр E Регистр H Регистр L SP (старший байт) SP (младший байт) PC (старший байт) PC (младший байт) Таблица переходов Область стека монитора
Счетчик циклов прерывания (адрес 83F2). Запоминает количество циклов в программе пользователя (максимально 255 циклов), определяя, где должно произойти прерывание. Счет циклов в этом регистре устанавливается в шестнадцатеричном коде командами монитора. Регистр адреса прерывания (адреса 83F0÷83F1). Запоминает адрес прерывания программы, устанавливаемый командами монитора в шестнадцатеричном коде. Адресный регистр (адреса 83EE÷83EF). Содержимое регистра данных заносится в этот регистр при нажатии клавиши УСТ. АД. Содержимое адресного регистра используется монитором для различных операций выборки из памяти. Регистр данных (адреса 83EC÷83ED). Данные, вводимые в шестнадцатеричном коде с клавиатуры или считываемые из памяти, запоминаются в этом
10
регистре. Считывание данных из памяти может выполняться командами монитора. Область запоминания содержимого регистров ЦП (адреса 83E0÷83EB). В этой области временно запоминается содержимое всех оперативных регистров и флаговых триггеров ЦП. Адреса переходов RST (83D1÷83DF). Приведены в табл. 1.4. Из восьми общих инструкций RST микропроцессора КР580ВМ80А пять (RST2÷RST6) используются через программу монитора. Т а б л и ц а 1.4 Адреса переходов RST Инструкции RST2 RST3 RST4 RST5 RST6
Адрес перехода из монитора в ОЗУ 83D1 83D4 83D7 83DA 83DD
Команды перехода на подпрограмму прерывания Адрес перехода к подпрограмме прерывания
Когда любая из пяти указанных выше инструкций RST вводится как команда прерывания через шину данных извне, программа автоматически переходит к таблице переходов. Эта область может использоваться как таблица инструкций перехода для обращения к подпрограммам обслуживания прерываний в соответствии с введенной инструкцией RST. Область стека монитора (адреса 83С7÷83D0). Эта область используется как область собственного стека. Во время обработки прерывания в этой области хранятся временные данные и адреса возврата из программ. Область пользователя и область стека пользователя (адреса 8000÷83С6). Прибор содержит 1024 байта ОЗУ, имеющих адреса от 8000 до 83FF. Необходимо отметить, что работа стека пользователя программируется программой монитора в самом начале от старшего адреса 83С6 к младшему. Каждый раз, когда монитор начинается со старшего адреса 0000, в область запоминания указателя стека устанавливается адрес 83С7. Таким образом, после начала выполнения программы пользователя по команде ПУСК или ВОЗВРАТ содержимое из ячеек 83Е2 и 83Е3 устанавливается в указатель стека ЦП, и работа стека в этой программе начинается с адреса 83С6 в направлении к младшим адресам. Поэтому рекомендуется писать программу пользователя с самого младшего адреса ОЗУ 8000, так как старшие адреса памяти могут быть заняты ее собственным стеком.
11
РАБОТА МОНИТОРА В АВТОМАТИЧЕСКОМ РЕЖИМЕ
Работа монитора может начинаться с двух точек: адреса 0000 и адреса 0008. Монитор стартует или повторно начинает свою работу с адреса 0000 в следующих случаях: – при сбросе системы нажатием клавиш СБРОС; – по любой инструкции, выполняющей в программе перевод содержимого программного счетчика ЦП в 0000; – когда работа начинается с адреса 0000 по команде ПУСК или ВОЗВРАТ. После завершения подпрограммы инициализации монитор переходит к подпрограмме сканирования клавиатуры, предварительно высветив на индикаторном табло нули, так как регистр высвечиваемых данных (83F4÷83F7) был перед этим сброшен в нули программой инициализации. Когда монитор стартует с адреса 0008, инициализация рабочей области монитора, описанная выше, не выполняется, программа монитора лишь переписывает в указатель стека ЦП начальный адрес 83D1. Затем монитор переходит на подпрограмму сканирования клавиатуры. РАБОТА МОНИТОРА В ШАГОВОМ РЕЖИМЕ
При установке переключателя на передней панели АВТ/ШАГ в положение ШАГ прибор работает в шаговом режиме просмотра программы или в режиме прерывания её в нужной точке. Для шагового режима работы счётчик циклов прерывания в рабочей области монитора (адрес 83F2) должен быть очищен до 0 с помощью команд монитора или сбросом системы и обращен к подпрограмме инициализации. Затем, указав начальный адрес программы в адресном регистре, с помощью клавиши ПУСК начинают выполнение программы пользователя. После выполнения одной команды программа пользователя останавливается, и управление передается на монитор, который запоминает последнее состояние ЦП в области запоминания регистров (адреса 83E0÷83EB, табл. 1.5). Т а б л и ц а 1.5 Область запоминания регистров Адрес 83EB 83EA 83E9 83E8 83E7 83E6 83E5
Регистр Аккумулятор (A) Флаговый регистр (F) B-регистр C-регистр D-регистр E-регистр H-регистр
12
О к о н ч а н и е т а б л. 1.5 Адрес 83E4 83E3 83E2 83E1 83E0
Регистр L-регистр Указатель стека (SP, старший байт) Указатель стека (SP, младший байт) Программный счетчик (PC, старший байт) Программный счетчик (PC, младший байт)
На индикаторе монитор выдает следующую информацию: ИАР – высвечивает последнее содержимое программного счетчика (адрес следующей команды в программе пользователя); ИРД – высвечивает на двух крайних правых индикаторах содержимое флагового регистра, на двух левых – содержимое аккумулятора в момент перехода к новой команде в программе пользователя. Флаговый регистр состоит из следующих флагов по битам: где S – знак результата; 7 6 5 4 3 2 1 0 Z – нуль; AC – дополнительный перенос; S Z – AC – P – C P – четность; C – перенос. Для прерывания программы в любой нужной точке монитор имеет регистр адреса прерывания (адреса 83F0÷83F1) и счетчик циклов прерывания (адрес 83F2). КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Структурная схема МП КР580ВМ80 2. Структура и назначение основных блоков микропроцессорной лаборатории КРS80ИК8-907 3. Объясните карту памяти Микролаба. 4. Порядок ввода данных в Микролаб с клавиатуры 5. Порядок работы Микролаба в пошаговом и автоматическом режимах.
13
ЛАБОРАТОРНАЯ РАБОТА № 2 ИЗУЧЕНИЕ ПРОГРАММИРУЕМОГО ИНТЕРФЕЙСА ЦЕЛЬ РАБОТЫ
Изучение методов ввода/вывода информации в Микролаб с помощью программируемого интерфейса и использование аппаратных и программных точек прерывания. ОБЩИЕ СВЕДЕНИЯ
Порты ввода/вывода
Программирование интерфейса
Считать данные с порта ввода
Записать данные в порт вывода
Микролаб имеет порт ввода/вывода, который реализован на программируемом интерфейсе КР580ВВ55. Порты этого интерфейса могут быть либо портами ввода, либо портами вывода, в зависимости от того, как интерфейс запрограммирован. К трем разрядам порта подключены тумблеры. Этот порт будет программироваться как порт ввода. А к 8 разрядам порта В подключены светодиодные индикаторы – он будет программироваться как порт вывода (рис. 2.1).
Рис. 2.1. Структурная схема программы для перезаписи данных из порта ввода в порт вывода
Т а б л и ц а 2.1 Листинг программы пересылки данных из порта ввода в порт вывода Адрес Содержимое Метка Команда 8000 3Е MVI A, 81 8001 81 8002 D3 OUT FB 8003 FB 8004 DB ST: IN FA 8005 FA 8006 D3 OUT F9 8007 F9 8008 С3 8009 04 JMP ST 800А 80
14
Комментарии Запись в аккумулятор данных для программирования интерфейса Программирование интерфейса Чтение данных из порта ввода Запись данных в порт вывода Цикл (переход по адресу с меткой)
Чтобы запрограммировать интерфейс (С – порт ввода, В – порт вывода), необходимо подать на него код 81 по адресу FB. Первая команда MVI A, 81 означает загрузку аккумулятора в порт по адресу FB, т.е. порт программируется. Далее идет команда IN FA, которая обеспечивает запись данных из порта с адресом FA, присвоенным порту C, в аккумулятор; команда OUT F9 – вывод данных из аккумулятора в порт вывода по адресу F9 (порт В); команда JMP – переход к началу программы, чем обеспечивает непрерывность ее выполнения. ПОРЯДОК РАБОТЫ С ПРОГРАММОЙ
Введите программу в ОЗУ. Начните выполнение программы с адреса 8000. Установите тумблеры порта ввода в любое положение. Проконтролируйте состояние 2 – 4 светодиодов порта вывода. Измените положение тумблеров порта ввода (данные порта вывода должны изменяться соответственно). ОРГАНИЗАЦИЯ ПРОГРАММЫ СЧЕТА
Структурная схема программы представлена на рис. 2.2. Данная программа обеспечивает счет в ячейке памяти от 0 до 255 с последующим повторением. Программа работает следующим образом: в начальный момент один из регистров (в данном случае аккумулятор) устанавливается в 0. Затем содержимое аккумулятора переписывается в ячейку памяти с адресом 8020 и увеличивается на 1. Далее запись в ячейку повторяется. Первая команда – MVI A, 0 загружает в аккумулятор нули. Следующая команда – STA 8020 пересылает содержимое аккумулятора в ячейку памяти 8020, после чего содержимое аккумулятора увеличивает на единицу и программа переходит к метке LOOP.
15
Счет
Установка аккумулятора (A) в 0
Запись содержимого A в ячейку 8020
Увеличение содержимого A на 1
Рис. 2.2. Структурная схема программы счета
Т а б л и ц а 2.2 Листинг программы счета Адрес Содержимое Метки 8004 8005
3Е 00
8006 8007 8008 8009 800A 800B 800C 800D
32 20 80 00 3C С3 06 80
LOOP:
Команды
Комментарии
MVI A,0
Установка А в 0
STA 8020
A → ячейка 8020
NOP INR A
Прирастить А
JMP LOOP
Переход к метке LOOP
ПОРЯДОК ВЫПОЛНЕНИЯ ОПЫТА
Введите в ОЗУ программу (табл. 2.2). Проверьте правильность ее записи в память. Переключите тумблер режима в положение ШАГ. Установите начальный адрес программы 8004. На двух крайних индикаторах появится команда MVI A (код 3Е). Нажмите кнопку ПУСК. Программа начнет выполняться в шаговом режиме. Первая команда выполнена. Теперь на двух крайних правых индикаторах высвечено содержимое регистра признаков, а содержимое аккумулятора появилось на третьем и четвертом индикаторах. На этих индикаторах видны нули (MVI A, 0). Нажмите снова кнопку ПУСК. Выполнена команда STA 8020. Содержимое аккумулятора не изменилось, в ячейке памяти 8020 должны появиться нули. Для проверки содержимого ячейки наберите адрес 8020 и нажмите кнопку УСТ. АД. На двух крайних индикаторах – нули. Это содержимое ячейки 8020. Нажмите кнопку ВОЗВР. Тем самым вернитесь к выполнению программ (операция NOP). На индикаторах вновь появилось содержимое регистров признаков и аккумулятора. Нажмите кнопку ПУСК. Выполнена команда INR A. На индикаторе появляется единица, что свидетельствует о приращении содержимого аккумулятора. Проверьте содержимое ячейки 8020. В ней все еще находятся нули. Нажмите кнопку ПУСК, выполнится следующая команда (STA 8020), т.е. содержимое аккумулятора переписалось в ячейку 8020. Проверьте содержимое ячейки 8020. Там теперь находится единица. Нажав кнопу ВОЗВР. и далее кнопку ПУСК, выполните программу по шагам, проследив изменения содержимого аккумулятора. 16
ОРГАНИЗАЦИЯ ПРОГРАММ
В различных случаях применения МП перед ними ставятся разные задачи. Например, вольтметр со встроенными МП должен измерить входное напряжение и послать данные на дисплей. Процессор должен перевести данные в вольты и автоматически поддерживать нуль шкалы и т.д. Каждая из задач, стоящих перед МП, является в основном независимой и может быть представлена относительно простой программой. Затем одна общая (основная) программа может объединить все специализированные программы, не вдаваясь в подробности каждой задачи. 0: H:
CALL 0 CALL 1 JMP H 1:
MVI A, 0 STA 8020 RET
MVI A, FF STA 8020 RET
Рис. 2.3. Пример использования подпрограмм
На рис. 2.3 приведена простая программа, которая обеспечивает запись в ячейку памяти 8020 то нулей, то единиц. Основная программа содержит только три команды: одну – для вызова подпрограммы «нули», вторую – для вызова подпрограммы «единицы» и третью – для перехода к началу. Команда CALL заставляет МП перейти на подпрограмму. Метки «0» и «1» определяют подпрограммы и помещаются по реальному адресу. Команда RET (возврат) определяет конец подпрограммы и возвращает МП к выполнению основной программы. Т а б л и ц а 2.3 Листинг подпрограммы записей в ячейку памяти нулей и единиц Адрес Содержимое Метки 8000 CD Н: 8001 09 8002 80 8003 CD 8004 0F 8005 80 8006 С3 8007 00 8008 80
Команды
Комментарии
CALL 0
Подпрограмма записи нулей
CALL 1
Подпрограмма записи единиц
JMP H
Повтор
17
О к о н ч а н и е т а б л. 2.3 Адрес Содержимое Метки Команды Комментарии Программа записи нулей в ячейку памяти 8020 8009 3E 0: MVI A, 00 Запись нулей в A 800A 00 800B 32 STA 8020 Запись содержимого А в ячейку 800C 20 800D 80 800E C9 RET Возврат в основную программу Программа записи единиц в ячейку памяти 8020 800F 3E 1: MVI A, FF Запись единиц в А 8010 FF 8011 32 8012 20 STA 8020 Запись содержимого А в ячейку 8013 80 8014 C9 RET Возврат в основную программу CALL состоит из кода операции CD, за которым следует адрес подпрограммы. Команда RET состоит только из кода С9. ПОРЯДОК РАБОТЫ С ПРОГРАММОЙ
Введите программу в память Микролаба. Установите начальный адрес программы (8000) и нажмите кнопку ПУСК. Выполняется первая команда программы (CALL 0) и происходит переход к подпрограмме (адрес 8009). Нажмите кнопку ПУСК. В содержимое аккумулятора заносятся нули. Нажмите кнопку ПУСК. Содержимое аккумулятора заносится в ячейку памяти с адресом 8020. (Проверьте содержимое ячейки памяти, там записаны нули.) Нажмите кнопку ВОЗВРАТ, выполняется команда RET. Нажмите кнопку ПУСК (происходит переход во вторую подпрограмму). Нажмите два раза кнопку ПУСК (в аккумулятор запишутся единицы и содержимое аккумулятора перепишется в ячейку 8020). Проверьте содержимое ячейки 8020. Нажмите кнопку ВОЗВРАТ (произойдет переход к основной программе).
18
ПРЕРЫВАНИЯ
Иногда микропроцессорная система должна реагировать на редкие и непредсказуемые события, например аварии, отказы оборудования и т.д. В этих случаях работа МП должна быть приостановлена и МП должен перейти к подпрограмме аварийной ситуации, после выполнения которой он возвращается к основной программе. Эти действия называются прерываниями. Кристалл МП имеет вход, который принимает прерывания, после чего МП переходит к специальной подпрограмме прерывания. Команда, стоящая в конце подпрограммы прерывания, возвращает МП к прерванной программе. Иногда необходимо, чтобы МП не реагировал на прерывание, для чего существуют две команды: EI – разрешить прерывание, DI – запретить прерывание. МП КР580ВМ80 реагирует на прерывание следующим образом. Не увеличивая содержимого счетчика, он принимает информацию с шины данных и в зависимости от кода, установленного на шине данных, начинает выполнять программу с определенного адреса в соответствии с таблицей. Т а б л и ц а 2.4 Таблица прерываний Номер прерывания Код на шине данных RST0 RST1 RST2 RST3 RST4 RST5 RST6 RST7
C7 CF D7 DF E7 EF F7 FF
Адрес, с которого начинается программа обработки прерываний 0000 0008 0010 0018 0020 0028 0030 0038
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. 2. 3. 4. 5.
Порядок программирования портов ввода – вывода. Порядок организации и структурные схемы программ счета. Организация подпрограмм. Методы организации записей данных в память. Типы прерываний, команда прерываний.
19
ЛАБОРАТОРНАЯ РАБОТА № 3 ИЗУЧЕНИЕ МЕТОДОВ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЦЕЛЬ РАБОТЫ
Изучение методов разработки программного обеспечения и вывода информации на дисплей. СДВИГ ДАННЫХ
Одна из наиболее употребительных функций – это сдвиг данных, реализуемых командами кругового сдвига вправо RRC и влево RLC. Эти команды оперируют только с аккумулятором, при этом младший бит сдвигается на место старшего (или наоборот, рис. 3.1).
Ст. бит
Мл. бит
Ст. бит
Сдвиг влево (RLC)
Мл. бит
Сдвиг вправо (RRC)
Рис. 3.1. Действие команд RLC и RRC
Действия данных команд при выполнении программы наблюдаются в виде «бегущих огней». Листинг программы приведен в табл. 3.1. Время горения светодиодов определяется числами, занесенными в регистры D и E, образующие петлю задержки. При выполнении программы необходимо заменить команду RRC на RRC, а также попытаться изменить скорость сдвига, занося различные числа в регистры D и E. Т а б л и ц а 3.1 Программа для демонстрации команд сдвига Адрес 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009
Метки
Команда
Комментарии
MVI A, 81 Программирование интерфейса OUT FB MVI A, 80 LOAD:
1000 0000→A
MVI D, 40
40→D
MVI E, FF
FF→E
20
Загрузка регистров D и E для организации задержки
О к о н ч а н и е т а б л. 3.1 Адрес 800A 800B 800C 800D 800E 800F 8010 8011 8012 8013 8014 8015 8016 8017
Метки LOOP:
Команда
Комментарии
OUT F9
Вывод данных на индикаторы
DCR E
E–1→E
JNZ LOOP
Если E≠0, то переход к метке LOOP (петля задержки)
DCR D
D–1→D
JNZ LOOP
Если D≠0, то переход к метке LOOP (петля задержки)
RRC
Сдвиг данных в аккумуляторе
JMP LOAD
Повторение цикла
РАБОТА С КЛАВИАТУРОЙ И СИСТЕМОЙ ИНДИКАЦИИ ЛАБОРАТОРНОГО СТЕНДА
Клавиатура представляет собой набор ключей (кнопок), организованных в виде матрицы 8x3. каждый ряд из 8 кнопок опрашивается отдельно. Считываемые данные преобразуются в код, соответствующий нажатой кнопке, с помощью программы KEYN (адрес 0216). После возврата из подпрограммы в аккумуляторе будет содержаться код нажатой кнопки. Примером программы опроса клавиатуры может служить программа, представленная в табл. 3.3. Т а б л и ц а 3.2 Коды кнопок микролаборатории Кнопки 0 1 2 3 4 5 6 7
Код 00 01 02 03 04 05 06 07
Кнопки 8 9 A B C D E F
21
Код 08 09 0A 0B 0C 0D 0E 0F
Кнопки ПУСК ВОЗВР. УСТ. АД. АД– АД+ ЗП ВЫВОД ВВОД
Код 10 11 12 13 14 15 16 17
Шина данных Сканирующий порт Адрес FA
Читающий порт Адрес F8 PA7
PA6
PA5
PA4
PA3
PA2
CF
AF
9F
PC6
PC5
PC4
Пуск
8
0
Возвр.
9
1
Уст. АД
A
2
АД–
B
3
АД+
C
4
ЗП
D
5
Вывод
E
6
Ввод
F
7
PA1
PA0
FE FD FB F7 EF DF BF 7F FE
Кнопка не нажата Рис. 3.2. Упрощенная схема клавиатуры
Т а б л и ц а 3.3 Программа вызова звукового сигнала Адрес 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 800A 800B 800C 800D
Содержимое CD 16 02 FE 07 C2 00 80 CD 50 03 C3 00 80
Метка
Команда
Комментарии
READ:
CALL KEYN
Вызов подпрограммы чтения с клавиатуры
CPI 07
Сравнение кода ключа с 07
JNZ READ
Возврат, если кнопка 7 не нажата
CALL BEEP
Звуковой сигнал, если кнопка 7 нажата
JMP READ
Повторение подпрограммы
22
Команда CPI в данной программе устанавливает нулевой флаг, если содержимое аккумулятора равно 07. СКАНИРОВАНИЕ КЛАВИАТУРЫ
На рис. 3.2 приведена упрощенная схема клавиатуры. За один цикл считываются данные с одного из восьми рядов кнопок. Чтение ряда ключей представляет собой двухшаговую операцию: запись данных в сканирующий порт для выбора кнопок, чтение байта данных читающим портом. Для выбора ряда кнопок соответствующий бит порта устанавливается в 1, другие биты остаются равными 0. Таким образом, чтобы выбрать ряд кнопок 0…7, нужно послать в порт FA код 1001 1111 (9F), чтобы выбрать кнопки 8…F – код 1010 1111 (AF) и чтобы выбрать кнопки ПУСК…ВВОД – код 1100 1111 код (CF). Итак, чтобы считать данные с ряда 0÷7, в порт FA выводят байт 9F. Затем производится чтение входным портом. Программа, демонстрирующая сканирование клавиатуры, представлена в табл. 3.4. Т а б л и ц а 3.4 Программа проверки состояния кнопки 2 Адрес Содержимое 8000 3E 8001 9F 8002 D3 8003 FA 8004 DB 8005 F8 8006 FE 8007 FB 8008 C2 8009 04 800A 80 800B CD 800C 50 800D 03 800E C4 800F 04 8010 80
Метка
Команда
Комментарии
MVI A, 9F Выбор ряда кнопок 0…7 OUT FA READ:
IN F8
Чтение состояния кнопок
CPI FB
Сравнение регистра A с состоянием кнопки 2
JNZ READ
Повторное чтение, если кнопка 2 не нажата
CALL BEEP
Если кнопка 2 нажата – вызов звукового сигнала
JMP READ
Повторение сигнала
При запуске данной программы необходимо произвести поочередный опрос всех кнопок клавиатуры.
23
ИНДИКАЦИЯ
В микролаборатории для индикации используются восемь семисегментных цифровых индикаторов. Каждому индикатору соответствует ячейка памяти, где хранится семисегментный код. Задача матобеспечения сводится к подготовке семисегментных кодов и засылке их в ячейки памяти 83F8…83FF. Монитор микролаборатории содержит программу SEG (адрес 01C0), преобразующую шестнадцатеричные коды в семисегментные, и заносит их в ячейки 83F8…83FF. Исходные данные для этой программы должны находиться в ячейках 83F4…83F7. Каждый байт из этих ячеек соответствует паре индикаторов. Пример программы индикации, высвечивающей на индикаторах символы 1, 2, 3, 4, A, B, C, D, представлен в табл. 3.5. После запуска данной программы необходимо изменить программу – вывести другие сочетания цифр. Цифровую информацию можно вывести на индикаторы и без использования подпрограммы. Для этого необходимо в ячейки 83F8…83FF занести информацию в соответствии с рис. 3.3. Бит
7
6
5
4
3
2
1
0
Сегмент H
G
F
E
D
C
B
A
Рис. 3.3. Соответствие разрядов и сегментов
Т а б л и ц а 3.5 Программа показа информации Адрес 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 800A 800B 800C 800D 800E
Содержимое 3E 12 32 F4 83 3E 34 32 F5 83 3E AB 32 F6 83
Команда
Комментарии
MVI A, 12
12→[A]
STA 83F4
A→[83F4]
MVI A, 34
34→[A]
STA 83F5
A→[83F5]
MVI A, AB
AB→[A]
STA 83F6
A→[83F6]
24
О к о н ч а н и е т а б л. 3.5 Адрес 800F 8010 8011 8012 8013 8014 8015 8016 8017
Содержимое 3E CD 32 F7 83 CD C0 01 76
Команда
Комментарии
MVI A,CD
CD→[A]
STA 83F7
A→[83F7]
CALL SEG
Вызов подпрограммы SEG
HLT
Остановка
Т а б л и ц а 3.6 Программа вывода символов без подпрограммы SEG Адрес 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 800A 800B 800C 800D 800E …
Содержимое 3E 39 32 F8 83 3E 73 32 F9 83 3E 3F 32 FA 83 …
Команда MVI A, 39
Комментарии Семисегментный код буквы C→[A]
STA 83F8
A→[83F8]
MVI A, 73
Семисегментный код буквы D→[A]
STA 83F9
A→[83F9]
MVI A, 3F
Семисегментный код буквы 0→[A]
STA 83FA
A→[83FA]
…
…
В системах автоматического управления широкое распространение нашли так называемые программно-временные контроллеры, формирующие на входе системы кодовые комбинации через заданные программой промежутки времени (табл. 3.7).
25
Т а б л и ц а 3.7 Пример программы Адрес 8000 8001 8002 8003
Код 3E 81 D3 FB
8004 8005
3E 92
8006 8007 8008 8009 800A 800B 800C 800D 800E 800F 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 801A 801B 801C 801D
D3 F9 16 01 CD 10 80
Метка
Команда
Комментарии
MOV A, 81
Программирование интерфейса
OUT FB MOV A, 92
Установка горения 1, 4, 7 светодиодов 1001.0010
OUT F9 MVI D, 01
Горение данной последовательности
CALL DELAY
…
…
…
…
01 00 25 0B 78 B1 C2 13 80 15 C2 10 80 C9
DELAY
LXI B, 0025
Начало внутренней петли задержки
LOOP
DCX B MOV A, B ORA C JNX LOOP
Внутренняя петля задержки
DCR D JNZ DELAY
Основная петля задержки
RET
Возврат
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. 2. 3. 4. 5. 6.
Способы сдвига данных в регистрах. Поясните выполнение различных команд сдвига. Принцип опроса клавиатуры. Схема подключения клавиатуры к порту ввода – вывода. Принцип сканирования клавиатуры, подпрограммы сканирования. Опишите принцип работы подпрограмм «SEG» , «KEYN». 26
ПРИЛОЖЕНИЕ 1
Коды команд Микропроцессора КР580ВМ80 1. Сложение ADD
ADC
SUB
SBB
A
87
B C D
80 81 82
E H L M
83 84 85 86
A B C
8F 88 89
D E H
8A 8B 8C
L M
8D 8E
A
97
B
90
C
91
D
92
E
93
H
94
4. Уменьшение DCR
.
DCX
2.Вычитание
3D 05 OD 15
E H L M
1D 25 2D 35
B
OB
D
1B
H
2B
SP
3B
9. Логические ANA
ORA
A B C D
A7 AO A1 A2
E H L M A B C D E H L M
A3 A4 A5 A6 87 BO B1 B1 B3 B4 B5 B6
A
AF
5. Двойное сложение DAD
B D
09 19
XRA
H 29 SP 39
B
A8
C D
A9 AA
E H
AB AC
L
95
L
AD
M
96
M
AE
6. Сдвиг
A
BF
A B
9F 98
B
BO
C D
99 9A
RCL 07 RRC OF
C D
B1 B2
E
B3
E H L
9B 9C 9D
H L
B4 B5
M
B6
M
9E
RAL RAR
3. Увеличение
INR
INX
A B C D
B D
03 13
H
23
СМР
17 1F
7. Специальные A B
3С 04
C D E
0С 14 1С
H L M
24 2С 34
. DAA
27
CMA 2 F STC 37 CMC 3F
SP 33
27
8. Непосредственные логические и арифметические ADI ACI SUI
байт C 6 байт CE байт D6
SBI ANI XRI ORI
байт DE байт E 6 байт EE байт F 6
CPI
байт
FE
1. Пересылка
MOV
A, A A, B A, C
7F 78 79
A, D A, E A, H A, L A, M
7A 7B 7C 7D 7E
B, A B, B
47 40
B, C B, D B, E B, H
41 42 43 44
B, L B, M
2. Непосредственная пересылка
MOV
E, A E, B E, C
5F 58 59
E, D E, E E, H E, L E, M
5A 5B 5C 5D 5E
MVI
A,
байт
3E
B,
байт
06
C
байт
OE
D
байт
16
E,
байт
1E
H
байт
26
L, M,
байт байт
2E 36 EB
XCHG
3. Непосредственная загрузка
MOV
45 46
H, A H,B H ,C H,D H,E H,H H,L H,M
67 60 61 62 63 64 65 66
С, A
4F
L, A
6F
С, B С, C
48 49
L, B L, C
68 69
MOV
LXI
B, D, H,
2байта 01 2байта 11 2байта 21
SP, 2байта 31
4. Загрузка/хранение
MOV С , D 4 A
MOV
С, E С, H
4B 4C
С, L
LDAXB
OA
1A LDAXD LHLD[адр.] 3 A
MOV L, D 6 A
LDA[адр.]
3A
L, E L, H
6B 6C
STAX STAX
02 12
4D
L, L
6D
SHLD[адр.]
22
С, M 4E D, A 57
L, M
6E
STA[адр.]
32
M,A
77
M,B
70
M ,C M,D
71 72
M,E M,H
73 74
M,L
75
D, B D, C
50 51
D, D
52
D, E
53
D, H D, L
54 55
D, M
56
MOV
28
СПИСОК ЛИТЕРАТУРЫ
1. Микропроцессоры / Под ред. Л.Н. Преснухина. – М.: Высшая школа, 1987. 2. Горбунов В.В., Панфилов Д.И. Микропроцессоры: Лабораторный практикум. – М.: Высшая школа, 1984. – 104 с. 3. Ефремов И.С., Калиниченко А.Я., Феоктистов В.П. Цифровые системы управления электрическим подвижным составом с тиристорными импульсными регуляторами. – М.: Транспорт, 1988. – 253 с.
29
ОГЛАВЛЕНИЕ
1. Лабораторная работа № 1...................................................................................... 4 2. Лабораторная работа № 2.................................................................................... 14 3. Лабораторная работа № 3.................................................................................... 20
30