Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Прямая и косвенная адресации

Прямая и косвенная адресации

Когда производится прямая 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 раз, счет­чик команд становится таким же, как после первой выгрузки.

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

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


Банк 0 Банк 1 Банк 2 Банк 3 1)дляР1С17Р83иР1С16СВ83 2) для PIC16F84 и PIC16CR84

Рис. 5.7. Методы адресации данных.

Признаком косвенной адресации является обращение к регистру INDF. Любая команда, которая использует INDF (адрес ООН) в качестве регистра фактически обращается к указателю, который хранится в FSR (адрес 04h). Чтение косвенным образом самого регистра INDF даст результат ООН. За­пись в регистр INDF косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены. Необходимый 9-битный адрес формируется объединением содержимого 8-битного FSR регистра и бита IRP из регистра статуса (см. рис. 5.7).

Обратите внимание, что некоторые регистры специальных функций располагаются в банке 1. Чтобы адресоваться к ним, нужно дополнитель­но установить в единицу бит RPO в регистре статуса.

5.2.9. Порты ввода/вывода

Контроллеры подгруппы PIC16F8X имеют два порта: PORTA (5 бит) и PORTB (8 бит) с побитовой индивидуальной настройкой на ввод или на вывод.

\ Порт A (PORTA) представляет собой 5-битовый фиксатор, соответствую­щий выводам контроллера RA<4:0>. Линия RA4 имеет вход триггера Шмит-та и выход с открытым стоком. Все остальные линии порта имеют ТТЛ вход­ные уровни и КМОП выходные буферы. Адрес регистра порта А - 05h.

Каждой линии порта поставлен в соответствие бит направления пере­дачи данных, который хранится в управляющем регистре TRISA, распо­ложенном по адресу 85h. Если бит управляющего TRISA регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержи­мое соответствующего регистра-фиксатора порта. При включении пита­ния все линии порта по умолчанию настроены на ввод.

На рис. 5.8 дана схема линий RA<3:0> порта А.

Рис. 5.8. Схема линий RA<3:0> порта А. Выводы порта имеют защитные диоды к Vdd и Vss.

Операция чтения порта А считывает состояние выводов порта, в то вре­мя как запись в него изменяет состояние триггеров порта. Все операции с портом являются операциями типа «чтение-модификация-запись». По­этому запись в порт предполагает, что состояние выводов порта вначале считывается, затем модифицируется и записывается в триггер-фиксатор.

Вывод RA4 мультиплексирован с тактовым входом таймера TMRO. Схе­ма линии RA4 порта А приведена на рис. 5.9.

Порт В (PORTB) — это двунаправленный 8-битовый порт, соответству­ющий выводам RB<7:0> контроллера и расположенный по адресу 06h. Относящийся к порту В управляющий регистр TRISB расположен на первой странице регистров по адресу 86h. Если бит управляющего TRISB регист­ра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. При включении питания все линии порта по умолчанию настроены на ввод.

Рис. 5.9. Схема линии RA4 порта А. Вывод порта имеет защитный диод только

У каждой ножки порта В имеется небольшая активная нагрузка (около ЮОмкА) на линию питания (pull-up). Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит / RBPU регистра OPTION<7> может отключить (при RBPU=1) все нагруз­ки. Сброс при включении питания также отключает все нагрузки.

Четыре линии порта В (RB<7:4>) могут вызвать прерывание при изме­нении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новая величина входного сигнала сравнивается со старой в каждом командном

Рис. 5.11. Схема линий RB<3:0> порта В. Выводы порта имеют защитные диоды к Vdd и Vss.

При организации двунаправленных портов необходимо учитывать особен­ности организации ввода/вывода данных МК. Любая команда, которая осу­ществляет запись, выполняет ее внутри как «чтение-модификация-запись». На­пример, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. В частно­сти, команда BSF PORTB, 5 (установить в единицу бит 5 порта В) сначала счи­тывает все реальные значения сигналов, присутствующие в данный момент на выводах порта. Затем выполняются действия над битом 5, и новое значение байта целиком записывается в выходные фиксаторы. Если другой бит регистра PORTB используется в качестве двунаправленного ввода/вывода (скажем, бит 0), и в данный момент он определен как входной, то входной сигнал на этом выводе будет считан и записан обратно в выходной триггер-фиксатор этого же вывода, стирая предыдущее состояние. До тех пор, пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако если позднее линия О переключится в режим вывода, ее состояние будет неопределенным.

На ножку, работающую в режиме вывода, не должны нагружаться вне­шние источники токов («монтажное И», «монтажное ИЛИ»). Большие ре­зультирующие токи могут повредить кристалл.Необходимо выдерживать определенную последовательность обраще-мия к портам ввода/вывода. Запись в порт вывода происходит в конце командного цикла. Но при чтении данные должны быть стабильны в на­чале командного цикла. Будьте внимательны в операциях чтения, следу­ющих сразу за записью в тот же порт. Здесь надо учитывать инерцион­ность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (которое зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения.

<== предыдущая лекция | следующая лекция ==>
 | Модуль таймера и регистр таймера
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 617; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.