Основы микропроцессорной техники


Команды управления и работы с константами - часть 2


Команда CALL k выполняется практически так же, как и GOTO k, за исключением того, что указатель на следующую страницу сохраняется в стеке счетчика команд.

Для PIC МК средней группы существует три различных способа возврата из подпрограммы, определяемые командами RETLW k, RETURN и RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в счетчик команд. Эти адреса используются для возврата из подпрограмм или прерываний.

Обычное использование команды RETURN приводит к восстановлению адреса команды, следующей за командой вызова подпрограммы. При этом содержимое каких-либо регистров не изменяется, как и значения отдельных битов.

Команда RETFIE используется для возврата из прерывания. Она реализуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIE в регистре управления прерываниями INTCON. Это позволяет после выполнения данной команды немедленно перейти к обработке прерываний, ожидающих своей очереди. В противном случае перед окончанием обработки потребовалась бы проверка наличия запросов других прерываний, и, в случае их поступления, переход к их обработке.

Существует всего две команды, служащие для непосредственного управления функционированием МК. Первая из них – CLRWDT – используется для сброса   сторожевого таймера. Вторая – SLEEP – обеспечивает сохранение текущего состояния МК в режиме ожидания, пока не произойдет какое-либо внешнее событие, которое позволит PIC МК продолжить выполнение программы.

Команда CLRWDT сбрасывает в 0 содержимое сторожевого таймера   WDT и пределителя (если он используется для установки интервала времени срабатывания WDT), запуская сначала отсчет времени сторожевого таймера. Целью введения команды CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы.

Команда SLEEP служит для двух целей. Первой из них является отключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, инициализации других устройств в системе, а затем его функционирование не требуется.

Второй целью использования команды SLEEP является реализация в МК режима ожидания какого-либо события. Существует три события, способные вывести МК из режима ожидания. Первым из них является подача сигнала запуска на вход сброса МК, что приведет к перезапуску процессора и началу выполнения программы с нулевого адреса. Второй способ – поступление сигнала "пробуждения" МК от сторожевого таймера. Третьим способом "пробуждения" является прерывание от какого-либо внешнего источника. При любом способе "пробуждения" использование команды SLEEP позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность.

При этом необходимо иметь в виду, что выход МК из режима ожидания занимает, по меньшей мере, 1024 такта. Поэтому команду SLEEP нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие.




Начало  Назад  Вперед



Книжный магазин