Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
01.05.2014
Размер:
39.42 Кб
Скачать

Организация таймеров и системы прерываний в МК51

Микроконтроллеры семейства MCS-51 имеют в своем составе от одного до трех 16-разрядных счетчика T/C, которые могут выполнять функции таймера, либо счетчика внешних событий. В режиме таймера содержимое T/C инкрементируется в каждом машинном цикле, состоящем из 12 тактов. В режиме счетчика внешних событий T/C инкрементируется под воздействием отрицательного фронта входного сигнала на соответствующем выводе МК. Рассмотрим работу таймеров/счетчиков на примере МК, содержащих два таймера/счетчика.

Режим 0. В этом режиме T/C функционирует как 13-разрядный таймер или счетчик внешних событий. При переполнении таймера/счетчика (переходе из состояния «все единицы» в состояние «все нули») устанавливается соответствующий флаг прерывания TF в регистре TCON. Счетные импульсы поступают на таймер/счетчик при выполнении следующего условия: TR&(INT  GATE). Таким образом, установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсных сигналов, поступающих на вход INT.

Режим 1. Отличается от режима 0 только тем, что разрядность T/C равна 16.

Режим 2. В этом режиме младший регистр TL работает как 8-разрядный счетчик, при переполнении которого (переходе в состояние «все нули») устанавливается флаг TF запроса прерывания и выполняется автоматическая перезагрузка TL содержимым старшего регистра ТН. Содержимое регистра ТН формируется предварительно программно, и при перезагрузке TL не изменяется.

Режим 3. В этом режиме T/C0 и T/C1 функционируют различно. TL0 и ТН0 работают как два независимых счетчика. Регистр TL0 использует все биты управления T/C0: GATE, С/Т, TR0, TF0 и вход INT0. Регистр ТН0 может работать только в режиме таймера, при этом он использует только биты TR1 и TF1. T/C1 в режиме 3 остановлен, что эквивалентно сбросу флага TR1 в нуль.

Для управления работой таймеров/счетчиков и их взаимодействием с системой прерываний используются два регистра специальных функций:

регистр режимов таймеров/счетчиков - TMOD;

регистра управления/состояния таймеров/счетчиков - TCON.

Организация системы прерываний

В МК семейства MCS-51 предусмотрена приоритетная система прерываний, обслуживающая запросы на прерывание от следующих источников:

- двух внешних источников прерываний (запросы должны поступать от внешних устройств на входы INT0, INT1 микроконтроллера);

- таймеров/счетчиков T/C0 и T/C1 (при переполнении);

- порта последовательной передачи данных (при передаче или приеме очередного байта информации).

При поступлении запроса на прерывание от одного из источников, устанавливаются соответствующие биты (флаги прерывания) в регистрах TCON (для таймеров/счетчиков и внешних устройств) и SCON (для последовательного порта), содержимое которых можно считать программно.

Любое прерывание можно разрешить (запретить) программно, путем установки (сброса) соответствующего бита в регистре масок прерываний IE. Если прерывание от данного устройства разрешено, выполняется переход на подпрограмму обслуживания прерывания. При этом сбрасываются флаги прерывания (за исключением рассмотренных ниже случаев), содержимое программного счетчика РС заносится в стек, а в РС загружается адрес, зависящий от источника прерывания:

Программа обработки прерывания должна заканчиваться командой RETI, которая загружает из стека программный счетчик.

Внешние прерывания могут быть вызваны либо отрицательным фронтом (перепадом из 1 в 0), либо низким уровнем сигнала на входах INT0 и INT1 и приводят к установке флагов IE0 и IE1 в регистре TCON. Выбор типа прерывания (фронт или уровень) определяется битами IT0, IT1 регистра TCON. Сброс флагов прерывания IE0, IE1 выполняется аппаратно при обслуживании прерывания только в том случае, когда прерывание было вызвано фронтом сигнала. Если прерывание было вызвано уровнем сигнала, то сброс флага IE должна выполнять программа обслуживания прерывания, воздействуя на источник прерывания для снятия им запроса. Флаги запросов прерывания от таймеров сбрасываются аппаратно при передаче управления подпрограмме обработки прерывания.

Каждому из пяти источников прерываний может быть присвоен один из двух уровней приоритета (высший или низший) путем программной установки или сброса соответствующего бита в регистре IP. Установленный в 1 бит соответствует высшему уровню приоритета, сброшенный - низшему.

Источник с высшим уровнем приоритета может прервать программу обслуживания прерывания от источника с низшим уровнем приоритета. Программа обслуживания прерывания от источника с высшим уровнем приоритета не может быть прервана. Если одновременно поступают два запроса на прерывание от источников с одинаковыми приоритетами, то будет обслужен источник с более высоким рангом. Ранги всех источников жестко фиксированы в следующем

порядке (по убыванию ранга):

- внешнее прерывание 0;

- таймер/счетчик 0;

- внешнее прерывание 1;

- таймер/счетчик 1;

- последовательный порт.

Упрощенная схема прерываний МК51 показана на рис. 3.13.

Соседние файлы в папке MPS_shprots