Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС для АТП (ЛЕК).doc
Скачиваний:
33
Добавлен:
26.09.2019
Размер:
2.38 Mб
Скачать

9.Организация контроллеров pic фирмы Microchip

9.1.Однокристальные микроЭвм

PIC16C5X производимый Microchip Technology относится к семейству КМОП микроконтроллеров с внутренним ПЗУ, которые отличаются низкой стоимостью, высокой производительностью, 8-битовыми операциями с данными. Они основаны на RISC архитектуре и используют всего 33 команды, шириной в одно слово ПЗУ. Все команды выполняются за один цикл (200нс).

Рис. 9.48. Структура контроллеров PIC16C5x

Разработка на базе контроллеров PIC16C5X поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором и программатором. Существуют все эти средства для IBM PC и совместимых компьютеров.

Серия PIC16C5X подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает серию PIC16C5X привлекательной даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.

8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметико-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора регистра данных (f4).

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

Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора регистра данных(f4), регистр конфигурации и управления предварительным_делителем частоты.

Рис. 9.49. Таймер/счетчик

Регистры общего назначения используются для хранения переменных пользователя.

(f0). Переключатель контекста косвенной адресации В кристаллах серии PIC16C5x переключение контекстов не предусмотрено и поэтому (f0) указывает ВСЕГДА только на один регистр -указатель косвенной адресации (f4). Например, при команде ADDWF f0,W, содержимое регистра, адрес которого хранится в (f4) будет добавляться к содержимому регистра W. Так как в серии PIC16C5x (f0) не является регистром физически, то при чтении из него получите 00H, при записи- ничего не произойдет. ПРИМЕЧАНИЕ. У последующих моделей PIC регистр (f0) позволяет переключать контексты косвенной адресации, например при прерываниях. (f1).

Таймер/счетчик. В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4). Для того, чтобы 8-битовый предварительный делитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи спец."Option" команды. Если предварительный_делитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, напр. ClrF1, BSF1,5.. . и т.п.) - очищают его. Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов, это или внутренний источник или внешний. RTS = 1:

Сигналом синхронизации для таймера/счетчика RTCC или для предварительного делителя, если он подключен к RTCC, является сигнал, поступающий на вывод RTCC корпуса. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на выводе RTCC. RTS = 0: Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита "RTE" в регистре Option и сигнал на выводе RTCC не имеют значения.

Однако вывод RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления. Пока на таймер/счетчик RTCC поступают синхроимпульсы, (не важно внешние или внутренние, подключен предварительный делитель к RTCC или нет), регистр f1RTCC инкрементируется, когда значение RTCC достигнет "0FFH" - регистр обнуляется, а счет продолжается. Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр. MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF_f1,W.

Устройства серии PIC16C5X имеют большой выбор ПЗУ и ОЗУ разных размеров, разное количество линий ввода/вывода, различные виды возбуждения генераторов, разную скорость, климатику и типы корпусов. Из четырех кристаллов PIC16C5x можно выбрать устройство с подходящими ПЗУ/ОЗУ и конфигурацией ввода/вывода. Устройства с ультрафиолетовым стиранием удобно использовать в прототипных и опытных партиях. Конфигурация генератора ("RC", "XT", "HS", "LP") программируется самим пользователем на UV EPROM.

(f3) Регистр статуса. Регистр (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для программ с объемом памяти превышающим 512 слов (PIC16C56/PIC16C57). (f3) доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF_f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3= 000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса.Биты 5-6 регистра статуса определяются как биты адреса страниц PA0-PA1 программной памяти (только для PIC16C56/PIC16C57 !!!). Когда исполняются команды GOTO, CALL и команды, когда программный счетчик изменяется, например MOVWF_2, биты адреса страниц PA0-PA1 загружаются в биты программного счетчика A9-A10. Таким образом, прямой адрес, указанный в слове команды, указывает на место внутри определенной страницы памяти. Команда RETLW не изменяет биты выбора страниц. После сигнала "Сброс" биты регистра статуса PA0-PA1 обнуляются.

Размещение флагов в регистре статуса f3 следующее:

b7

b6

b5

b4

b3

b2

b1

b0

PA2

PA1

PA0

TO

PD

Z

DC

C

C - Флаг переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из самого старшего разряда происходит перенос. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит всегда загружается из младшего или старшего бита сдвигаемого источника.

DC - Флаг десятичного переноса/заема: Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из четвертого разряда происходит перенос. Механизм установки десятичного бита переноса DC тот же самый, отличается тем, что отслеживается перенос из четвертого бита.

Z - Флаг нулевого результата: Устанавливается, если результатом арифметической или логической операции является ноль.

PD - Power_Down (режим хранения данных) : Устанавливается в "1" при включении питания или команде CLRWDT. Сбрасывается в "0" командой SLEEP.

TO - Time Out. Флаг срабатывания сторожевого таймера: Устанавливается в "1" при включению питания и командами CLRWDT, SLEEP. Сбрасывается в "0" по завершению выдержки времени таймера WDT.

PA0, PA1- Для кристаллов PIC16C54/C55 - это биты общего назначения.

Для PIC16C56: PA0 - Бит выбора страницы

0= Страница 0 (000-1FF)

1= Страница 1 (200-3FF)

PA1 - Бит общего назначения.

Для PIC16C57: PA1,PA0 - оба бита выбора страниц:

00= Страница 0 (000-1FF)

01= Страница 1 (200-3FF)

10= Страница 2 (400-5FF)

11= Страница 3 (600-7FF)

PA2 - Бит общего назначения (зарезервировано для будущих разработок)

(f4). Указатель при косвенной адресации Для PIC16C54/C55/C56: Биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57. Биты 5 и 6 регистра (f4) определяют номер текущего банка данных.

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

  1. при исполнении команды "GOTO" в программный счетчик загружаются младшие 9 бит (PC <8:0>). В случае использования PIC16C56 или PIC16C57, в старшие два бита программного счетчика (PC <10:9>) загружаются биты выбора страниц PA1 и PA0 (биты 6,5 регистра статуса). При помощи GOTO можно переместиться в любое место любой страницы.

  2. при исполнении команды "CALL" в программный счетчик загружаются младшие 8 бит, в то время как девятый бит обнуляется. Значение PC, увеличенное на единицу, будет сохранено в стеке. В случае PIC16C56/PIC16C57, в старшие два бита PC (PC <10:9>) загружаются биты выбора страниц PA1,PA0 (биты 6,5 регистра статуса).

  3. команда "RETLW" выгружает в программный счетчик содержимое из вершины стека.

если программный счетчик задействован в команде (напр. MOVWF_2, ADDWF_2, BSF_2,5), то 8 бит результата исполнения команды будут загружены в младшие 8 бит программного счетчика. Девятый бит PC будет обнулен. В случае PIC16C56/PIC16C57, в старшие биты PC<10,9> будут загружены биты выбора страниц PA1,PA0 (биты 6,5 в регистре статуса). Так как девятый бит программного счетчика обнуляется при исполнении команды CALL или команд, записывающих свой результат в PC, то вызов подпрограмм или осуществление вычисляемого перехода ограничены первой половиной страницы программной памяти, т.е. первые 256 адресов. В кристаллах PIC16C5X используется двухуровневый аппаратный стек. Это означает, что он может хранить одновременно не более двух адресов возврата. Команда "CALL" инкрементирует текущее значение программного счетчика и записывает его в стек на уровень 1. При записи на уровень 1 стека его предыдущее значение автоматически записывается на уровень 2. Если вызывается более двух вложенных подпрограмм, то только два последних адреса возврата будут сохранены.

В модификациях PIC16C56/PIC16C57, при исполнении команды "CALL" биты выбора страниц из регистра статуса (f3) загружаются в старшие значащие разряды программного счетчика. Девятый бит всегда обнуляется. Это означает, что подпрограмма всегда должна быть расположена в нижней половине страницы памяти (по адресам 000h...0FFh, 200h...2FFh, 400h...4FFh, 600h...6FFh). Однако, так как стек имеет ту же ширину, что и программный счетчик, то подпрограммы могут вызываться из любого места программы и возврат будет происходить корректно.

При исполнении команды "RETLW" в программный счетчик выгружается содержимое стека первого уровня. Одновременно содержимое стека второго уровня копируется в стек первого уровня. Если исполняются более двух команд "RETLW" друг за другом, в стеке обоих уровней будет записано значение второго уровня. Для модификаций PIC16C56/PIC16C57 возврат из подпрограммы всегда будет на ту страницу, из которой подпрограмма была вызвана, несмотря на текущее значение битов выбора страниц в регистре (f3). Обратите внимание, что в W регистр будет загружаться константа, которая предусмотрена в команде "RETLW" (код возврата у процедуры функции). Это в частности используется для организации таблиц данных в программной памяти.

Организация внутреннего ОЗУ 8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметико-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора регистра данных (f4). Непосредственная адресация к константам организуется при помощи специальных команд, которые загружают в рабочий регистр W данные из программной памяти.

Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора регистра данных(f4), регистр конфигурации и управления предварительным_делителем частоты. Регистры общего назначения используются для хранения переменных пользователя.

Адресация к ячейкам ОЗУ

(f4). Указатель при косвенной адресации. Для PIC16C54/C55/C56: Биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57. Биты 5 и 6 регистра (f4) определяют номер текущего банка данных. Первые 16 байт каждого банка представляют собой физически одни и те же регистры. Только, когда бит 4 у (f4) установлен в единицу (указывает на следующие 16 байт),- биты 5 и 6 выбирают один из четырех банков по 16 регистров каждый. Бит 7 регистра (f4) не используется и всегда читается как единица. Регистры общего назначения для целей пользователя Для PIC16C54/C55/C56: Регистры с адресами f= 08H...1FH являются регистрами общего назначения.

Только для PIC16C57: Адреса регистров в PIC16C57 распределены следующим образом: 08h - 0Fh : регистры общего назначения, которые выбираются всегда вне зависимости от номера выбранного банка. 10h - 1Fh : регистры общего назначения, когда выбран банк 0. 20h - 2Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 30h - 3Fh : регистры общего назначения, когда выбран банк 1. 40h - 4Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 50h - 5Fh : регистры общего назначения, когда выбран банк 2. 60h - 6Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 70h - 7Fh : регистры общего назначения, когда выбран банк 3.

Регистры ввода/вывода. (Порты). Регистры ввода/вывода могут управляться, как любые другие регистры. Однако, команда "чтение" (например MOVF_6,W) всегда считывает фактический уровень сигнала на выводе_порта. В частности, он может быть непредсказуем, когда на разряд, запрограммированный на "выход", будет подан внешний сигнал. После сигнала "Сброс" все порты ввода/вывода устанавливаются на "вход" (электрически эквивалентно третьему состоянию), управляющие регистры ввода/вывода (TRISA, TRISB, TRISC) устанавливаются в единицы (конфигурация на вход). Для того, чтобы конфигурировать некоторые разряды порта на выход, необходимо установить соответствующие биты в нужном TRIS регистре в "0". Это можно делать командой "TRIS_f". Каждый вывод порта ввода/вывода может быть запрограммирована отдельно на вход или на выход. Для этого существуют спец. TRISx регистры.

Рис. 9.50. Разряд порта ввода/вывода

TRISA. Управляющий регистр для порта A. Используются биты 0-3., т.к. порт А имеет ширину четыре бита.

TRISB. Управляющий регистр для порта B.

TRISC. Управляющий регистр для порта C. При исполнении команды "TRIS_f" содержимое регистра W загружается в один из управляющих регистров ввода/вывода. Если бит управляющего TRISx регистра получает значение единица, то соответствующий вывод будет устанавливаться на вход и электрически в третье состояние. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. В управляющие TRISx регистры можно только записывать. При действии сигнала "Сброс", все биты этих регистров устанавливаются в единицы.

(f5). Порт А. Порт А является 4-битовым портом ввода/вывода. Используются только младшие 4 бита (RA0-RA3). Старшие биты 4-7 всегда читаются как нули.

(f6). Порт B. Является 8-битовым портом ввода/вывода.

(f7). Порт С. Для PIC16C55/C57: 8-битовый порт ввода/вывода. Для PIC16C54/C56: внутренний регистр памяти (не порт) общего назначения. При операциях ввода порты не защелкиваются. Входной сигнал должен присутствовать пока идет процесс чтения (напр. MOVF_6,_W). При операциях вывода порты защелкиваются и сохраняют значение до тех пор пока не будут перезаписаны. На рисунке не показаны диоды, которые защищают выводы порта от внешних импульсов большого напряжения. Они ограничивают импульсное напряжение на выводе порта значениями от Vss - 0,6 до Vdd + 0,6 В. Если статическое напряжение, по каким либо причинам, выйдет за указанные пределы, то возникнут большие статические токи, способные вывести кристалл из строя. Проблемы при организации двунаправленных портов

Некоторые команды внутренне выполняются как чтение+запись. Например, команды BCF_и_BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. Например, команда BSF для бита 5 регистра f6 (порт В) сначала считает все восемь бит. Затем выполняются действия над битом 5 и новое значение байта целиком записывается в выходные защелки. Если другой бит регистра f6 используется в качестве двунаправленного ввода/вывода (скажем бит 0) и в данный момент он определен как входной, входной сигнал на этом разряде будет считан и записан обратно в выходную защелку этого же разряда, затирая ее предыдущее состояние. До тех пор пока этот разряд остается в режиме входа, никаких проблем не возникает. Однако, если позднее разряд 0 переключится в режим выхода - состояние будет неопределенным. На вывод, работающий в режиме выхода, не должны подключаться внешние источники токов("монтажное И", "монтажное ИЛИ"). Результирующие большие токи могут повредить кристалл. Причину см. выше Последовательное обращение к портам ввода/вывода.

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

Сторожевой таймер. представляет собой полностью готовый встроенный RC генератор. Он будет работать, даже если основной генератор остановлен, как это бывает при исполнении команды SLEEP. Таймер вырабатывает сигнал сброса. Выработка таких сбросов может быть запрещена путем записи нуля в специальный бит, который расположен вне программной памяти EPROM. Эту операцию производят на этапе программирования микросхем.

Выдержка времени WDT. Номинальная выдержка WDT составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, от особенностей типа микросхемы. Если требуются большие задержки, то к WDT может быть подключен делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд. Команды "CLRWDT" и "SLEEP" обнуляют WDT и делитель, если он подключен к WDT. Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала сброс. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит "TO" в регистре статуса (f3). В схемных решениях с высоким уровнем помех, содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени. Регистр конфигурации предварительного_делителя и RTCC. Значениями битов в этом регистре (он не имеет адреса!) определяется подключение предварительного_делителя к RTCC или WDT), коэффициент его деления, источник счетных импульсов, выбирается фронт сигнала для RTCC. Регистр OPTION предназначен только для записи и имеет ширину 6 бит. Во время исполнения команды "OPTION" содержимое регистра W загружается в этот регистр. По сигналу "Сброс" все биты этого регистра устанавливаются в единицы.

b5

b4

b3

b2

b1

b0

Option

RTS

RTE

PSA

PS2

PS1

PS0

Биты PS2...PS0 настройка предварительного делителя

PS2...PS0

Коэффициенты деления

RTCC

WDR

000

2

1

001

4

2

010

8

4

011

16

8

100

32

16

101

64

32

110

128

64

111

256

128

PSA- Бит, указывающий, что делитель работает с:

0 - RTCC

1 – WDT RTE- Фронт сигнала RTCC:

0 - инкремент по положительному фронту на выводе RTCC

1 - инкремент по отрицательному фронту на выводе RTCC RTS- Источник сигнала для RTCC:

0 - сигнал от внутреннего генератора

1 - Внешний сигнал на выводе RTCC

(f1). Таймер/счетчик. В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4). Структурная схема содержит элемент "MUX"- это электронный переключатель. Для того, чтобы 8-битовый предварительный делитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи спец."Option" команды. Если предварительный_делитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, напр. ClrF1, BSF1,5.. . и т.п.) - очищают его. Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов,- это или внутренний источник или внешний. RTS = 1:

Сигналом синхронизации для таймера/счетчика RTCC или для предварительного делителя, если он подключен к RTCC, является сигнал, поступающий на вывод RTCC корпуса. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на выводе RTCC. RTS = 0:

Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита "RTE" в регистре Option и сигнал на выводе RTCC не имеют значения. Однако вывод RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления. Пока на таймер/счетчик RTCC поступают синхроимпульсы, (не важно внешние или внутренние, подключен предварительный делитель к RTCC или нет), регистр f1 RTCC инкрементируется, когда значение RTCC достигнет "0FFH" - регистр обнуляется, а счет продолжается. Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр. MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF_f1,W.

Предварительный делитель. 8 - битный счетчик используется или как предварительный делитель перед RTCC или как делитель частоты после сторожевого_таймера. Если делитель подсоединен к RTCC, то он не может быть подключен к сторожевому таймеру и наоборот. Биты PSA и PS0 - PS2 в регистре OPTION определяют включение делителя и устанавливают его коэффициент деления. Предварительный делитель может подключаться по-разному.Когда он присоединен к RTCC, все команды производящие запись в RTCC (например, CLRF_1, MOVWF_1, BSF_1,x... и т.д.) будут одновременно обнулять и делитель. Когда делитель подключен к WDT, команда CLRWDT также обнулит делитель вместе со сторожевым таймером. Подключение делителя- программно управляемое. Чтобы избежать несанкционированного сигнала "Сброс" во время переключения делителя с RTCC на WDT, надо выполнить определенную последовательность команд.

Режим пониженного энергопотребления. Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинает счет времени, бит "PD" в регистре статуса (f3) сбрасывается, бит "TO" устанавливается, а встроенный генератор выключается. Порты ввода/вывода сохраняют состояние, которое они имели до входа в режим SLEEP. Для снижения потребляемого тока в этом режиме, выводы, запрограммированные на выход должны иметь такие значения, которые исключают токи между выводами кристалла и внешними устройствами. Выводы, запрограммированные на вход должны быть соединены внешними резисторами с высоким или низким уровнем, чтобы избежать токов переключения, вызываемых плавающими высокоомными входами. То же и про RTCC. Вывод /MCLR должен быть под напряжением Vihmc.

Выход из режима SLEEP. Выход из режима SLEEP осуществляет WDT(если он разрешен) или внешний нулевой импульс на выводе /MCLR- сброс. В обoих случаях PIC16C5X будет находиться в режиме сброса в течение времени запуска_генератора, а затем только начнется выполнение программы. Бит "PD" в регистре статуса (f3), который устанавливается при включении, но обнуляется командой "SLEEP", может быть использован для определения предыдущего состояния процессора : или процессор был в режиме "SLEEP"(горячий старт), или было просто включено питание (холодный старт). Бит "TO" позволяет определить, чем был вызван выход из режима SLEEP: или внешним сигналом на выводе /MCLR, или срабатыванием WDT. Примечание: Некоторые случаи требуют наличия R/C цепочки на выводе /MCLR для увеличения выдержки на запуск. В этом случае не рекомендуется выход из режима "SLEEP" по срабатыванию WDT потому, что не будет разряжаться внешний конденсатор сброса и выдержка на запуск генератора будет равна обычной длительности.

Система команд

Каждая команда PIC16С5х - это 12-битовое слово, которое разделено по смыслу на части: - 1. код операции, -2. поле для одного или более операндов, которые участвуют или нет в этой команде. Система команд PIC16С5х включает в себя байт-ориентированные команды, бит-ориентированные, операции_с_константами и команды передачи управления. Для байт-ориентированных команд "f" обозначает собой регистр, с которым производятся действия. "f" обозначает один из 32 регистров PICа, который будет использовать команда с учетом текущего номера банка. "d" - бит определяет, куда положить результат. Если "d" =0 результат будет находиться в W регистре, "d"=1 результат будет находиться в "f", упомянутом в команде. Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а "f" -это регистр текущего банка, в котором этот бит расположен. Для команд передачи управления и операций с константами, "k" обозначает восьми или девятибитную константу. Все команды выполняются в течение одного командного цикла.

В двух случаях исполнение команды занимает два командных цикла:

  1. исполнение условной команды,

  2. проверка условия и переход.

Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.

Байт-ориентированные команды.

Мнемокод

Название команды

Примечания

ADDWF f,d

Сложение W с f

1,2,4

ANDWF f,d

Логическое И W и f

2,4

CLRF f

Сброс регистра f

4

CLRW -

Сброс регистра W

-

COMF f,d

Инверсия регистра f

2,4

DECF f,d

Декремент регистра f

2,4

DECFSZ f,d

Декремент f, пропустить команду, если 0

2,4

INCF f,d

Инкремент регистра f

2,4

INCFSZ f,d

Инкремент f, пропустить команду, если 0

2,4

IORWF f,d

Логическое ИЛИ W и f

2,4

MOVF f,d

Пересылка регистра f

2,4

MOVWF f

Пересылка W в f

1,4

NOP -

Холостая команда

-

RLF f,d

Сдвиг f влево через перенос

2,4

RRF f,d

Сдвиг f вправо через перенос

2,4

SUBWF f,d

Вычитание W из f

1,2,4

SWAPF f,d

Обмен местами тетрад в f

2,4

XORWF f,d

Исключающее ИЛИ W и f

2,4

ANDLW k

Логическое И константы и W

-

IORLW k

Логическое ИЛИ константы и W

-

MOVLW k

Пересылка константы в W

-

OPTION

Загрузка W в OPTION регистр

-

TRIS f

Загрузка TRIS регистра

3

XORLW k

Исключающее ИЛИ константы и W

-

Бит ориентированные команды

Мнемокод

Название команды

Примечания

BCF f,b

Сброс бита в регистре f

2,4

BSF f,b

Установка бита в регистре f

2,4

BTFSC f,b

Пропустить команду, если бит равен нулю

-

BTFSS f,b

Пропустить команду, если бит равен единице

-

Переходы

Мнемокод

Название команды

Примечания

CALL k

Вызов подпрограммы 1

1

CLRWDT

Сброс сторожевого таймера

-

GOTO k

Переход по адресу

-

RETLW k

Возврат из подпрограммы с загрузкой константы в W

-

SLEEP

Переход в режим SLEEP

-

Примечание 1: Девятый бит программного счетчика будет обнулен любой командой, которая осуществляет запись в программный счетчик (f2) (например, CALL,MOVWF 2 и т.д.), кроме команды GOTO. Подробности смотрите в разделе "PC"

Примечание 2: Когда модифицируется регистр ввода/вывода (например MOVF 6, 1), значение, используемое для модификации считывается непосредственно с выводов кристалла. Например, если значение вывода, запрограммированного на выход равно "1", но внешний сигнал на этом выводе равен "0" из-за случайного сигнала снаружи, то этот "0" считываться с порта.

Примечание 3: Команда "TRIS f", где f=5,6 или 7 записывает содержимое регистра W в защелки указанного порта. "1" устанавливает линию на вход и электрически в третье состояние.

Примечание 4: Если операндом этой команды является регистр f1 (и, если допустимо, d=1), то делитель, если он подключен к RTCC, будет обнулен.

В конце 1998 года фирма MICRO­CHIP анонсировала новую серию микроконтроллеров/микропро­цессоров PIC18CXX2, которая должна была превосходить по функциональной насыщенности, вычислительным воз­можностям и быстродействию все суще­ствующие PICmicro.

Основные данные по микроконтроллерам серии PIC18CXX2

  • Набор команд оптимизирован под компилятор языка Си.

  • Исходный код совместим с сериями PIC16CXX и PIC17CXX.

  • Линейная адресация программной памяти до 2 Мбайт.

  • Линейная адресация памяти данных до 4 Кбайт.

  • Производительность до 10 MIPS:

    • входная тактовая частота до 40 МГц (от 4 до 10 МГц; при включенном блоке PLL).

  • 8-разрядные данные и 16-разрядные команды.

  • Приоритетная векторная система прерываний.

  • Аппаратный умножитель 8x8.

Периферийные устройства:

  • Нагрузочная способность вх/вых 25мА;

  • 3 входа внешних прерываний;

  • Таймер 0 (8/16 бит с 8-разрядным предделителем);

  • Таймер 1 (16 разрядов );

  • Таймер 2 (8 разрядов + регистр периода ШИМ);

  • Таймер 3 (16 разрядов) с возможностью использования в качестве источника тактовых импульсов для микроконтроллера.

  • Два модуля ССР конфигурируются следующим образом:

    • вход захвата с разрешением 6,25 не (16 бит);

    • вход сравнения 16 бит с разрешением 100 не;

    • выход ШИМ с разрешением 1...10 бит (156 кГц при 8-разрядном разрешении).

  • Последовательный интерфейс (MSSP) имеет два режима работы:

    • 3-проводный SPI (поддерживает все 4 режима);

    • I2C™ «master» и «slave» режимы.

  • Универсальный синхронно-асинхронный интерфейс USART:

    • поддерживает прерывание по 9-му биту адреса.

  • Параллельный интерфейс «Parallel Slave Port».

  • 10-ти разрядный АЦП.

  • PLVD — программируемый датчик уменьшения напряжения питания.

  • BOR — программируемый сброс по падению напряжения питания.

  • Дополнительные периферийные возможности:

    • Watchdog Timer (WDT), режим SLEEP.

  • Модуль генератора тактовых импульсов имеет умножитель частоты с фазовой автоподстройкой (х4 при использовании кварцевого резо­натора) и возможность переключения на второй источник (32 кГц) тактовых импульсов.

  • Микропотребление и широкий диапазон напряжения питания от 2.5 до 5.5 вольт.

  • Индустриальный и расширенный диапазон рабочих температур.

  • Совместимы по выводам с семейством PIC16CXX и PIC17CXX.

PICmicro

Память программ,

Кбайт

Память данных,

байт

Количество выводов

PIC18C242

16

512

28

PIC18C252

32

1536

28

PIC18C442

16

512

40

PIC18C452

32

1536

40