Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
196
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

13.2.6. Регистры специального назначения

Ячейки памяти данных с адресами от 0x80 до 0xFF, доступные в режиме прямой адресации, образуют регистры специального назначения (special function registers - SFR). SFR позволяют управлять ресурсами ядра CIP-51 и периферийными модулями, а также осуществлять обмен данными с ними. CIP-51 дублирует SFR, типичные для архитектуры 8051, и содержит дополнительные SFR, используемые для настройки подсистем, уникальных для данного семейства МК, и доступа к ним. Это позволяет реализовать новые возможности при сохранении совместимости с системой команд MCS-51™. В таблице 13.2 перечислены все SFR МК на основе

CIP-51.

Регистры SFR доступны в любое время, когда для доступа к ячейкам памяти с адресами от 0x80 до 0xFF используется режим прямой адресации. SFR с адресами, оканчивающимися на 0x0 или 0x8 (т.е. P0, TCON, P1, SCON, IE, и т.д.), адресуются как побайтно, так и побитно. Все другие SFR адресуются только побайтно. Незанятые адреса в области SFR зарезервированы для дальнейшего использования. Обращение к ячейкам из этой области даст неопределенный результат и должно быть исключено. Подробное описание каждого регистра приведено на соответствующей странице данного руководства (см. табл. 13.3).

13.2.6.1. Страничная организация SFR.

В CIP-51 используется страничная организация SFR, что позволяет отображать в адресном пространстве 0х80 – 0xFF большое количество регистров SFR. Пространство памяти SFR имеет 256 страниц. Таким образом, каждая ячейка памяти из области 0х80 – 0xFF может адресовать до 256 регистров SFR. В МК семейства C8051F06x используются пять SFR страниц: 0, 1, 2, 3 и F. SFR страницы выбираются при помощи регистра выбора страницы SFR SFRPAGE (см. рис.13.10). Последовательность действий при чтении и записи SFR следующая:

1.Выбрать номер соответствующей SFR страницы, используя регистр SFRPAGE.

2.Прочитать или записать регистр SFR, используя режим прямой адресации (команда MOV).

13.2.6.2. Страничная организация SFR и прерывания.

При возникновении прерывания регистр страницы SFR автоматически переключится на ту страницу SFR, которая содержит флаг, вызвавший прерывание. Функция автоматического переключения SFR страницы просто освобождает процедуру обслуживания прерывания от необходимости переключать SFR страницы. После выполнения команды RETI SFR страница автоматически восстановится, т.е. будет установлена та SFR страница, которая использовалась до прерывания. Это осуществляется с помощью трехбайтного стека SFR страниц. Старшим байтом стека является SFRPAGE, текущая SFR страница. Вторым байтом стека SFR страниц является SFRNEXT. Третьим (младшим) байтом стека SFR страниц является SFRLAST. При возникновении прерывания текущее значение SFRPAGE загружается в регистр SFRNEXT, а значение SFRNEXT загружается в регистр SFRLAST. Затем в регистр SFRPAGE аппаратно записывается номер той SFR страницы, которая содержит флаг, вызвавший прерывание. При возврате из прерывания стек SFR страниц «выталкивается», в результате чего значение из SFRNEXT возвращается в регистр SFRPAGE, т.е. номер SFR страницы восстанавливается без вмешательства со стороны программы. Значение из SFRLAST (0х00, если на дне стека нет значения SFR страницы) помещается в регистр SFRNEXT. При необходимости в процедуре обслуживания прерывания можно модифицировать значения, сохраненные в регистрах SFRNEXT и SFRLAST, тогда при выполнении команды RETI (при выходе из прерывания) произойдет возврат на другую SFR страницу. Модификация регистров в стеке SFR страниц не приведет к «проталкиванию» стека. Лишь вызов прерывания и возврат из прерывания могут инициировать операции загрузки/извлечения стека SFR страниц.

Ред. 1.2

132

C8051F060/1/2/3/4/5/6/7

Рисунок 13.3. Стек страниц SFR

Бит SFRPGCN

Обработчик прерываний

SFRPAGE

CIP-51

SFRNEXT

SFRLAST

Автоматическое аппаратное переключение страниц SFR можно разрешить или запретить (при необходимости), используя бит разрешения автоматического управления страницами SFR, размещенный в регистре управления страницами SFR (SFRPGCN). После сброса эта функция по умолчанию разрешена (включена). Таким образом, функция автоматического переключения SFR страниц будет включена до тех пор, пока она не будет отключена в программе.

Полный перечень ячеек SFR (адрес и SFR страница) приведен в таблице 13.2 в виде карты распределения памяти SFR. Каждая ячейка памяти в этой карте имеет строку SFR страниц, показывающую, на какой странице находится данный SFR регистр. Следует отметить, что некоторые регистры SFR доступны со всех SFR страниц и имеют обозначение «ВСЕ СТРАНИЦЫ». Например, регистры портов ввода/вывода Р0, Р1, Р2 и Р3 все имеют обозначение «ВСЕ СТРАНИЦЫ», означающее, что эти регистры SFR доступны со всех страниц SFR независимо от значения регистра SFRPAGE.

133

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

13.2.6.3. Пример стека SFR страниц

Ниже приведен пример, показывающий функционирование стека SFR страниц при возникновении прерывания.

В этом примере управление SFR страницами оставлено во включенном по умолчанию состоянии (т.е. SFRPGEN = 1) и CIP-51 выполняет программный код (без переходов), записывающий значение в Порт 5 (SFR регистр «Р5», расположенный по адресу 0xD8 на SFR странице 0x0F). Кроме этого МК использует программируемый массив счетчиков (ПМС) и детектор диапазона 10-разрядного АЦП (АЦП2) для слежения за напряжением. ПМС тактирует критичную управляющую функцию в своей процедуре обслуживания прерывания, поэтому прерывание от ПМС разрешено и ему назначен высокий приоритет. АЦП2 отслеживает напряжение, что не так важно, но с целью оптимизации программы используются прерывания от детектора диапазона АЦП2, которым присвоен низкий приоритет. Изначально SFR страница настроена для доступа к SFR

регистру Порта 5 (SFRPAGE = 0x0F). См. рис.13.4 ниже.

Рисунок 13.4. Стек страниц SFR при использовании страницы SFR 0x0F для обращения к Порту 5

SFR-регистры

стека страниц SFR

0x0F

SFRPAGE

(Порт 5)

SFRNEXT

SFRLAST

Ред. 1.2

134

C8051F060/1/2/3/4/5/6/7

Сначала в нашем примере во время выполнения программного кода (записывающего в этом примере значение в Порт 5) происходит прерывание от детектора диапазона АЦП2. CIP-51 переходит на процедуру обслуживания прерывания от детектора диапазона АЦП2 и записывает номер текущей SFR страницы (0x0F) в регистр SFRNEXT в стеке SFR страниц. Номер SFR страницы, необходимой для доступа к SFR регистрам АЦП2, затем автоматически загружается в регистр SFRPAGE (0x02). SFRPAGE считается «вершиной» стека SFR страниц. Теперь программа может обращаться к SFR регистрам АЦП2. Программа может переключиться на любую страницу SFR путем записи нового значения в регистр SFRPAGE в любой момент во время выполнения процедуры обслуживания прерывания от АЦП2. Это может потребоваться для доступа к SFR регистрам, расположенным на других SFR страницах (не 0х02). См. рис.13.5 ниже.

Рисунок 13.5. Стек страниц SFR после возникновения прерывания от детектора диапазона АЦП2

При возникновении прерывания от АЦП2 SFR страница 0х02 автоматически загружается в стек в регистр SFRPAGE

Содержимое

регистра

SFRPAGE

загружается в регистр

SFRNEXT

0x02

SFRPAGE

(АЦП2)

0x0F

SFRNEXT

(Порт 5)

SFRLAST

135

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

Далее во время выполнения процедуры обслуживания прерывания от АЦП2 происходит прерывание от ПМС. Прерыванию от ПМС назначен высокий уровень приоритета, а прерыванию от АЦП2 назначен низкий уровень приоритета. Поэтому произойдет переход на процедуру обслуживания прерывания от ПМС, имеющую более высокий приоритет. После этого CIP-51 автоматически запишет номер страницы SFR, необходимой для доступа к регистрам специального назначения ПМС, в регистр SFRPAGE (0x00). Значение, которое было в регистре SFRPAGE до возникновения прерывания от ПМС (SFR страница 0х02 для АЦП2), записывается вниз по стеку в регистр SFRNEXT. Аналогичным образом значение, которое было в регистре SFRNEXT до возникновения прерывания от ПМС (в данном случае SFR страница 0х0F для Порта 5), записывается вниз по стеку в регистр SFRLAST, т.е. на «дно» стека. Следует иметь ввиду, что значение, сохраненное в регистре SFRLAST (записанное ранее программой) будет переписано. См. рис. 13.6 ниже.

Рисунок 13.6. Стек страниц SFR после возникновения прерывания от модуля ПМС во время выполнения процедуры обслуживания прерывания от АЦП2

При возникновении прерывания от ПМС SFR страница 0х00 автоматически загружается в стек в регистр SFRPAGE

Содержимое

регистра

SFRPAGE

загружается в регистр

SFRNEXT

Содержимое

регистра

SFRNEXT

загружается в регистр

SFRLAST

0x00

(ПМС)

SFRPAGE

0x02

SFRNEXT

(АЦП2)

0x0F

SFRLAST

(Порт 5)

Ред. 1.2

136

C8051F060/1/2/3/4/5/6/7

При выходе из процедуры обслуживания прерывания от модуля ПМС CIP-51 возвратится к процедуре обслуживания прерывания от детектора диапазона АЦП2. После выполнения команды RETI SFR страница 0х00, которая использовалась для доступа к регистрам ПМС, автоматически будет извлечена из стека SFR страниц, а содержимое регистра SFRNEXT будет помещено в регистр SFRPAGE. Программа в процедуре обслуживания прерывания от АЦП2 может продолжать обращаться к SFR регистрам так же, как и до возникновения прерывания от ПМС. Аналогичным образом содержимое регистра SFRLAST записывается в регистр SFRNEXT. Напомним, что оно представляет собой номер 0x0F SFR страницы, которая использовалась для доступа к Порту 5 до возникновения прерывания от АЦП2. См. рис. 13.7 ниже.

Рисунок 13.7. Стек страниц SFR после возврата из процедуры обслуживания прерывания от модуля ПМС

SFR страница 0х00 автоматически выталкивается из стека при выходе из процедуры обслуживания прерывания

Содержимое

регистра

SFRNEXT

загружается в регистр

SFRPAGE

Содержимое

регистра

SFRLAST

загружается в регистр

SFRNEXT

0x02

(АЦП2)

SFRPAGE

0x0F

(Порт 5)

SFRNEXT

SFRLAST

137

Ред. 1.2