Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программируемые контроллеры для систем управления ч2. Г.И.Загарий, В.С. Коновалов В.С., Н.О. Ковзель, В.И. Поддубняк, А.И. / Программируемые контроллеры для систем управления ч2. Г.И.Загарий, В.С. Коновалов В.С., Н.О. Ковзель, В.И. Поддубняк, А.И. .doc
Скачиваний:
317
Добавлен:
08.08.2013
Размер:
15.9 Mб
Скачать

Режим пониженного энергопотребления

Режим пониженного энергопотребления SLEEP предназначен для обеспечения очень малого тока потребления в ожидании (менее 1 мкА при включенном сторожевом таймере). Вход в этот режим осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинается счет времени, бит PD в регистре статуса (О) сбрасывается, бит ТО устанавливается, а встроенный генератор выключается. Выход из режима SLEEP осуществляется в результате следующих событий:

– внешний сброс;

– сброс при срабатывании WDT (если он разрешен);

– прерывания (если они разрешены).

7.2 Обзор команд и обозначения

Каждая команда PIC16F84 – это 14-битовое слово, которое разделено по смыслу на две части: код операции и поле для одного и более операндов, которые могут участвовать в этой команде. Система команд PIC16F84 включает в себя байт-ориентированные команды, команды, оперирующие с константами, бит-ориентированные команды и команды передачи управления. Описание полей команд и принятых обозначений представлено в табл. 7.2.1 и на рис. 7.12,аи рис. 7.12,б.

Для байт-ориентированных команд "f" обозначает регистр операнда, с которым производится действие; "d" – определяет, куда отправить результат. Если "d" =0, то результат будет помещен в регистр W, при "d"=1 результат будет помещен в регистр "f", указанный в команде.

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

Для команд передачи управления и операций с константами, "k" обозначает восьми или одиннадцатибитную константу.

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

– проверка условия и переход;

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

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

Таблица 7.2.1

Поле

Описание

f

Адрес регистра в файле регистров

W

Регистр слова (Working register) аккумулятор

b

Адрес (номер) бита в 8-ми битовом регистре

k

Поле константы, данного или метки

x

Неопределенное состояние (=0 или =1). Ассемблер генерирует код с х=0

d

Выбор места назначения результата; если d=0, результат вW, еслиd=1, результат в регистреf. По умолчаниюd=1.

Таблица 7.2.1 (продолжение)

label

Метка

TOS

Вершина стека (Top of Stack)

PC

Программный счетчик

PCLATH

Старшая часть программного счетчика

GIE

Глобальный бит прерывания

WDT

Сторожевой таймер/счетчик (Watchdogtimer/counter)

Тайм-аут

dest

Назначение

[ ]

Опция

( )

Содержание

Направить в

< >

Поле бит регистра

Î

Из множества

italics

Использование означенного терма

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

13

. . . .

8

7

6

. . . .

0

Код операции (OPCODE)

d

f (FILE)

d= 0 для назначения результата вW;

d= 1 для назначения результата в f;

f – 7-битный адрес регистра.

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

13

. . . .

10

9

8

7

6

. . . .

0

Код операции (OPCODE)

b (бит)

f (FILE)

b– 3-битный адрес бита;

f – 7-битный адрес регистра.

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

13

. . . .

8

7

0

Код операции (OPCODE)

k(константа)

Команды управления (только GOTOиCALL)

13

12

11

10

. . . .

0

Код операции (OPCODE)

k(константа)

Рис. 7.12. а

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

Мнемокод

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

Количество циклов

Изменяемые биты состояния

Примечания

ADDWF f,d

Сложение регистров W с f

1

C, DC, Z

1,2

ANDWF f,d

Логическое И регистров W и f

1

Z

1,2

CLRF f

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

1

Z

3

CLRW -

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

1

Z

COMF f,d

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

1

Z

1,2

DECF f,d

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

1

Z

1,2

DECFSZ f,d

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

1, (2)

Нет

1,2

INCF f,d

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

1

Z

1,2

INCFSZ f,d

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

1, (2)

Нет

1,2

IORWF f,d

Логическое ИЛИ регистров W и f

1

Z

1,2

MOVF f,d

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

1

Z

1,2

MOVWF f

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

1

Нет

NOP -

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

1

Нет

RLF f,d

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

1

C

1,2

RRF f,d

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

1

C

1,2

SUBWF f,d

Вычитание регистра W из регистра f

1

C, DC, Z

1,2

SWAPF f,d

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

1

Нет

1,2

XORWF f,d

Исключающее ИЛИ регистров W и f

1

Z

1,2

ADDLW k

Сложение константы k с регистром W

1

C, DC, Z

ANDLW k

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

1

Z

IORLW k

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

1

Z

SUBLW k

Вычитание регистра W из константы k

1

C, DC, Z

MOVLW k

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

1

Нет

XORLW k

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

1

Z

OPTION

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

1

Нет

4

TRIS f

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

1

Нет

4

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

Мнемокод

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

Количество циклов

Изменяемые биты состояния

Примечания

BCF f,b

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

1

Нет

1,2

BSF f,b

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

1

Нет

1,2

BTFSC f,b

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

1, (2)

Нет

3

BTFSS f,b

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

1, (2)

Нет

3

Переходы

Мнемокод

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

Количество циклов

Изменяемые биты состояния

Примечания

CALL k

Вызов подпрограммы по адресу k

2

Нет

CLRWDT

Сброс Watchdog таймера

1

,

GOTO k

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

2

Нет

RETLW k

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

2

Нет

RETFIE

Возврат из прерывания

2

Нет

RETURN

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

2

Нет

SLEEP

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

1

,

Рис. 7.12. б

Примечания

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

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

3. Если программный счетчик (PC) модифицирован или результат проверки является истинным (true), команда выполняется за два цикла. Второй цикл выполняется как NOP.

4. Команда не рекомендуется к использованию.