Расширенный последовательный порт

Расширенный последовательный порт SEP увеличивает возможности микроконтроллера по управлению подключёнными к нему периферийными устройствами посредством последовательного кода, предоставляя средства для аппаратной реализации шины PC-bus. SEP имеет 4 режима работы и 3 источника тактирования. Для ввода/вывода информации через этот порт задействовано 2 вывода микросхемы: Р4.1- для ввода/вывода данных и Р4.0- дпя вывода частоты тактирования последовательной посылки. Передаваемый или принимаемый пакет состоит из 8-ми бит данных и занимает 8 тактов работы SEP. В отсутствие принимаемой или передаваемой информации тактовый сигнал и данные неактивны.

SEP имеет 3 SFR-регистра- SEPCON, SEPDAT и SEPSTAT (физические адреса, соответственно -0D7h, 0E7h и 0F7h). Регистры адресуются только побайтно, хотя и имеют символические обозначения отдельных битов. Четыре режима работы порта определяют неактивный уровень сигнала тактирования, а также фронт (передний или задний), используемый для передачи или приёма. Работа порта в различных режимах изображена нарис. 2.25, рис. 2.26, рис. 2.27).

Для приёма или передачи байта пользовательская программа должна установить режим работы порта (биты CLKPOL и CLKPH), скорость передачи (биты SEPS1 и SEPS0), а также разрешить бит SEPE. Процесс передачи начинается при загрузке байта в регистр SEPDATA. Приём происходит при установленном бите SEPREN пока регистр SEPDATA пуст и нет передачи байта. После приёма 8-ми битов происходит аппаратная очистка бита SEPREN. Завершение передачи или приёма сопровождается установкой бита SEPIF (данный бит должен быть очищен программно). При установке соответствующего бита регистра разрешения прерывания SEPIF инициирует его.

При попытках программы записать или прочитать байт в регистре SEPDATA в процессе передачи или приёма им посылки устанавливается бит ошибки. Флаг SEPFWR устанавливается при наличии такой попытки в процессе передачи SEP байта, а флаг SEPFRD - в процессе приёма. Прерываний, связанных с этими битами ошибок, не существует. Все они остаются в установленном состоянии до их программной очистки.

Расширенный последовательный порт - student2.ru

Рис. 2.25. Режимы работы порта SEP

MSB LSB

-   - SEPE SEPREN CLKPOL CLKPH SEPS1 SEPS0
Бит Поз. Функция
- SEPCON.7 Зарезервирован для дальнейшего использования
- SEPCON.6 Зарезервирован для дальнейшего использования
SEPE SEPCON.5 Бит разрешения SEP
SEPREN SEPCON.4 Бит разрешения приёма в SEP
CLKPOL SEPCON.3 Полярность тактирования SEP
CLKPH SEPCON.2 Фаза тактирования SEP
SEPS1 SEPCON.1 Бит 1 выбора скорости SEP
SEPS0 SEPCON.0 Бит 0 выбора скорости SEP
CLKPOL CLKPH Режим SEP
SEPMODE0
SEPMODE1*
SEPMODE2
SEPMODE3*

*- не используются при приеме

SEPS1 SEPS0 Скорость SEP
Fosc/12
Fosc/24
Fosc/48
Fosc/96

Рис. 2.26. Регистр управления SEPCON

MSB LSB

- - - - - SEPFWR SEPFRD SEPIF
Бит Поз. Функция присвоения приоритета прерывания
- SEPSTAT.7 Зарезервирован дпя дальнейшего использования
- SEPSTAT.6 Зарезервирован дпя дальнейшего использования
- SEPSTAT.5 Зарезервирован для дальнейшего использования
- SEPSTAT.4 Зарезервирован для дальнейшего использования
- SEPSTAT.3 Зарезервирован для дальнейшего использования
SEPFWR SEPSTAT.2 Флаг ошибки записи SEP
SEPFRD SEPSTAT.1 Флаг ошибки чтения SEP
SEPIF SEPSTAT.0 Флаг прерывания SEP

Рис. 2.27. Регистр состояния SEPSTAT

Таймеры/счетчики

8XC51GB имеет три 16-битных Таймера/Счетчика: Таймер 0, Таймер 1 и Таймер 2. Каждый из них состоит из двух 8-битных регистров: ТНх и TLх, х = 0,1 или 2. Все три могут работать либо в режиме таймера, либо в режиме счетчика событий.

В режиме таймера, регистр ТLx инкрементируется в каждом машинном цикле. Таким образом, вы можете использовать, его в качестве счетчика машинных циклов. Так как машинный цикл состоит из 12 периодов осциллятора, то частота счета равна 1/12 частоты осциллятора.

В режиме счетчика событий регистр TLx инкрементируется при переходе сигнала из "1" в "0" на соответствующем выводе: Т0, T1 или Т2. В этом режиме вывод порта опрашивается в фазе SSР2 каждого машинного цикла. При обнаружении высокого уровня сигнала в одном цикле и низкого в следующем, счетчик инкрементируется. Новое счетное значение появляется в регистре в фазе S3P1 цикла, следующего за тем, котором был обнаружен этот переход. Так как на распознавание перехода уходит 2 машинных цикла (24 периода осциллятора), максимальная частота счета равна 1/24 частоты осциллятора (генератора). Нет ограничений на коэффициент заполнения внешнего входного сигнала, однако, чтобы быть уверенным, что данный уровень зафиксировался хотя бы раз до того, как изменился, он должен быть удержан по крайней мере один полный машинный цикл.

Таймер 0 и Таймер 1 имеют четыре режима работы:

· режим 0: 13-битный таймер;

· режим 1: 16-битный таймер;

· режим 2: 8-битный автоперезагружаемый таймер;

· режим 3: Таймер 0 как 2 раздельных 8-битных таймера.

Таймер 1 можно использовать для управления скоростью передачи (baud rate) последовательного порта.

Таймер 2 имеет три режима работы:

· режим захвата;

· режим автоперезагрузки (счет в прямом или в обратном направлении);

· режим управления скоростью передачи последовательного порта.

Таймер 0 и Таймер 1

Эти таймеры общие для семейства (см. описание базового МК).

Таймер 2

Таймер 2 - 16-битный Таймер/Счетчик, который может работать либо как таймер, либо как счетчик событий. Эта функция выбирается битом С_Т2 в регистре T2CON . Таймер 2 имеет следующие три режима работы:

· режим захвата;

· режим автоперезагрузки (счет в прямом или в обратном направлении);

· режим управления скоростью передачи последовательного порта.

T2MOD

Адрес = 0C9H Значение после сброса = XXXX XX00B

Не имеет битовой адресации

  - - - - - - T2OE DCEN
Бит
Символ Функция
- Зарезервированы*.
T2OE Бит разрешения выходного сигнала Таймера 2.
DCEN Бит разрешения счета в обратном направлении. Установка бита переводит Таймер 2 в режим реверсивного счетчика (счет в прямом и обратном направлении)
*Пользователь не должен записывать в эти биты. Они могут использоваться в будущих версиях семейства 8051. при реализации новых возможностей. В этом случае их сброшенное или неактивное значение будет «0», а активное – «1». Чтение будет возвращать неопределенные значения этих битов.

T2СON

Адрес = 0C8H Значение после сброса = 0000 0000B

Побитовая адресация

  TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ Расширенный последовательный порт - student2.ru CP/ Расширенный последовательный порт - student2.ru
Бит
Символ Функция
TF2 Флаг переполнения Таймера 2. Устанавливается при переполнении Таймера 2 и должен сбрасываться программно. TF2 не будет установлен, если RCLK =1 или TCLK = 1.
EXF2 Флаг события Таймера 2. Устанавливается по срезу сигнала на выходе T2EX, при захвате или перезагрузке, если EXEN2 = 1, EXF2 = 1, может вызвать прерывание Таймера 2, если оно разрешено. EXF2 должен быть сброшен программно. EXF2 в режиме реверсивного счетчика не вызывает прерывание (DCEN = 1).
RCLK Флаг выбора тактового генератора приемника. Если RCLK = 1, последовательный порт использует переполнение Таймера 2 в качестве тактовых импульсов приемника, в режимах 1 и 3. Если RCLK = 0, в качестве тактовых импульсов приемника используется переполнение Таймера 1.
TCLK Флаг выбора тактового генератора передатчика. Если TCKL = 1, последовательный порт использует переполнение Таймера 2 в качестве тактовых импульсов передатчика, в режимах 1 и 3. Если TCKL = 0, в качестве тактовых импульсов передатчика используется переполнение Таймера 1.
EXEN2 Флаг разрешения события Таймера 2. Когда EXEN2 = 1, срез сигнала на выводе T2EX вызовет захват или перезагрузку, если Таймер 2 не используется в режиме тактового генератора последовательного порта. Когда EXEN2 = 0, Таймер 2 игнорирует события на T2EX.
TR2 Бит управления пуском/остановом Таймера 2. Логическая «1» запускает таймер.
C/ Расширенный последовательный порт - student2.ru Бит выбора режима таймера или счетчика для Таймера 2. 0 = таймер (OSC/12 в обычном режиме или OSC/2 в режиме тактового генератора). 1 = счетчик внешних событий (по срезу).
CP/ Расширенный последовательный порт - student2.ru Флаг выбора режима. Установка бита переводит Таймер 2 в режим захвата по срезу сигнала на T2EX (если EXEN2 = 1). Сброс бита переводит Таймер 2 в режим автоперезагрузки по срезу сигнала на T2EX (если EXEN2 = 1) или по переполнению Таймера 2. Если RCKL = 1 или TCKL = 1, этот бит игнорируется, а Таймер 2 работает в режиме автоперезагрузки по переполнению.

Режимы выбираются битами в регистре T2C0N как показано в табл. 2.7

Наши рекомендации