Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
86
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
      1. Таймер-счетчик т/с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. Последовательный порт

Последовательный порт (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 устанавливается в единичное состояние и запрос прерывания от приемника поступает в контроллер прерываний, если в принятом кадре контрольный бит имеет единичное значение.