Расширенный последовательный порт
Расширенный последовательный порт 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 - в процессе приёма. Прерываний, связанных с этими битами ошибок, не существует. Все они остаются в установленном состоянии до их программной очистки.
Рис. 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/ | CP/ | |
Бит |
Символ | Функция |
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/ | Бит выбора режима таймера или счетчика для Таймера 2. 0 = таймер (OSC/12 в обычном режиме или OSC/2 в режиме тактового генератора). 1 = счетчик внешних событий (по срезу). |
CP/ | Флаг выбора режима. Установка бита переводит Таймер 2 в режим захвата по срезу сигнала на T2EX (если EXEN2 = 1). Сброс бита переводит Таймер 2 в режим автоперезагрузки по срезу сигнала на T2EX (если EXEN2 = 1) или по переполнению Таймера 2. Если RCKL = 1 или TCKL = 1, этот бит игнорируется, а Таймер 2 работает в режиме автоперезагрузки по переполнению. |
Режимы выбираются битами в регистре T2C0N как показано в табл. 2.7