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

В качестве простого примера доработаем Программу 6.3 таким образом, чтобы она формировала задержки длительностью К x 100 мс, где К — однобайтный параметр, «передаваемый» вызывающей программой. Системное представление такой функции приведено на Рис. 6.7. Здесь имеется один входной сигнал диапазона 1…256 и полностью отсутствуют выходные сигналы. Также на этом рисунке отмечено размещение всех локальных переменных, используемых внутри подпрограммы. Последнее полезно для контроля многократного использования регистра данных различными подпрограммами и вызывающими функциями. Обратите внимание на двойные вертикальные границы прямоугольника — так на блок-схемах обычно обозначаются модули или подпрограммы.

Рис. 6.7. Системное представление подпрограммы формирования задержки длительностью К х 100 мс

Поскольку в данном случае имеется всего один однобайтный параметр, наиболее удобным местом для размещения в вызывающей программе значения К является рабочий регистр. Таким образом, для формирования 5-с задержки, в вызывающей программе можно написать:

movlw d’50’; 50 х 0.1 с даст нам 5-секундную задержку

call DELAY_K100MS; Сформируем ее!

Сама подпрограмма, код которой приведен в Программе 6.4, реализует следующий алгоритм:

1. ВЫПОЛНЯТЬ, ПОКА K > 0:

а) Сформировать задержку 100 мс.

б) Декрементировать К.

2. Конец.

Программа 6.4. Подпрограмма формирования задержки длительностью К х 100 мс

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

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

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

; * ПРИМЕР: К = 100, задержка 10 с *

; * ВХОД: К в W, от 1 до 256 *

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

; * Регистры h’30’ и h’31’обнуляются *

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

COUNT1 equ h’30’; Счетчик 100-мс цикла

К equ h’31’; Временная переменная для К

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

DELAY_K100MS

          movwf К; Сохраняем К в регистре

; ФОРМИРУЕМ 100-мс задержку -------------

DELAY_100MS

          movlw d’100’; Инициализируем счетчик 100-мс цикла

          movwf COUNT1

DELAY_1MS

           movlw N; Инициализируем внутренний цикл

D_LOOP

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

           bcfss STATUS,Z; Проверяем: равен нулю?

              goto D_LOOP; ЕСЛИ нет, ТО повторяем

           decfsz COUNT1,f; Декрементируем счетчик 100-мс цикла

              goto DELAY_1MS; и повторяем, пока он не будет равен 0

; Декрементируем К -------------------

            decfsz K,f

; ПОКА К > 0 -----------------------------

               goto DELAY_100MS; Повторяем 100-мс задержку, ПОКА К > 0

FINI

            return

Программа просто копирует значение параметра из W в регистр h’31’, прежде чем приступить к выполнению уже знакомого нам участка кода (он выделен комментариями в виде пунктирной линии), который идентичен коду Программы 6.3 и предназначен для формирования одной задержки длительностью 100 мс. После формирования указанной задержки регистр, содержащий значение К, декрементируется, этот блок выполняется снова, и так до тех пор, пока К не станет равно нулю. Таким образом, код, формирующий 100-мс задержку, будет выполнен К раз.

Поскольку проверка К на ноль производится после формирования 100-мс задержки[94], то значение K = 0 будет интерпретироваться как К = 256. Таким образом, диапазон задержек, формируемых подпрограммой, составит 0.1…25.6 с. Проверка перед циклом[95] даст нам диапазон задержек 0…25.5 с. И опять же время задержки вычисляется приближенно, поскольку мы игнорируем время, которое затрачивается на выполнение команд внешних циклов.

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

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

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

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

Сид Катцен

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

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

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

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

Чарльз Платт

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

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

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

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

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

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

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