Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Электроника в приборостроении.doc
Скачиваний:
219
Добавлен:
02.05.2014
Размер:
8.49 Mб
Скачать

Периферийные модули

PSP – ведомый параллельный порт. С помощью 8-разрядного ведомого параллельного порта можно организовать интерфейс связи с другим микроконтроллером или персональным компьютером. В микроконтроллерах, выпускаемых в настоящее время, ведомый параллельный порт мультиплицирован только с PORTD, PORTE.

В режиме ведомого порта данные асинхронно читаются или записываются внешними сигналами -RD или -WR соответственно. Установка бита PSPMODE в "1" принудительно настраивает выводы -RD, -WR и -CS как входы.

TMR0 – TMR2 – таймеры-счетчики, которые в зависимости от конкретной модификации МК могут служить счетчиками (внешних тактовых импульсов или импульсов тактового генератора МК) или программируемыми делителями частоты. Обычно таймеры TMR0, TMR2 – 8-разрядные, таймер TMR1 – 16-разрядный.

Модули ССР используются для реализации функций работы с ШИМ сигналами. Обычно МК содержит 2 модуля ССР. Каждый модуль ССР содержит 16-разрядный регистр, который может использоваться в качестве:

  1. 16-разрядного регистра захвата данных;

  2. 16-разрядного регистра сравнения;

  3. Двух 8-разрядных (ведущий и ведомый) регистров ШИМ.

Модули управляются регистрами CCPxCON.

Модуль SSP – модуль синхронного последовательного порта (SSP) может использоваться для связи с периферийными устройствами, например с другими микроконтроллерами. Периферийными устройствами могут быть: EEPROM память, сдвиговые регистры, драйверы ЖКИ, АЦП и др. Модуль SSP может работать в одном из двух режимов.

1. Последовательный периферийный интерфейс (SPI);

2. Inter-Integrated Circuit (I2C):

- ведомый режим;

- контроль состояния портов ввода/ввода для обнаружения битов START, STOP с целью упрощения программного обеспечения в режиме ведущего и при конкуренции на шине.

Модуль управляется регистрами SSPSTAT и SSPCON. Прием и передача данных SSP осуществляются с помощью приемного/передающего регистра сдвига (SSPSR) и буферного регистра (SSBUF). В регистре SSPSR выполняется сдвиг данных из микроконтроллера или в микроконтроллер старшим битом вперед. В регистре SSPBUF сохраняются записанные данные, пока не будут получены новые. Восемь бит данных, принятые в регистр SSPSR, переписываются в SSPBUF, устанавливается в "1" флаг полного приемного буфера BF (SSPSTAT<0>) и флаг прерывания SSPIF.

Модуль USART – это один из модулей последовательного порта ввода/вывода (имеет существенные отличия от модуля SSP), который может работать в полнодуплексном асинхронном режиме для связи с терминалами, персональными компьютерами или в синхронном полудуплексном режиме для связи с микросхемами ЦАП, АЦП, последовательными EEPROM и т.д.

USART может работать в одном из трех режимов.

  1. Асинхронный, полный дуплекс;

  2. Ведущий синхронный, полудуплекс;

  3. Ведомый синхронный, полудуплекс.

Для управления модулем используются 2 регистра – регистр управления и статуса приемника RCSTA, а также регистр управления и статуса передатчика TXSTA.

Для задания скорости обмена данными используется специальный генератор BRG. Период выходного сигнала BRG задается с помощью регистра SPBRG.

Источник опорного напряжения, как правило, используется совместно с модулем компараторов. Входной ток выводов компаратора очень мал, поэтому ИОН имеет малую нагрузочную способность. Модуль содержит 16 последовательно включенных резисторов, обеспечивающих выбор нужного напряжения. Резисторы разделены на сегменты для организации двух диапазонов напряжений VREF.

В регистре VRCON находятся биты управления источником опорного напряжения.

Модуль компараторов содержит два аналоговых компаратора, выводы которых мультиплицированы с каналами ввода/вывода. Выход интегрированного источника опорного напряжения может быть подключен на вход компараторов.

В регистре CMCON находятся биты управления модулем компараторов.

Модуль 10-разрядного АЦП имеет до восьми входных каналов. Входной аналоговый сигнал через коммутатор каналов заряжает внутренний конденсатор АЦП CHOLD. Модуль АЦП преобразует напряжение, удерживаемое на конденсаторе CHOLD, в соответствующий 10-разрядный цифровой код методом последовательного приближения. Источник верхнего и нижнего опорного напряжения может быть программно выбран с выводов VDD, VSS, AN3/VREF+ или AN2/VREF-.

Допускается работа модуля АЦП в SLEEP режиме микроконтроллера, при этом в качестве источника тактовых импульсов для АЦП должен быть выбран RC-генератор. Для управления АЦП в микроконтроллере используются 4 регистра:

  1. регистр результата ADRESH (старший байт);

  2. регистр результата ADRESL (младший байт);

  3. регистр управления ADCON0;

  4. регистр управления ADCON1.

Модуль LCD (реализован только в микроконтроллерах PIC16C92x (923, 924, 925, 926)) формирует все необходимые сигналы синхронизации для управления статическими или мультиплицированными ЖКИ с поддержкой до тридцати двух сегментов, четырех общих выводов и управления пикселями ЖКИ (вывод информации на ЖКИ).

Для управления модулем LCD используются три регистра (LCDCON, LCDSE и LCDPS), с помощью которых можно настроить параметры работы модуля, и до 16 регистров данных (LCD00 – LCD15), в которых сохраняется массив данных пикселей. В нормальном режиме работы состояние регистров управления должно соответствовать применяемому ЖКИ.

Подробное описание всех МК PICmicro приводится на сайте www.microchip.com. МК среднего семейства описаны также в [12].

Система команд. Каждая команда состоит из одного 14-разрядного слова, разделенного на код операции (OPCODE), определяющий тип команды, и одного или несколько операндов, определяющих операцию команды.

Полный список команд смотрите в табл. 11.2.

Система команд аккумуляторного типа разделена на три основные группы.

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

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

  3. Команды управления и операций с константами.

Для байт ориентированных команд "f" – указатель регистра, а "d" – указатель адресата результата. Указатель регистра определяет, какой регистр должен использоваться в команде. Указатель адресата определяет, где сохраняется результат.

Если "d"=0, результат сохраняется в регистре W.

Если "d"=1, результат сохраняется в регистре, который используется в команде.

В бит ориентированных командах "b" определяет номер бита, участвующего в операции, а "f" – указатель регистра, который содержит этот бит.

В командах управления или операциях с константами "к" представляет восемь или одиннадцать бит константы или значения литералов.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых получен истинный результат, и инструкций, изменяющих значение счетчика команд PC (такие команды выполняются за два машинных цикла).

В случае выполнения команды за два машинных цикла, во втором цикле выполняется инструкция NOP.

Таблица 11.2

Мнемоника команды

Описание

Циклов

14-разрядный код

Флаги

Прим.

Бит 13 Бит 0

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

ADDWF f, d

Сложение W и f

1

00 0111 dfff ffff

C,DC,Z

1,2

ANDWF f, d

Побитное "И" W и f

1

00 0101 dfff ffff

1,2

CLRF f

Очистить f

1

00 0001 1fff ffff

Z

2

CLRW

Очистить W

1

00 0001 0xxx xxxx

Z

COMF f, d

Инвертировать f

1

00 1001 dfff ffff

Z

1,2

DECF f, d

Вычесть 1 из f

1

00 0011 dfff ffff

Z

1,2

DECFSZ f, d

Вычесть 1 из f и пропустить, если 0

1(2)

00 1011 dfff ffff

1,2,3

INCF f, d

Прибавить 1 к f

1

00 1010 dfff ffff

Z

1,2

INCFSZ f, d

Прибавить 1 к f и пропустить, если 0

1(2)

00 1111 dfff ffff

1,2,3

IORWF f, d

Побитное "ИЛИ" W и f

1

00 0100 dfff ffff

Z

1,2

MOVF f, d

Переслать f

1

00 1000 dfff ffff

Z

1,2

MOVWF f

Переслать W в f

1

00 0000 1fff ffff

NOP

Нет операции

1

00 0000 0xx0 0000

RLF f, d

Циклический сдвиг f влево через перенос

1

00 1101 dfff ffff

C

1,2

RRF f, d

Циклический сдвиг f вправо через перенос

1

00 1100 dfff ffff

C

1,2

SUBWF f, d

Вычесть W из f

1

00 0010 dfff ffff

C,DC,Z

1,2

SWAPF f, d

Поменять местами полубайты в регистре f

1

00 1110 dfff ffff

1,2

XORWF f, d

Побитное "Исключающее ИЛИ" W и f

1

00 0110 dfff ffff

Z

1,2

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

BCF f, b

Очистить бит b в регистре f

1

01 00bb bfff ffff

1,2

BSF f, b

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

1

01 01bb bfff ffff

1,2

BTFSC f, b

Проверить бит b в регистре f, пропустить, если 0

1(2)

01 10bb bfff ffff

3

BTFSS f, b

Проверить бит b в регистре f, пропустить, если 1

1(2)

01 11bb bfff ffff

3

Команды управления и операций с константами

ADDLW к

Сложить константу с W

1

11 111x kkkk kkkk

C,DC,Z

ANDLW k

Побитное "И" константы и W

1

11 1001 kkkk kkkk

Z

CALL k

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

2

10 0kkk kkkk kkkk

CLRWDT

Очистить WDT

1

00 0000 0110 0100

-T0,-PD

GOTO k

Безусловный переход

2

10 Ikkk kkkk kkkk

IORLW k

Побитное "ИЛИ" константы и W

1

11 1000 kkkk kkkk

Z

MOVLW k

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

1

11 00xx kkkk kkkk

RETFIE

Возврат из подпрограммы с разрешением

прерываний

2

00 0000 0000 1001

RETLW k

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

2

11 0lxx kkkk kkkk

RETURN

Возврат из подпрограммы

2

00 0000 0000 1000

SLEEP

Перейти в режим SLEEP

1

00 0000 0110 0011

-T0, -PD

SUBLW k

Вычесть W из константы

1

11 110x kkkk kkkk

C,DC,Z

XORLW k

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

1

11 1010 kkkk kkkk

Z

Примечания:

  1. При выполнении операции "чтение-модификация-запись" с портом ввода/вывода (например, MOVF PORTB.1) исходные значения считываются с выводов порта, а не из выходных защелок. Например, если в выходной защелке была записана "1", а на соответствующем выходе "0", то обратно будет записан "0".

2. При выполнении записи в TMR0 (и d=1) предделитель TMR0 сбрасывается, если он подключен к модулю TMR0.