logo search
Ответы_МПС

25 Команды управления в мк pic16f84

Команды работы с константами используют при выполнении опера­ции явно заданные операнды, которые являются частью команды.

Команды GOTO k, CALL k, RETURN и RETFIE используются для уп­равления программой. Команды GOTO k и CALL k могут явно задавать адрес перехода в пределах определенной страницы, размер которой зависит от типа МК: 256/512 адресов для младших моделей, 2К адресов для PIC MК среднего уров­ня (включая PIC16F8X) и 8К адресов для старших моделей МК. Если ад­рес перехода выходит за пределы страницы, то регистр PCLATH должен содержать правильную информацию о новой странице.

Команда 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 нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых получен истинный результат и инструкций изменяющих значение счетчика команд PC.