Составители:
6
Многие операции, связанные с занесением констант в память,
пересылкой данных из одной ячейки в другую или выполнением
арифметических действий, используют специальный регистр – аккумулятор
(W). В названиях команд используются символьные обозначения используемых
операндов: L – константа, W – аккумулятор, F – ячейка памяти. Например,
команда MOVLW заносит константу в аккумулятор;
MOVLW <конст>,
где <конст> – значение константы. Еще один пример – обнуление
аккумулятора:
CLRW
А обнулить ячейку памяти можно командой:
CLRF f
где f – адрес ячейки памяти. Занести другие значения в ячейку памяти одной
командой нельзя. Это делают занесением константы или значения ячейки
памяти в аккумулятор и записью значения аккумулятора в память.
Для обмена данными между ОЗУ и аккумулятором используются команды
MOVWF f (запись значения аккумулятора в
ячейку памяти f)
MOVFW f (запись значения ячейки памяти f в аккумулятор),
Поскольку в микроконтроллерах используется относительно небольшой
набор команд, для придания большей гибкости в некоторых командах есть
возможность сохранять результат в памяти либо в аккумуляторе. Такие
команды имеют признак d, принимающий значение W, если результат
необходимо сохранить в аккумуляторе, и F, если в памяти.
Примером такой
команды является команда:
DECF f, d
Она уменьшает на единицу содержимое ячейки памяти f и сохраняет результат
в памяти или в аккумуляторе в зависимости от значения d. Увеличение на
единицу ячейки памяти выполняет команда
INCF f, d
Есть варианты этих команд INCFSZ и DECFSZ. Кроме описанных действий,
они имеют еще одну особенность, которую можно использовать для
организации циклов: если
в результате инкрементирования
(декрементирования) получено нулевое значение, то следующая за INCFSZ или
DECFSZ команда не выполняется. Вместо нее микроконтроллер выполняет
команду NOP, которая не производит никаких действий, но требует одного
машинного цикла.
Приведем пример простой программы, выдающей на вывод RB0 меандр
(т.е. попеременно ноль – единицу- ноль – единицу- ноль – единицу и т.д.):
#INCLUDE “P16F84.INC” ; Подключаем файл с символьными
; обозначениями специальных регистров и их битов
COUNT EQU 20h ; Задаем символьное обозначение ячейки памяти,
; расположенной по адресу 20h
ORG 0 ;Текущий адрес в ПЗУ - 0
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »