Система команд
Блок последовательного канала (интерфейса)
Процедура обработки прерывания
Взаимодействие блоков микроконтроллера при обработке запросов прерывания приведено на рис.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 – разряд переполнения