Команды управления и работы с константами
Команды работы с константами используют при выполнении операции явно заданные операнды, которые являются частью команды.
Команда МОVLW k используется для записи константы k в рабочий регистр w. Содержимое регистра SТАTUS при этом не изменяется.
Команда АDDLW k прибавляет непосредственно заданную величину к содержимому регистра w.
Команда SUBLW k вычитает содержимое регистра w из заданного значения константы к. С помощью этой команды удобно изменять знак содержимого регистра w, используя ее следующим образом: SUBLW 0.
Команды логических операций ANDLW k, IORLW k, XORLW k выполняют побитно соответствующие операции над содержимым регистра w и непосредственно заданной константой к. Полученный результат сохраняется в регистре w.
С помощью команды IORLW 0 удобно определять равенство нулю содержимого регистра w. В зависимости от результата этой операции бит нуля будет установлен в 1 или сброшен в 0.
Команда RETLW k используется для возврата из подпрограммы с установкой начальных условий в регистр w, а также для реализации табличных преобразований. Перед возвращением из подпрограммы эта команда осуществляет загрузку непосредственно заданной величины в рабочий регистр w.
Команды GОТО к, САLL к, RETURN и RETFIE используются для управления программой.
Команды GОТО k и САLL k могут явно задавать адрес перехода в пределах определенной страницы, размер которой зависит от типа МК. Если адрес перехода выходит за пределы страницы, то регистр РСLATH должен содержать правильную информацию о новой странице.
|
|
Команда САLL k выполняется практически так же, как и GОТО к, за исключением того, что указатель на следующую страницу сохраняется в стеке счетчика команд.
Cуществует три различных способа возврата из подпрограммы, определяемые командамиRETLW k, RETURN, RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в счетчик команд. Эти адреса используются для возврата из подпрограмм или прерываний.
Обычное использование команды RETURN приводит к восстановлению адреса команды, следующей за командой вызова подпрограммы. При этом содержимое каких-либо регистров не изменяется, как и значения отдельных битов.
Команда RETFIE используется для возврата из прерывания. Она реализуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIЕ в регистре управления прерываниями INTСОN. Это позволяет после выполнения данной команды немедленно перейти к обработке прерываний, ожидающих своей очереди.
Существует всего две команды, служащие для непосредственного управления функционированием МК. Первая из них - CLRWDT - используется для сброса сторожевого таймера. Вторая - SLЕЕР — обеспечивает сохранение текущего состояния МК в режиме ожидания, пока не произойдет какое-либо внешнее событие, которое позволит РIС МК продолжить выполнение программы.
|
|
Команда CLRWDT сбрасывает в 0 содержимое сторожевого таймера WDТ и пределителя , запуская сначала отсчет времени сторожевого таймера. Целью введения команды CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы.
Команда SLЕЕР служит для двух целей. Первой из них является отключение МК после того, как он закончит выполнение программы.
Второй целью использования команды SLЕЕР является реализация в МК режима ожидания какого-либо события. Существует три события, способные вывести МК из режима ожидания.
Первым из них является подача сигнала запуска на вход сброса МК, что приведет к перезапуску процессора и началу выполнения программы с нулевого адреса.
Второй способ -поступление сигнала «пробуждения» МК от сторожевого таймера.
Третьим способом «пробуждения» является прерывание от какого-либо внешнего источника. При любом способе «пробуждения» использование команды SLЕЕР позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность.
Дата добавления: 2022-01-22; просмотров: 16; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!