Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASSEMBLER / Пособие51GB / !!!!!ИТОГО!!!!!.doc
Скачиваний:
175
Добавлен:
16.04.2015
Размер:
4.14 Mб
Скачать

Регистр состояния 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 для управления скоростью передачи последовательного порта и как генератор импульсов одновременно. Заметьте, что скорость передачи данных и частота выходных импульсов при этом, будет од­ной и той же.

Соседние файлы в папке Пособие51GB