![](/user_photo/2706_HbeT2.jpg)
- •1 Лекція № 4. Система команд однокристальних 8-розрядних flash smos мікро контролерів.
- •Лекція 4. Система команд одно кристальних 8-розрядних flash smos мікроконтролерів
- •Команды управления и операций с константами
- •Примечания:
- •Побитное 'или1 константы и w
- •Sublw Вычесть w из константы
- •Subwf Вычесть w из f
- •Побитное 'исключающее или' константы и w
- •Побитное 'исключающее или' w и f
Побитное 'или1 константы и w
Синтаксис: Операнды: Операция: Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
[label] IORLW
О < k < 255
(W) .OR. k -»(W)
Z
11 |
1000 |
kkkk |
kkkk |
Выполняется побитное 'ИЛИ' содержимого регистра W и
8-разрядной константы 'к'. Результат сохраняется в
регистре W.
1
1
IORLW 0x35
До выполнения команды
W = 0х9А После выполнения команды
W = OxBF
I0RWF
С интаксис: Операнды:
Операция: Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
Побитное 'ИЛИ1 W и f
f,d
[label] I0RWF О < f <127
de [0,1]
(W) .OR. (f) -»(dest)
Z
00 |
0100 |
dfff |
ffff |
Выполняется побитное 'ИЛИ' содержимого регистров W и
Т. Если d=0, результат сохраняется в регистре W. Если
d=1, результат сохраняется в регистре Т.
1
1
IORWF RESULT.0
До выполнения команды
RESULT = 0x13
W = 0x91 После выполнения команды
RESULT = 0x13
W = 0x93
MOVF
С интаксис: Операнды:
Операция: Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
Переслать f
f,d
[label] MOVF 0 < f <127
de [0,1] (f) -> (dest)
Z
00 |
1000 |
dfff |
ffff |
Содержимое регистра Т пересылается в регистр
адресата. Если d=0, значение сохраняется в регистре W.
Если d=1, значение сохраняется в регистре 'f. d=1
используется для проверки содержимого регистра Т на
ноль.
1
1
MOVF FSR.0
После выполнения команды
W = значение регистра FSR
MOVLW
Переслать константу в W
Синтаксис: Операнды: Операция: Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
[label] MOVLW 0 < k < 255
Нет
11 |
OOxx |
kkkk |
kkkk |
Переслать константу 'к' в регистр W. В неиспользуемых битах ассемблер устанавливает '0'. 1 1
MOVLW 0x5A
После выполнения команды W = 0х5А
M0VWF
Переслать W в f
Синтаксис: |
[label] MOVWF f |
|||
Операнды: |
0 < f <127 |
|||
Операция: |
(W)->(t) |
|||
Измен, флаги: |
Нет |
|||
Код: |
00 |
0000 |
lfff |
ffff |
Описание: |
Переслать содержимое регистра W в регистр Т. |
|||
Слов: |
1 |
|||
Циклов: |
1 |
|||
Пример: |
MOVWF OPTION_REG |
|||
|
До выполнения команды |
|||
|
OPTION = OxFF |
|||
|
W = 0x4F |
|||
|
После выполнения команды |
|||
|
OPTION = 0x4F |
|||
|
W = 0x4F |
|||
NOP |
Нет операции |
|||
Синтаксис: |
[label] NOP |
|||
Операнды: |
Нет |
|||
Операция: |
Нет операции |
|||
Измен, флаги: |
Нет |
|||
Код: |
00 |
0000 |
ОххО |
0000 |
Описание: |
Нет операции |
|||
Слов: |
1 |
|||
Циклов: |
1 |
|||
Пример: |
NOP |
|
|
|
OPTION |
Загрузить регистр OPTION |
|||
Синтаксис: Операнды: Операция: Измен, флаги: |
[label] OPTION Нет (W) -»OPTION Нет |
|||
Код: |
00 |
0000 |
оно |
0010 |
Описание: Слов: Циклов: Пример: |
Переслать содержимое регистра W в регистр OPTION. Инструкция поддерживается для совместимости программы с семейством микроконтроллеров PIC16C5X. Запись/чтение регистра OPTION можно выполнить прямой или косвенной адресацией. 1 1 |
|||
|
Для совместимости программного обеспечения с последующими выпускаемыми микроконтроллерами семейства PIC16СХХ не рекомендуется использовать эту инструкцию. |
|||
|
RETFIE
Возврат из подпрограммы с разрешением прерываний
Синтаксис: Операнды:
Операция:
Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
RETFIE
[1аЬеЦ
Нет
TOS -»PC
1 -^
Нет
00 |
0000 |
0000 |
1001 |
Возврат из подпрограммы обработки прерываний.
Вершина стека TOS загружается в счетчик команд PC.
Устанавливается в '1' флаг глобального разрешения
прерываний GIE(INTCON<7>). Инструкция выполняется за
2 цикла.
1
2
RETFIE
До выполнения команды
После выполнения команды PC = TOS GIE= 1
RETLW
Возврат из подпрограммы с загрузкой константы в W
Синтаксис: Операнды:
Операция:
Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
[1аЬеЦ
0 < к < 255
RETLW
TOS -»PC Нет
11 |
Olxx |
kkkk |
kkkk |
В регистр W загружается 8-разрядная константа. Вершина стека TOS загружается в счетчик команд PC. Инструкция выполняется за 2 цикла. 1
CALL
TABLE
TABLE ADDWF PCL.f
RETLW k1
RETLW k2
RETLW
kn
До выполнения команды W = 0x07
После выполнения команды
W = значение к8
RETURN
Возврат из подпрограммы
Синтаксис: |
[label] RETURN |
|
||
Операнды: |
Нет |
|
||
Операция: |
TOS -»PC |
|
||
Измен, флаги: |
Нет |
|
||
Код: |
00 |
0000 |
0000 |
1000 |
Описание:
Слов:
Циклов:
Пример:
Возврат из подпрограммы. Вершина стека TOS загружается в счетчик команд PC. Инструкция выполняется за 2 цикла. 1 2
RETURN
После выполнения команды PC = TOS
RLF
С интаксис: Операнды:
Операция: Измен, флаги: Код:
Описание:
Циклический сдвиг f влево через перенос
f,d
[label] RLF 0<f < 127 de [0,1] См.описание С
00 |
1101 |
dfff |
ffff |
Выполняется циклический сдвиг влево содержимого регистра f через бит С регистра STATUS. Если d=0, результат сохраняется в регистре W. Если d=1, результат сохраняется в регистре Т.
|
С |
|
Регистр f |
|
|
|
|
Слов: |
1 |
Циклов: |
1 |
Пример: |
RLF REG 1,0 |
|
До выполнения команды |
|
REG1 =1110 0110 |
|
С = 0 |
|
После выполнения команды |
|
REG1 =1110 0110 |
|
W = 1100 1100 |
|
С = 1 |
RRF
С интаксис: Операнды:
Операция: Измен, флаги: Код:
Описание:
Циклический сдвиг f вправо через перенос
RRF
f,d
[label] 0<f < 127 de [0,1] См.описание С
00 |
1100 |
dfff |
ffff |
Выполняется циклический сдвиг вправо содержимого регистра f через бит С регистра STATUS. Если d=0, результат сохраняется в регистре W. Если d=1, результат сохраняется в регистре Т.
|
С |
|
Регистр Т |
|
|
|
|
||
|
|
|
|
Слов: |
1 |
Циклов: |
1 |
Пример: |
RRF REG 1,0 |
|
До выполнения команды |
|
REG1 =1110 0110 |
|
С = 0 |
|
После выполнения команды |
|
REG1 =1110 0110 |
|
W = 0111 0011 |
|
С = 0 |
SLEEP
Перейти в режим SLEEP
Синтаксис: Операнды:
Операция:
Измен, флаги: Код:
Описание:
Слов:
Циклов:
Пример:
[label] SLEEP
Нет
00h -»WDT
00h -> предделитель WDT
1 -»-TO
0^-PD
-TO, -PD
00 |
0000 |
0110 |
0011 |
Сбросить флаг включения питания -PD в '0'. Установить
флаг переполнения WDT -ТО в Т. Очистить таймер WDT
и его предделитель. Перевести микроконтроллер в
режим SLEEP и выключить тактовый генератор.
Подробное описание смотрите в разделе 14.9.
1
1
SLEEP