Федеральное агентство по образованию бийский технологический институт (филиал)

Вид материалаДокументы
1.3Периферийные устройства микроконтроллера
1.3.1Параллельные порты ввода-вывода
1.3.2Таймер-счетчик Т/С0
1.3.3Таймер-счетчик Т/С1
1.3.4Последовательный порт
1.3.5Контроллер прерываний
Контрольные вопросы
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   14

1.3Периферийные устройства микроконтроллера


В группу периферийных устройств микроконтроллеров типа Х51 входят следующие периферийные устройства:
  1. параллельный порт ввода-вывода P0;
  2. параллельный порт ввода-вывода P1;
  3. параллельный порт ввода-вывода P2;
  4. параллельный порт ввода-вывода P3;
  5. таймер-счётчик T/C0;
  6. таймер-счётчик T/C1;
  7. последовательный порт (SP);
  8. контроллер прерываний (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.74) (см. рисунок 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Н


При одновременном поступлении нескольких запросов прерывания для обслуживания выбирается запрос высшего уровня, а в пределах уровня – запрос с высшим приоритетом в пределах уровня.

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

Контрольные вопросы
  1. Какие периферийные устройства входят в состав микроконтроллера?

Какие функции, кроме непосредственного ввода-вывода, выполняет порт P3?

Что является источником счетных импульсов для таймеров-счетчиков?

Опишите режимы работы таймеров счетчиков ТC0 и TC1, если в регистр TMOD загружено значение 2BH?

В каких режимах может работать последовательный порт?

Возможен ли в режиме асинхронного приемо-передатчика одновременный прием и выдача символа?

Какие числа необходимо загрузить в TH0 и TL0, чтобы в режиме 1 осуществлялся обмен со скоростью 19200 бит/с при частоте резонатора 18,432 МГц (SMOD=1)?

Какова максимально допустимая скорость передачи для данного микроконтроллера?

Каков алгоритм приема и передачи символов при условии, что контроллер прерывания не используется?

Что такое «прерывание»?

Какие устройства микроконтроллера могут являться источниками запросов прерываний?

Что необходимо для разрешения и запрещения прерываний?

Что означает понятие «приоритет»? Перечислите в порядке возрастания приоритетов источники, если в регистр IP загружено число 13H?

Каким образом временно запретить обработку всех прерываний?

Что означает понятие «вектор прерывания»?