
- •3. Особенности элементов структуры 80c51 gb Расположение выводов микроконтроллеров группы 8xc51gb
- •3.1 Функциональные особенности кристаллов 8xc51gb
- •3.2 Порты I/o p0-p5
- •Альтернативные функции выводов портов 0-5
- •3.3 Система прерываний 8xc51gb
- •Вектора прерываний
- •Регистр iе
- •Регистр iеа
- •Регистр ip
- •Регистр iрн кристаллов 8xc51gb
- •Регистр ipа кристалла 8xc51gb
- •Регистр iрна кристаллов 8xc51gb
- •Регистр exicon
- •3.4 Узел ацп Функциональная схема ацп
- •Регистр результата сравнения асмр
- •Регистр управления ацп acon
- •3.5 Аппаратный сторожевой таймер
- •3.6 Обнаружение сбоя тактового генератора
- •3.7 Матрица программируемых счётчиков рса
- •Регистр управления рса - ccon
- •Режимы работы модулей сравнения/фиксации
- •16-Битный режим фиксации.
- •16-Битный режим фиксации рса
- •16-Битный режим сравнения: программный таймер и высокоскоростной выход
- •Режим сторожевого таймера
- •Режим широтно-импульсного модулятора
- •Соответствие имён регистров и битов узлов рса и рса1
- •3.8 Расширенный последовательный порт
- •Режимы работы порта sep
- •Регистр управления sepcon
- •Регистр состояния sepstat
- •3.9 Таймеры/счетчики
Регистр состояния sepstat
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 |
3.9 Таймеры/счетчики
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 имеет следующие три режима работы:
режим захвата
режим автоперезагрузки (счет в прямом или в обратном направлении)
режим управления скоростью передачи последовательного порта.
Режимы выбиваются битами в регистре T2C0N как показано в таблице
Таблица Режимы работы таймера 2
RCLK+TCLK |
CP/ RL2 |
Т2*0Е |
TR2 |
Режим |
0 |
1 |
1 |
1 |
16-битный, автоперезагрузка |
0 |
1 |
1 |
1 |
16-битный, захват |
1 |
Х |
Х |
1 |
Генератор скорости передачи |
Х |
0 |
1 |
1 |
Генератор импульсов |
Х |
Х |
0 |
0 |
Таймер выключен |
* Присутствует только в 37C5IFC.
В 87C5IGB вывод Т2 имеет еще одну альтернативную функцию. Он может генерировать импульсы с программируемой частотой.
Режим захвата
В режиме захвата (Capture mode) есть две опции, выбираемые битом EXEN2 в регистре T2CON. Если бит EXEN2 - 0, Таймер 2 является 16-битным таймером или счетчиком, который при переполнении устанавливает бит TF2 в регистре T2CON. Этот бит может использоваться для генерации прерывания Таймера 2. Если бит EXEN2 = 1, то помимо всего сказанного, переход уровня сигнала на внешнем выводе Т2ЕХ из "1" в "0" вызывает запись текущего значения регистров Таймера 2 (ТН2 и ТL2) в регистры RCAP2H и RCAP2L соответственно. Кроме того, переход на выводе Т2ЕХ устанавливает бит EXF2. Бит EXF2 может генерировать. прерывание и бит ТF2. Это иллюстрирует Рис 12.
Режим автоперезагрузки (счет в прямом и в обратном направлении)
В 16-битном режиме автоперезагрузки (Auto-reload Mode), Таймер 2 может быть запрограммирован для счета в прямом или в обратном "up or down" направлении. Функция "up or down" выбирается битом DCEN (Down Counter Enable) в регистре T2M0D. После сброса устройства бит DCEN сбрасывается, поэтому Таймер 2 по умолчанию настраивается для счета только в прямом направлении. Когда бит DCEN установлен, направлением счета Таймера 2 можно управлять уровнем сигнала на выводе Т2EХ.
В этом режиме, при DCEN = 0, есть две опции, выбираемые битом EXEN2 в регистра T2CON. Если бит EXEN2 = 0, Таймер 2 считает в прямом направлении до 0FFFFH и затем устанавливает бит переполнения TF2. Переполнение также вызывает перезагрузку регистров Таймера 16-битным значением из регистров RСАР2Н и RCAP2L. Значения в регистрах RCAP2H и RCAP2L предварительно инициализируется программой. Если бит EXEN2 = 1, 16-битовая перезагрузка может быть вызвана либо переполнением, либо переходом уровня сигнала из "1" в "0" на выводе Т2ЕХ. Этот переход устанавливает бит EXF2. Оба бита, TF2 и EXF2, могут генерировать прерывание Таймера 2, если оно разрешено. Рис. 13 показывает Таймер 2 автоматически считающего в прямом направлении, когда DCEN сброшен.
Установка бита DCEN разрешает функцию "up или down", как показано на рис. 14 В этом случае вывод Т2EX управляет направлением счета. Логическая "1" на выводе Т2ЕХ делает, Таймер 2 счетчиком в прямом направлении. Таймер переполняется когда его значение превышает 0FFFFН и устанавливает бит TF2, который может генерировать прерывание, если оно разрешено. Переполнение также вызывает перезагрузку 16-битного значения из регистров RCAP2H и RCAP2L в регистры таймера ТН2 и TL2 соответственно. Логический "0" на выводе Т2ЕХ делает Таймер 2 счетчиком в обратном направлении. Теперь таймер переполняется когда значение в регистрах TH2 и TL2 равно значению, хранимому в регистрах RCAP2H и RCAP2L Переполнение устанавливает бит TF2 и вызывает загрузку значения 0FFFFH в регистры таймера.
Бит EXF2 переключается каждый раз, когда Таймер 2 переполняется. Этот бит может использоваться как 17-й бит счетного значения, если необходимо. В этом режиме бит EXF2 не генерирует прерывание.
Генерирование импульсов
87C51GB имеет новую возможность. Вывод Pl.0 может генерировать импульсы с 50%-м коэффициентом заполнения. Этот вывод кроме функции вывода порта I/O имеет две альтернативные функции. Он может быть запрограммирован (1) как вход внешних счетных импульсов дня Таймера/Счетчика 2 или (2) для генерирования импульсов с 50%-м коэффициентом заполнения и частотой от 61Гц до 4МГц, при тактовой частоте 16МГц рис. 15 объясняет работу таймера в этом режиме Чтобы Таймер/Счетчик 2 работал как генератор импульсов, бит С_Т2(в регистре Т2СОN) должен быть сброшен, а бит Т2ОЕ (в регистре T2M0D) установлен Бит TR2 (а регистре T2CON) также должен быть установлен для запуска таймера.
Частота выходных импульсов зависит от частоты осциллятора и перезагружаемого значения и регистрах RCAP2H и RCAP2L, как показано в соотношении:
В режиме генератора переполнение таймера не генерирует прерывание. Это похоже на случай, когда Таймер 2 используется для управления скоростью передачи последовательного порта. Можно использовать Таймер 2 для управления скоростью передачи последовательного порта и как генератор импульсов одновременно. Заметьте, что скорость передачи данных и частота выходных импульсов при этом, будет одной и той же.