Периферийные средства ВЕ51
Порты ввода-вывода. Подсистема ВВ микроконтроллера ВЕ51 размещается непосредственно на кристалле. Для ВВ данных и управления процессом их передачи в состав МК введен ряд портов данных и регистров управления/состояния, совокупность которых образует набор специальных регистров (рис. 4.22).
Рис. 4.22. Специальные регистры ВЕ51
Физическая система ВВ микроконтроллера ВЕ51 состоит из четырех двунаправленных 8-разрядных портов Р0—Р3. Все порты ВВ отображены в пространстве внутренней памяти DSEG по адресам 80H, 90H, 0А0Н, 0В0Н и ничем не отличаются от обычных ячеек памяти. Отказ от изолированного пространства ВВ, используемого в архитектуре ВЕ48, позволил увеличить вычислительную эффективность МС интенсивного ВВ, привел к более регулярной структуре набора команд ВЕ51. Если ранее для увеличения возможностей арифметическо-логической обработки данных ВВ было необходимо вводить ряд новых команд:
ANL ORL | port, A port, A | ;portport AND A ;portport OR A |
то теперь любая команда с операндом из внутренней памяти может быть применена к содержимому портов Р0—Р3.
Кроме того, порты Р0—Р3 совмещены с битовым пространством BSEG, что обеспечивает доступ к отдельным его разрядам независимо от других. Порты Р0—Р3 занимают адреса BSEG: 80Н—87Н, 90Н—97Н, 0А0Н—0А7Н и 0В0Н—0В7Н соответственно.
Расширение пространства ВВ может быть выполнено за счет области XSEG или другими средствами с помощью самих портов Р0—Р3 и SBUF.
При обращении к внешней памяти программ или данных порты Р0, Р2 выполняют функции системных шин AD и АВ соответственно. Младший байт адреса и данные передаются через Р0 в мультиплексном режиме: сначала выводится адрес, а затем для передачи данных используется порт. Старший байт адреса формируется на Р2. Линии порта Р3 реализуют управление циклами обмена и другие специальные функции аппаратного уровня:
Р3.0 | R´D | Вход приемника последовательного канала |
Р3.1 | T´D | Выход передатчика последовательного канала |
Р3.2 | Вход запроса на прерывание 0 | |
Р3.3 | Вход запроса на прерывание 1 | |
Р3.4 Р3.5 | Т0 T1 | Внешний вход таймера/счетчика 0 Внешний вход таймера/счетчика 1 |
Р3.6 | Строб записи в XSEG | |
Р3.7 | Строб чтения XSEG |
В случае МК 8052 две линии Р1 также выполняют специальную функцию
P1.0 Р1.1 | Т2 Т2ЕХ | Внешний вход таймера/счетчика 2 Вход управления автоматической перезагрузкой таймера/счетчика 2 |
Порты Р0—Р3 имеют организацию, во многом схожую с организацией портов ВЕ48 (см. рис. 4.6). Отличие состоит лишь в выходном буфере, который значительно модифицирован. Так, в портах Р0 и Р2 в выходном буфере предусмотрены ключи, соединяющие их выводы с внутренними шинами AD и А соответственно. Поэтому при обращении к внешним средствам содержимое выходного регистра порта Р2 не изменяется, а содержимое Р0 становится равным 0FFH. Буферные каскады порта Р3 построены так, что для выполнения специальной операции соответствующий разряд выходного регистра Р3 должен быть установлен в 1. Иначе на выходе будет 0.
Совмещение специальных функций с портом Р3 позволило расширить число портов ВВ с трех для ВЕ48 до четырех для ВЕ51 при тех же ограничениях на ширину физического интерфейса. Однако это усложнило выходной буфер Р3.
Порты Р1—Р3 имеют встроенную нагрузку, тогда как для порта Р0, выполненного по схеме с открытым коллектором, требуется внешняя нагрузка. Каждый вывод портов Р0—Р3 может быть использован в качестве выходного независимо от других. Для перевода какого-либо вывода в режим входа в соответствующий разряд выходного регистра должна быть записана 1. При сбросе МК состояние всех портов устанавливается равным 0FFH.
Следует отметить, что в отличие от ВЕ48 в МК ВЕ51 все 32 вывода портов Р0—Р3 тестируются индивидуально с помощью условных команд ветвления:
JB | bit, rel | ;Если BSEG(bit) = 1, то SJMP rel |
JNB | bit, rel | ;Если BSEG(bit) = 0, то SJMP rel |
JBC | bit, rel | ;Если BSEG(bit) = 1, то SJMP rel ;и BSEG(bit)0 |
Последняя команда после тестирования всегда на выводе порта, как и в любом другом разряде из пространства BSEG, устанавливает 0.
Последовательный канал связи. В состав ВЕ51/8052 входит дуплексный канал последовательной связи с буферизацией, который может быть запрограммирован для работы в одном из четырех режимов:
режим 0—синхронный последовательный ВВ со скоростью OSC/12;
режим 1—асинхронный с 10-битовым кадром и переменной скоростью передачи;
режим 2—асинхронный с 11-битовым кадром и фиксированной скоростью передачи OSC/32 или OSC/64;
режим 3—асинхронный с 11-битовым кадром и переменной скоростью передачи.
Входные и выходные данные хранятся в буферном регистре SBUF с адресом 99Н. Управление работой приемопередатчиков осуществляется через слово управления и состояния SCON, расположенное в регистре по адресу 98Н:
SCON.0 SCON.1 SCON.2 SCON.3 SCON.4 SCON.5 SCON.6 SCON.7 | RI TI RВ8 TB8 REN SM2 SM1 SM0 | Флаг прерывания приемника Флаг прерывания передатчика Восьмой бит приемника в режимах 2 и 3. В режиме 1, если SM2 = 0, то отображает стоп-бит. В режиме 0 не используется Восьмой бит передатчика в режимах 2 и 3 Разрешение приема Запрещение приема кадров с нулевым восьмым битом данных. В режиме 0 должен быть сброшен Младший разряд для кодирования номера режима Старший разряд для кодирования номера режима: | |||||||
SM0 | SM1 | Режим | SM0 | SM1 | Режим | ||||
Таймеры/счетчики. К стандартным средствам поддержки режима реального времени относятся таймеры/счетчики и подсистема прерываний. Если таймеры необходимы для организации системных меток реального времени и отработки временных интервалов, то подсистема прерываний обеспечивает своевременную реакцию МК на асинхронные события, происходящие как внутри МС, так и вне ее.
В состав ВЕ51 входят два 16-разрядных таймера/счетчика СТ0, СТ1. Еще один (СТ2) добавлен в архитектуре 8052. Состояние таймеров/счетчиков отражается программно-доступными регистровыми парами (TH0, TL0), (TH1, TL1) и (ТН2, TL2) соответственно, размещенными в пространстве DSEG по адресам (8СН, 8АН), (8DH, 8BH) и (0CDH, 0ССН).
Таймеры/счетчики СТ0—СТ2 могут быть запрограммированы для работы либо в качестве таймера, либо в качестве счетчика. Функция таймера состоит в счете числа машинных циклов, следующих с частотой OSC/12. Функция счетчика заключается в отслеживании числа переходов из 1 в 0 на соответствующих входах Т0, T1, T2.
Управление режимом работы СТ0, СТ1 осуществляет регистр TMOD (Timer/Counter Mode), который расположен по адресу 89Н. Регистр разбит на два 4-разрядиых подрегистра T0MOD и Т1MOD, которые ответственны за управление СТ0 и СТ1 соответственно:
TMOD.0 | М0 | Младший бит поля управления режимом СТ0 | |||||||
TMOD.1 | M1 | Старший бит поля управления режимом СТ0: | |||||||
М1 | M0 | Режим | М1 | M0 | Режим | ||||
TMOD.2 | Выбор функции таймера или счетчика СТ0. При = 0 выбирается функция таймера, в противном случае счетчика | ||||||||
TMOD.3 | GATE | Флажок управления работой СТ0. При GATE = 1 работа разрешается, если = 1 и TR0 = 1 (см. TCON). При GATE = 0 работа счетчика зависит только от состояния TR0 | |||||||
TMOD.4 | М0 | То же. но для СТ1 | |||||||
TMOD.5 | M1 | То же. но для СТ1 | |||||||
TMOD.6 | C/T | То же. но для СТ1 | |||||||
TMOD.7 | GATE | То же. но для СТ1 | |||||||
За управление СТ0, СТ1 также ответствен регистр TCON (Timer/Counter Control), расположенный по адресу 88Н:
TCON.0 TCON.1 TCON.2 TCON.3 TCON.4 TCON.5 TCON.6 TCON.7 | IT0 IE0 IT1 IE1 TR0 TF0 TR1 TF1 | Управление типом входа . При IТ0 = 0 программируется динамический по срезу тип входа, в противном случае—статический |
Флажок запроса прерывания при динамическом входе. При подтверждении прерывания сбрасывается То же, что и IT0, но для То же, что и IE0, но для Флажок программного запуска/останова СТ0 Флажок переполнения СТ0, который вызывает запрос прерывания. При подтверждении прерывания сбрасывается То же, что и TR0, но для СТ1 То же, что и TF0, но для СТ1 |
Младшая половина регистра используется для управления входами запроса на прерывания и , старшая—для управления непосредственно СТ0 и СТ1.
Для управления работой СТ2 служит регистр T2CON (Timer/ Counter 2 Control), расположенный по адресу 0С8Н:
T2CON.0 | Флажок захвата/автозагрузки СТ2. При = 1 захват текущего состояния СТ2 осуществляется по срезу Т2ЕХ, если EXEN2 = 1. При CP/RL2 = 0 разрешается автозагрузка СТ2, если он переполнен или по срезу Т2ЕХ, если EXEN2 = 1. Этот флажок не принимается во внимание при RCLK = 1 или TCLK = 1. т.е. когда СТ2 работает в качестве генератора скорости | |
T2CON.1 | Управление функцией таймера ( = 0) или счетчика ( = 1) | |
T2CON.2 | TR2 | Программный запуск СТ2 при TR2 = 1 и останов в противном случае |
T2CON.3 | EXEN2 | Флажок разрешения динамическому по срезу входу Т2ЕХ осуществлять захват/автозагрузку СТ2, если он не работает в режиме генератора скорости последовательного порта. Функция активируется при EXEN2 = 1 |
T2CON.4 | TCLK | При TCLK = 1 CT2 используется передатчиком последовательного канала, работающего в режиме 1 или 3, в качестве генератора скорости передачи. При TCLK = 0 генератором служит СТ1 |
T2CON.5 | RCLK | То же. что и TCLK, но для приемника последовательного канала |
T2CON.6 | EXF2 | Флажок выполнения захвата/автозагрузки, вызванного изменением состояния на Т2ЕХ при EXEN2 = 1. При разрешенном прерывании вызывает запрос. Сбрасывается только программным способом |
T2CON.7 | TF2 | Флажок переполнения CT2. Также вызывает запрос на прерывание. Функция установки подавляется при TCLK = 1 или RCLK = 1 |
При захвате текущего состояния или при повторной автозагрузке в управлении работой CT2 участвует также 16-разрядный регистр RCAP2 (Reload/Capture Timer/Counter 2), расположенный в двух соседних 8-разрядных ячейках с адресами 0САН (RCAP2L) и 0СВН (RCAP2H).
Система прерываний. Архитектура ВЕ51 поддерживает двухуровневую приоритетную систему прерываний с пятью (или шестью в случае 8052) источниками запросов на обслуживание, имеющими фиксированные векторы прерываний. Программное управление системой осуществляется через два 8-разрядных регистра: IP (Interrupt Priority)—регистр приоритета прерываний и IE (Interrupt Enable)—регистр разрешения прерываний. Условная схема системы прерываний представлена на рис. 4.23.
Рис. 4.23. Схема системы прерываний ВЕ51
Для приема внешних запросов на прерывание служат линии и , которые могут быть запрограммированы на срабатывание как по переходу из одного состояния в другое, так и по уровню входного сигнала независимо друг от друга. Управление типом входа осуществляется флажками IT0/TCON.0 (Interrupt Type 0) и IT1/TCON.2. При ITi = 1 устанавливается режим срабатывания по переходу из 1 в 0, в противном случае—по напряжению низкого уровня на входе , i = 0—1. Запросы на прерывание от внешних источников или устанавливают флажки IE0/TCON.1 (Interrupt Edge 0) и IE1/TCON.3. В случае работы по переходу эти флажки сбрасываются автоматически при входе в соответствующую процедуру обслуживания прерывания. В случае режима работы по уровню флажки отслеживают состояние сигналов на входных линиях и , повторяя все их изменения.
Источниками внутренних запросов могут быть: флажок TF0/TCON.5 (Timer Flag 0)—признак переполнения СТ0, флажок TF1/TCON.7—признак переполнения СТ1, а также флажок TI/SCON.1 (Transmit Interrupt) или флажок RI/SCON.0 (Receive Interrupt). Еще одним источником внутреннего прерывания в случае 8052 могут быть флажки TF2—признак переполнения CT2 или EXF2, входящие в состав T2CON. Флажки внутренних запросов TF0 и TF1 очищаются автоматически при переходе к соответствующей процедуре обслуживания, тогда как состояние флажков TI, RI, а также TF2, EXF2 не изменяется. Процедурой обслуживания прерываний эта информация используется для уточнения источника запроса по методу поллинга, а затем сбрасывается с помощью подходящей для этого команды.
Все флажки, которые фиксируют запросы на прерывания, могут быть установлены программным способом, что дает возможность реализовать вызов соответствующих процедур обслуживания непосредственно из программ. Этому способствует дублирование входов и программно-управляемыми флажками IE0 и IE1. Каждый из пяти (или шести) источников прерываний может быть замаскирован независимо от других с помощью регистра маски IЕ:
IЕ.0 | ЕХ0 | Маска IE0 или |
IЕ.1 | ЕТ0 | Маска TF0 |
IE.2 | ЕХ1 | Маска IE1 или |
IE.3 | ЕТ1 | Маска TF1 |
IЕ.4 | ES | Маска TI + RI |
IE.5 | ЕТ2 | Маска TF2 + EXF2 |
IЕ.6 | — | Не используется |
IЕ.7 | ЕА | Общее разрешение прерываний |
Старший разряд регистра используется для блокировки или разрешения работы всей системы прерываний. Запрет прерываний 0, разрешение―1.
Каждому из пяти (или шести) источников прерываний присваивается один из двух уровней приоритета сбросом или установкой соответствующего разряда в регистре приоритета IP:
IP.0 | РХ0 | Приоритет IE0 или |
IP.1 | РТ0 | Приоритет TF0 |
IP.2 | РХ1 | Приоритет IE1 или |
IP.3 | РТ1 | Приоритет TF1 |
IP.4 | PS | Приоритет TI + RI |
IP.5 | РТ2 | Приоритет TF2 + EXF2 |
IP.6 | — | Не используется |
IP.7 | — | Не используется |
Установка разряда в 1 соответствует высокому приоритету, в 0—низкому. Процедура обслуживания низкоприоритетного уровня может быть прервана запросом более высокого уровня. Высокоуровневое прерывание не может быть остановлено никаким другим. Для решения конфликтных ситуаций одновременного появления нескольких запросов одного уровня используется схема вторичного арбитража, устанавливающая строгое отношение предпочтения между всеми источниками запросов:
Источник | Приоритет |
IE0 | 0 (высший) |
TF0 | |
IE1 | |
TF1 | |
RI + TI | |
TF2 + EXF2 | 5 (низший) |
Запросы на прерывания могут быть приняты к обслуживанию в конце каждого командного цикла, за исключением исполнения RETI или команды с любым видом доступа к регистрам IE и IP. Данное исключение гарантирует выполнение хотя бы еще одной инструкции после команд обращения к IE или IP и RETI, прежде чем возникнет новое прерывание программы. При фиксации запроса аппаратура МК генерирует команду
LCALL vect
обеспечивая переход к стартовому адресу vect соответствующей процедуры обслуживания. С каждым источником связан свой стартовый адрес (вектор прерывания):
ЕХТI0 | IE0 | 0003Н |
TIMER0 | TF0 | 000ВН |
EXTI1 | ТЕ1 | 0013Н |
TIMER1 | TF1 | 001ВН |
SINT | RI + TI | 0023Н |
TIMER2 | TF2 + EXF2 | 002ВН |
В некоторых случаях эта команда одновременно с переходом к стартовому адресу сбрасывает флажок, вызвавший данное прерывание. При переходе к процедуре обслуживания текущее состояние PC загружается в стек, обеспечивая возврат по команде RETI, заканчивающей каждую процедуру обслуживания. Эта команда отличается от обычной инструкции возврата RET тем, что сообщает системе прерываний об окончании текущей процедуры обслуживания, что необходимо для управления двухуровневой системой приоритетов.
В состав ВЕ51 входит еще один общецелевой регистр управления PCON (Power Control), расположенный по адресу 87Н. Состав этого регистра зависит от технологии изготовления МК. При n-МОП-технологии PCON содержит всего лишь один флажок SMOD. Полный состав флажков можно встретить только в КМОП-вариантах:
PCON.0 | IDL | Установка бита активизирует режим свободного состояния |
PCON.1 | PD | Установка бита активизирует режим пониженной мощности |
PCON.2 | GF0 | Общецелевой флажок |
PCON.3 | GF1 | Общецелевой флажок |
PCON.4 | — | Не используется |
PCON.5 | — | Не используется |
PCON.6 | — | Не используется |
PCON.7 | SMOD | Активизирует двойную скорость приема/передачи последовательного канала, работающего в режимах 1, 2 и 3 |
Все управляющие регистры кроме PCON совмещены с пространством BSEG, что обеспечивает доступ к отдельным их разрядам с помощью команд булевой группы. При сбросе МК управляющие регистры принимают нулевые значения за исключением следующих:
IР (ВЕ51) IP (BE52) IE (BЕ51) IЕ (ВЕ52) | XXX00000В ХХ000000В 0XX0000B 0х000000в | SBUF PCON (n-МОП) PCON (KMOП) | ххххххххв 0хххххххв 0ххх0000в |
Дата добавления: 2019-02-07; просмотров: 484;