F40-43a (1041604), страница 24
Текст из файла (страница 24)
CIP-51 дублирует SFR,типичные для архитектуры 8051, и содержит дополнительные SFR, используемые для настройки подсистем,уникальных для данного семейства МК, и доступа к ним. Это позволяет реализовать новые возможности присохранении совместимости с системой команд MCS-51™. В таблице 12.2 перечислены все SFR МК на основеCIP-51.Регистры SFR доступны в любое время, когда для доступа к ячейкам памяти с адресами от 0x80 до0xFF используется режим прямой адресации. SFR с адресами, оканчивающимися на 0x0 или 0x8 (т.е. P0, TCON,P1, SCON, IE, и т.д.), адресуются как побайтно, так и побитно.
Все другие SFR адресуются только побайтно.Незанятые адреса в области SFR зарезервированы для дальнейшего использования. Обращение к ячейкам изэтой области даст неопределенный результат и должно быть исключено. Подробное описание каждого регистраприведено на соответствующей странице данного руководства (см. табл. 12.3).12.2.6.1. Страничная организация SFR.В CIP-51 используется страничная организация SFR, что позволяет отображать в адресномпространстве 0х80 – 0xFF большое количество регистров SFR. Пространство памяти SFR имеет 256 страниц.Таким образом, каждая ячейка памяти из области 0х80 – 0xFF может адресовать до 256 регистров SFR.
В МКсемейства C8051F04x используются пять SFR страниц: 0, 1, 2, 3 и F. SFR страницы выбираются при помощирегистра выбора страницы SFR SFRPAGE (см. рис.12.10). Последовательность действий при чтении и записиSFR следующая:1. Выбрать номер соответствующей SFR страницы, используя регистр SFRPAGE.2. Прочитать или записать регистр SFR, используя режим прямой адресации (команда MOV).12.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 страниц.127Ред. 1.3C8051F040/1/2/3Рисунок 12.3. Стек страниц SFRОбработчикпрерыванийSFRPAGESFRNEXTSFRLASTАвтоматическое аппаратное переключение страниц SFR можно разрешить или запретить (принеобходимости), используя бит разрешения автоматического управления страницами SFR, размещенный врегистре управления страницами SFR (SFRPGCN).
После сброса эта функция по умолчанию разрешена(включена). Таким образом, функция автоматического переключения SFR страниц будет включена до тех пор,пока не будет отключена в программе.Полный перечень ячеек SFR (адрес и SFR страница) приведен в таблице 12.2 в виде картыраспределения памяти SFR. Каждая ячейка памяти в этой карте имеет строку SFR страниц, показывающую, накакой странице находится данный SFR регистр. Следует отметить, что некоторые регистры SFR доступны совсех SFR страниц и имеют обозначение «ВСЕ СТРАНИЦЫ».
Например, регистры портов ввода/вывода Р0, Р1,Р2 и Р3 все имеют обозначение «ВСЕ СТРАНИЦЫ», показывающее, что эти регистры SFR доступны со всехстраниц SFR независимо от значения регистра SFRPAGE.Ред. 1.3128C8051F040/1/2/312.2.6.3. Пример стека SFR страницНиже приведен пример, показывающий функционирование стека SFR страниц при возникновениипрерывания.В этом примере управление SFR страницами оставлено во включенном по умолчанию состоянии (т.е.SFRPGEN = 1) и CIP-51 выполняет программный код (без переходов), записывающий значение в Порт 5 (SFRрегистр «Р5», расположенный по адресу 0xD8 на SFR странице 0x0F).
Кроме этого МК используетпрограммируемый массив счетчиков (ПМС) и детектор диапазона 8-разрядного АЦП (АЦП2) для слежения занапряжением. ПМС тактирует критичную управляющую функцию в своей процедуре обслуживанияпрерывания, поэтому прерывание от ПМС разрешено и ему назначен высокий приоритет. АЦП2 отслеживаетнапряжение, что не так важно, но с целью оптимизации программы используются прерывания от детекторадиапазона АЦП2, которым присвоен низкий приоритет. Изначально SFR страница настроена для доступа к SFRрегистру Порта 5 (SFRPAGE = 0x0F).
См. рис.12.4 ниже.Рисунок 12.4. Стек страниц SFR при использовании страницы SFR 0x0F дляобращения к Порту 5Регистры стекастраниц SFR0x0FSFRPAGE(Порт 5)SFRNEXTSFRLAST129Ред. 1.3C8051F040/1/2/3Сначала в нашем примере во время выполнения программного кода (записывающего в этом примерезначение в Порт 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). См. рис.12.5 ниже.Рисунок 12.5. Стек страниц SFR после возникновения прерывания от детекторадиапазона АЦП2При возникновении прерывания от АЦП2SFR страница 0х02 автоматическизагружается в стек в регистр SFRPAGE0x02SFRPAGEСодержимоерегистраSFRPAGEзагружаетсяв регистрSFRNEXT(АЦП2)0x0FSFRNEXT(Порт 5)SFRLASTРед. 1.3130C8051F040/1/2/3Далее во время выполнения процедуры обслуживания прерывания от АЦП2 происходит прерывание отПМС. Прерыванию от ПМС назначен высокий уровень приоритета, а прерыванию от АЦП2 назначен низкийуровень приоритета. Поэтому произойдет переход на процедуру обслуживания прерывания от ПМС, имеющуюболее высокий приоритет.
После этого CIP-51 автоматически запишет номер страницы SFR, необходимой длядоступа к регистрам специального назначения ПМС, в регистр SFRPAGE (0x00). Значение, которое было врегистре SFRPAGE до возникновения прерывания от ПМС (SFR страница 0х02 для АЦП2), записывается внизпо стеку в регистр SFRNEXT. Аналогичным образом значение, которое было в регистре SFRNEXT довозникновения прерывания от ПМС (в данном случае SFR страница 0х0F для Порта 5), записывается вниз постеку в регистр SFRLAST, т.е. на «дно» стека.
Следует иметь ввиду, что значение, сохраненное в регистреSFRLAST (записанное ранее программой) будет переписано. См. рис. 12.6 ниже.Рисунок 12.6. Стек страниц SFR после возникновения прерывания от модуля ПМС вовремя выполнения процедуры обслуживания прерывания от АЦП2При возникновении прерывания от ПМСSFR страница 0х00 автоматическизагружается в стек в регистр SFRPAGE0x00СодержимоерегистраSFRPAGEзагружаетсяв регистрSFRNEXTСодержимоерегистраSFRNEXTзагружаетсяв регистрSFRLASTSFRPAGE(ПМС)0x02SFRNEXT(АЦП2)0x0FSFRLAST(Порт 5)131Ред. 1.3C8051F040/1/2/3При выходе из процедуры обслуживания прерывания от модуля ПМС CIP-51 возвратится к процедуреобслуживания прерывания от детектора диапазона АЦП2.
После выполнения команды RETI SFR страница0х00, которая использовалась для доступа к регистрам ПМС, автоматически будет извлечена из стека SFRстраниц, а содержимое регистра SFRNEXT будет помещено в регистр SFRPAGE. Программа в процедуреобслуживания прерывания от АЦП2 может продолжать обращаться к SFR регистрам так же, как и довозникновения прерывания от ПМС. Аналогичным образом содержимое регистра SFRLAST записывается врегистр SFRNEXT. Напомним, что оно представляет собой номер 0x0F SFR страницы, которая использоваласьдля доступа к Порту 5 до возникновения прерывания от АЦП2.
См. рис. 12.7 ниже.Рисунок 12.7. Стек страниц SFR после возврата из процедуры обслуживанияпрерывания от модуля ПМСSFR страница 0х00 автоматическивыталкивается из стека при выходеиз процедуры обслуживанияпрерывания0x02СодержимоерегистраSFRNEXTзагружаетсяв регистрSFRPAGEСодержимоерегистраSFRLASTзагружаетсяв регистрSFRNEXTSFRPAGE(АЦП2)0x0FSFRNEXT(Порт 5)SFRLASTРед. 1.3132C8051F040/1/2/3После выполнения команды RETI в процедуре обслуживания прерывания от детектора диапазонаАЦП2 содержимое регистра SFRNEXT переписывается в регистр SFRPAGE.