Прямая и косвенная адресации. Когда производится прямая 9-битная адресация, младшие 7 бит берут­ся как прямой адрес из кода операции

Когда производится прямая 9-битная адресация, младшие 7 бит берут­ся как прямой адрес из кода операции, а два бита указателя страниц (RP1, RPO) из регистра статуса, как показано на рис. 5.7.

Команды CALL и GOTO оперируют 11-разрядным адресным диапазо­ном, достаточным для смещения в пределах страницы программной па­мяти объемом 2К слов. Для МК подгруппы PIC16F8X этого хватает. С це­лью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра PCLATH<4:3>. При использовании команд CALL и GOTO пользователь должен убедиться в том, что эти страничные биты запрог­раммированы для выхода на нужную страницу. При выполнении коман­ды CALL или выполнении прерывания весь 13-битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами PCLATH<4:3>.

Микроконтроллеры подгруппы PIC16F8X игнорируют значения бит PCLATH<4:3>, которые используются для обращения к страницам 1, 2 и 3 программной памяти. Однако применять биты PCLATH<4:3> в качестве ячеек памяти общего назначения не рекомендуется, так как это может по­влиять на совместимость с будущими поколениями изделий.

Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществ­лять табличные преобразования в Р1С-контроллерах.

Микроконтроллеры подгруппы PIC16F8X имеют восьмиуровневый ап­паратный стек шириной 13 бит (см. рис. 5.4). Область стека не принадле­жит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение счетчика команд посылается в стек, когда выполняется команда CALL или производится обработка пре­рывания. При выполнении процедуры возврата из подпрограммы (коман­ды RETLW, RETFIE или RETURN) содержимое счетчика команд восста­навливается из стека. Регистр PCLATH при операциях со стеком не изменяется.

Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Де­сятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счет­чик команд становится таким же, как после первой выгрузки.

Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения под­программ.








Дата добавления: 2015-08-26; просмотров: 500;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.