пятница, 23 января 2009 г.

Набор команд микроконтроллеров PIC

В системе команд микроконтроллеров PIC среднего подсемейства всего 35 кодов операции, где есть все. что требуется для программирования (табл. 1.1 - 1,3). В базовой серии PIC используется почти такой же набор команд. Хотя для удобства программирования было бы неплохо получить еще несколько дополнительных команд, существующих команд достаточно для решения любых задач.

Команды очень хорошо документированы в технических описаниях, где можно найти даже коды операций.

В описании команд следует всегда обращать внимание на колонку, в которой отмечены флаги, изменяемые в результате выполнения той или иной команды. Флаги находятся в регистре состоянии STATUS, в котором также присутствуют и некоторые дополнительные разряды.
В микроконтроллерах РIС базовой серии и среднего подсемейства присутствуют только три флага: ZR, CY и DC. В документации Microchip флат ZR и CY обозначаются соответственно Z и С. Авторы находят это неудобным и потому используют в книге собственный способ записи.

Внимание!
При операциях вычитания флаг CY устанавливается, даже если не было переполнения. По команде MOVF устанавливается флаг ZR (хотя это и непривычно, зато практично ввиду отсутствия команды TEST).

Структура команды микроконтроллеров PIC

Следующее описание структуры команд касается команд длиной в одно слово. Особенности Enhanced PIC описываются в главе "PIC18".

Каждая команда состоит из двух компонентов: кода операции и аргументов. Код операции определяет, какую операцию необходимо выполнять. Аргументы могут быть константами, адресами или прочими параметрами. Оба компонента заключены в одном слове команды, разряды которого используются оптимально, поскольку отсутствует выделение строго определенного количества разрядов под код операции и аргументы. Так, в некоторых командах аргументы очень длинные, в то время как в других командах их вообще нет. В некоторых случаях даже тяжело сказать, какие разряды относятся к коду операции, а какие — к аргументу.

Наибольший класс команд образуют логические и арифметические операции с аргументом данных и рабочим регистром W. Команд с двумя аргументами данных не существует, в чем заключается один из недостатков сжатой структуры команды.

Этот класс команд имеет следующую структуру:

12 разрядов OOOOO.D.FFFFF
14 разрядов OOOOO.D.FFFFFFF
16 разрядов OOOOOO.D.FFFFFFFF

При этом "О" обозначает код операции, "D" — селектор регистра назначения, а "F" — разряды указателя на аргумент данных.

Очень удобно в этих командах то, что пунктом назначения для результата операции может быть, на выбор, регистр W или указанный в аргументе файловый регистр.

В языке ассемблера, поддерживаемом компанией Microchip, с которым пользователь, наверняка, имел дело, если не предпочитает язык высокого уровня, такая команда записывается следующим образом:

ADDWF WERT,W

Эта команда выполняет сложение содержимого файлового регистра под именем WERT и содержимого рабочего регистра W. Регистр назначения — W . Аргумент D в слове команды в этом случае устанавливается равным 0. Иногда в команде ассемблера встречают также запись в виде "0" вместо "W".

Если в качестве регистра назначения выступает WERT, тогда записывают:

ADDWF WERT,F

или по-другому

ADDWF WERT

Аргумент D в слове команды в этом случае устанавливается равным 1. Иногда в команде ассемблера используют также тип записи "1" вместо "F". Если регистр назначения явно не указан, то в его качестве автоматически выбирается файловый регистр (D=l).
Авторы предпочитают последний, выделенный полужирным шрифтом тип записи, при котором аргумент отбрасывается, поскольку он более наглядный.

Архитектура и принцип функционирования микроконтроллеров PIC

Что касается архитектуры и структуры команд, то базовая концепция микроконтроллеров PIC особо не изменились.

Память данных и память программ разделены. Особенностью микроконтроллеров PIC является то, что память программ и память данных разделены (Гарвардская архитектура). Эта архитектура - основа большинство других особенностей принципа функционирования.

Присутствует шина данных, которая во всех микроконтроллерах PIC имеет разрядность 8 бит и разделена с шиной адреса, которая соединяет центральный процессор с памятью программ. В результате процессор в состоянии одновременно выполнять доступ к данным и к словам команд.

Каждая команда имеет разрядность слова (за исключением PIC18). Гарвардская архитектура допускает, чтобы разрядность ячеек в памяти программ не зависела от разрядности ячеек в памяти данных. Вследствие этого возможно выбрать ячейки памяти программ такого размера, чтобы для каждой команды требовалось только одно обращение к шине адреса. В одном слове команды содержится совокупная информация о коде команды и аргументах.

Для этого необходим хорошо продуманный, сокращенный набор команд. В результате микроконтроллеры PIC становятся очень быстродействующими и простыми в обслуживании, хотя существуют также ограничения и недостатки, о которых мы говорим далее, когда речь пойдет о системе команд.

Конвейер команд. Гарвардская архитектура, наряду с применением команд в одно слово, позволяет воспользоваться особым "трюком" под названием "конвейеризация". Одновременно с выполнением команды центральный процессор выбирает из памяти программ следующую команду. Этим обработка ускоряется почти в два раза при той же тактовой частоте.

Только в том случае, когда обрабатываемая в данный момент команда является командой перехода, подготовленная команда отбрасывается и выбираться команда по новому адресу перехода. Таким образом, длительность команд перехода больше на один командный цикл (для команд условного перехода — только если переход выполняется).

Разрядность команд: 12,14 н 16 бит. Разрядность памяти программ в первом поколении микроконтроллеров PIC составляет 12 бит. Эти устройства, называемые компанией Microchip "базовой серией" (Base-line), - быстрые, хотя, с современной точки зрения, довольно "спартанские". Впрочем они с успехом используются и по сей день.

В последнее время на рынке появились новые интересные представители базовой серии. Само собой разумеется, они поддерживают технологию Flash (например, крошечные PIC10F2xx с шестью или большие PIC16F59 с 40 выводами).

Среднее подсемейство (Mid-range) с разрядностью памяти программ 14 бит предоставляет уже заметно больше комфорта. Удлинение слова команды используется преимущественно в пользу расширения диапазона адресов, поэтому сам набор команд в сравнении с базовой серией микроконтроллеров PIC не изменился. Большой объем адресуемой памяти данных — основа для модулей аппаратного обеспечения среднего подсемейства PIC.

Наиболее современное старшее подсемейство (Enhanced) имеет 16-тиразрядные слова команд, которые используются не только для дальнейшего расширения адресного пространства, но также и для увеличения набора команд. В системе команд этого подсемейства PIC присутствует также несколько команд длиной в два слова, однако, благодаря ухищренной кодировке, их обработка, по сути, не меняется.

Старшее подсемейство PIC обычно обозначают как "PIC18", поскольку данное обозначение присутствует во всех предыдущих микроконтроллерах PIC этого поколения. Поскольку в этом поколении появились некоторые структурные изменения и технологические новшества, ему посвящена отдельная глава книги.

Хотелось бы упомянуть об еще одной ветке старшего подсемейства PIC — "High-Еnd", которое обозначается как "Р1С17". Эти микроконтроллеры уже присутствовали некоторое время на рынке перед Enhanced PIC. Хотя PIC17 и отличаются в некоторых аспектах от других семейств, с ними нетрудно разобраться с помощью технических описаний.

Перспективы микроконтроллеров

Ежегодно на рынке появляются десятки новых типов микроконтроллеров. Также и в сфере периферии уже нельзя довольствоваться только испытанными, давно известными устройствами.

В напряженном распорядке дня разработчика зачастую не остается свободного времени на поиск информации — именно поэтому авторы и решили написать эту книгу. При этом преследовалась цель отобрать из огромного объема сведений только самые важные, и затем упорядочить их. Само собой разумеется, в одну книгу нельзя вместить всю существующую информацию, тем более, что она постоянно изменяется.

О микроконтроллерах PIC

О микроконтроллерах PIC уже накопилось столько информации, что ею можно было бы заполнить тысячи страниц. Мы попытаемся изложить только основополагающие факты, объяснить их и при этом поделиться собственным опытом.
В частности, наша задача — дать беглый обзор большого объема разнообразных сведений. Для того чтобы не перегружать главу излишними деталями, мы в ней обсудим только фундаментальные особенности микроконтроллеров PIC, которые можно обнаружить уже у первых двух поколениях PIC. хотя они образуют также и базу для PIC18.

Новые и дополнительные свойства микроконтроллеров PIC будут рассмотрены в отдельной главе "PIC18". Авторы решили, что лучше всего будет представить семейство PIC18 как логическое продолжение предыдущих серий PIC, Несколько раз новшества PIC18 кратко упоминаются уже во вступительной главе.

В былые времена различные представители микроконтроллеров PIC одного поколения разнились между собой, в основном, объемом памяти, количеством выводов и типом корпуса. Между тем, существует много функций, которые у ряда производных устройств реализованы по-разному.

Различные типы микроконтроллеров могут отличаться множеством мелочей. Так, к примеру, во многих случаях мы не будем останавливаться на том, какие специальные разряды находятся в каких регистрах. Компания Microchip хорошо потрудилась над тем. чтобы сохранить совместимость "снизу вверх". Каждый опытный разработчик знает как это трудно.

Таким образом, эта книга не может быть заменой литературе от Microchip. Мы настоятельно рекомендуем каждому пользователю микроконтроллеров PIC читать справочные руководства, содержащие немало интересных советов. Особенности конкретного устройства необходимо выяснять по соответствующим техническими описаниям, даже если их не всегда комфортно читать. Кроме того, существует бесчисленное множество полезных рекомендаций для особых случаев применения (так называемые "Application Notes").

Для выбора типа микроконтроллера PIC с определенными свойствами существует Product Selector Guide (руководство по выбору продукта). Некоторые из функций PIC18 теоретически могут быть реализованы даже в представителях среднего подсемейства микроконтроллеров PIC. поэтому перед тем как приступить к новому проекту следует всегда изучать самую свежую информацию.

Поскольку при выборе устройства также учитывается и цена, очень важна возможность беспрепятственного ознакомления с состоянием цен. С некоторого времени это осуществимо с помощью раздела Buy домашней Web-страницы компании Microchip (www.microchip. com).

С точки зрения пользователя, необходимыми компонентами каждого микроконроллера являются:
• центральный процессор;
• память данных и память программ;
• тактовый генератор и таймер;
• порты ввода-вывода;
• схема сброса.

Можно также назвать компоненты, от которых отказались в первых микроконроллерах PIC:
• схема прерываний;
• аппаратные модули, работающие без участия центрального процессора.
Разумеется, существуют и другие компоненты, однако они доступны пользователю лишь косвенно (например, регистр стека).

Что сразу же впечатлило авторов при первом знакомстве с микроконтроллерами PIC. так это базовая концепция архитектуры и принципа функционирования.

Со времен первого поколения, устройства PIC значительно "выросли" — прием не только в размере, но и в интеллектуальности технологии. В первую очередь PIC занимают особое место в мире микроконтроллеров, благодаря множеству хорошо продуманных аппаратных модулей.