Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа МП-4.doc
Скачиваний:
30
Добавлен:
02.05.2014
Размер:
134.66 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА МП – 4.

Программная реализация типовых функций

управления на основе микропроцессора К580ПК80.

1. Цель работы: Научиться программировать типовые процедуры управления, возникающие при организации взаимодействия микропроцессорной системы с реальными объектами управления.

2. Краткие теоретические сведения.

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

2.1. Опрос двоичного датчика.

+5

На рис.1 показана схема подключения контакта двоичного датчика к входному порту МП – контроллера и схема алгоритма его опроса.

ШД

R

D0

порт 2 1

2

3

4

5

6

7

K

маска

3-го р-да

нет

да

пер-д

по LAB1

пер-д

по LAB2

а) б)

Рис.1. Схема а) и алгоритм б) опроса двоичного датчика

Если контакт разомкнут, то на входе Д2 присутствует сигнал 1, если он замкнут, то Д2 = 0.

Необходимо в некоторой части управляющей программы контроллера опросить значение сигнала на Д2 порта 2 и в зависимости от его значения передать управление на метку LAB1 или LAB2. Текст программы такого опроса следующий:

INPKEY: IN 02H ; ввод в аккумулятор из порта 2

ANI 04H ; маскирование всех р-дов, кроме Д2

JNZ LAB1 ; переход по LAB1, если Д2  0

LAB2: ; иначе переход по LAB2

;

LAB1:

2.2. Ожидание события.

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

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

На рис.2 показана схема алгоритма такого опроса и подключение датчика к порту.

+5

ШД

R

D0

порт 2 1

2

3

4

5

6

7

K

маска

6-го р-да

нет

да

выпол-е

след-й

команды

а) б)

Рис.2. Схема а) и алгоритм б) ожидания события

Из схемы алгоритма видно, что программа должна постоянно опрашивать значение сигнала на входе Д6 порта 2 до тех пор, пока оно не станет равным нулю (контакт датчика события замкнкт), и в этом случае продолжить выполнение основной управляющей программы. Текст этого программного опроса следующий:

HUNT: IN 02H ; ввод в аккумулятор из порта 2

ANI 40H ; маскирование всех разрядов, кроме 6

JNZ HUNT ; переход в цикл ожидания, если Д6  0

; иначе выпонить следующую команду

2.3. Ожидание импульсного сигнала.

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

Схема алгоритма (рис.3б) состоит из двух процедур: ожидание появления фронта сигнала и его спада. Текст программы, реализующей этот алгоритм, выглядит следующим образом:

WAIT1: IN 04H ; ввод из порта 4

ANI 80H ; анализ Д7

JNZ WAIT1 ; если Д7 = 1, то ждать

WAIT0: IN 04H ; иначе ввод из порта 4

ANI 80H ; анализ Д7

JZ WAIT0 ; если Д7 = 0, то ждать

RET ; иначе выход из подпрограммы

ШД

D0

порт 4 1

2

3

4

5

6

7

+5

маска

D7

маска

D7

R

нет

да

нет

да

tи>14 мкс

Рис.3. Схема а) и схема алгоритма б) обнаружения импульсного сигнала

Для обнаружения кратковременных импульсов используются два способа: буферирование импульса на триггер флага и система прерывания.

На рис.4 представлена схема отслеживания кратковременного импульса с помощью флага.

+5

ШД

D0

порт 6 1

2

3

4

5

6

7

Q T D

C

R

D0

порт 7 1

2

3

4

5

6

7

ввод

вывод

сброс

Рис.4. Схема включения триггера флага для фиксации кратковременных импульсов.

На вход порта поступает не кратковременный импульсный сигнал, а флаг, формируемый Д – триггером с динамическим входом. Триггер устанавливается по входу С фронтом импульса, а сбрасывается программным путем – выдачей управляющего воздействия в порт 7. Тем самым флаг инициируется на новый цикл слежения за импульсом.

В случае использования системы прерывания для отслеживания кратковременных импульсов выход их источника подключается к входу запроса прерывания INT микропроцессора.

2.4. Выделение и обработка отдельных бит информации.

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

Наложение маски осуществляется логическими операциями с непосредственным операндомю Как правило, это операция логического AND (команда ANI). В результате маскирования выбранного бита изменяется значение признака (z = 1, если результата равен нулю). Передача управления осуществляется командами условного перехода JZ (перехо, если равно нулю).

Например, программа выделения бита Д3 для схемы, представленной на рис.5, имеет вид:

IN 01H ; ввод из порта 1

ANI 08H ; наложение макси 00001000

JNZ MARK ; если Д3 = 1, то переход к программе

; с меткой MARK

R

+5

K

D0

порт 1 1

2

3

4

5

6

7

Рис.5. Схема подключения группы дискретных датчиков.

Наложением маски удобно выделять группу бит. Например, маска для определения замыкания хотя бы одного из переключателей Д0 – Д3 записывается как число 00001111.

Для выделения старшего или младшего бита, а также последовательности бит используются операции логического сдвига (RAR, RAL, RRC, RLC). В результате выполнения этих операций модифицируется признак переноса С. Передача управления осуществляется командами JC (переход, если C = 1) или JNC (переход, если С = 0).

Например, программа выделения младшего бита Д0 имеет вид:

IN 0H ; ввод из порта 1

RAR ; сдвиг вправо

JC MARK ; если Д0 = 1, то передача управления на MARK.

2.5. Формирование управляющего сигнала.

На рис.6 показана схема подключения контроллера к некоторому исполнительному механизму объекта управления через порт вывода информации. Предположим, что данный исполнительный механизм работает по принципу "включить/выключить", т.е. может управляться двоичным выходным сигналом контроллера. Программа формирования такого управляющего воздействия состоит из двух команд:

для включения исполнительного механизма –

ON:MVI A, 02H ; загрузить в аккумулятор код 0000.0010

OUT 03H ; выдать управляющий байт в порт 3

для выключения исполнительного механизма –

OFF:XRA A ; обнулить аккумулятор

OUT 03H ; выдать байт в порт 3

В случае, если к остальным выводам порта 3 подсоединяются другие исполнительные механизмы, то формируется не двоичное управляющее воздействие, а байт управляющего слова, где каждому разряду ставится в соответствие "0" или "1" в зависимости от того, какие исполнительные механизмы должны быть включены или выключены.

Uпит

1

0

ШД

D0

порт 3 1

2

3

4

5

6

7

исполнительный

механизм

Рис.6. Схема подключения исполнительного механизма к МП-контроллеру.

2.6. Вывод управляющего слова на группу автономных устройств.

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

Команда ANI используется для сброса тех бит, которые в маске заданы нулем. Команда ORI используется для установки бит, а XRI инвертирует отдельные биты (в соответствии с выражением 1Х = Х), а также для обнуления выходного порта (ХХ = 0).

Рассмотрим несколько примеров формирования управляющего слова для случая, когда выходной порт работает на 8 светодиодных индикаторов. Будем считать, что копия управляющего слова содержится в аккумуляторе.

Пример 1. Погасить светодиоды L0, L5, L7, не изменяя состояния остальных светодиодов, управляемых из порта 1.

ANI 5EH ; установка в нуль Д0, Д5, Д7

OUT 01H ; вывод слова в порт 1

Пример 2. Включить светодиоды L2, L3, L4

ORI 1CH ; установка в "1" Д2, Д3, Д4

OUT 01H ; вывод слова в порт 1

Пример 3. Выдать на светодиоды управляющее слово. Управляющий байт для светодиодов L0L3 хранится в младшей тетраде регистра В, а для светодиодов L4L7 в старшей тетраде регистра С.

MVI A, 0FH ; загрузка в А маски 00001111

ANA B ; маскирование В

MOV B, A ; сохранение в регистре В кода 0000ХХХХ

MOV A, C ;

ANI 0F0H ; наложение маски 11110000

ORA B ; упаковка тетрад

OUT 01H ; выдача управляющего слова в порт 1

Пример 4. Реализовать пульсирующую световую индикацию на выходе Д5, не изменяя состояния остальных светодиодов.

LOOP: XRI 20H ; наложение маски 00100000

OUT 01H ; вывод в порт 1

CALL DELAY ; задержка

JMP LOOP ; цикл

Командой CALL DELAY осуществляется вызов подпрограммы временной задержки необходимой длительности.

2.7. Формирование временной задержки малой длительности.

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

Схема алгоритма такой программы показана на рис.7.

B = X

B = B - 1

нет

да

Рис.7. Схема алгоритма временной задержки.

Программа имеет имя TIME, и в случае вызова ее основной программой по команде CALL TIME должна завершаться командой возвоата RET.

Предположим, что в программе, управляющей работой контроллера, процессор которого работает с частотой 2 МГц (период составляет 0,5 мкс), необходимо реализовать временную задержку 100 мкс. Фрагмент программы, реализующей временную задержку, требуется оформить в виде подпрограммы, т.к. предполагается, что основная программа будет производить к ней многократные обрращения для формирования выходных импульсных сигналов, длительность которых кратна величине 100 мкс.

Текст этой подпрограммы будет следующий:

TIME: MVI B, X ; загрузка В числом Х

COUNT: DCR B ; декремент В

JNZ COUNT ; цикл, если В0

RET ; возврат

Для получения требуемой временной задержки необходимо определить величину числа Х, загружаемого в регистр В, а это выполняется на основании расчета времени выполнения команд, образующих подпрограмму. При этом необходимо учитывать, что команды MVI B, X и RET выполняются однократно, а число повторений команд DCR и JNZ равно числу X.

Кроме того, обращение к подпрограмме осуществляется по команде CALL TIME, время исполнения которой необходимо учитывать при подсчете временной задержки.

В описании команд МП К580ПК80 указывается, за сколько тактов основной частоты синхронизации выполняются команды микропроцессора.

На основании этих данных можем записать:

CALL TIME - 17 тактов – 8,5 мкс

MVI B, X - 7 тактов – 3,5 мкс

DCR B - 5 тактов – 2,5 мкс

JNZ COUNT - 10 тактов – 5 мкс

RET - 10 тактов – 5 мкс

Таким образом, однократно выполняемые программы в этой подпрограмме требуют 17 мкс (8,5 + 3,5 + 5,0). Следовательно, для получения требуемой задержки в 100 мкс необходимо выполнить команды DCR и JNZ столько раз, чтобы время их выполнения составило 83 мкс (100 - 17). Однако, время выполнения этой пары команд составляет 7,5 мкс (2,5 + 5). Поэтому, если принять Х = 10, то возможно получить временую задержку 75 мкс. Недостающие 8 мкс можно четырехкратным исполнением пустой операции NOP, время выполнения которой равно 2 мкс. Исходя из приведенного расчета можно записать утонченный текст подпрограммы

TIME: MVI B, 10H ; загрузка в регистр В числа 10

COUNT: DCR B ; декремент счетчика

JNZ COUNT ; цикл, если В≠0

NOP ; группа пустых операций для

NOP ; точной подстройки времени

NOP ; задержки

NOP ;

RET ; возврат в основную программу.

2.8. Формирование последовательности импульсных сигналов с изменяемой длительностью и скважностью.

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

Пусть требуется на выходе Д1 порта 3 сформировать последовательность управляющих сигналов (рис.8).

U

tмкс

100

200

400

Рис.8. Последовательность управляющих сигналов.

Из временной диаграммы видно, что некоторая произвольная последовательность чередующихся сигналов 0 и 1 формируется на основе периода 100 мкс. Следовательно, программа формирования таких сигналов будет иметь вид:

LXI H, 0800H ; загрузка начального адреса таблицы

; длительностей в (HL)

SEQU: MVI A, 02H ; номер вывода порта

OUTPUT: OUT 03H ; установка 1-го значения сигнала

MOV D,M ; число обращений к задержке

LOOP: CALL TIME ; задержка

DCR D ; декремент счетчика

JNZ LOOP ; если Д0, то вызов подпрограммы

XRI 02H ; изменение значения сигнала на противоположный

INX H

JMP OUTPUT

RET

При циклической форме программы SEQU числа, определяющие длительность периодов 0 и 1 должны храниться в таблице.