- •Введение
- •1. Основные определения и понятия микропроцессорной техники
- •1.1. Жесткая и гибкая логика
- •1.2. Микропроцессор и «сотоварищи»
- •Контрольные вопросы
- •2. Типы микропроцессорных систем и факторы, влияющие на их быстродействие
- •2.1. Типы микропроцессорных систем
- •2.2. Программируемые логические интегральные схемы
- •2.3. Факторы, влияющие на быстродействие микропроцессоров
- •Контрольные вопросы
- •3.3.1. Команды пересылки данных
- •3.3.2. Арифметические команды
- •3.3.3. Логические команды
- •3.3.4. Команды переходов
- •3.4. Быстродействие процессора
- •4.3.1. Память программ
- •4.3.2. Память данных
- •5.1.2. Микроконтроллеры семейств pic16cxxx и pic17cxxx
- •5.1.3. Особенности архитектуры микроконтроллеров семейства pic16cxxx
- •5.2. Микроконтроллеры подгруппы pic16f8x
- •5.2.1. Основные характеристики
- •5.2.2. Особенности архитектуры
- •5.2.3. Схема тактирования и цикл выполнения команды
- •5.2.4. Организация памяти программ и стека
- •5.2.5. Организация памяти данных
- •5.2.6. Регистры специального назначения
- •5.2.7. Счетчик команд
- •5.2.8. Прямая и косвенная адресации
- •5.2.9. Порты ввода/вывода
- •5.2.10. Модуль таймера и регистр таймера
- •5.2.11. Память данных в рпзу (eeprom)
- •5.2.12. Организация прерываний
- •5.2.13. Специальные функции
- •5.3. Система команд микроконтроллеров подгруппы pic16f8x
- •5.3.1. Перечень и форматы команд
- •5.3.2. Команды работы с байтами
- •5.3.3. Команды работы с битами
- •5.3.4. Команды управления и работы с константами
- •5.3.5. Особенности программирования и отладки
- •6.1. Разработка микропроцессорной системы на основе микроконтроллера
- •6.1.1. Основные этапы разработки
- •6.1.2. Разработка и отладка аппаратных средств
- •6.1.3. Разработка и отладка программного обеспечения
- •6.1.4. Методы и средства совместной отладки аппаратных и программных средств
5.2.7. Счетчик команд
Счетчик команд PCLиPCLATHимеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится врегистре02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется изрегистраPCLATH(PC latch high), адрес которого0Ah. СодержимоеPCLATHпередается в старший байт счетчика команд, когда он загружается новым значением.
В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд CALL,GOTO, или в младший байт счетчика команд (PCL) производится запись, – старшие биты счетчика команд загружаются изPCLATHразными способами, как показано нарис. 5.6.
Рис. 5.6.Загрузка старших бит счетчика команд.
Команды 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>в качестве ячеек памяти общего назначения не рекомендуется, так как это может повлиять на совместимость с будущими поколениями изделий.
Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществлять табличные преобразования в PIC-контроллерах.
Микроконтроллеры подгруппы PIC16F8X имеют восьмиуровневый аппаратный стек шириной 13 бит (см. рис. 5.4). Область стека не принадлежит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение счетчика команд посылается в стек, когда выполняется командаCALLили производится обработкапрерывания. При выполнении процедуры возврата из подпрограммы (командыRETLW,RETFIEилиRETURN) содержимое счетчика команд восстанавливается из стека.РегистрPCLATHпри операциях со стеком не изменяется.
Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Десятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счетчик команд становится таким же, как после первой выгрузки.
Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения подпрограмм.
5.2.8. Прямая и косвенная адресации
Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RP1,RP0) изрегистрастатуса, как показано нарис. 5.7.
Рис. 5.7.Методы адресации данных.
Признаком косвенной адресацииявляется обращение крегиструINDF. Любая команда, которая используетINDF(адрес00h) в качестверегистрафактически обращается к указателю, который хранится вFSR(адрес04h). Чтение косвенным образом самогорегистраINDFдаст результат00h. Запись врегистрINDFкосвенным образом будет выглядеть какNOP, но биты статуса могут быть изменены. Необходимый 9-битный адрес формируется объединением содержимого 8-битногоFSRрегистраи битаIRPизрегистрастатуса (см.рис. 5.7).
Обратите внимание, что некоторые регистрыспециальных функций располагаются в банке 1. Чтобы адресоваться к ним, нужно дополнительно установить в единицу битRP0врегистрестатуса.