Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

;*************************

; * ФУНКЦИЯ: Формирует задержку длительностью 1 мс *

; * при частоте резонатора 4 МГц *

; * ВХОД: Нет *

; * ВЫХОД: Изменяются флаги и W *

;**********************

N equ d’249’; Параметр задержки, см. текст

DELAY_1MS

          movlw N; Инициализируем цикл 1~

; ЦИКЛ -----------------

D_LOOP

          addlw -1; Декрементируем счетчик N-

          btfss STATUS,Z; Проверяем: равен нулю? N+1~

            goto D_LOOP; ЕСЛИ нет, ТО повторяем 2*(N—1)~

; -------------------------

return

Чтобы вычислить общее число машинных циклов, которое тратится на выполнение подпрограммы, и, таким образом, определить величину N, нужно оценить, сколько времени выполняется та или иная команда подпрограммы:

1. Команда call DELAY_1MS, используемая для перехода к подпрограмме, выполняется за 2 машинных цикла.

2. Команда movlw, предшествующая входу в цикл, выполняется за один машинный цикл.

3. Команды addlw, декрементирующие содержимое рабочего регистра, затрачивают в общей сложности N циклов (N проходов цикла).

4. Команда btfsc STATUS,Z, проверяющая состояние флага Z (не стал ли W равен нулю после предыдущего декрементирования?), также выполняется N-раз. Однако при последнем проходе происходит выход из цикла за счет пропуска команды перехода, что добавляет один цикл из-за сброса конвейера. Таким образом, общая задержка, вносимая этой командой, составляет N + 1 циклов.

5. Поскольку выход из цикла происходит за счет пропуска команды goto, она выполняется только N — 1 раз; каждое ее выполнение занимает 2 цикла. Ее вклад в общую задержку составляет, таким образом, (N — 1) х 2.

6. Заключительная команда return выполняется за 2 цикла.

Таким образом, общее число циклов равно

2(call) + 1(movlw) + N(addlw) + (N + 1)(btfss) + 2 x (N — 1)(goto) + 2(return)

Приравняв это выражение числу 1000, получим

2 + 1 + N + (N + 1) + 2 х (N — 1) + 2 = 1000

4 + (4 х N) = 1000

4 x N = 996

N = 249

Наша подпрограмма задержки в значительной степени ограничена тем, что рабочий регистр, как и все регистры данных микроконтроллеров PIC, является 8-битным, т. е. максимальное значение N равно b’11111111’, или десятичному 255. На самом деле значение N = 0 в нашей подпрограмме даст наибольшую задержку! Это происходит потому, что W декрементируется до проверки на ноль, т. е. его содержимое будет изменяться следующим образом: h’00’ —> h’FF’ —> h’FE’ — >… -> h’01’ —> h’00’. To есть запись нуля аналогична записи числа d’256’. Таким образом, максимальная задержка, формируемая нашей подпрограммой, составляет 4 + (4 х 256) = 1028 циклов, или 1.028 мс при частоте резонатора 4 МГц.

Задержку можно немного увеличить, добавляя в тело цикла команды пор (нет операции). Каждая команда пор добавляет один машинный цикл, не влияя при этом на флаги регистра STATUS. Таким образом, вставка после команды addlw -1 четырех команд пор, как показано в Программе 6.2, даст суммарную задержку длительностью 4 + 8 х N машинных циклов. Для N = 249 мы теперь получим 4 + 1992 = 1996 циклов, или примерно 2 мс при длительности машинного цикла 1 мкс. Подумайте, как можно использовать дополнительные команды пор для достижения точного значения в 2000 циклов?

Программа 6.2. Подпрограмма формирования 2-мс задержки

; ***********************

; * ФУНКЦИЯ: Формирует задержку длительностью 2 мс *

; * при частоте резонатора 4 МГц… *

; * ВХОД: Нет *

; * ВЫХОД: Изменяются флаги и W *

; ***********************

N equ d’249’; Параметр задержки, см. текст

DELAY_2MS

           movlw N; Инициализируем цикл 1~

; ЦИКЛ ----------------

D_LOOP

            addlw -1; Декрементируем счетчик N~

            nop; Добавляем четыре дополнительных N~

            nор; цикла с помощью команд N~

            nор; «нет операции» N~

            nop; N~

            btfss STATUS,Z; Проверяем: равен нулю? N+1~

               goto D_LOOP; ЕСЛИ нет, ТО повторяем 2*(N-1)~

; ------------------------

            return

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника