Регистры специальных функций

К адресному пространству памяти данных примыкает адресное пространство регистров специальных функций РСФ или, на английском языке, SFR (Special Function Register).

Регистры с символическими именами IP, IE, TMOD, TCON, SCON и PCON используются для фиксации и программного изменения управляющих бит и бит состояния схемы прерывания, таймера/счетчика, приемопередатчика последовательного порта и для управления энергопотреблением.

Адрес прямо адресуемых битов может быть записан либо в виде выражения (НазваниеРегистра).(Разряд), либо в виде номера бита (Табл. 1.2). Адреса регистров специальных функций приведены в табл. 1.3.

Карта адресуемых битов в блоке регистров SFR

Таблица 1.2

Адрес байта Адреса битов по разрядам Имя регистра
D7 D6 D5 D4 D3 D2 D1 D0
F0H F7 F6 F5 F4 F3 F2 F1 F0 B
... ...
E0H E7 E6 E5 E4 E3 E2 E1 E0 ACC
... ...
D0H D7 D6 D5 D4 D3 D2 D1 D0 PSW
... ...
B8H - - - BC BB BA B9 B8 IP
... ...
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
... ...
A8H AF - - AC AB AA A9 A8 IE
... ...
A0H A7 A6 A5 A4 A3 A2 A1 A0 P2
... ...
98H 9F 9E 9D 9C 9B 9A SCON
... ...
90H P1
... ...
88H 8F 8E 8D 8C 8B 8A TCON
... ...
80H P0

Размещение регистров специальных функций

Таблица 1.3

Адрес Символ Наименование
0E0h *АСС Аккумулятор (Accumulator)
0F0h Регистр расширитель аккумулятора (Multiplication Register)
0D0h *PSW Слово состояния программы (Program Status Word)
080Н *P0 Порт 0 (SFR P0)
090h *Р1 Порт 1 (SFR P1)
0A0h *P2 Порт 2 (SFR P2)
0B0h *P3 Порт 3 (SFR РЗ)
081h SP Регистр указатель стека (Stack Pointer)
083h DPР Старший байт регистра указателя данных DPTR (Data Pointer High)
082h DPL Младший байт регистра указателя данных DPTR (Data Pointer Low)
08Ch TH0 Старший байт таймера 0
08Ah TL0 Младший байт таймера 0
08Dh TР1 Старший байт таймера 1
08Bh TL1 Младший байт таймера 1
089h TMOD Регистр режимов таймеров счетчиков (Timer/Counter Mode Control Register)
088h *TCON Регистр управления статуса таймеров (Timer/Counter Control Register)
0B8h *IP Регистр приоритетов (Interrupt Priority Control Register)
0A8h *IE Регистр маски прерывания (Interrupt Enable Register)
087h PCON Регистр управления мощностью (Power Control Register)
098h *SCON Регистр управления приемопередатчиком (Serial Port Control Register)
099h SBUF Буфер приемопередатчика (Serial Data Buffer)


* Примечание. Регистры, символ которых отмечен знаком (*), допускают адресацию своих отдельных бит при использовании команд из группы команд операций над битами.

Отметим, что регистры занимают только часть 128-байтового адресного пространства. Те ячейки памяти с адресами 80H-0FFH, которые не заняты регистрами, физически отсутствуют, на кристаллах микроконтроллеров семейства 8051 при обращении к ним можно прочитать лишь случайные данные.

Регистры специальных функций управляют работой блоков, входящих в микроконтроллер.

· Регистры-защелки SFR параллельных портов P0...P3 - служат для ввода-вывода информации.

· Две регистровые пары с именами TH0, TL0 и TH1, TL1 представляют собой регистры, двух программно-управляемых 16-битных таймеров-счетчиков (Рис.1).

· Режимы таймеров-счетчиков задаются с использованием регистра TMOD, а управление ими осуществляется с помощью регистра TCON.

· Для управления режимами энергопотребления микро-ЭВМ используется регистр PMOD.

· Регистры IP и IE управляют работой системы прерываний микро-ЭВМ,

· регистры SBUF и SCON — работой приемопередатчика последовательного порта.

· Регистр-указатель стека SP в микро-ЭВМ рассматриваемого семейства — восьми битный. Он может адресовать любую область внутренней памяти данных. У микро-ЭВМ семейства 8051 стек «растет вверх», т.е. перед выполнением команды PUSH или CALL содержимое SP инкрементируется, после чего производится запись информации в стек. Соответственно при извлечении информации из стека регистр SP декрементируется после извлечения информации.

· Регистр-указатель данных DPTR чаще всего используют для фиксации 16-битного адреса в операциях обращения к внешней памяти программ и данных. С точки зрения программиста он может выступать как в виде одного 16-битного регистра, так и в виде двух независимых регистров DPL и DPH

· Аккумулятор (АСС) является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета и т.п. В распоряжении пользователя имеются 8 регистров общего назначения R0–R7 одного из четырёх возможных банков.

· Регистр В используется как источник и как приемник при операциях умножения и деления, обращение к нему, как к регистру SFR, производится аналогично аккумулятору.

· При выполнении ряда команд в арифметико-логическом устройстве (АЛУ) формируются признаки операций — флаги, которые фиксируются в регистре PSW (табл. 1.4).

Регистр флагов (PSW)

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Перечень флагов, их символические имена

и условия формирования

Таблица 1.4

Символ Позиция Имя и назначение
P PSW.0 Флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе
- PSW.1 Не используется
OV PSW.2 Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций
RS0 - RS1 PSW.3 - PSW.4 Биты выбора используемого банка регистров. Могут быть изменены программным путем
RS0 RS1 Банк Границы адресов ОЗУ
00H - 07H
08H - 0FH
10H - 17H
18H - 1FH
F0 PSW.5 Флаг пользователя. Может быть установлен, сброшен или проверен программой пользователя
АС PSW.6 Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или заеме в бите 3 аккумулятора
C PSW.7 Флаг переноса. Устанавливается и сбрасывается как аппаратно, так и программным путем

Формат слова состояния PSW

Обознач. Разряд Наименование и назначение
P PSW.0 Флаг паритета. Устанавливается и сбрасывается аппаратно: P=1, если в аккумуляторе нечетное число единиц; P=0, если в аккумуляторе четное число единиц
PSW.1 Флаг, определяемый пользователем. Устанавливается, сбрасывается и тестируется программно
OV PSW.2 Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций.
RS0 PSW.3 Выбор банка регистров. Устанавливаются и сбрасываются программно: RS1=0, RS0=0: Банк 0 (Адреса 00H ¸ 07H) RS1=0, RS0=1: Банк 1 (Адреса 08H ¸ 0FH) RS1=1, RS0=0: Банк 2 (Адреса 10H ¸ 17H) RS1=1, RS0=1: Банк 3 (Адреса 18H ¸ 1FH)
RS1 PSW.4  
F0 PSW.5 Флаг общего назначения. Устанавливается, сбрасывается и тестируется программно
AC PSW.6 Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратно при выполнении команд сложения и вычитания и несет информацию о переносе или заеме в 3-ем разряде
C PSW.7 Флаг переноса. Устанавливается и сбрасывается аппаратно (при выполнении арифметических и логических. операций) или программно.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

Наиболее “активным” флагом PSW является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (C) выполняет функции “булева аккумулятора” в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. ALU не управляет флагами селекции банка регистров (RS0, RS1), их значение полностью определяется прикладной программой и используется для выбора одного из четырёх регистровых банков.

В микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ним, используя неявную адресацию. В Intel 8051 дело обстоит иначе. Хотя процессор имеет в своей основе аккумулятор, он может выполнять множество команд и без его участия. Например, данные могут быть переданы из любой ячейки RDM в любой регистр, любой регистр может быть загружен непосредственным операндом и т.д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут быть инкрементированы, декрементированы и проверены без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.

Наши рекомендации