Система команд
Блок последовательного канала (интерфейса)
Процедура обработки прерывания
Взаимодействие блоков микроконтроллера при обработке запросов прерывания приведено на рис.20.
![]() |
Рис. 20. Взаимодействие блоков микроконтроллера при обработке запросов прерывания
При поступлении запроса прерывания выполняются следующие действия:
1. Завершается выполнение текущей команды
2. Содержимое счетчика команд записывается в стек (через буфер СК в два этапа по шине данных передается в память данных, где записывается в две последовательные ячейки по адресу из регистра-указателя стека).
3. В соответствии с поступившим запросом выбирается адрес вектора прерывания и пересылается в регистр счетчика команд (через буфер СК в два этапа по шине данных передается сначала старшая часть адреса, затем младшая, собранный адрес из буфера записывается в регистр СК). Прием запросов прерывания от этого источника запрещается.
4. В следующем машинном цикле начинается выполнение программы обработки прерывания.
5. Завершается программа обработки прерывания командой RETI, при выполнении которой адрес из стека восстанавливается в регистр СК. Прием запросов прерывания от этого источника разрешается.
6. Со следующего машинного цикла продолжается выполнение прерванной программы.
Блок последовательного интерфейса (ПИ) предназначен для организации ввода-вывода последовательных потоков информации с возможностью дуплексного включения (одновременного приема и передачи данных). Структура блока последовательного интерфейса приведена на рис.21.
![]() |
Рис.21. Блок последовательного интерфейса
ПИ может работать в четырех режимах.
Режим 0. Информация выдается и принимается через вход приемника RxD. Через выход передатчика ТхD выдаются импульсы синхронизации, стробирующие каждый передаваемый или принимаемый бит информации. Формат посылки – 8 бит. Частота приема и передачи – fQ /12.
Режим 1. Информация передается через выход передатчика TxD, а принимается через вход приемника RxD. Формат посылки 10 бит: старт-бит (ноль), 8 бит данных (начиная с младшего) и стоп-бит (единица). Частота приема и передачи задается Т/С1.
Режим 2. Информация передается через выход передатчика TxD, а принимается через вход приемника RxD. Формат посылки 11 бит: старт-бит, 8 бит данных (начиная с младшего), программируемый девятый бит и стоп-бит. Передаваемый девятый бит данных принимает значение бита ТВ8 из регистра управления SCON. При приеме девятый бит принятой посылки поступает в бит RB8 регистра SCON. Частота приема и передачи задается программно и может быть равна fQ /64 или fQ /32.
Режим 3. Режим 3 идентичен режиму 2 за исключением скорости приема и передачи, которая в режиме 3 задается Т/С1.
Работой ПИ управляет регистр специального назначения SCON. Все разряды этого регистра доступны по записи и чтению (таблица 7).
Таблица 7
Биты | ||||||||
Обозн. | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
Назначение разрядов:
- SM0, SM1 – задают режим работы ПИ 0, 1, 2 или 3;
SM0 | SM1 | Режим | Наименование | Скорость передачи |
Сдвиговый регистр 8–битовый универсальный асинхронный приёмопередатчик (УАПП) 9 – битовый УАПП 9 – битовый УАПП | fQ /12 переменная, задается Т/С1 fQ /64 или fQ /32 переменная, задается Т/С1 |
- SM2 – разрешение многопроцессорной работы. В режимах 2 и 3 при SM2=1 флаг RI не активизируется, если девятый принятый бит данных равен 0. В режиме 1 при SM2=1 флаг RI не активизируется, если не принят стоп-бит, равный «1». В режиме 0 SM2 должен быть установлен в «0»;
- REN - разрешение приема последовательных данных. Устанавливается и сбрасывается программным обеспечением, соответственно, для разрешения и запрета приема;
- ТВ8 – девятый бит передаваемых данных в режимах 2 и 3. Устанавливается и сбрасывается программным обеспечением;
- RB8 – девятый бит принятых данных в режимах 2 и 3.В режиме 1, если SM2 =0, RB8 является принятым стоп-битом. В режиме 0 бит RB8 не используется;
- ТI – флаг прерывания передатчика. Устанавливается аппаратно в конце времени выдачи 8-го бита в режиме 0 или в начале стоп-бита в других режимах. Сбрасывается программным обеспечением;
- RI – флаг прерывания приемника. Устанавливается аппаратно в конце времени приема 8-го бита в режиме 0 или через половину интервала стоп-бита в режимах 1, 2, 3 при SM2=0. При SM2=1 см. описание для бита SM2.
Скорость приема и передачи зависит от используемого кварцевого генератора и выбранного режима приема/передачи. Для режимов, в которых скорость определяется таймером/счетчиком 1, константы программирования таймера приведены в таблице 8.
Таблица8
Режим работы ПИ | Скорость приема/ передачи, Кбод | fQ, МГц | SMOD | Разряды TMOD | ТН1 | Приме-чание | ||
С/Т | М1 | М0 | ||||||
1,3 | Макс: 375 62,5 19,2 9,6 4,8 2,4 1,2 0,1375 0,110 0,110 | 11,059 11,059 11,059 11,059 11,059 11,986 | Х | Х | Х | Х | X Х FFH FDH FDH FAH F4H E8H 18H 72H FEH | TL1= EBH |
Программная реализация последовательного приема/передачи информации приведена при описании периферийных устройств.
Для описания системы команд были использованы следующие обозначения:
PC- программный счетчик;
A - аккумулятор;
Rn - регистр общего назначения с номером n;
@Ri – ячейка памяти внутреннего ОЗУ, адрес которой записан в регистре Ri (косвенная адресация);
Direct - любой регистр специального назначения или ячейка внутреннего ОЗУ (абсолютная адресация);
#Data - байт данных, содержащийся во втором байте кода команды (непосредственная адресация);
Dptr –16-разрядный регистр-указатель данных;
Met - метка в командах переходов, указывающая какая команда будет выполняться следующей;
Name – имя подпрограммы;
Bit – имя прямоадресуемого бита (например: A.1, P2.3);
С – разряд переноса;
AС – разряд дополнительного переноса;
OV – разряд переполнения