- •Введение
- •Назначение микропроцессорных систем сбора и обработки данных
- •Микроконтроллеры семейства mcs-51
- •Общая характеристика базовой модели
- •Структурная схема кристалла 80с51.
- •Регистры специальных функций
- •Синхронизация микроконтроллера
- •Организация памяти в семействе мсs-51
- •Пример программирования последовательного порта
- •Режимы 2 и 3 работы последовательного порта
Регистры специальных функций
Регистры микроконтроллера за исключением регистров общего назначения и регистра программного счётчика называются регистрами специальных функций. Рассмотрим назначение регистров специальных функций. Обозначение регистров специальных функций приведено в таблице 1. Звёздочкой помечены регистры, допускающие наряду с адресацией байтов адресацию отдельных битов регистра.
Таблица 1
Примечание |
Обозначение |
Наименование |
|
АСС В PSW SP DPTR DPL DPH P0 P1 P2 P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON
|
Аккумулятор Регистр В Регистр состояния программ Указатель стека Указатель данных, 2 байта Младший байт Старший байт Порт 0 Порт 1 Порт 2 Порт 3 Регистр приоритетов прерываний Регистр разрешений прерываний Регистр режимов таймера/счётчика Регистр управления таймера/счётчика Т/С 0 Старший байт Т/С 0 Младший байт Т/С 1 Старший байт Т/С 1 Младший байт Управление последовательным портом Буфер последовательного порта Управление потреблением
|
Аккумулятор. АСС – регистр аккумулятора. Аккумулятор является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвига, проверки на нуль, формирование флага паритета. Команды, предназначенные для работы с аккумулятором, используют мнемонику “А”.
Регистр В. Используется во время операций умножения и деления. При умножении в регистр В помещается старший байт 16-битового произведения, а младший в аккумулятор. При делении остаток помещается в регистр В, а частное – в аккумулятор. Для других инструкций регистр В может использоваться, как дополнительный регистр.
Регистр состояния программы PSW. хранит информацию о состоянии программы. Этот регистр вместе с аккумулятором содержит признаки результата выполнения команды.
7 CY |
6 AC |
5 F0 |
4 RS1 |
3 RS0 |
2 OV |
1 |
0 P |
PSW
Имя флага |
Позиция |
Функция |
CY |
PSW. 7 |
Флаг переноса. Устанавливается аппаратно или программно при выполнении арифметических и логических операций. Например, он устанавливается при возникновении переноса в старший байт при операции сложения двух байтов, когда результат оказывается 2-хбайтовым. Установка этого бита при вычитании указывает на то, что результатом является отрицательное число. |
АС |
PSW. 6 |
Флаг вспомогательного переноса. Устанавливается и сбрасывается аппаратно при выполнении команд сложения и вычитания, сигнализирует о переносе или займе в бите 3. Этот флаг используется при операциях с числами в двоично-десятичном упакованном формате (BCD-формате). Это формат, в котором одна десятичная цифра кодируется комбинацией битов в тетраде. |
F0 |
PSW. 5 |
Флаг, определяемый пользователем. Пользователь может установить флаг, отмечая признак выполнение какого-нибудь действия. |
RS1 RS0 |
PSW. 4 PSW. 3 |
Комбинация битов определяет положение РОН в адресном пространстве ОЗУ. 00 – банк "0" с адресами (00 – 07); 01 - банк "1" с адресами (08 – 0F); 10 - банк "2" с адресами (10 – 17); 11 - банк "3" с адресами (18 – 1F). Банку регистров соответствует область адресов в ОЗУ, по которым расположены восемь регистров общего назначения (R0 – R7). Переключение банков регистров приводит к изменению адресов этих регистров в ОЗУ. При этом старые значения данных, находившихся в регистрах до переключения банка, не изменяются. Они сохраняются в ячейках ОЗУ по адресам, которые занимал банк до переключения. Механизм переключения банков регистров является более быстродействующей альтернативой стеку. Например, если в основной программе и подпрограмме используются одни и те же регистры общего назначения, то переключение банка при переходе к подпрограмме позволяет пользоваться РОН, и при этом старые значения данных в РОН сохраняются в ОЗУ. Чтобы вернуть значения регистров при возврате в прерванную программу достаточно переключить назад банк регистров. |
OV |
PSW. 2 |
Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций для указания переполнения. Например, он устанавливается при делении на ноль. |
- |
PSW. 1 |
Флаг, определяемый пользователем. |
P |
PSW. 0 |
Флаг чётности (паритета). Устанавливается и сбрасывается аппаратно в каждом цикле команды для указания чётного (бит сброшен) или нечётного (бит установлен) числа разрядов аккумулятора, находящихся в состоянии «1». Флаг Р является дополнением содержимого аккумулятора до чётности. В 9-разрядном слове, состоящем из 8-ми разрядов аккумулятора и бита Р, всегда содержится чётное число единиц. Этот флаг можно использовать для повышения достоверности передачи данных по последовательному каналу в стандарте RS-232C (контроль по паритету). Например, можно передавать 9-битовые данные, содержащие только чётное число единиц, добавляя к байтам, содержащим нечётное число единиц в байте в дополнительный разряд единицу. Когда передаётся байт с чётным числом единиц, то в дополнительный разряд добавляется 0. При этом 9-разрядное слово всегда будет содержать чётное число единиц. На приёмном конце производится контроль, и если приходит 9-разрядное слово с нечётным числом единиц, то определяется ошибка передачи.
|
Указатель стека SP. 8-ми битовый регистр, содержимое которого инкрементируется перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07H, а область стека в ОЗУ начинается с адреса 08Н. При необходимости путём переопределения стека может быть расположена в любом месте внутреннего ОЗУ. Например, mov SP,#30H. Команда определяет, что стек начинается с ячейки ОЗУ с адресом 31H. Стеком обозначается область ОЗУ, в которой располагаются данные, которые могут быть утеряны при переходе к выполнению подпрограммы. При переходе к выполнению подпрограммы автоматически в стек заносится только содержимое программного счётчика. Это необходимо для сохранения адреса возврата в прерванную программу. После окончания подпрограммы в программный счётчик заносится адрес возврата из стека. Необходимые для сохранения значения остальных регистров помещаются в стек командой PUSH, а извлекаются из стека командой POP.
Указатель данных. DPTR – указатель данных состоит из старшего байта DPH и младшего DPL. Содержит 16-ти битовый адрес ячейки внешней памяти данных при обращении к внешней памяти данных. Может использоваться, как 16-ти битовый регистр или два независимых 8-ми битовых регистров.
Порт 0 – Порт 3. Регистрами специальных функций являются 8-разрядные порты Р0, Р1, Р2, Р3. Порты необходимы для обмена данными с внешними устройствами.
Буфер последовательного порта. Последовательный порт микроконтроллера выполняет функцию обмена данными с внешними устройствами в последовательном коде. В последовательном коде биты каждого, поступившего в порт байта, передаются и принимаются по очереди бит за битом. Буфер последовательного порта (SBUF) – представляет собой два отдельных 8-разрядных регистра: буфер передатчика и буфер приёмника. Когда данные записываются в SBUF, они поступают в буфер передатчика, причём запись байта в SBUF автоматически инициирует его передачу через последовательный порт. Когда данные читаются из SBUF, они выбираются из буфера приёмника.
Регистры таймера. Регистровые пары (TH0, TL0) и (TH1, TL1) образуют 16-ти битовые счётные регистры соответственно T/C0 и T/C1. В эти регистры может быть помещён результат счёта машинных циклов при работе Т\С в режиме таймера, либо результат счёта перепадов из 1 в 0 на соответствующий внешних вводах микроконтроллера, если Т\С работает в режиме счётчика.
Регистры управления. IP, IE, SCON, TMOD, TCON, PCON – содержат биты состояния системы управления прерываниями, таймеров/счётчиков, последовательного порта и энергопотребления. Установка комбинаций битов в этих регистрах задаёт режим работы данных функциональных узлов микроконтроллера.
