Motorola MC68HC705C8

0

0

0

0

0

0

0

0

После RESET

               

Порт (DR)

Регистр порта не изменяется после RESET.

P7 P6 P5 P4 P3 P2 P1 P0 Контакты

Рис. 2-1 Схема порта ввода/вывода.

Канал настроен на вывод информации, если соответствующий бит в DDR установлен в 1. Если бит сброшен, то канал настроен на ввод (так предусмотрено при начальной установке). То есть разные каналы одного и того же порта могут быть настроены на ввод или вывод информации одновременно независимо друг от друга. На рис. 2-2 представлена структура канала параллельного порта, а в таблице 2-1 приведены различные режимы работы линии ввода-вывода.

Таблица 2-1. Функции контактов ввода-вывода.

R/W*

DDR

Функция

0

0

Режим ввода. Данные записываются в выходную защелку

0

1

Данные записываются в выходную защелку и передаются на контакт.

1

0

Читается состояние контакта

1

1

Контакт в режиме вывода. Читаются данные из защелки.

*R/W - внутренний сигнал, указывающий на чтение/запись данных.

Из рисунка и таблицы видно, что когда канал настраивается на вывод, чтение регистра данных приводит к чтению данных из выходного триггера, а не с вывода непосредственно. Регистры направления данных расположены по адресам 04Н, 05Н, 06Н для портов А, В и С, соответственно. Регистры данных расположены по адресам 00Н, 01Н, 02Н в той же последовательности.

1. Буфер вывода, разрешает вывод, когда соответствующий бит в регистре DDR установлен в 1 (вывод данных).

2. Буфер ввода, включен, когда соответствующий бит в регистре DDR сброшен на 0 (ввод данных).

3. Буфер ввода, включен, когда соответствующий бит в регистре DDR установлен в 1 (вывод данных).

Рис. 2-2 Структура канала параллельного порта

2.2 Система прерываний.

МС68НС705С8 имеет 5 типов прерываний, включающих 4 маскируемых аппаратных прерывания и одно немаскируемое программное прерывание. К аппаратным прерываниям относятся:

-внешнее прерывание, поступающее через вывод IRQ/ микросхемы

-прерывание от последовательного интерфейса связи

-прерывание от последовательного периферийного интерфейса

-прерывание от таймера

При возникновении прерывания процессор сохраняет содержимое регистров в стеке, и затем устанавливает бит маски прерываний I в регистре признаков, запрещая последующие прерывания. Команда возврата из прерывания (RTI), которая является последней командой в программе обработки любого прерывания, восстанавливает содержимое регистров из стека. Порядок загрузки и выгрузки регистров из стека показан на рис. 2-3.

В отличие от RESET, прерывание не вызывает прекращения выполнения текущей команды, обработка прерывания начинается лишь после ее завершения.

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

Рис. 2-3 Порядок загрузки регистров в стек и

выгрузки их из стека.

На рисунке 2-4 показан процесс обработки прерывания, а в таблице 2-2 даны векторы всех прерываний. В первом столбце таблицы указан регистр статуса, в котором находится соответствующий флаг прерывания, во втором столбце даны названия флагов прерываний. В третьем столбце кратко описана причина возникновения прерывания, в четвертом столбце указано устройство-источник прерывания, и в пятом столбце приведен адрес по которому хранится вектор прерывания. Важно отметить, что бит маски прерываний (бит I в регистре признаков) будет сброшен только в том случае, если соответствующий бит в стеке хранит 0.

Рассмотрим подробнее каждый тип прерывания.

Программное прерывание является результатом выполнения команды SWI (SoftWare Interrupt). Оно возникает вне зависимости от состояния бита I. Вектор прерывания содержится в ячейках памяти с адресами 1FFCH и 1FFDH.

Внешнее прерывание происходит если бит маски прерываний (бит I) сброшен и на внешний вывод IRQ/ поступает сигнал активного уровня (режим срабатывания задается записью в бит IRQ регистра конфигурации, см. п. 1.3). Затем текущее состояние процессора запоминается в стеке, и бит I устанавливается в 1 для маскирования всех прерываний до тех пор, пока обслуживается внешнее.

Прерывание от таймера может быть вызвано тремя флагами, как уже упоминалось ранее. Эти три флага расположены в регистре статуса таймера, и имеют один и тот же вектор (см. таблицу 2-2). Каждый флаг имеет соответствующий управляющий бит (ICIE, OCIE и TOIE) в регистре управления таймером. Установка этих битов разрешает соответствующее прерывание, сброс-запрещает. Подробнее назначение каждого флага описано в главе 2.3 "Таймер".


Страница: