Средства разработки для PICMICRO - Средства разработки для PICMICRO

не равен О Выход из цикла, если условие выполнено

Установка правильного значения старшего байта

При реализации петли («loop») содержимое младшего байта в счетчике циклов инкрементируется при каждом ее прохождении. Содержимое старшего байта инкрементируется, если результат инкремента младшего байта не равен нулю. Это означает, что содержимое старшего байта счетчика равно значению младшего байта минус значение старшего байта.

Этот маленький отрезок кода использует всего лишь 5 командных циклов (или 20 тактов синхронизации) для каждого прохождения петли и является минимальным программным фрагментом для формирования 16-битных временных задержек. Серьезным недостатком этого фрагмента является невозможность выхода из цикла при переполнении счетчика, то есть в случае, если условие выхода не выполняется в течение 64К. х 5 командных циклов. Несмотря на это данный фрагмент остается очень эффективным методом таймирования 16-битных событий с помощью всего лишь пяти команд.

Пара замечаний по поводу этих двух команд. Если вы используете при их выполнении регистры процессора, то предварительно следует убедиться, что их содержимое может принимать нулевое значение. В базовой серии Р1С16С5х регистр FSR содержит биты, которые никогда не обращаются в ноль (всегда равны 1). Эти регистры никогда не примут нулевого значения, то есть никогда не произойдет пропуск следующей команды. Кроме того, эти команды не влияют на значение флагов состояния (можно было бы ожидать изменения флага признака нуля). Это означает, что вы можете поставить команду «bsf STATUS, Z» после команды, следующей за incfsz/decfsz, как сделано в следующем примере:

Go to Top