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

              include "pl6f84.inc"

_work equ h’4E’; Для сохранения W при входе в обработчик

_status equ h’4F’; Для сохранения STATUS при входе в обработчик

EVENT equ h’20’; Счетчик количества банок

BATCH equ h’21’; Флаг прохода 24 банок

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

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

            goto MAIN; Переходим к началу фоновой программы

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

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

            goto CAN_COUNT; Переходим к началу обработчика прерывания

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

; Фоновая программа начинается с секции инициализации

MAIN bcf PORTA,0; Гарантируем наличие 0 на выводе RA0

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

         bcf TRISA,0; Переключаем вывод RA0 на выход

; Примечание. При использовании модели с модулем АЦП, например PIC16F877,

; вывод PortA[0] должен быть сконфигурирован как цифровой вход!!!

         bcf STATUS,RP0; Переключаемся обратно в 0-й банк

         clrf BATCH; Обнуляем флаг группы

         clrf EVENT; и счетчик банок

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

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

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

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

ПОКА флаг группы равен нулю, ничего не делаем

LOOP movf BATCH,f; Проверяем BATCH == 0?

         btfsc STATUS,Z; Пропускаем, если нет

            goto M_LOOP; В противном случае проверяем снова

; 24 банки прошло, Формируем импульс —

         clrf BATCH; Обнуляем флаг

         bsf PORTA,0; Выставляем на RA0 ВЫСОКИЙ уровень

         call DELAY; Ждем 1 мс

         bcf PORTA,0 ;Выставляем на RA0 НИЗКИЙ уровень

         goto M_LOOP;Возвращаемся к началу

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

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

; Это процедура обработки прерывания

CAN_COUNT

         movwf _work; Сохраняем W в памяти данных

         swapf STATUS,w; Считываем текущее состояние STATUS

         movwf _status; и сохраняем его в памяти данных

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

         dcf INTCON,INF; Сбрасываем флаг внешнего прерывания

         incf EVENT,f; Регистрируем очередное событие

         movf EVENT,w; Читаем значение счетчика

         addlw -d’24’; Сравниваем с 24 (EVENT — 24)

         btfss STATUS,С; ЕСЛИ EVENT больше или равно, ТО пропускаем (нет заема)

            goto CAN_EXIT; ИНАЧЕ выходим

         clrf EVENT; Обнуляем счетчик банок и сообщаем

         incf BАТСН, f; в фоновую программу, что прошло 24 банки

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

CAN_EXIT

         swapf _status,w; Восстанавливаем исходное состояние STATUS

         movwf STATUS; из памяти данных

         swapf _work,f; Теперь восстанавливаем исходное состояние

         swapf _work,w; рабочего регистра, не воздействуя на флаги,

         retfie; и возвращаемся в фоновую программу

При возникновении прерывания (при пересечении банкой луча фотодетектора) управление будет передано в процедуру обработки прерывания, т. е. произойдет следующая последовательность переходов: прерывание — > h’004’ —> CAN_COUNT. Как обычно, эта процедура состоит из трех секций.

Сохранение контекста

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

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

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

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

Сид Катцен

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

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

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

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

Чарльз Платт

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

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

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

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

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

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

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