Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы НЕРЕТИНА.docx
Скачиваний:
386
Добавлен:
18.03.2015
Размер:
4.91 Mб
Скачать

99. Организация системы ввода-вывода мк к1816ве48

Каналы ввода-вывода. Каналы ввода-вывода служат для организации обмена информацией между контроллером и внешними устройствами. Архитектура ВЕ48 содержит 27 резидентных линий ВВ, организованных в три 8-разрядных порта BUS, P1, P2 и три тестируемые командами условного перехода независимые линии ,,.

Порты P1, P2 имеют одинаковую структурную схему (рис. 5) и могут быть запрограммированы либо на ввод, либо на вывод данных. В режиме вывода эти порты обладают возможностью фиксации данных в так называемых триггерах-защелках. Эти данные статически присутствуют на выводах порта и могут быть изменены только новой выдачей по команде OUTL. Каждая выдача сопровождается занесением данных в защелку порта. При вводе данных информация поступает непосредственно в аккумулятор, минуя выходной буферный регистр. При использовании портов P1, P2 в качестве входов необходимо до подачи входной информации линии портов установить в состояние высокого уровня, выдав на порт байт единиц. В это состояние выводы портов устанавливаются также после подачи сигнала SR. Возможна произвольная смешанная настройка линий портов P1 и P2, когда одни линии порта работают на ввод, другие – на вывод. Для настройки линии на режим ввода необходимо в триггер-защелку этой линии записать «1». Вводимые данные должны присутствовать на линиях порта до тех пор, пока не будут программно прочитаны. Кроме операции ввода-вывода информации предусмотрена возможность выполнения логических операций И, ИЛИ непосредственно на портах P1, P2 с помощью команд

ANL Pi, #data

ORL Pi, #data

Рис. 5. Схема портов P1, P2

Порт BUS отличается от P1 и P2 тем, что в нем применяется выходной буфер с тремя состояниями. Поэтому он не допускает одновременного смешивания ввода и вывода между своими разрядами. Порт BUS может использоваться в качестве статического порта ввода/вывода или двунаправленного порта адреса/данных с тремя состояниями при работе с внешней памятью.

Три линии ввода вывода (,,) опрашиваются при выполнении команд условного перехода для реализации ветвлений программы. Линия ввода-выводапереключается на выход для выдачи тактовых сигналов с частотой, в три раза меньшей частоты задающего генератора, по команде

ENT0 CLK

Линия является входом счетчика внешних событий для таймера-счетчика, если счет разрешен командой

STRT CNT

Линия используется для внешнего аппаратного прерывания.

Расширенное пространство ВВ содержит еще четыре 4-разрядных порта P4…P7, реализуемые внешними средствами. В системе команд предусмотрен ряд операций с прямым доступом к этим портам. Для осуществления этой возможности разработан специальный расширитель ВВ – микросхема 8243.

100. Организация систем подсчета времени, прерываний и синхронизации мк к1816ве48.

Таймер/счетчик. Внутренний 8-разрядный двоичный суммирующий счетчик T может быть использован для формирования временных задержек и для подсчета внешних событий. Организация 8-разрядного таймера/счетчика ИЕ48 представлена на рис. 6.

Рис. 6. Организация таймера/счетчика ВЕ48

Специальная команда пересылки

MOV A, T ; A←T

MOV T, A ; T←A

обеспечивает программный доступ к его содержимому. Устройство работает в двух режимах: таймера и счетчика, в которые оно переводится по командам

START T ; Пуск в режиме таймера

START CNT ; Пуск в режиме счетчика

Устройство останавливает свою работу при подаче сигнала аппаратного сброса RS или выполнении команды

STOP TCNT ; Останов таймера/счетчика

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

JTF addr8 ; Если TF=1, тогда PC0–7←addr8, TF←0

При выполнении команды перехода или при начальной установке по сигналу RS флажок TF сбрасывается.

В режиме счетчика организуется подсчет числа переходов из 1 в 0 на внешнем входе . Максимальная скорость приращения счетчика составляет единицу на три машинных цикла.

В режиме таймера устройство считает метки времени, генерируемые внутренними узлами микроконтроллера. Эти метки являются результатом деления частоты следования машинных циклов ALE на 32. Во время выполнения команды START T этот делитель устанавливается в 0.

Используя начальную загрузку T и обнаруживая установку флажка TF, можно получить паузы от (1/32)ALE до 256(1/32)ALE. Организация пауз вне данного диапазона осуществляется с помощью программных циклов. Более короткие паузы можно также получить в режиме счетчика с T1, равным (1/3)ALE.

Система прерываний. Встроенная в ВЕ48 одноуровневая система прерываний с двумя источниками запросов, имеющими фиксированные векторы прерываний и приоритеты, представлена на рис. 7. Одноуровневость системы означает, что никакие новые запросы не воспринимаются до тех пор, пока не будет обслужен текущий.

Рис. 7. Система прерываний ВЕ48

В системе определены два источника: вход (стартовый адрес программы обслуживания 003H) и переполнение T (адресом программы обслуживания служит 007H). Каждый источник может быть замаскирован независимо от других специальными флажками EX и ET, управляемых командами

EN I ; Разрешение внешнего прерывания INT

DIS I ; Запрет внешнего прерывания INT

EN TCNTI ; Разрешение внутреннего прерывания от T

DIS TCNTI ; Запрет внутреннего прерывания от T

Флажки также сбрасываются при подаче сигнала RS. В случае одновременной фиксации двух запросов приоритет отдается внешнему.

Внешнее прерывание по входу воспринимается, когда на нем появляется напряжение низкого уровня. Линияконтролируется во времяALE в последнем машинном цикле каждой команды. Результат тестирования запоминается во внутреннем триггере внешнего прерывания IX, установка которого инициирует формирования аппаратного эквивалента команды CALL 003H. При выполнении данной команды текущее содержимое PC и флажки PSW запоминаются в стеке, обеспечивая возможность возврата в точку прерывания. Программа обслуживания прерывания должна завершаться командой RETR, восстанавливающей PC и PSW. В начале второго цикла команда RETR разрешает прием новых запросов на прерывание. К этому моменту сигнал запроса должен быть снят внешними средствами. Обычно это делается автоматически в момент обслуживания устройства, выставившего запрос.

Сигнал переполнения от T фиксируется в триггере запроса IT. Он может быть замаскирован программно-управляемым флажком ET. При возникновении разрешенного прерывания генерируется аппаратная команда CALL 007H, сбрасывающая флажок IT.

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

Частота генератора делится на три (рис. 8) в счетчике состояния для получения тактовой частоты (CLK), которая определяет временные соотношения в микроконтроллере. Сигналы CLK могут быть выведены на внешний вывод T0 по команде ENT0 CLK.

Рис. 8. Система синхронизации ВЕ48

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

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

– сбрасывает счетчик команд и указатель стека;

– устанавливает порт BUS в высокоимпедансное состояние (при EMA=0), а порты P1 и P2 – в режим ввода;

– выбирает банк регистров 0 и банк памяти программ 0;

– запрещает прерывания;

– останавливает таймер/счетчик и выдачу синхросигналов на вывод T0;

– сбрасывает триггер флага таймера/счетчика TF и флаги пользователя F0 и F1.