Лек2 (1084887), страница 3
Текст из файла (страница 3)
В контроллерах семейства 8051 первой выполняется команда, код которой расположен в самой первой ячейке памяти программ с адресом 0. Для этого необходимо обнулить счётчик команд, что достигается автоматическим формированием положительным импульс на входе RESET с помощью специальной RC-цепочки (рис. 2.8).
Рис. 2.8. Цепь запуска
Единичный уровень на входе RESET (или СБРОС) в течение нескольких десятков периодов тактового генератора приводит к обнулению счётчика команд и к началу исполнения программы с нулевого адреса. Формирование сигнала начальной установки на входе RESET происходит автоматически при включении питания с помощью RС-цепочки, примерные значения номиналов которой показаны на рис. 2.8. С этой целью вход RESET соединяют с шиной питания через конденсатор емкостью несколько микрофарад, и с общим приводом – через резистор сопротивлением порядка сотни килоОм. В момент включения питания конденсатор разряжен, и вход сброса оказывается под потенциалом, близким к напряжению питания. Несмотря на снижение этого потенциала вследствие заряда конденсатора, в течение нескольких десятков миллисекунд уровень сигнала на входе сброса остается единичным, и осуществляется корректный запуск микроконтроллера.
2.6.Одноуровневая и многоуровневая системы прерываний.
Система прерываний в базовой модели
Совокупность специальных аппаратных и программных средств для обработки прерываний составляют систему прерывания. По сложности системы прерывания делятся на одноуровневые (без приоритетов) и многоуровневые (с приоритетами). Одноуровневая система прерывания выполняет функции:
-
Хранение локальных и глобальных разрешений прерывания.
-
Запоминание поступивших запросов прерывания.
-
Автоматическое запоминание в стеке адреса первой невыполненной команды прерываемой программы (адрес возврата).
-
Если для источника, пославшего запрос, имеется разрешение, то переход к подпрограмме обработки прерывания, расположенной по фиксированному адресу для каждого источника прерывания.
-
Сохранение контекста прерванной программы командами PUSH <регистр>.
-
Выполнение содержательной части подпрограммы обработки прерывания, ради которой производится прерывания.
-
Восстановление контекста прерванной программы командами POP <регистр>.
-
Выход из подпрограммы обработки прерывания и возврат к прерванной программе. Последней командой подпрограммы обслуживания прерывания является команда RETI, по которой из стека в счётчик команд пересылается адрес возврата и прерванная программа продолжает выполняться.
В одноуровневой системе прерывания начатая программа обработки прерывания всегда выполняется до конца и не прерывается запросами, пришедшими во время её выполнения. Эти запросы фиксируются и могут вызвать прерывание по окончанию начатой программа обработки прерывания. Одноуровневая система прерываний обладает недостатком, заключающимся в задержке реакции на некоторые запросы прерывания.
В многоуровневой системе прерываний всем источникам прерывания устанавливаются приоритеты. Такая система обеспечивает возможность каскадирования прерываний, т. е. «прерывание прерывания». Если в момент обработки запроса прерывания поступает запрос на прерывание от источника с более высоким приоритетом, то начатая программа обработки прерывания прерывается и начинает выполняться программа обработки прерывания с более высоким приоритетом. При поступлении запросов с более низким или равным приоритетом они запоминаются до окончания выполнения текущей программы с более высоким приоритетом.
Базовый вариант микроконтроллеров MCS-51 имеет двухуровневую систему прерывания с шестью источниками прерывания и 5 векторами прерывания. Управление системой прерывания производится с помощью двух специальных регистров: регистра разрешения прерывания (IE) и регистра приоритетов прерываний (IP). Возможность программной установки/сброса любого бита в этих двух регистрах делает систему прерываний 8051 исключительно гибкой.
Регистр разрешения прерываний (IE) предназначен для разрешения или запрета прерываний от соответствующих источников. Обозначение разрядов регистра IE показано в табл. 2.2, а их назначение указано ниже.
Таблица. 2.2
Биты | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Обозначен. | ЕА | X | X | ES | ЕТ1 | ЕХ1 | ЕТ0 | ЕХ0 |
ЕА — управление всеми источниками прерываний одновременно. Если ЕА=0, то прерывания запрещены. Если ЕА=1, то прерывания могут быть разрешены индивидуальными разрешениями ЕХ0, ЕТ0, ЕХ1, ЕТ1, ES.
X — резервные разряды.
ES — управление прерыванием универсального синхронно-асинхронного последовательного порта (УСАПП). Для передатчика и приёмника УСАПП выделен один адрес-0023Н. Определение конкретного источника прерывания должно производиться внутри подпрограммы обслуживания прерывания путем анализа разрядов RI и TI, фиксирующих запросы прерывания от приёмника и передатчика УСАПП в регистре управления SCON.
ES=1 — разрешение, ES=0 — запрет.
ЕТ1 — управление прерыванием от Т/С1.
ЕТ1=1 — разрешение, ЕТ1=0 – запрет.
ЕХ1 – управление прерыванием от внешнего источника INT1.
ЕХ1=1 — разрешение, ЕХ1=0 — запрет.
ЕТ0 — управление прерыванием от Т/С0.
ЕТ0=1 — разрешение, ЕТ0=0 – запрет.
ЕХ0 – управление прерыванием от внешнего источника INT0.
ЕХ0=1 — разрешение, ЕХ0=0 — запрет.
Регистр приоритетов прерываний (IP) предназначен для установки уровня приоритета прерывания для каждого из пяти источников прерываний. Обозначение разрядов регистра IP показано в табл. 2.3, а их назначение указано ниже.
Таблица 2.3
Биты | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Обозначен. | X | X | X | PS | РТ1 | РХ1 | РТ0 | РХ0 |
РХ0 — установка уровня приоритета прерывания от внешнего источника INT0.
РТ0 — установка уровня приоритета прерывания от Т/С0.
РХ1 — установка уровня приоритета прерывания от внешнего источника INT1.
РТ1 — установка уровня приоритета прерывания от Т/С1.
PS — установка уровня приоритета прерывания от УСАПП.
X — резервные разряды.
Наличие в разряде IP "1" устанавливает для соответствующего источника высокий уровень приоритета, а наличие в разряде IP "0" – низкий уровень приоритета. Логика обработки флагов прерываний осуществляет приоритетный выбор запроса прерывания, сброс его флага и инициирует выработку аппаратно реализованной команды перехода на подпрограмму обслуживания прерывания по фиксированному адресу для каждого источника прерывания, значения которых приведены в таблице 2.4.
Таблица 2.4
Источник прерывания | Вектор прерывания |
Внешнее прерывание INT0 | 0003Н |
Таймер/счетчик Т/С0 | 000ВН |
Внешнее прерывание INT1 | 0013Н |
Таймер/счетчик Т/С1 | 001ВН |
Последовательный порт | 0023Н |
2.7. Блок таймеров/счётчиков базовой модели
2.7.1. Состав блока
Таймеры/счетчики (Т/С) предназначены для подсчета внутренних или внешних импульсов для формирования программно управляемых временных задержек и определения частоты или длительности внешних сигналов. Один из таймеров/счётчиков (Т/С1) может служить источником синхронизирующих импульсов для универсального синхронно- асинхронного последовательного порта (УСАПП). При переполнении таймеров/счётчиков происходит прерывание, если оно предварительно разрешено и переход на фиксированные адреса векторов прерывания, значения которых указаны в таблице 2.4.
В состав блока Т/С входят следующие функциональные узлы:
1) два 16-разрядных счётчика Т/С0 и Т/С1;
2) восьмиразрядный регистр режимов TMOD;
3) восьмиразрядный регистр управления TCON;
4) два триггера TF0 и TF1, фиксирующих переполнение;
5) два бита TR0 TR1, разрешающих счёт;
6) схема фиксации состояния выводов INT0, INT1, Т0, Т1;
7) делитель тактовой частоты микроконтроллера на 12;
8) логика управления Т/С.
Два 16-разрядных регистра Т/С0 и Т/С1 выполняют функции счёта и хранения значения счета. Каждый из них состоит из пары восьмиразрядных регистров, соответственно ТН0, TL0 и ТН1, ТL1. Причем регистры ТН0, ТН1 — старшие, а регистры TL0, ТL1 — младшие 8 разрядов. Каждый из восьмиразрядных регистров имеет свой адрес и может быть использован как РОН, если Т/С не используются (бит TR0 для Т/С0 и бит TR1 для Т/С1 в регистре управления TCON равны "0").
Величины начальных значений заносятся в регистры Т/С программно. В процессе счета содержимое регистров Т/С инкрементируется. Признаком окончания счета, как правило, является переполнение регистровой пары ТН0 и TL0 (или ТН1 и ТL1), т. е. переход содержимого регистровой пары из состояния "все единицы" в состояние "все нули". При этом устанавливается флаг переполнения TF0 или TF1. Состояние флагов переполнения может быть проверено ранее рассмотренными команды условных переходов JB, JNB, JBC.
Если прерывания от Т/С разрешены, то при переполнении происходит автоматический переход по адресу 11 или 27. В этих ячейках должны быть расположены первые команды подпрограмм обслуживания прерывания от Т/С0 и Т/С1 соответственно.
Все регистры ТН0, ТН1, TL0, ТL1 доступны по чтению, и, при необходимости, контроль достижения требуемой величины счета может выполняться программно.
Регистр режимов TMOD предназначен для приема и хранения кода, определяющего:
— один из 4-х возможных режимов работы каждого Т/С;
— выбор источника счётных импульсов: при выборе внутреннего источника - работа в качестве таймеров, при внешнем источнике Т/С функционирует как счетчик внешних импульсов, поступающих на ходы Т0 и Т1;
— управление Т/С от внешнего вывода INT0 или INT1, что позволяет измерять длительности импульсов, поданных на эти входы.
Обозначение разрядов регистра TMOD приведено в табл.2.5 Назначение разрядов регистра TMOD приведено в табл.2.6.
При работе в качестве таймера содержимое регистра Т/С инкрементируется в каждом машинном цикле, т.е. Т/С является счетчиком машинных циклов. Поскольку машинный цикл состоит из 12 периодов частоты синхронизации, то частота счета в данном случае равна 1МГц.
Таблица 2.5
Биты | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Обозн. | GATE1 | С/Т1 | М1.1 | М1.0 | GATE0 | С/Т0 | М0.1 | М0.0 |
При работе Т/С в качестве счетчика внешних импульсов содержимое регистра Т/С инкрементируется в ответ на переход из "1" в "0" сигнала на счетном входе (вывод Т0 для Т/С0 и вывод Т1 для Т/С1). Счетные входы аппаратно проверяются в каждом машинном цикле. Когда проверки показывают высокий уровень на счетном входе в одном машинном цикле и низкий уровень в другом машинном цикле, регистр Т/С инкрементируется. Новое (инкрементированное) значение заносится в регистры Т/С в машинном цикле, непосредственно следующего за тем, в котором был обнаружен переход из "1" в "0" на счетном входе. Для распознавания такого перехода требуется два машинных цикла (24 периода тактовой частоты), поэтому максимальная частота на входах Т/С в режиме счетчика равна Fт/24. Для базовой модели максимальная частота входных сигналов не должна превышать 500 кГц.
Таблица 2.6
Биты | Наименов. | Назначение битов | Примечание | ||
0-1 4-5 | М0-М1 | Определяют один из 4-х режимов работы, отдельно для Т/С1 и Т/С0 | Все биты устанавливаются программно; биты 0-3 определяют режим работы Т/С0, биты 4-7 определяют режим работы Т/С1. | ||
М1 | М0 | Режим | |||
0 | 0 | 0 | |||
0 | 1 | 1 | |||
1 | 0 | 2 | |||
1 | 1 | 3 | |||
2,6 | С/Т0 С/Т1 | Определяют работу в качестве: С/Т0,С/Т1=0 – таймера С/Т0,С/Т1=1 – счетчика | |||
3,7 | GATE | Разрешает управлять таймером от внешнего вывода (INT0 – для Т/С0, INT1 – для Т/С1). GATE = 0 – управление запрещено GATE = 1 – управление Разрешено |
Чтобы уровень сигнала на счетном входе был зафиксирован, он должен оставаться неизменным в течение как минимум одного машинного цикла, что для базовой модели составляет 1 мкс.
Регистр управления (TCON) предназначен для приема и хранения кода управляющего слова. Обозначение разрядов регистра TCON приведено в табл. 2.7. Назначение разрядов регистра TCОN приведено в табл. 2.8.