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

       org 0; Вектор сброса

        goto MAIN; Фоновая программа

        org 4;Вектор прерывания

        goto ISR; Обработчик

MAIN clrwdt; Сбрасываем сторожевой таймер

         bsf STATUS,RP0; Переключаемся в 1-й банк

         movlw b’00000001’; Прерывание по спадающему фронту, внутр. такт, сигнал

         movwf OPTION_REG; Предделитель — 1:4, подключен к Таймеру 0

         bcf STATUS,RP0; Возвращаемся в 0-й банк

         clrf NEW; Обнуляем флаг нового события

         bsf NTCON,T0IE; Разрешаем прерывание от Таймера 0

         bsf INTCON,INTE; Разрешаем внешнее прерывание

         bsf INTCON,GIE; Разрешаем работу системы прерываний

         clrf TMR0; Сбрасываем таймер

         clrf COUNT; Обнуляем счетчик тиков

         clrf COUNT+1

Помимо разрешения прерывания от Таймера 0, устанавливается также флаг INTE для разрешения внешнего прерывания с вывода INT, на который подается сигнал с пикового детектора. При этом нам не требуется обнулять ни Таймер 0, ни 2-байтный счетчик тиков, поскольку первый отсчет из серии всегда будет неверным — ведь сердцебиение пациента не синхронизировано со сбросом микроконтроллера! Однако регистр NEW, в который заносится ненулевое значение при каждом обнаружении импульса ЭКГ, сбрасывается.

Основное ядро обработчика прерывания, код которого приведен в Программе 13.2, выполняет следующие действия:

1. По прерыванию от Таймера 0:

• инкрементирует 2-байтный счетчик тиков;

• сбрасывает флаг прерывания от таймера T0IF;

• выходит из прерывания.

2. По внешнему прерыванию от пикового детектора:

• копирует содержимое счетчика тиков в РОНы;

• обнуляет Таймер 0;

• устанавливает флаг NEW;

• сбрасывает флаг внешнего прерывания;

• выходит из прерывания.

Программа 13.2. Измерение периода ЭКГ с разрешением 1 мс

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

; * По прерыванию от Таймера 0 в обработчике инкрементируется *

; * 2-байтный счетчик COUNT *

; * По внешнему прерыванию COUNT:2 копируется в DATA:2 *

; * и устанавливается флаг NEW, извещающий фоновую программу *

; * о готовности новых данных *

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

; Сначала сохраним контекст

ISR movwf _work; Сохраняем W

      swapf STATUS,w; и регистр STATUS

      movwf _status

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

; Основной код

      btfss INTCON,T0IF; Сердечный импульс?

        goto HEART_BEAT; ЕСЛИ да, TO обрабатываем его

      incf COUNT+1,f; Регистрируем очередной 1-мс тик

      btfsc STATUS,Z; ЕСЛИ перешли через ноль,

        incf COUNT,f; ТО инкрементируем старший байт

      bcf INTCON,T0IF; Сбрасываем флаг прерывания

      goto ISR_EXIT

HEART_BEAT; Сюда попадаем при обнаружении импульса ЭКГ

      movf COUNT+1,w; Берем младший байт периода

      movwf DATUM+1; Копируем в пользовательский регистр

      movf COUNT,w; Берем старший байт периода

      movwf DATUM

      clrf COUNT+1; Обнуляем счетчик тиков

      clrf COUNT

      btfsc INTCON,INTF; Сбрасываем флаг прерывания

      incf NEW,f; Сообщаем о наличии новых данных

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

ISR_EXIT swapf _status,w; Восстанавливаем регистр STATUS

              movwf STATUS

              swapf _work,f; Восстанавливаем W,

              swapf _work,w; не затрагивая STATUS,

              retfie; и выходим из прерывания

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

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

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

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

Сид Катцен

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

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

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

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

Чарльз Платт

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

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

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

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

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

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

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