
- •Санкт-петербургский государственный технический университет
- •Оглавление
- •Введение
- •1. Арифметические основы вычислительной техники
- •Позиционные системы счисления
- •1.2. Двоичная система счисления
- •1.3. Алгоритмы преобразования десятичных чисел в двоичные
- •В двоичную систему счисления методом вычитания
- •1.4. Восьмеричная и шестнадцатеричная системы счисления
- •Представление чисел в различных системах счисления
- •1.5. Представление символьной информации
- •Представление алфавитно-цифровых и управляющих символов в коде ascii
- •1.6. Представление отрицательных чисел
- •1.7. Сложение и вычитание двоичных чисел
- •Правила сложения двоичных чисел
- •Архитектура микроконтроллеров 80c51
- •Общие сведения о микроконтроллерах 80c51
- •2.2. Особенности архитектуры
- •2.3. Организация памяти
- •2.4. Программная память
- •2.5. Память данных
- •Адресное пространство внутренней памяти данных, доступное для побитовой адресации
- •Регистры специальных функций мк 80с51
- •2.6. Слово состояния программы
- •Формат слова состояния программы
- •2.7. Общая характеристика системы команд
- •Система команд микроконтроллеров семейства mcs-51
- •Команды, модифицирующие флаги psw
- •2.8. Способы адресации
- •2.9. Синхронизация процессора
- •А. Для всех команд, кроме movx; в. Для команды movx
- •2.10. Параллельные порты
- •2.11. Таймеры/счетчики
- •Альтернативные функции портов p0, p2 и p3 мк 80с51
- •Регистр управления режимом таймера/счетчика
- •Регистр управления таймера/счетчика
- •2.12. Последовательный порт
- •Регистр управления последовательного порта
- •Регистр управления мощностью
- •Программирование таймера 1 для обеспечения работы последовательного порта в режимах 1 и 3
- •2.13. Программный Счетчик
- •2.14. Стек
- •2.15. Подпрограммы
- •2.16. Система прерываний
- •Адреса векторов прерываний мк 80с51
- •Регистр разрешения прерываний
- •Регистр приоритетов прерываний
- •2.17. Аппаратный сброс
- •Включении электропитания
- •2.18. Энергосберегающие режимы работы
- •3. Технология программирования микроконтроллеров
- •3.1. Общие положения
- •3.2. Подготовка исходного текста программы
- •3.3. Трансляция программы
- •Трансляции программы
- •Ошибки в программе
- •3.4. Компоновка программы
- •3.5. Отладка программы
- •Литература
- •Система команд мк семейства mcs-51
- •Эмулятор пзу чип32-02
- •1. Назначение
- •2. Технические характеристики
- •3. Инструкция по эксплуатации
- •Англо-русский словарь специальных терминов и сокращений
- •195251, Г. Санкт-Петербург, ул. Политехническая, д. 29
Адреса векторов прерываний мк 80с51
Источник прерывания |
Флаг |
Адрес вектора прерывания |
Внешнее прерывание 0 |
IE0 |
0003H |
Таймер/счетчик 0 |
TF0 |
000BH |
Внешнее прерывание 1 |
IE1 |
0013H |
Таймер/счетчик 1 |
TF1 |
001BH |
Последовательный порт |
TI, RI |
0023H |
2.16.3. Контроллер прерываний имеет два регистра специальных функций (IEиIP), которые служат для программного управления системой прерываний.
Прерывание от каждого источника может быть индивидуально разрешено или запрещено путем программной установки или сброса соответствующего разряда в регистре разрешения прерыванийIE (Interrupt Enable), формат которого приведен в табл. 2.13. Этот регистр также содержит разрядEA(Enable All interrupts), установка/сброс которого приводит к разрешению/запрету всех прерываний.
2.16.4. Каждому источнику прерываний индивидуально может быть присвоен один из двух уровней приоритета (1 –высокий уровень или 0–низкий уровень) путем программирования соответствующего бита врегистре приоритетов прерыванийIP(Interrupt Priority, табл. 2.14). Уровень приоритета определяет очередность обслуживания устройств в том случае, когда сигналы запросов прерываний от этих устройств приходят одновременно. Сначала обслуживаются устройства, имеющие высокий уровень приоритета, затем–все остальные.
Таблица 2.13
Регистр разрешения прерываний
Обознач. |
Разряд |
Наименование и назначение |
EX0 |
IE.0 |
Разряд разрешения внешнего прерывания 0. Устанавливается/сбрасывается программно. |
ET0 |
IE.1 |
Разряд разрешения прерывания от таймера 0. Устанавливается/сбрасывается программно. |
EX1 |
IE.2 |
Разряд разрешения внешнего прерывания 1. Устанавливается/сбрасывается программно. |
ET1 |
IE.3 |
Разряд разрешения прерывания от таймера 1. Устанавливается/сбрасывается программно. |
ES |
IE.4 |
Разряд разрешения прерывания от последовательного порта. Устанавливается/сбрасывается программно для разрешения запрета прерываний от флагов TI и RI. |
– |
IE.5 |
Не используются. |
– |
IE.6 |
|
EA |
IE.7 |
Разряд разрешения всех прерываний. Устанавливается/ сбрасывается программно для разрешения /запрета всех прерываний. |
Таблица 2.14
Регистр приоритетов прерываний
Обознач. |
Разряд |
Наименование и назначение |
PX0 |
IP.0 |
Разряд приоритета внешнего прерывания 0. |
PT0 |
IP.1 |
Разряд приоритета таймера 0. |
PX1 |
IP.2 |
Разряд приоритета внешнего прерывания 1. |
PT1 |
IP.3 |
Разряд приоритета таймера 1. |
PS |
IP.4 |
Разряд приоритета последовательного порта. |
– |
IP.5 |
|
– |
IP.6 |
Не используются |
– |
IP.7 |
|
При равенстве уровней приоритета источники прерываний обслуживаются в порядке, показанном на рис. 2.14.
Рис. 2.14. Система прерываний МК 80С51
Подпрограмма обслуживания прерывания, которое было вызвано устройством, имеющим низкий уровень приоритета, сама может быть прервана другим устройством, имеющим высокий уровень приоритета. Подпрограмма обслуживания прерывания высокого уровня не может быть прервана никаким другим устройством. Программа, которая запускается при сбросе МК, имеет самый низкий приоритет, она может быть прервана устройством, имеющим любой уровень приоритета.
2.16.5. Внешнее прерывание 0 (внешнее прерывание 1) может быть инициировано как низким уровнем напряжения (уровнем логического 0), так и фронтом (переходом из 1 в 0) сигнала на соответствующем входе МК, в зависимости от значения управляющего бита IT0 (IT1) регистраTCON(см. табл. 2.8). Активный уровень сигнала на входеINT0’ (INT1’) устанавливает флагIE0 (IE1) в регистреTCON. Если прерывание вызвано фронтом внешнего сигнала, то флагIE0 (IE1) сбрасывается аппаратно при передаче управления подпрограмме обслуживания прерывания. Если прерывание вызвано уровнем сигнала, то флагIE0 (IE1) сбрасывается источником внешнего прерывания.
Прерывание от таймера 0 (таймера 1) инициируется флагом TF0 (TF1), который устанавливается при переполнении соответствующего таймера, а сбрасывается аппаратно при передаче управления подпрограмме обслуживания прерывания. Если таймер 0 работает в режиме 3 (см. п. 2.11.9), то флагTF0 устанавливается счетчикомTH0, а флагTF1–счетчикомTH1.
Прерывание от последовательного порта инициируется флагом RIили флагомTI. Ни один из этих флагов не сбрасывается аппаратно при передаче управления программе обслуживания прерывания. Флаги должны сбрасываться программно.
Любой флаг, вызывающий прерывание, может быть установлен или сброшен программным путем. Результат будет таким же, как и при аппаратной установке или сбросе флага.
2.16.6. Запрос прерывания(interrupt request) формируется аппаратно при одновременном выполнении следующих условий:
установлен флаг готовности устройства (IE0,IE1,TF0,TF1,TI,RI),
установлен соответствующий управляющий бит в регистре разрешения прерываний (EX0,EX1,ET0,ET1,ES),
3) снята программная блокировка всех прерываний (установлен бит EAв регистре разрешения прерываний).
Алгоритм реакции МК на запрос прерывания представлен на рис. 2.15.
Запросы прерываний, поступившие от внутренних или внешних периферийных устройств МК, запоминаются контроллером прерываний в десятом такте (в фазе S5P2) каждого машинного цикла.
В каждом машинном цикле контроллер прерываний опрашивает и ранжирует запросы прерываний, зафиксированные в конце предыдущего цикла, в результате чего выбирается запрос, имеющий самый высокий приоритет. Ранжирование осуществляется по рассмотренной выше схеме (см. рис. 2.14) между запросами, которые относятся к одному уровню приоритета, начиная с высшего уровня. Если в предыдущем машинном цикле был зафиксирован хотя бы один запрос прерывания, а также отсутствует аппаратная блокировка прерываний, то в течение двух последующих машинных циклов управление передается программе обслуживания прерывания. Результат данной операции такой же, как при выполнении команды LCALL(см. п. 2.15.2.): в стеке сохраняется адрес возврата в прерванную программу, а в счетчик команд загружается 16-битный начальный адрес программы обслуживания прерывания (адрес вектора прерывания).
Аппаратная блокировка прерываниявозможна по одной из следующих причин:
1) прерываемая программа сама является подпрограммой обслуживания прерывания равного или более высокого уровня приоритета,
2) текущий цикл (т.е. тот цикл, в котором выполняется опрос и ранжирование запросов прерываний) не является последним циклом команды, выполняемой процессором,
3) выполняемая процессором команда является командой возврата из подпрограммы обслуживания прерывания (RTI) или же командой записи в регистр разрешения прерыванийIEили регистр приоритетов прерыванийIP.
Таким образом от момента формирования запроса прерывания до начала выполнения подпрограммы обслуживания прерывания проходит не менее 3-х машинных циклов.
Рис. 2.15. Алгоритм реакции МК на запрос прерывания
Реакция МК на запрос прерывания будет самой быстрой, если запрос прерывания поступит к концу 9 такта машинного цикла, который является последним циклом выполнения команды, при условии, что это не команда RTIи не команда обращения к регистрамIEиIP.
Подпрограмма обслуживания прерывания должна заканчиваться командой RTI(Return from Interrupt), по которой восстанавливается из стека и загружается в счетчик команд адрес возврата в прерванную программу и снимается аппаратная блокировка прерываний.
Сигналы запросов прерываний запоминаются контроллером прерываний только на время одного машинного цикла. В каждом новом цикле будут опрашиваться и ранжироваться запросы, зафиксированные в предыдущем цикле. Если запрос прерывания не получил обслуживания из-за аппаратной блокировки прерываний по одной из рассмотренных выше причин, а к моменту окончания блокировки запрос уже был снят, то этот запрос не получит обслуживания, поскольку тот факт, что запрос не был обслужен, нигде не запоминается.