Блок последовательного интерфейса и прерываний
Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода/вывода информации по последовательному каналу и обработки прерываний.
В состав блока входят:
1. Буфер ПИП;
2. Логика управления ПИП;
3. Регистр управления (SCON);
4. Приемо/передатчик последовательного порта;
5. Регистр приоритетов прерываний;
6. Регистр разрешения прерываний;
7. Схема выработки вектора.
Буфер ПИП обеспечивает побитовый обмен информацией между внутренней шиной данных МП и шиной ПИП.
Логика управления ПИП предназначена для выработки сигналов управления последовательного порта задавая 1 из 4 возможных режимов его работы, и организации прерывания программ.
Последовательный порт МК51 может работать в одном из 4 режимов:
Режим 0. Информация передается и принимается через вход приемника RxD (вывод Р3.0). Через выход передатчика TxD (вывод Р3.1) выдаются импульсы синхронизации, стробирующие каждый передаваемый или принимаемый бит информации. Формат посылки – 8 бит. Частота приема и передачи равна .
Режим 1. Информация передается через выход TxD, а принимается через вход приемника RxD. Формат посылки – 10 бит: старт-бит (ноль), восемь бит данных и стоп-бит (единица). Частота приема и передачи задается Т/С 1.
Режим 2. Информация передается через выход передатчика TxD, а принимается через вход приемника RxD. Формат посылки 11 бит: старт-бит (ноль), восемь бит данных, программируемый девятый бит и стоп-бит (единица). Передаваемый девятый бит данных принимает значение бита ТВ8 из регистра специальных функций SCON. Бит ТВ8 в регистре SCON может быть программно установлен в 0 или в 1, или в него, к примеру, можно записать значение флага Р из регистра PSW для повышения достоверности принимаемой информации (контроль по четности). При приеме 9-ый бит принятой посылки записывается в бит RB8 регистра SCON. Частота приема и передачи в режиме 2 задается программно и может быть равна (SMOD=1) или (SMOD=0).
Режим 3 полностью идентичен режиму 2, за исключением того, что частота приема и передачи задается с помощью Т/С1.
Регистр управления (SCON) предназначен для приема и хранения 8-ми разрядного управляющего слова последовательным портом. Обозначение разрядов регистра, их символьные имена и назначения приведены в табл. 1.8.
Таблица 1.8. Назначение разрядов регистра SCON
Разряд | Имя | Назначение |
SCON.7 SCON.6 | SM0 SM1 | Биты управления режимом работы УАПП (устанавливаются и сбрасываются программно) |
SM0 | SM1 | Режим работы УАПП |
Сдвиговый регистр | ||
8 битовый приемопередатчик, изменяемая скорость передачи | ||
9 битовый приемопередатчик. Фиксированная скорость передачи | ||
9 битовый приемопередатчик, изменяемая скорость передачи | ||
SCON.5 | SM2 | Бит управления режимом УАПП (разрешения многопроцессорной работы). В режимах 2 и 3 при SM2=1 флаг RI не активизируется, если девятый принятый бит данных равен «0». В режиме 1 при SM2=1 флаг RI не активен, если не принят стоп-бит, равный «1». В режиме «0» бит SM2 должен быть установлен в «0». |
SCON.4 | REN | Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных |
SCON.3 | TB8 | Девятый бит передаваемых данных в режиме 2 и 3. Установка/сброс программно |
SCON.2 | RB8 | Девятый бит принятых данных в режиме 2 и 3. В режиме 1, если SM2=0, RB8 является принятым стоп-битом. В режиме 0 бит RB8 не используется. |
SCON.1 | TI | Флаг прерывания передатчика. Устанавливается аппаратно в конце передачи восьмого бита в режиме 0 или в начале стоп-бита в других режимах, сбрасывается программно. |
SCON.0 | RI | Флаг прерывания приемника. Устанавливается аппаратно в конце приема восьмого бита в режиме 0 или через половину интервала стоп-бита в режиме 1-3 при SM2=0. При SM2=1 смотри описание бита SM2. |
Буферы приемника и передатчика (БПП) (на структурной схеме не показаны) предназначены для приема/передачи данных с внутренней шины данных в последовательный порт. При программном доступе имеют одинаковые символические имена (SBUF) и адрес (99H) . Если команда использует SBUF как регистр источника, то обращение происходит к буферу приемника. Если же команда использует SBUF как регистр-приемник, то обращение происходит к буферу передатчика.
Во всех 4-х режимах работы УАПП передача инициируется любой командой, которая использует SBUF как регистр-приемник. Прием в режиме 0 инициируется условием RI=0 и REN=1 . В остальных режимах прием инициируется приходом старт-бита, если REN=1 .
Приемник/передатчик последовательного порта предназначен для приема последовательного потока символов с входа последовательного порта, выделения данных и выдачи их в буфер приемника. В режиме передачи он принимает последовательные данные с буфера передатчика, преобразует их в последовательный поток символов и выдает их на выход последовательного порта.
Скорость приема/передачи
Скорость приема/передачи в различных режимах работы УАПП определяется различными способами.
В режиме 0 частота передачи зависит только от частоты кварцевого резонатора и равна , т.е. за один машинный цикл последовательный порт передает 1 бит информации.
В режимах 1, 2, 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре управления PCON.
В режиме 2 частота передачи определяется согласно выражению:
Скорость последовательного обмена УАПП в режимах 1 и 3 определяется по формуле:
,
где - значение бита SMOD регистра управления мощностью PCON;
- частота синхронизации МК-51;
- десятичное значение содержимого регистра TH1.
Если необходим последовательный обмен с очень низкой скоростью, то можно использовать Т/С1 в режиме 16-ти разрядного таймера (режим 1), разрешив при этом прерывание от Т/С1 с целью перезагрузки TH1 и TL1 в подпрограмме обслуживания прерывания.
Для использования Т/С1 в качестве источника для задания частот и необходимо:
1. Запретить прерывания от Т/С1;
2. Запрограммировать работу Т/С1 в качестве таймера или счетчика, установив при этом для него один из режимов 0, 1 или 2;
3. Запустить Т/С1 на счет.
Обычно для установки скорости передачи данных через последовательный порт таймер Т/С1 включается в режим 2 (режим автозагрузки).
В табл.1.9 приведен ряд стандартных скоростей последовательного обмена и то, как они могут быть реализованы с помощью T/C1 в режимах 1 и 3 .
Таблица 1.9
Режим работы | Скорость обмена, | , МГц | Бит SMOD | Разряды TMOD | Регистр ТН1 | Примечание | ||
УАПП | Кбод | C/T | М1 | М0 | ||||
1,3 | Макс 1000 Макс 375 62,5 19,2 9,6 4,8 2,4 1,2 0,1375 0,110 0,110 | 11,059 11,059 11,059 11,059 11,059 11,986 | Х | Х Х | х х FFH FDH FDH FAH E4H E8H 18H 72H FEH | TL1=EBH |
Регистр приоритетов прерываний (IP) предназначен для установки уровня приоритетов прерываний для каждого из пяти возможных источников прерываний. Обозначение, номер разряда и их назначение приведены в табл.1.10.
Таблица 1.10. Назначение разрядов регистра приоритетов прерываний IP
Разряд | Имя | Назначение |
IP.7 IP.6 IP.5 | - - - | Не используются |
IP.4 | PS | Бит приоритета УАПП. Установка/сброс программой для присваивания прерыванию от УАПП высшего/низшего приоритета. |
IP.3 | PT1 | Бит приоритета Т/C1. Установка/сброс программой для присваивания прерыванию от Т/C1 высшего/низшего приоритета. |
IP.2 | PX1 | Бит приоритета внешнего прерывания . Установка/сброс программой для присваивания прерыванию от высшего/ низшего приоритета. |
IP.1 | PT0 | Бит приоритета Т/C0. Работает аналогично PT1. |
IP.0 | PX0 | Бит приоритета внешнего прерывания . Работает аналогично PX1. |
Регистр разрешения прерываний (IE) предназначен для разрешения или запрещения прерываний от соответствующих источников. Обозначение разрядов IE и их назначение приведено в табл.1.11.
Таблица 1.11. Назначение разрядов регистра разрешения прерываний IE
Разряд | Имя | Назначение |
IE.7 | EA | Снятие блокировки прерываний. Сбрасывается программно для запрета всех прерываний независимо от состояний IE4…IE0 . |
IE.6 IE.5 | - - | Не используются |
IE.4 | ES | Управление прерыванием от УАПП. ES=1 - разрешено, ES=0 - запрещено . |
IE.3 | ET1 | Управление прерыванием от Т/C1. EТ=1 - разрешено, ET=0 - запрещено . |
IE.2 | EX1 | Управление прерыванием от внешнего источника . Работает аналогично ET1. |
IE.1 | ET0 | Управление прерыванием от Т/C0. Работает аналогично ЕT1 . |
IE.0 | EX0 | Управление прерыванием от внешнего источника . Работает аналогично ET1. |
Логика обработки флагов прерываний осуществляет приоритетный выбор запроса прерывания в соответствии с рис.1.11, сброс его флага инициирует выработку аппаратно-реализованной команды перехода к программе обслуживания прерываний.
Рис. 1.11. Система прерываний МК51
Схема выработки вектора прерываний предназначена для формирования двухбайтового адреса подпрограммы обслуживания прерывания. Адреса подпрограмм и источники прерываний приведены в табл.1.12.
Таблица 1.12
Источник прерывания | Вектор прерывания |
Внешнее прерывание Таймер/счетчик 0 Внешнее прерывание Таймер/счетчик 1 УАПП | 0003H 000BH 0013H 001BH 0023H |
При выполнении подпрограммы прерывания система прерываний формирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:
- в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;
- текущий машинный цикл – не последний в цикле выполняемой команды;
- выполняется команда RETI или любая команда, связанная с обращением к регистрам IЕ или IP.
Если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается.
По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC), а в него загружает адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа окончания процедуры обслуживания данного прерывания.
Дата добавления: 2015-09-11; просмотров: 1333;