Электронные системы ускорителей



Семинар 4. Контроллеры ввода-вывода

Программируемый контроллер параллельного ввода-вывода

В качестве примера использования контроллера параллельного ввода-вывода данных КР1834ВВ55А (82С55А) взята система сбора данных, структурная схема которой приведена на рис. 4.1. Опрос датчиков происходит по прерыванию от таймера, который, кроме того, сбрасывает коммутатор, подключая датчик под номером 1. Сигнал с датчиков в виде уровня напряжения в диапазоне от 0 до 10 В поступает через коммутатор на аналого-цифровой преобразователь (АЦП). 10-разрядный АЦП после завершения преобразования напряжения в двоичный код вырабатывает сигнал готовности, после чего микропроцессор принимает код, загружает его в память и выдает управляющий сигнал переключения коммутатора на следующий датчик.

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

Программа предполагает использование в системе сбора данных 10-разрядного АЦП, 8 младших разрядов которого принимаются по каналу РВ, а 2 старших разряда - по линиям РС0 и РС1. По линии РС4 осуществляется запуск (сброс и установка разряда РС4) АЦП, а по линии РС2 поступает сигнал готовности АЦП, сброс и установка разряда РС5 используется для выработки сигнала переключения коммутатора.

Код 93H программирует следующие режимы операций контроллера:

канал РВ - ввод в режиме 0;

линии РС2, РС1, РС0 - ввод в режиме 0;

линии РС5, РС4 – вывод в режиме 0;

канал РА - не используется, но настраивается на ввод в режиме 0.

Канал РС в программе имеет адрес FEH, канал РВ - FDH, регистр управления - FFH. Начальному адресу области памяти для размещения данных присвоено символическое имя ADDR.

Рис.4.1

Рис. 4.1. Структурная схема системы сбора данных

Подпрограмма обработки прерывания от таймера, написанная на языке ассемблера для микроконтроллера КР1821ВМ85 (80С85А) для системы сбора аналоговых данных имеет следующий вид:

МеткаМнемокодКомментарий
IOAC:DI;Запрещение прерывания
MVI A,93H;Код режима контроллера
OUT FFH;Загрузка режима в регистр управляющего слова
LXI H,ADDR;Загрузка начального адреса буфера данных
MVI D,N;Установка счетчика
MVI A,00001001B;Сигнал запуска АЦП (активный H)
OUT FFH;Установка разряда РС4
WAIT:IN FEH;Ввод из порта С
ANI 04H ;Проверка бита готовности АЦП (PC2)
JZ WAIT;Если АЦП не готов
MVI A,00001000B;Сброс сигнала запуска АЦП (L)
OUT FFH;Установка разряда РС4
IN FDH ;Ввод 8 младших разрядов АЦП из порта В
MOV M,A;Запись в буфер памяти
INX H;Следующая ячейка памяти
IN FEH;Ввод из порта С
ANI 03 ;Выделение двух старших разрядов АЦП
MOV M,A;Запись в буфер памяти
INX H;Следующая ячейка памяти
DCR D;Изменение счетчика
JZ EXIT;Закончить обработку
MVI A,00001010B;Сброс сигнала переключения коммутатора (L)
OUT FFH;Установка разряда РС5
MVI A,00001011B;Сигнал переключения коммутатора (H)
OUT FFH;Установка разряда РС5
MVI A,00001001B;Сигнал запуска АЦП (H)
JMP WAIT;Переход на следующий датчик
EХIT:EI;Разрешение прерывания
RET;Возврат из подпрограммы

Задание для самостоятельной работы

1. Разработать электрическую схему микроконтроллерного устройства сбора данных на базе микроконтроллера КР1821ВМ85 (80С85А) в составе: программируемый контроллер параллельного ввода-вывода КР1834ВВ55А (82С55А) с дешифратором адреса (FCН) для его выбора. Интерфейсные линии управления коммутатором и АЦП, линии данных подсоединить к разъему.

Программируемый контроллер последовательного ввода-вывода

Фрагмент программы на ассемблере для микроконтроллера КР1821ВМ85 (80С85А), приведенный ниже, представляет один из вариантов организации асинхронной передачи элементов массива по последовательному каналу, используя программируемый контроллер последовательного ввода-вывода КР1834ВВ51А (82С51А), иначе, универсальный синхронно-асинхронный приемопередатчик (УСАПП).

Для ввода в УСАПП инструкций и вывода данных используются символические адреса INSTR и DATA, соответственно. Идентификатор N обозначает число элементов массива данных, а ADDR - адрес начала буфера данных в памяти. При возникновении ошибки четности происходит обращение к подпрограмме обработки ошибки, расположенной по адресу ERR (в данном фрагменте отсутствует).

МеткаМнемокодКомментарий
BEGIN DI;Запрещение прерывания
MVI A,40H;Запись инструкции программного сброса
OUT INSTR
MVI A,7DH ;Запись инструкции режима
OUT INSTR
MVI A,31H;Запись инструкции команды передачи
OUT INSTR
MVI B,N;Установка счетчика массива данных
LXI H,ADDR;Загрузка начального адреса массива
ENTR:MOV A,M;Передача элемента массива в аккумулятор
OUT DATA;Запись элемента массива в УСАПП
WAIT:IN INSTR;Слово состояния УСАПП
MOV C,A;Сохранение слова состояния
ANI 08;Выделение бита ошибки четности
CNZ ERR;Если ошибка, то на программу обработки
MOV A,C ;Восстановление слова состояния
RAR;Контроль готовности передатчика
JNC WAIT;Если не готов, то повтор
DCR B;Изменение счетчика элементов массива
JZ EXIT;Если все, то выход из программы
INX H;Следующий элемент массива
JMP ENTR;Повторение цикла передачи
EXIT:MVI A,38H;Запись инструкции команды конца передачи
OUT INSTR
EI;Разрешение прерывания

Задание для самостоятельной работы

По значению кода инструкции 7DН определить режим работы контроллера КР1834ВВ51А (82С51А Fig.2).