Федеральное агентство по образованию бийский технологический институт (филиал)
Вид материала | Документы |
1.3Периферийные устройства микроконтроллера 1.3.1Параллельные порты ввода-вывода 1.3.2Таймер-счетчик Т/С0 1.3.3Таймер-счетчик Т/С1 1.3.4Последовательный порт 1.3.5Контроллер прерываний Контрольные вопросы |
- Федеральное агентство по образованию бийский технологический институт (филиал), 981.77kb.
- Федеральное агентство по образованию Бийский технологический институт (филиал), 2694.55kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 2134.54kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 1660.78kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 1946.38kb.
- Федеральное агентство по образованию бийский технологический институт (филиал), 3460.44kb.
- Решением Ученого совета, 125.93kb.
- Федеральная целевая программа "Развитие электронной компонентной базы и радиоэлектроники", 3538.74kb.
- Бийский технологический институт (филиал), 2586.35kb.
- Министерство образования и науки федеральное агентство по образованию майкопский государственный, 102.13kb.
1.3Периферийные устройства микроконтроллера
В группу периферийных устройств микроконтроллеров типа Х51 входят следующие периферийные устройства:
- параллельный порт ввода-вывода P0;
- параллельный порт ввода-вывода P1;
- параллельный порт ввода-вывода P2;
- параллельный порт ввода-вывода P3;
- таймер-счётчик T/C0;
- таймер-счётчик T/C1;
- последовательный порт (SP);
- контроллер прерываний (IC).
1.3.1Параллельные порты ввода-вывода
Параллельные порты ввода-вывода предназначены для приема, выдачи байтов данных. Отдельные разряды портов могут быть использованы независимо друг от друга для приема и выдачи битов.
Порты P0 и P2 могут использоваться для подключения внешней памяти (см. п. 1.2.1).
Параллельный порт ввода-вывода Р3, кроме функций по приему и выдаче байтов и битов, выполняет альтернативные функции.
Выводы порта Р3.0 и Р3.1 при работе последовательного порта являются входом приемника (RXD) и выходом передатчика (TXD) соответственно.
Выводы порта Р3.2 и Р3.3 используются для приема сигналов запросов прерывания от внешних источников (INT0 и INT1 соответственно).
Выводы порта Р3.4 и Р3.5 используются для приема внешних сигналов Т0 и Т1, поступающих в таймеры-счетчики Т/СО и Т/С1 соответственно при работе в режиме счета внешних событий.
Выводы Р3.6 и Р3.7 при подключении к микроконтроллеру внешней памяти данных (ERAM) используются для выдачи сигналов записи (WR) и чтения (RD) соответственно (см. п. 1.2.1).
1.3.2Таймер-счетчик Т/С0
Таймер-счетчик Т/С0 ведет счет импульсов, поступающих от внутреннего источника с частотой Fosc/12 (счет времени) или со входа Т0 (Р3.4) (счет внешних событий). Событием является отрицательный перепад сигнала. Счет может вестись по модулю 28, 213 или 216. При переполнении счетчика (счет ведется на увеличение) формируется запрос прерывания, поступающий в контроллер прерываний. Счет продолжается без остановки.
В состав таймера-счетчика Т/С0 входят два восьмиразрядных регистра TL0 и ТН0. Работой таймера-счетчика Т/С0 управляют разряды регистров специальных функций TCON (TCON.7–4) и ТМОD (TMOD.3–0). Схемы распределения разрядов в регистрах TCON и ТМОD представлены на рисунке 1.9.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TF1 | TR1 | TF0 | TR0 | | | | |
а) | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
GATE | С/Т | M1 | М0 | GATE | С/Т | M1 | М0 |
Т/С1 | Т/С0 | ||||||
б) | |||||||
а) регистр TCON.7 – 4; б) регистр TMOD Рисунок 1.9 – Схемы распределения разрядов в регистрах TCON и TMOD |
Таймер-счетчик Т/С0 может работать в четырех режимах. Выбор режима определяется комбинацией состояний разрядов TMOD.1, TMOD.0=M1, M0.
При M1,М0=0,0 (режим 0) таймер-счетчик ведет счет по модулю 213 (т.е. максимальное число для счета 213). При этом используются оба регистра ТН0 и TL0 (ТН0 старший в паре регистров).
При M1, М0=0,1 (режим 1) счет ведется по модулю 216. При M1,М0=1,0 (режим 2) счет ведется по модулю 28, который хранится в регистре TL0. ТН0 используется в качестве регистра памяти. Код, хранящийся в этом регистре, загружается в регистр TL0 при каждом его переполнении (автоперезагрузка регистра TL0).
В режимах 0, 1, 2 на счетный вход счетчика поступает внутренний сигнал с частотой Fosc/12 (при TMOD.2=С/Т=0) или внешний сигнал, поступающий на вход Р3.4 (при TMOD.2=С/Т=1).
При TMOD.3=GATE=0 счет ведется при единичном состоянии разряда TCON.4=TR0. При TR0=0 счет остановлен.
При TMOD.3=GATE=1 счет ведется при единичном состоянии разряда TCON.4=TR0 и единичном значении сигнала INT0 на входе Р3.2. При нулевом состоянии разряда TR0 или нулевом значении сигнала INT0 счет остановлен.
При переполнении счетчика устанавливается в единичное состояние разряд TCON.5=TF0 и в контроллер прерываний поступает запрос прерывания от таймера-счетчика Т/С0.
Сброс разряда TCON.5=TF0 в нулевое состояние выполняется автоматически при переходе к выполнению соответствующей прерывающей программы.
В режиме 3 (M1,М0=1,1) регистры TL0 и ТН0 работают независимо и каждый ведет счет по модулю 28.
На вход счетчика с регистром TL0 в зависимости от значения разряда TMOD.2=С/Т поступает или внутренний сигнал с частотой Fosc/12 (при С/Т=0), или внешний сигнал с входа Р3.4 (при С/Т=1). На вход счетчика с регистром ТН0 поступает внутренний сигнал с частотой Fosc/12.
Счетчик с регистром TL0 ведет счет при TCON.4=TR0=1 (при TMOD.3=GATE=0) или при ТР0=1 и INT0=1 (при GATE=1), а счетчик с регистром ТН0 – при TCON.6=TR1=1.
При переполнении регистра TL0 устанавливается в единичное состояние разряд TCON.5=TF0 и в контроллер прерываний поступает запрос прерывания TF0. При переполнении регистра ТН0 в единичное состояние устанавливается разряд TCON.7=TF1. Разряды TF0 и TF1 сбрасываются в нулевое состояние при переходе к выполнению соответствующих прерывающих программ.
Запрос прерывания TF1 в таймере-счетчике Т/С0 в режиме 3 не формируется.
1.3.3Таймер-счетчик Т/С1
Таймер-счетчик Т/С1 ведет счет импульсов, поступающих от внутреннего источника с частотой Fosc/12 (счет времени) или со входа Т1 (Р3.5) (счет внешних событий). Событием является отрицательный перепад сигнала. Счет может вестись по модулю 28, 213 или 216. При переполнении счетчика формируется запрос прерывания, поступающий в контроллер прерываний. Счет продолжается.
В состав таймера-счетчика Т/С1 входят два восьмиразрядных регистра TL1 и ТН1. Работой таймера-счетчика T/C1 управляют разряды регистра специальных функций TCON (TCON.7,6) и разряды регистра специальных функций TMOD (TMOD.74) (см. рисунок 1.9).
Таймер-счетчик Т/С1 может работать в трех режимах. Выбор режима определяется комбинацией состояний разрядов TMOD.5, TMOD.4=М1,М0.
При M1,М0=0,0 (режим 0) таймер-счетчик ведет счет по модулю 213. Данный режим полностью аналогичен режиму 0 для таймера-счет-чика Т/С0.
При М1,М0=0,1 (режим 1) таймер-счетчик ведет счет по модулю 216. Данный режим полностью аналогичен режиму 0 для таймера-счетчика Т/С0.
При М1,М0=1,0 (режим 2) счет ведет регистр TL1 по модулю 28. ТН1 используется в качестве регистра. Код, хранящийся в этом регистре, загружается в регистр TL1 при каждом его переполнении (автоперезагрузка регистра TL1).
При М1,М0=1,1 таймер-счетчик Т/С1 остановлен.
На счетный вход счетчика поступает внутренний сигнал с частотой Fosc/12 (при TMOD.6=С/Т=0) или внешний сигнал, поступающий на вход Р3.5 (при TMOD.6=С/Т=1).
При TMOD.7=GATE=0 счет ведется при единичном состоянии разряда TCON.6=TR1. При TR1=0 счет остановлен.
При TMOD.7=GATE=1 счет ведется при единичном состоянии разряда TCON.6=TR1 и единичном значении сигнала INT1 на входе Р3.3. При TR1=0 или INT1=0 счет остановлен.
При переполнении счетчика устанавливается в единичное состояние разряд TCON.7=TF1 и в контроллер прерываний поступает запрос от таймера-счетчика Т/С1. Сброс разряда TCON.7=TF1 в нулевое состояние выполняется автоматически при переходе к выполнению соответствующей прерывающей программы.
Таймер-счетчик Т/С1 используется в качестве генератора синхросигнала при работе последовательного порта (SP). Частота прерываний в таймере-счетчике Т/С1 определяет скорость передачи и приема битов в последовательном порте. При работе в качестве генератора синхросигнала таймер-счетчик Т/С1 должен находиться в режиме 2 (счет по модулю 2 с автоперезагрузкой). Скорость передачи определяется числом, которое записано в регистр ТН1.
При работе таймера-счетчика Т/С0 в режиме 3 разряды регистров TCON.6=TR1 и TCON.7=TF1 используются в таймере-счетчике Т/С0. Таймер-счетчик Т/С1 в этом случае может использоваться в качестве генератора синхросигнала для последовательного порта.
1.3.4Последовательный порт
Последовательный порт (SP) предназначен для приема и выдачи байтов данных в последовательном коде. Последовательный порт содержит приемник, передатчик, управляющий регистр SCON и буферный регистр SBUF, состоящий, по сути, из двух регистров – буферного регистра передатчика и буферного регистра приемника, которые имеют одно и то же имя. Это обеспечивает возможность одновременной работы приемника и передатчика. Схема распределения разрядов в регистре SCON приведена на рисунке 1.10.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
Рисунок 1.10 – Схема распределения разрядов в регистре SCON |
Последовательный порт может работать в четырех режимах. Выбор режима работы определяется комбинацией состояний разрядов SCON.7=SM0 и SCON.6=SM1.
При SM0,SM1=0,0 (режим 0) последовательный порт работает в режиме сдвигающего регистра с частотой сдвига Fosc/12. Вывод порта Р3.1=TXD используется в качестве выхода для выдачи серии из восьми импульсов, управляющих сдвигом во внешнем сдвигающем регистре. Вывод порта Р3.0=RXD используется для последовательной выдачи или последовательного приема байта, начиная с младшего бита (D0). Временные диаграммы сигналов на выводах P3.1=TXD и Р3.0=RXD при выдаче и приеме байта в этом режиме изображены на рисунке 1.11.
![]() |
Рисунок 1.11 – Временные диаграммы сигналов на выводах TXD и RXD в режиме 0 |
Выдача происходит после выполнения команды программы, по которой осуществляется запись байта данных в регистр SBUF. При завершении выдачи байта устанавливается в единичное состояние разряд регистра SCON.1=TI и в контроллер прерываний поступает запрос прерывания от передатчика последовательного порта. Сброс разряда TI выполняется только программным способом, по команде в программе.
Прием начинается при единичном состоянии разряда регистра SCON.4=REN и сбросе в нулевое состояние разряда регистра SCON.0=RI (или при нулевом состоянии разряда SCON.0=RI и установке в единичное состояние разряда SCON.4=REN).
При завершении приема разряд регистра SCON.0=RI устанавливается в единичное состояние и в контроллер прерываний поступает запрос прерывания от приемника последовательного порта. Сброс разряда RI выполняется программным способом, по команде в программе.
При других комбинациях состояний разрядов SM0 и SM1 последовательный порт работает в качестве универсального асинхронного приемопередатчика (UART).
UART предназначен для передачи и приема байтов по последовательному каналу связи (например, по интерфейсу RS-232С).
При передаче байта формируется посылка (кадр), содержащая десять или одиннадцать битов. Кадр содержит стартовый бит (Start=0), восемь битов данных (D0, D1,..., D7) и стоповый бит (Stop=1). Между старшим битом данных (D7) и стоповым битом может помещаться контрольный бит (СВ). Структура кадров, содержащих десять и одиннадцать битов, показана на рисунке 1.12.
![]() |
а) |
![]() |
б) |
а) режим 1; б) режимы 2, 3 Рисунок 1.12 – Структура кадров |
Передача кадра начинается после выполнения команды программы, по которой происходит запись байта в регистр SBUF. При завершении передачи кадра устанавливается в единичное состояние разряд SCON.1=TI и в контроллер прерывания поступает запрос прерывания от передатчика. Разряд TI сбрасывается в нулевое состояние по команде в программе.
Прием кадра возможен при единичном состоянии разряда регистра SCON.4=REN. Прием начинается при поступлении стартового бита (отрицательный перепад сигнала) на вход Р3.0=RXD. Принятый байт записывается в буферный регистр приемника и сохраняется в нем до завершения приема следующего кадра. Следует помнить, что принятый байт необходимо считать до прихода следующего байта, в противном случае он будет потерян. UART может работать в трех режимах.
В режиме 1 (SM0,SM1=0,1) кадр содержит десять битов. Скорость передачи и приема (BR, бит/с) зависит от частоты переполнений таймера-счетчика Т/С1 и определяется по формуле
![]() | (1) |
где SMOD – состояние разряда регистра PCON.7=SMOD;
Fosc – тактовая частота работы микроконтроллера, Гц;
N – число, код которого записан в счетчик ТН1 таймера-счетчика Т/С1, работающего в режиме 2 (с автоперезагрузкой).
При приеме стоповый бит заносится в разряд регистра SCON.2=RB8.
В режиме 2 (SM0,SM1=1,0) и в режиме 3 (SM0,SM1=1,1) кадр содержит одиннадцать битов. Значение контрольного бита перед передачей кадра записывается в разряд регистра SCON.3=ТВ8.
Значение контрольного бита в принятом кадре переписывается в разряд регистра SCON.2=RB8.
Скорость передачи и приема (BR) в режиме 2 зависит только от значения бита SMOD и тактовой частоты работы микроконтроллера и определяется по формуле
![]() | (2) |
Скорость передачи и приема в режиме 3 зависит от частоты переполнений таймера-счетчика Т/С1 и определяется по формуле (1).
Для получения стандартных значений скорости передачи по интерфейсу RS-232 в режимах 1 и 3 следует использовать кварцевый резонатор с резонансной частотой, кратной 12. Типичными значениями являются 18432 кГц и 11059 кГц.
При завершении приема кадра в режимах 1, 2, 3 установка в единичное состояние разряда регистра SCON.0=RI и поступление запроса прерывания от приемника в контроллер прерываний зависит от состояния разряда регистра SCON.5=SM2.
При SM2=0 разряд регистра SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний при завершении приема любого кадра.
При SM2=1 в режиме 1 разряд регистра SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний, если в принятом кадре бит на десятой позиции имеет единичное значение (есть стоповый бит).
В режимах 2 и 3 разряд SCON.0=RI устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний, если в принятом кадре контрольный бит имеет единичное значение.
1.3.5Контроллер прерываний
Контроллер прерываний (IC) принимает и обрабатывает запросы прерывания от внешних и внутренних источников запросов. В состав контроллера прерываний входят регистры специальных функций IE и IР и младшая половина разрядов регистра TCON (TCON.3–0). Схемы распределения разрядов в регистрах IE, IP и TCON представлены на рисунке 1.13.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
EA | – | – | ES | ET1 | EX1 | ET0 | EX0 |
а) | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | – | PS | PT1 | PX1 | PT0 | PX0 |
б) | |||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | IE1 | IT1 | IE0 | IT0 |
в) | |||||||
а) регистр IE; б) регистр IP; в) регистр TCON Рисунок 1.13 – Схемы распределения разрядов в регистрах IE, IP и TCON |
Сигналы запросов прерывания от внешних источников INT0 и INT1 поступают на входы порта Р3.2 и Р3.3 соответственно. Запрос прерывания представлен или низким уровнем сигнала INT0 (INT1), или переходом сигнала INT0 (INT1) от высокого уровня к низкому уровню. Запрос прерывания представлен уровнем сигнала при TCON.0=IT0=0 (TCON.2=IТ1=0). При IT0=1 (IT1=1) запрос представлен отрицательным перепадом сигнала.
При поступлении запроса прерывания на входы INT0 или INT1 устанавливается в единичное состояние разряд TCON.1=IE0 или TCON.3=IЕ1 соответственно. Если запрос прерывания представлен переходом сигнала, разряд IE0 (IE1) сбрасывается в нулевое состояние автоматически при переходе микроконтроллера к выполнению соответствующей прерывающей программы. Если запрос прерывания представлен уровнем сигнала, состоянием разряда IЕ0 (IЕ1) управляет внешний сигнал INT0 (INT1).
Запросы прерывания от внутренних источников запросов: от таймера-счетчика Т/С0, таймера-счетчика Т/С1, передатчика и приемника последовательного порта – представлены единичным значением сигналов, поступающих из разрядов регистров TCON.5=TF0, TCON.7=TF1, SCON.1=TI и SCON.0=RI соответственно. Сигналы запросов прерывания от передатчика (TI) и приемника (RI) последовательного порта объединены по схеме логического ИЛИ на входе контроллера прерываний.
С использованием разрядов регистра IE разрешается или запрещается прием запросов прерывания в контроллер прерываний. Каждому запросу соответствует свой разряд регистра. Биты ET0, ET1 соответствуют запросам прерываний от таймеров, биты EX0, EX1 – запросам прерывания от внешних источников, бит ES – от последовательного порта. При IЕ.Х=0 (Х=0, 1,..., 4) прием соответствующего запроса запрещается, при IЕ.Х=1 – разрешается. С использованием разряда IE.7=ЕА запрещается прием любого запроса прерывания (при ЕА=0).
В контроллере прерываний реализованы два уровня приоритета – высший и низший. Любой запрос прерывания может быть отнесен к любому из уровней. Отнесение запроса прерывания к уровню приоритета выполняется с использованием разрядов регистра IР (соответствие битов совпадает с регистром IE, см. выше). Каждому запросу прерывания соответствует свой разряд регистра. При IР.Х=0 (X=0, 1,..., 4) запрос относится к низшему уровню, при IР.X=1 – к высшему уровню.
Для запросов прерывания, отнесенных к одному уровню, приоритет запросов задан аппаратно и не может быть изменен.
В таблице 1.4 перечислены сигналы запросов прерывания, для каждого сигнала указано устройство-источник запроса прерывания, указан приоритет запросов при отнесении их к одному уровню и приведен вектор прерывания (начальный адрес прерывающей программы) для каждого запроса прерывания.
В контроллере прерываний уровень приоритета принятого запроса сравнивается с уровнем приоритета запроса, по которому произошел запуск текущей программы. Если уровень приоритета принятого запроса оказался выше, происходит переход по вектору прерывания от выполнения текущей программы к выполнению прерывающей программы. Программа, запущенная по сигналу сброса с начальным адресом 0000Н, прерывается запросом прерывания с любым уровнем приоритета.
Таблица 1.4 – Описание прерываний микроконтроллера
Сигнал запроса прерывания | Устройство-источник | Приоритет | Вектор прерывания |
INT0 | Внешний | 1 (высший) | 0003H |
TF0 | Т/С0 | 2 | 000BH |
INT1 | Внешний | 3 | 0013Н |
TF1 | Т/С1 | 4 | 001BH |
TI+RI | SP | 5 (низший) | 0023Н |
При одновременном поступлении нескольких запросов прерывания для обслуживания выбирается запрос высшего уровня, а в пределах уровня – запрос с высшим приоритетом в пределах уровня.
При переходе к выполнению прерывающей программы адрес очередной команды прерываемой программы из счетчика команд переписывается в стек, а начальный адрес прерывающей программы (вектор прерывания) заносится в счетчик команд.
Контрольные вопросы
- Какие периферийные устройства входят в состав микроконтроллера?
Какие функции, кроме непосредственного ввода-вывода, выполняет порт P3?
Что является источником счетных импульсов для таймеров-счетчиков?
Опишите режимы работы таймеров счетчиков ТC0 и TC1, если в регистр TMOD загружено значение 2BH?
В каких режимах может работать последовательный порт?
Возможен ли в режиме асинхронного приемо-передатчика одновременный прием и выдача символа?
Какие числа необходимо загрузить в TH0 и TL0, чтобы в режиме 1 осуществлялся обмен со скоростью 19200 бит/с при частоте резонатора 18,432 МГц (SMOD=1)?
Какова максимально допустимая скорость передачи для данного микроконтроллера?
Каков алгоритм приема и передачи символов при условии, что контроллер прерывания не используется?
Что такое «прерывание»?
Какие устройства микроконтроллера могут являться источниками запросов прерываний?
Что необходимо для разрешения и запрещения прерываний?
Что означает понятие «приоритет»? Перечислите в порядке возрастания приоритетов источники, если в регистр IP загружено число 13H?
Каким образом временно запретить обработку всех прерываний?
Что означает понятие «вектор прерывания»?