Устройства на pic12f629 схемы: Вариант умной кнопки на PIC12F629 или PIC12F675 — Устройства на микроконтроллерах — Схемы устройств на микроконтроллерах

Схема автоматического управления дневным светом на PIC12F629 « схемопедия

Автоматическое управление дневным светом на PIC12F629

Устройство предназначено что бы автоматически включать и выключать дневной свет фар, при остановке и началу езды в автомобиле.При этом как вы видите на картинке даже, схема сопровождена дополнительно звуковым сигнализатором и индикацией.

Схема выполнена на недорогом микроконтроллере pic12f629

 

 

Схема устройства:

 

Как это работает

1.Питание 12в
2.При вкл зажигания после прохождения 6 импульсов с датчика скорости вкл ДХО
3.При вкл габаритов все переходит в штатный режим
4.При выкл габаритов переходим п.2
5.При остановке (например в пробке) ДХО выключится через 3 мин при начале движения п.2
6.При остановке и выключении зажигания, ДХО горит ещё 20 секунд и выключается.

Устройство работает следущим образом

1. Когда выключено зажигание, светодиод HL1 моргает с частотой 1раз в секунду (1Hz), сигнализируя о том ,что устройство находится в дежурном режиме (режим ожидания).

2. При включении зажигания светодиод HL1 начинает светится постоянно,микроконтроллер ждёт прихода импульсов с датчика скорости,и при начале движения автомобиля, через 1 секунду автоматически зажигаются ДХО и горят всё время движения до остановки.

3. Во время остановки, включается режим выдержки времени выключения ДХО (3 минуты), об этом сигнализирует встроенный Бипер (2 коротких звуковых сигнала – это при включёном зажигание и остановки автомобиля), если в это время выключить замок зажигания (например при длительной стоянке), прозвучат 4 коротких звуковых сигнала, сигнализируя о том, что включился режим выдержки времени включения ДХО 20 секунд и затем они выключатся (режим вежливой подсветки), устройство переходит в дежурный режим.

4. При включении Габаритных огней, устройство автоматически переходит в режим ожидания, ДХО выключаются (правила ПДД), всё работает в штатном режиме.

5. Режим вежливой подсветки можно включить так: включить зажигание, при этом прозвучат 2 коротких сигнала и сразу его выключить, (прозвучат 4 звуковых сигнала) при этом устройство автоматически перейдёт в режим вежливой подсветки. Если требуется выключить ДХО не дожидаясь выдержки времени, следует включить и тут же выключить Габаритные огни.

6. Светодиод HL2 сигнализирует о состоянии ДХО ( Светится – ДХО работают, выключен – ДХО не работают)

Применёное реле, на максимальный ток проходящий через контакты 10А, если Вы вдруг захотите применить это устройство для Автоматического включения БС, лучше установить дополнительное реле типа SLC – 12VDC – SL – C , максимальный ток контактов 30А, этого вполне достаточно для управления БС. Светодиоды HL1 и HL2 устанавиваются в удобном месте, например в приборной панели . Пишалка ( BUZZER ) так же устанавливается в удобном для водителя месте. На фотографии собраного устройства видно что светодиоды стоят на самой печатной плате, но это сделано было только для отладки схемы.

Установка произвольная!

! Внимание. При прошивке микроконтроллера сохраните калибровочную константу…, без неё работа устройства не возможна.

Скачать плату и прошивку

СВЕТОВЫЕ ЭФФЕКТЫ НА PIC

   Предлагаю вам для повторения принципиальную схему световых эффектов, сделанных на основе популярного микроконтроллера Pic12f629. Схема представляет 15 различных световых эффектов, включая эффект имитирующий полицейский проблесковый сигнал. Для увеличения — клик на картинку.


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


   Автоматический режим воспроизведения — это когда воспроизводятся все световые эффекты поочередно. Для остановки воспроизведения эффектов еще раз нажмите кнопку «Старт».


   При нажатии кнопок «Вперед» или «Назад» при остановленным воспроизведением, включится первый эффект и будет работать постоянно.


   Чтобы переключить эффект нажмите кнопку «Назад» — для перехода к предыдущему световому эффекту, «Вперед» — для перехода к следующему.


   Устройство собранно на печатной плате, рисунок и прошивка для контроллера в архиве. На плате собран и простой стабилизатор 5В, для питания контроллера (на схеме он не показан). Корпус — пластмассовая небольшая коробочка. Сами светодиоды выбираем любых типов и цветов, подходящих по напряжению и току. Их располагаем в любом виде — тут уже подключите свою фантазию. А если нужно сделать на основании этого девайса эффекты для дискотеки — просто усиливаем выходы микроконтроллера мощными полевыми транзисторами типа IRF. Автор конструкции: Пелех.М

   Форум по микроконтроллерам серии PIC

   Форум по обсуждению материала СВЕТОВЫЕ ЭФФЕКТЫ НА PIC




МИКРОФОНЫ MEMS

Микрофоны MEMS — новое качество в записи звука. Подробное описание технологии.


SMD ПРЕДОХРАНИТЕЛИ

Приводятся основные сведения о планарных предохранителях, включая их технические характеристики и применение.



Дистанционный регулятор освещенности на микроконтроллере PIC12F629 / PIC12F675. Схема диммера

Особенность данного диммера в том, что его питание осуществляется от сети через нагрузку (обычно это лампа накаливания, но может быть и резистивный нагревательный элемент).

Устройство, собранное на микроконтроллере PIC12F629 / PIC12F675, включает нагрузку путем короткого замыкания собственного источника питания! Вы можете управлять диммером с помощью телевизионного пульта дистанционного управления — все, что вам нужно, это 4 свободные кнопки.

Если вы не можете для этого выделить 4 кнопки, вы можете обучить устройство только 2 кнопкам, но в этом случае вы, либо теряете функцию затемнения — вы можете только включать и выключать свет, либо теряете кнопку OFF, поэтому вам нужно будет затемнять — вниз до уровня 0, чтобы выключить свет.

Диммер распознает два протокола: NEC и RC5 (наиболее популярный).

HILDA — электрическая дрель-гравер

Многофункциональный электрический инструмент способн…

Бестрансформаторный источник питания

Питание устройства осуществляется от сетевого напряжения с помощью бестрансформаторного источника питания на основе гасящего конденсатора. Переменное напряжение выпрямляется через диод D1 (1N4007).

Режим ожидания (свет выключен)

Устройство питается от сетевого напряжения, через резистивную нагрузку (лампочку). Схема потребляет очень мало энергии. Основным потребителем является ИК-приемник TSOP, но вы также можете использовать маломощные TSOP, такие как TSOP38238, если хотите снизить потребление тока до менее чем 1 мА.

В этом состоянии микроконтроллер (PIC12F629/PIC12F675) ожидает ИК-сигнала от TSOP или нажатия от настенного выключателя. Имейте в виду, что настенный выключатель больше не должен быть классическим выключателем включения/выключения — он должен быть заменен кнопочным выключателем, который замыкает контакты только тогда, когда вы продолжаете нажимать на него.

Включенное состояние (свет включен или приглушен)

Если нажать на настенный выключатель или отправить соответствующий ИК-сигнал с пульта дистанционного управления, лампочка загорится. Включение электрической лампочки осуществляется путем включения симистора, когда напряжение сети пересекает нулевую точку. Это обнаруживается с помощью детектора пересечения нуля, сформированного с помощью R3 и C6.

Если мы включим симистор сразу после обнаружения» нуля», он включит свет на полную мощность. Если мы задержим срабатывание симистора на некоторое время, то сможем эффективно выполнить диммирование (затемнение), так как напряжение, появляющееся на выходе, меньше напряжения питания.

Если мы посмотрим на принципиальную (часть источника питания) мы можем увидеть, что когда симистор включается, то он замыкает наш бестрансформаторный источник питания. В этот момент вся цепь питается от конденсатора С3. Он должен быть достаточно большим, чтобы поддерживать достаточную мощность для TSOP (~5 мА), микроконтроллера (< 1 мА) и MOC3023 (~ 5 мА, но только в течение нескольких микросекунд).

Поэтому здесь желательно поставить конденсатор С3 большой емкости: 220 мкФ / 330 мкФ / 470 мкФ.

Если мы будем держать свет включенным на полную яркость, он в конечном итоге полностью разрядит C3 и перезапустит микроконтроллер PIC. Вот программа микроконтроллера не включает свет на полную яркость — мы на самом деле немного задерживаем срабатывание симистора, чтобы «украсть» достаточно энергии, чтобы держать наш конденсатор C3 заряженным. Так что 100 % на самом деле больше похоже на 99 %.

Нагрев резистора R1

Одной из проблем этого устройства является возможный нагрев резистора R1. Это естественно для предотвращения пускового тока, который может разрушить конденсатор C1. Когда устройство загорается на полную яркость, форма волны выглядит примерно так (обратите внимание на задержку с перехватом энергии, чтобы мы могли держать C3 заряженным).

Во время максимальной яркости конденсатор C1 в бестрансформаторном источнике питания сохраняет небольшое количество энергии. Поэтому, когда симистор замыкает накоротко C1 через R1 и стабилитрон ZD1, вся эта энергия рассеивается на резисторе R1. К счастью, этой энергии не так много, поэтому R1 даже не греется. Проблемы начинают возникать, когда энергия, накопленная в C1, является значительной, например, когда устройство затемняет лампочку:

Как видно из диаграммы, количество энергии в C1 — это то, что требует нашего внимания. Когда срабатывает симистор, все, что рассеивается на нашем бедном R1 должно хорошо отводиться. Большие значения сопротивления R1 будут рассеивать больше тепла, но при этом C1 будет работать в комфортных условиях, а более низкие значения сопротивления R1 означают меньше тепла, но C1 начнет гудеть как сумасшедший.

Решение проблемы — использовать C1 с меньшей емкостью (чтобы он не мог удерживать слишком много энергии, но ее было бы достаточно для питания нашего устройства) и использовать правильное значение сопротивления R1. Я определил, что использование резистора R1 с сопротивлением 220…680 Ом и конденсатора C1 емкостью 0,22 мкФ является оптимальным решением.

Подключение устройства:

Руководство пользователя

После правильного подключения диммера и включения питания вам необходимо запрограммировать кнопки пульта дистанционного управления.

Вот как выполняется программирование диммера:

Нажмите и удерживайте настенную кнопку в течение 11 секунд, для того чтобы диммер мог войти в режим программирования. По истечении этих 11 секунд светодиод LED начнет быстро мигать, и свет погаснет до третьего уровня. Теперь у вас есть 11 секунд, чтобы завершить последовательность программирования:

  1. нажмите первую кнопку на пульте дистанционного управления, которая будет использоваться за увеличение уровня освещенности или включение свет, когда он выключен (ON / UP)
  2. нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для уменьшения уровня освещения (DOWN)
  3. нажмите третью кнопку, которая будет использоваться для включения / выключения режима сна (SLEEP)
  4. наконец, нажмите четвертую кнопку, которая будет использоваться для полного выключения света (OFF)

Во время программирования лампочка и светодиод будут мигать, подтверждая прием ИК-кода. Если на вашем пульте дистанционного управления нет всех 4 кнопок, которые вы можете использовать, вы можете повторить предыдущие кнопки, но это отключит некоторые функции.

Например, если на вашем пульте дистанционного управления есть только две кнопки (A и B), и если во время программирования вы нажмете: AAAB, то это означает, что кнопка A будет использоваться для функции ВКЛ / ВВЕРХ (шаг 1), а кнопка B будет использоваться для полного выключения света (шаг 4).

Если вы выберете комбинацию ABBB, это означает, что кнопка A будет снова использоваться для функции ON/UP (шаг 1), а кнопка B будет использоваться для уменьшения уровня освещенности (шаг 2). При этом кнопка B также полностью выключит свет за 10 нажатий — до нулевого уровня.

Примечание по программированию: если во время программирования вы заметили, что светодиод мигает, даже если вы не нажимаете никаких кнопок на пульте дистанционного управления, вероятно, это связано с тем, что вы использовали модуль приемника TSOP11xx. В этом случае вы, вероятно, не сможете правильно запрограммировать свой диммер, поэтому замените его тем, что рекомендовано на схемах.

Таймер

Таймер сна может быть активирован чуть более длительным нажатием настенной кнопки (если быть точным более 1,8 сек) или нажатием соответствующей кнопки на пульте дистанционного управления. Отмена таймера сна выполняется так же, как и активация. Когда таймер сна активен, можно увеличивать / уменьшать уровень освещенности.

Диммер автоматически установит уровень освещенности на шесть (6) при переходе в спящий режим, но только если предыдущий уровень был больше 6.

Внимание! Это устройство подключается к сети и не имеет гальванической развязки с ней, поэтому требует большого внимания. Если вы не уверены в том, что делаете, лучше доверьте установку опытному электрику. Несмотря на то, что это устройство работает от 5 В постоянного тока, при подключении к сети оно все равно может ударить вас током, если вы дотронетесь до любой его части!

Скачать файл проекта (32,6 KiB, скачано: 471)

Источник

Разработка и описание работы устройства на PIC-контроллере (Курсовая работа)

Содержание:

ВВЕДЕНИЕ

1. СОСТАВЛЕНИЕ СХЕМЫ ЭЛЕКТРИЧЕСКОЙ СТРУКТУРНОЙ

2. СОСТАВЛЕНИЕ СХЕМЫ ЭЛЕКТРИЧЕСКОЙ ФУНКЦИОНАЛЬНОЙ

3. ОПИСАНИЕ ЭЛЕМЕНТНОЙ БАЗЫ

3.1 Резисторы

3.2 Конденсаторы

3.3 Резонатор

3.4 Светодиодный индикатор АЛ304Г

3.5 Диоды

3.6 Микросхемы

3.6.1 Микроконтроллер PIC16F84

3.6.2 Микросхема КР142ЕН5А

4. ОПИСАНИЕ РАБОТЫ СХЕМЫ ЭЛЕКТРИЧЕСКРОЙ ПРИНЦИПИАЛЬНОЙ ВЫБРАННОГО УСТРОЙСТВА

5. АЛГОРИТМ РАБОТЫ УСТРОЙСТВА И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

6. ЗАКЛЮЧЕНИЕ

7. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А

Введение

Однокристальные микроконтроллеры стремительно занимают ведущее место в электронной аппаратуре. И если каких-нибудь десять лет назад они могли быть использованы при проектировании только профессионалами — слишком много требовалось дорогостоящих средств для их программирования, — то сегодня «однокристалки» используют даже радиолюбители.

Именно микроконтроллер сегодня формирует облик бытовой аудиотехники, видеотехники, средств связи. С передних панелей радиоприемников, магнитол, телевизоров исчезли шкальные индикаторы, ручки настройки, ползунковые регуляторы, переключатели. Их заменили жидкокристаллические табло и кнопки. Десятки разнообразных микросхем, составляющих электронное «нутро» аппаратуры, должны согласованно функционировать, обеспечивая наилучшие технические характеристики и удобство эксплуатации. Решая задачу сопряжения цифровых устройств, разработчики компьютерной техники связали их между собой посредством шин, а способы передачи информации назвали протоколами и стандартизировали их основные принципы. Каждое устройство было снабжено интерфейсом, посредством которого стало возможным подключать его к шине.

Если говорить об аналоговой технике, то специализированные аналоговые микросхемы испокон веков имели уникальные собственные выводы для подключения элементов, с помощью которых устанавливались их рабочие режимы или осуществлялись регулировки в процессе эксплуатации. Объединять эти выводы с целью выполнения универсальной регулировки не представлялось возможным. Современные микросхемы, предназначенные для использования в новой аппаратуре, снабжены цифровым интерфейсом, «спрятали» настроечные выводы внутрь микросборок, а управлять их режимами программно.

Осуществлять управление одной микросхемой очень просто, для этого даже не всегда нужен внешний цифровой интерфейс. А если микросхем несколько, если они должны взаимодействовать друг с другом, обмениваться информацией? Решая эти вопросы, разработчики перспективных микросхем пришли к мысли о необходимости введения общей шины и протокола обмена информацией по ней. Известные по компьютерной технике шины оказались здесь совершенно негодными в силу своей сложности.

Для этих целей фирмой Philips была разработана шина Inter-Integrated Circuit Bus (сокращенно I2С). Принадлежа к классу шин с последовательным способом передачи данных, отличаясь чрезвычайной простотой реализации, шина стала быстро развиваться. Сегодня и другие фирмы, оценившие по достоинству возможности шины, поддерживают ее своей продукцией.

Темой данного курсового проекта, является разработка «Термометра» на основе микроконтроллера.

1 Составление схемы электрической структурной

На основании анализа схемы электрической принципиальной были выделены основные функциональные элементы, и разработана схема электрическая структурная, представленная на рисунке 1.1

Рисунок 1.1 — Схема электрическая структурная

Схема электрическая структурная содержит: микроконтроллер, контакты прерывателя, переключатель пределов, светодиодный индикатор, генератор тактовой частоты и источник питания.

Этот тахометр предназначен для использования при регулировке холостого хода карбюраторов двигателей внутреннего сгорания. Его можно применять и для контроля частоты вращения вала автомобильных или лодочных двигателей во время движения.

Тахометр имеет три разряда индикации с пределом измерения от 60 мин»1 до 7800 мин-1. Погрешность измерения на пределе 1 секунда равна 30 мин-1, а на пределе 3 секунды — 10 мин-1. Нижний предел ограничен погрешностью измерения, а верхний — количеством прерываний между индикацией. Из-за чего индикация разрядов становится прерывистой.

2 Составление схемы электрической функциональной

Схема электрическая функциональная представлена на рисунке 2.1

Рисунок 2.1 — Схема электрическая функциональная

3 Описание элементной базы

3.1 Резисторы

(номиналы см. принципиальную схему)

R3-R10 – резисторы С2-23 не проволочные постоянного сопротивления, мощностью 0,125Вт с номинальными сопротивлениями R3-R9 430 Ом, R2 10 кОм с допуском ±10%. R1- не проволочный постоянного сопротивления, мощностью 0,5 Вт с номинальным сопротивлением 34 кОм.

3.2 Конденсаторы

С1 и С2 – конденсаторы К10-17 керамические не полярные постоянной емкости с группой по ТКЕ – Н90, с номинальным напряжением 25В, номинальной емкостью 30 пФ с допуском ±10%. C3 – 0,01 мкФ.

3.3 Резонатор

ZQ – кварцевый резонатор, работающий на частоте параллельного резонанса 32768 Гц.

3.4 Светодиодный индикатор АЛ304Г

АЛ304А, АЛ304Б, АЛ304В, АЛ304Г

Индикаторы знакосинтезирующие, на основе соединения арсенид – фосфид –галлий, эпитаксиально – планарные [41, стр. 475 – 478]. Предназначены для отображения цифровой информации. Индикаторы имеют 7 сегментов и децимальную точку. Выпускаются в пластмассовом корпусе. Высота знака 3 мм.

Масса прибора не более 0,25 г.

Рисунок 3.1 – Структурная схема и монтажные размеры модулей

АЛ304Г: 1 – катод e; 2 – катод d; 3, 8 – анод общий; 4 – катод c; 5 – катод h; 6 –катод b; 7 – катод a; 9 – катод g; 10 – катод f.

3.5 Диоды

VD1 – стабилитрон КС147А Uст. = 4,23-5,17В Iст. = 58мА, VD2 – диод КД102.

Таблица 3.1- Электрические параметры КД102

Uоб/Uимп

В/В

Iпр/Iимп

А/А

Uпр/Iпр

В/А

Io(25)Ioм

мкА/мкА

Fmax

кГц

250/250

0. 1/2

1.0/0.05

0.1/50

4

Использование PIC-микроконтроллера и ИС UCN-5804 для управления ШД

Использование PIC-микроконтроллера и ИС UCN-5804 для управления ШД

Мы использовали схему управления работой ШД непосредственно с помощью ИС PIC. Также для управления работой ШД мы использовали специализированную ИС. При совместном использовании специализированной ИС и PIC-микроконтроллера мы можем объединить преимущества, характерные для каждой из схем. ИС UCN-5804 в этом случае выполняет всю «черновую» работу по управлению работой ШД. При некотором усложнении конечной электрической схемы программа управления PIC может быть сильно упрощена, что является хорошим решением.

Принципиальная схема устройства управления ШД с использованием специализированной ИС показана на рис. 10.15, а фотография устройства приведена на рис. 10. 16. Питание ИС UCN-5804 осуществляется от источника постоянного тока напряжением 5 В. При напряжении питания 5 В управляющие работой ШД напряжения могут достигать 35 В.

Рис. 10.15. Схема микроконтроллера шагового двигателя

Рис. 10.16. Принципиальная схема микроконтроллера и ИС управления шаговым двигателем

Обратите внимание, что на схеме присутствуют два резистора, обозначенные «rx» и «ry» без указания их номинала. Наличие или отсутствие этих резисторов определяется типом применяемого ШД. Целью введения этих резисторов является ограничение выходного тока, протекающего через ШД, значением 1,25 А (в случае необходимости).

Рассмотрим наш ШД с напряжением питания 5 В. Его обмотки имеют сопротивление 13 Ом. Ток, протекающий через обмотки, составляет 5В/130 м=0,385А, или 385 мА, что значительно ниже максимально разрешенного значения тока 1,25 А для ИС UCN-5804. Поэтому для данного случая резисторы rx и ry не требуются и могут быть исключены из схемы.

Перед тем как мы двинемся дальше, рассмотрим еще один случай. ШД с напряжением питания 12 В имеет сопротивление обмоток 6 Ом. Ток, протекающий через обмотки ШД, составит 12 В/6 Ом=2 А. Такое значение тока превышает максимально допустимое для ИС UCN-5804. Для использование данного ШД резисторы rx и ry необходимы. Для обеспечения одинакового крутящего момента для каждой фазы сопротивления rx и ry должны быть равны. Величины резисторов должны ограничивать ток до величины 1,25 А или ниже. В данном случае сопротивление резисторов должно быть не менее 4 Ом (при мощности от 5 до 10 Вт). При включении резисторов значение тока составит 12 В/10 Ом = 1,20 А.

Уровни входов ИС UCN-5804 совместимы с выходами КМОП– и ТТЛ-логики. Это означает, что для нормальной работы схемы мы можем непосредственно соединить входы ИС с шинами выхода PIC-микроконтроллера. Входные тактовые импульсы (вывод 11) для ИС UCN-5804 генерируются PIC-микроконтроллером. Вывод управления выходом разрешает вращение ШД при подаче сигнала низкого уровня и останавливает ШД при сигнале высокого уровня.

Выводы 10 и 14 ИС UCN-5804 управляются переключателями, подающими сигналы высокого или низкого уровня. Вывод 10 управляет режимами полного или половинного шага, а вывод 14 управляет направлением вращения. При желании этими функциями можно управлять с помощью PIC. Для управления на соответствующие выводы подаются сигналы высокого или низкого уровня аналогично управлению работой выхода ИС.

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

‘Управление шаговым двигателем через ИС UCN?5804

Symbol TRISB = 134 ‘Инициализировать TRISB как 134

Symbol PortB = 6 ‘Инициализировать PortB как 6

Poke TRISB,0 ‘Установить шины PORTB на выход

low1 ‘Установить выход на низкий уровень

start:

pulsout 0, 10000 ‘Подача 10 мс импульсов на UCN?5804

goto start ‘Повторение

В этом случае я снова написал простейшую «базовую» программу, чтобы показать, насколько просто осуществляется управление вращением ШД. Конечно, вы можете дополнить программу управлением частотой импульсов, направлением вращения и т.  д.

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Дистанционное включение света с пульта на PIC12f629. Схема

Особенности схемы включения освещения с пульта дистанционного управления:

  • схема построена на микроконтроллере PIC12F629 / PIC12F675
  • включение двух независимых источников света с помощью ПДУ;
  • есть возможность включать свет настенным выключателем;
  • возможность включать и выключать свет отдельными кнопками или же одной;
  • двух минутный таймер отключения освещения.

Обучение пульта дистанционного управления ИК-коды (процедура программирования)

После подключения устройства необходимо запрограммировать все 5 кнопок на пульте дистанционного управления. Вот как это сделать:

  1. Нажимаете и удерживайте настенный выключатель SW1 в течение 11 сек, для того чтобы устройство могло перейти в режим программирования. После 11 секунд, индикатор LD1 начнет быстро мигать и оба канала отключатся. Поэтому у вас есть 11 секунд, чтобы завершить последовательность программирования.
  2. Нажмите на первую кнопку на пульте дистанционного управления, которая будет включать первый канал (ON — A).
  3. Нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для выключения первого канала (OFF — A).
  4. Нажмите на третью кнопку на пульте дистанционного управления, которая будет включать второй канал (ON — B).
  5. Нажмите четвертую кнопку на пульте дистанционного управления, которая будет использоваться для выключения второго канала (OFF — B).
  6. Наконец нажмите пятую кнопку, которая будет использоваться для активации / деактивации режима сна (SLEEP) 

Во время программирования пульта, после каждого нажатия кнопки, светодиод будет мигать, подтверждая что ИК-команда принята.

Если пульт дистанционного управления не имеет все 5 кнопок, вы можете использовать те же кнопки повторно, но это отключит некоторые функции.

Вариант 1

Если ваш пульт имеет только две кнопки [X и Y], и если во время программирования вы нажмете: XXYYY, то это означает, что кнопка X будет использоваться для первого канала (включение и выключение света будет происходит от одной кнопки X), и кнопка Y будет использоваться для второго канала (включение и выключение света будет происходит от одной кнопки Y). Для данного режима работы необходимо установить перемычку JP1.

Вариант 2

Если вы выберете комбинацию XXXXY, это означает, что кнопка X будет использоваться для функции включения и выключения первого канала, и кнопка Y будет использоваться для включения / выключения режима сна, при этом второй канал не используется.

Примечание. Если во время программирования вы заметили, что светодиод мигает, даже если вы не нажимали никаких кнопок на ПДУ, то вероятно, это потому, что вы используете модуль приемника TSOP11xx вместо TSOP17xx. В таком случае вы не сможет запрограммировать устройство должным образом.

Паяльный фен YIHUA 8858

Обновленная версия, мощность: 600 Вт, расход воздуха: 240 л/час…

Если вы захотите изменить назначение кнопок, то вы можете повторить процедуру обучения столько раз, сколько вы хотите.

Управление устройствами

Подключенными устройствами (или только одним) можно управлять с помощью пульта дистанционного управления или настенной кнопки.

— Пульт дистанционного управления может работать в двух режимах: Toggle и ON/OFF (настраивается перемычкой Jp1).

Режим Toggle используется для управления устройством с помощью только одной кнопки ПДУ: первое нажатие кнопки включает канал, а второе нажатие кнопки выключает.

Для режима ON/OFF требуется как минимум две кнопки ПДУ: одна для включения канала, а другая для выключения.

— Настенная кнопка может управлять обоими каналами (приборами).

Один щелчок выключает все каналы, а другой один щелчок включает те каналы, которые были включены до их выключения.

Двойной щелчок включит все каналы, если оба канала были ВЫКЛЮЧЕНЫ, и если хотя бы один канал был включен, он переключит второй канал. Это может показаться сложным, но уверяю вас, что это не так.

Таймер сна

Таймер сна может быть активирован нажатием настенного выключателя более 2 сек или соответствующей кнопкой на пульте дистанционного правления. Сброс таймера сна осуществляется так же, как и активация. Обратите внимание, что таймер сна также будут сброшен, если включить один из каналов освещения.

скачать файлы к статье (269,1 KiB, скачано: 1 146)

Источник 

Программирование PIC-контроллеров

При создании компьютерных схем большое внимание уделяется контролю выполнения определенных действий. Поскольку для человека выполнять такой контроль довольно проблематично, приходится использовать огромное количество электронных элементов, таких как транзисторы, тиристоры, резисторы, диоды, конденсаторы и так далее.


Большие и сложные схемы контролируются при помощи контроллеров или микроконтроллеров. Расскажем, что представляют собой данные устройства на примере PIC контроллеров.

Что такое PIC контроллер?

Итак, что же собой представляет PIC контроллер? Какова их схема и где они могут использоваться? PIC контроллер или иначе микроконтроллер является средством автоматизации выполнения некоторых действии при помощи подготовленной заранее программы. Особенность представителей данной линейки продукции заключается в доступности всех необходимых для работы функций, а также в легкости программирования. Если обрисовать конструкцию данного микроконтроллера, то необходимо отметить, что в его составе используется всего один кристалл кремния. Это особенность всех микроконтроллеров.

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

Семейства контроллеров

Контроллер PIC не существует в единичном экземпляре. Компания производитель выпускает широкий ассортимент микроконтроллеров. Каждый из них имеет свои характеристики, особенности и цели использования. Число таких семейств довольно велико и зависит от основного классифицирующего признака. Стоит сообщить только об основной классификации, которая разделяет все контролеры на 8-, 16- и 32-битные. Те в свою очередь также подразделяются на другие, но так как семейства не являются темой данного обзора, мы не будем вести о них речь.

Где используются PIC контроллеры

PIC-контроллер благодаря своей универсальности может использоваться практически где угодно. Микроконтроллеры используются в телевизорах, холодильниках, стиральных машинках и других бытовых приборах. Однако линейка продукции PIC имеет одну характерную особенность: схемы на PIC контроллерах очень популярны среди радиолюбителей. С помощью данных микроконтроллеров можно легко настроить работу всего приспособления или отдельного узла. Такой популярности способствует также и разумная стоимость данных компонент, легкость из программирования и значительное количество учебных материалов.

Можно использовать PIC контроллер при создании радиоуправляемых моделей, или робота руки и других поделок, а можно использовать их для чего-то производственного. Сегодня довольно популярным вопросом является создание самодельных станков под управлением микроконтроллера. Спектр использования такого рода устройств довольно широк. При грамотном подходе PIC контроллеры могут использоваться практически для любых целей. По этой причине данные элементы можно увидеть не только на творениях радиолюбителей.

Работа с PIC-контроллерами: программное обеспечение

Минимально необходимое программное обеспечение для работы с PIC контроллерами это «Блокнот». Однако можно воспользоваться и средством, предлагаемым компанией-производителем – MPLAB. Если быть точнее, то это целая линейка программных средств, которую входят компиляторы и схемы разработки. Благодаря политики компании-разработчика MPLAB распространяется совершенно бесплатно. Однако программа имеет определенные ограничения. Например, при использовании краткосрочной демо-версии можно опробовать все возможности программы, но после окончания пробного периода использования ее функционал будет значительно урезан.

В полноценной программе MPLAB имеется широкий инструментарий, который позволяет легко создавать новые программы и искать различные проблемные участки, а также самостоятельно осуществлять оптимизацию кода. В зависимости от типа используемой версии может прекратиться функция оптимизации кода или использоваться уменьшенное количество поддерживаемых программой контроллеров. Ради справедливости стоит упомянуть, что компания-производитель осуществляет поддержку популярным представителям.

Также существует ряд программного обеспечения, которое представлено другими компаниями-производителями. Их функционал в целом довольно похож, однако имеются определенные отличия. Многие пользователи выказывают недовольство тем фактом, что MPLAB имеет недружественный к пользователям дизайн. Производители при этом делают акцент на сохранение ограничиваемых функций и удобство работы с ПО. Программы для работы с контроллерами PIC довольно разнообразны. Здесь все в значительной мере будет зависеть от индивидуальных предпочтений пользователя.

Как создать программу для PIC контроллера?

Чтобы создать специальную программы для PIC контроллера, необходимо использовать соответствующее программное обеспечение. Для этой цели вполне подойдет и обычный «Блокнот». Данная программа поддерживает работу с такими языками программирования как С и Ассемблер. Основное отличие заключается только в количестве прописываемой информации и легкости задания информации. Многие пользователи говорят о сложностях работы с языком С, однако Ассемблер требует еще более тщательного подхода. Так, например, при создании программы, необходимо указать, для какого контроллера она предназначена. Также возможно потребуется выполнить ряд настроек. Проводить их рекомендуется при наличии определенного опыта работы в данной сфере. Ошибки могут привести к поломке микроконтроллеров.

Программирование PIC контроллера с помощью программатора

Как можно перенести разработанную программу непосредственно на сам микроконтроллер? Для этой цели используются специальные устройства, которые называются программаторами. Они посылают сигналы на микроконтроллер, которые в соответствии с программой изменяют ячейки памяти. Чтобы начать процесс перенесения данных, необходимо вставить в программатор микроконтроллер, и подключить его к компьютеру. После этого при помощи специального ПО необходимо запустить прошивку. Программирование PIC-контроллера обычно осуществляется за пару минут.

Типы программаторов

Какой программатор необходимо использовать для записи информации на микроконтроллер. Можно условно выделить три типа программаторов: самодельные, заводские и от компании- производителя микроконтроллеров. Использование каждого типа таких программаторов имеет свои особенности. Так, например, наиболее дешевыми являются самодельные программаторы. Однако их использование может привести к поломке микроконтроллера. В таких случаях программирование микроконтроллера может закончится ударом током, поэтому при работе с такими устройствами особенно важно помнить о технике безопасности.

Сделать такой программатор можно самостоятельно, однако скорее всего у вас получится довольно ограниченный продукт. В интернете можно найти огромное количество схем для создания программаторов. Оригинальный программатор поможет вам на высоком уровне осуществить любое действие с микроконтроллером. На это устройство существует гарантия производителя. Прошивка PIC-контроллеров при использовании таких программаторов осуществляется без проблем. От приобретения такого программатора большинство пользователей останавливает высокая стоимость устройства.

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

%PDF-1.4 % 35036 0 объект > эндообъект внешняя ссылка 35036 251 0000000016 00000 н 0000005400 00000 н 0000005639 00000 н 0000005794 00000 н 0000005829 00000 н 0000005886 00000 н 0000009504 00000 н 0000017746 00000 н 0000017987 00000 н 0000018060 00000 н 0000018217 00000 н 0000018319 00000 н 0000018453 00000 н 0000018522 00000 н 0000018641 00000 н 0000018710 00000 н 0000018829 00000 н 0000018898 00000 н 0000019007 00000 н 0000019076 00000 н 0000019236 00000 н 0000019305 00000 н 0000019445 00000 н 0000019586 00000 н 0000019735 00000 н 0000019917 00000 н 0000020125 00000 н 0000020250 00000 н 0000020366 00000 н 0000020555 00000 н 0000020707 00000 н 0000020858 00000 н 0000021066 00000 н 0000021281 00000 н 0000021471 00000 н 0000021666 00000 н 0000021879 00000 н 0000022061 00000 н 0000022240 00000 н 0000022429 00000 н 0000022619 00000 н 0000022810 00000 н 0000022972 00000 н 0000023133 00000 н 0000023303 00000 н 0000023464 00000 н 0000023624 00000 н 0000023805 00000 н 0000023991 00000 н 0000024194 00000 н 0000024382 00000 н 0000024510 00000 н 0000024667 00000 н 0000024838 00000 н 0000025001 00000 н 0000025172 00000 н 0000025335 00000 н 0000025501 00000 н 0000025651 00000 н 0000025819 00000 н 0000025984 00000 н 0000026200 00000 н 0000026367 00000 н 0000026568 00000 н 0000026725 00000 н 0000026869 00000 н 0000027032 00000 н 0000027189 00000 н 0000027393 00000 н 0000027498 00000 н 0000027693 00000 н 0000027856 00000 н 0000028019 00000 н 0000028183 00000 н 0000028346 00000 н 0000028540 00000 н 0000028738 00000 н 0000028936 00000 н 0000029120 00000 н 0000029270 00000 н 0000029402 00000 н 0000029559 00000 н 0000029703 00000 н 0000029860 00000 н 0000030022 00000 н 0000030167 00000 н 0000030321 00000 н 0000030470 00000 н 0000030635 00000 н 0000030789 00000 н 0000030941 00000 н 0000031098 00000 н 0000031245 00000 н 0000031424 00000 н 0000031602 00000 н 0000031747 00000 н 0000031890 00000 н 0000032050 00000 н 0000032187 00000 н 0000032346 00000 н 0000032499 00000 н 0000032630 00000 н 0000032818 00000 н 0000032990 00000 н 0000033113 00000 н 0000033243 00000 н 0000033377 00000 н 0000033531 00000 н 0000033709 00000 н 0000033825 00000 н 0000033990 00000 н 0000034180 00000 н 0000034288 00000 н 0000034415 00000 н 0000034552 00000 н 0000034681 00000 н 0000034866 00000 н 0000035047 00000 н 0000035172 00000 н 0000035318 00000 н 0000035452 00000 н 0000035591 00000 н 0000035761 00000 н 0000035927 00000 н 0000036049 00000 н 0000036183 00000 н 0000036330 00000 н 0000036516 00000 н 0000036674 00000 н 0000036828 00000 н 0000037015 00000 н 0000037200 00000 н 0000037360 00000 н 0000037530 00000 н 0000037703 00000 н 0000037865 00000 н 0000038017 00000 н 0000038159 00000 н 0000038305 00000 н 0000038485 00000 н 0000038611 00000 н 0000038775 00000 н 0000038940 00000 н 0000039132 00000 н 0000039349 00000 н 0000039450 00000 н 0000039634 00000 н 0000039781 00000 н 0000039911 00000 н 0000040037 00000 н 0000040184 00000 н 0000040332 00000 н 0000040473 00000 н 0000040649 00000 н 0000040770 00000 н 0000040928 00000 н 0000041068 00000 н 0000041178 00000 н 0000041365 00000 н 0000041555 00000 н 0000041662 00000 н 0000041803 00000 н 0000041932 00000 н 0000042123 00000 н 0000042285 00000 н 0000042448 00000 н 0000042579 00000 н 0000042710 00000 н 0000042845 00000 н 0000042982 00000 н 0000043161 00000 н 0000043337 00000 н 0000043468 00000 н 0000043665 00000 н 0000043792 00000 н 0000043976 00000 н 0000044082 00000 н 0000044201 00000 н 0000044338 00000 н 0000044459 00000 н 0000044631 00000 н 0000044755 00000 н 0000044928 00000 н 0000045059 00000 н 0000045197 00000 н 0000045357 00000 н 0000045532 00000 н 0000045661 00000 н 0000045772 00000 н 0000045911 00000 н 0000046080 00000 н 0000046193 00000 н 0000046344 00000 н 0000046493 00000 н 0000046613 00000 н 0000046788 00000 н 0000046917 00000 н 0000047096 00000 н 0000047223 00000 н 0000047394 00000 н 0000047531 00000 н 0000047669 00000 н 0000047814 00000 н 0000047958 00000 н 0000048100 00000 н 0000048242 00000 н 0000048385 00000 н 0000048554 00000 н 0000048741 00000 н 0000048914 00000 н 0000049041 00000 н 0000049225 00000 н 0000049350 00000 н 0000049491 00000 н 0000049633 00000 н 0000049772 00000 н 0000049905 00000 н 0000050044 00000 н 0000050198 00000 н 0000050410 00000 н 0000051062 00000 н 0000051385 00000 н 0000051498 00000 н 0000052408 00000 н 0000052669 00000 н 0000053355 00000 н 0000053379 00000 н 0000054290 00000 н 0000054722 00000 н 0000055007 00000 н 0000055416 00000 н 0000055746 00000 н 0000055770 00000 н 0000056642 00000 н 0000056666 00000 н 0000057457 00000 н 0000057481 00000 н 0000058250 00000 н 0000058274 00000 н 0000059021 00000 н 0000059045 00000 н 0000059808 00000 н 0000059832 00000 н 0000060602 00000 н 0000060626 00000 н 0000061321 00000 н 0000061402 00000 н 0000065109 00000 н 0000070141 00000 н 0000009549 00000 н 0000017721 00000 н трейлер ] >> startxref 0 %%EOF 35037 0 объект > эндообъект 35038 0 объект a_

%PDF-1. 6 % 10125 0 объект > эндообъект внешняя ссылка 10125 157 0000000016 00000 н 0000005344 00000 н 0000005482 00000 н 0000005690 00000 н 0000005731 00000 н 0000005799 00000 н 0000005850 00000 н 0000005889 00000 н 0000006031 00000 н 0000006196 00000 н 0000006334 00000 н 0000006977 00000 н 0000007387 00000 н 0000007955 00000 н 0000007996 00000 н 0000008423 00000 н 0000008646 00000 н 0000008726 00000 н 0000008959 00000 н 0000009202 00000 н 0000011917 00000 н 0000014613 00000 н 0000022164 00000 н 0000022398 00000 н 0000022762 00000 н 0000022826 00000 н 0000022987 00000 н 0000023078 00000 н 0000023137 00000 н 0000023329 00000 н 0000023459 00000 н 0000023601 00000 н 0000023840 00000 н 0000024045 00000 н 0000024246 00000 н 0000024446 00000 н 0000024713 00000 н 0000024926 00000 н 0000025074 00000 н 0000025271 00000 н 0000025430 00000 н 0000025601 00000 н 0000025804 00000 н 0000026005 00000 н 0000026150 00000 н 0000026333 00000 н 0000026530 00000 н 0000026721 00000 н 0000026982 00000 н 0000027124 00000 н 0000027278 00000 н 0000027459 00000 н 0000027670 00000 н 0000027863 00000 н 0000028071 00000 н 0000028221 00000 н 0000028429 00000 н 0000028602 00000 н 0000028792 00000 н 0000028966 00000 н 0000029132 00000 н 0000029312 00000 н 0000029499 00000 н 0000029684 00000 н 0000029887 00000 н 0000030077 00000 н 0000030276 00000 н 0000030513 00000 н 0000030725 00000 н 0000030956 00000 н 0000031204 00000 н 0000031446 00000 н 0000031659 00000 н 0000031875 00000 н 0000032063 00000 н 0000032262 00000 н 0000032425 00000 н 0000032588 00000 н 0000032753 00000 н 0000032916 00000 н 0000033106 00000 н 0000033341 00000 н 0000033550 00000 н 0000033773 00000 н 0000033985 00000 н 0000034204 00000 н 0000034375 00000 н 0000034615 00000 н 0000034822 00000 н 0000035028 00000 н 0000035184 00000 н 0000035366 00000 н 0000035524 00000 н 0000035712 00000 н 0000035870 00000 н 0000036086 00000 н 0000036298 00000 н 0000036470 00000 н 0000036662 00000 н 0000036882 00000 н 0000037101 00000 н 0000037322 00000 н 0000037523 00000 н 0000037716 00000 н 0000037897 00000 н 0000038079 00000 н 0000038253 00000 н 0000038411 00000 н 0000038632 00000 н 0000038877 00000 н 0000039123 00000 н 0000039322 00000 н 0000039536 00000 н 0000039751 00000 н 0000039951 00000 н 0000040132 00000 н 0000040297 00000 н 0000040468 00000 н 0000040692 00000 н 0000040853 00000 н 0000041063 00000 н 0000041269 00000 н 0000041531 00000 н 0000041798 00000 н 0000041989 00000 н 0000042191 00000 н 0000042396 00000 н 0000042610 00000 н 0000042784 00000 н 0000043000 00000 н 0000043329 00000 н 0000043521 00000 н 0000043727 00000 н 0000043920 00000 н 0000044077 00000 н 0000044343 00000 н 0000044610 00000 н 0000044905 00000 н 0000045225 00000 н 0000045484 00000 н 0000045745 00000 н 0000046064 00000 н 0000046304 00000 н 0000046542 00000 н 0000046796 00000 н 0000047050 00000 н 0000047305 00000 н 0000047509 00000 н 0000047712 00000 н 0000047930 00000 н 0000048132 00000 н 0000048332 00000 н 0000048461 00000 н 0000048593 00000 н 0000048766 00000 н 0000048929 00000 н 0000003521 00000 н трейлер ]>> startxref 0 %%EOF 10281 0 объект >поток gMh5y귟dmc̻pfds9%] II_;ѥiE*דVjzl9 lG2J?3Ӯ+vO»8כ/jZJDBPJ:toPmYɁ4z. ЭВЫМПкчС }R16AHp˖Ϡ Q7l{!J01)

%PDF-1.4 % 381 0 объект > эндообъект внешняя ссылка 381 77 0000000016 00000 н 0000001909 00000 н 0000002141 00000 н 0000002293 00000 н 0000002324 00000 н 0000002381 00000 н 0000003314 00000 н 0000003552 00000 н 0000003618 00000 н 0000003717 00000 н 0000003813 00000 н 0000003938 00000 н 0000004063 00000 н 0000004180 00000 н 0000004308 00000 н 0000004436 00000 н 0000004549 00000 н 0000004646 00000 н 0000004742 00000 н 0000004837 00000 н 0000004932 00000 н 0000005027 00000 н 0000005123 00000 н 0000005219 00000 н 0000005315 00000 н 0000005411 00000 н 0000005507 00000 н 0000005742 00000 н 0000005783 00000 н 0000005805 00000 н 0000006526 00000 н 0000006548 00000 н 0000007195 00000 н 0000007217 00000 н 0000007864 00000 н 0000007886 00000 н 0000008344 00000 н 0000008529 00000 н 0000009045 00000 н 0000009602 00000 н 0000009941 00000 н 0000010213 00000 н 0000010438 00000 н 0000010515 00000 н 0000011015 00000 н 0000011307 00000 н 0000011677 00000 н 0000011900 00000 н 0000012092 00000 н 0000012748 00000 н 0000012770 00000 н 0000013150 00000 н 0000013626 00000 н 0000014281 00000 н 0000014303 00000 н 0000014703 00000 н 0000014962 00000 н 0000015185 00000 н 0000015430 00000 н 0000015615 00000 н 0000015923 00000 н 0000016856 00000 н 0000016878 00000 н 0000017783 00000 н 0000017805 00000 н 0000019840 00000 н 0000025109 00000 н 0000025615 00000 н 0000032192 00000 н 0000035351 00000 н 0000035869 00000 н 0000037145 00000 н 0000042485 00000 н 0000045164 00000 н 0000045304 00000 н 0000002422 00000 н 0000003292 00000 н трейлер ] >> startxref 0 %%EOF 382 0 объект > эндообъект 383 0 объект a_

sdcc/pic12f629.

h на мастере · pfalcon-mirrors/sdcc · GitHub . .
/*
* Это декларация микроконтроллера PIC12F629.
*
* Этот файл является частью библиотеки GNU PIC для SDCC, первоначально
* создан Молнаром Кароли 2012.
*
* Этот файл создается автоматически cinc2h.pl, 2012-11-01 17:29:45 UTC.
*
* SDCC находится под лицензией GNU Public license (GPL) v2. Обратите внимание, что
* эта лицензия распространяется на код компилятора и другие исполняемые файлы,
*, но явно не распространяется на код или объекты, сгенерированные sdcc.
*
* Для библиотек графических устройств и файлов заголовков, производных от
* Заголовок микросхемы (.inc) и файлы сценариев компоновщика (.lkr) Microchip
* требует, чтобы «в файлах заголовков было указано, что они должны быть только
* используется с подлинными устройствами Microchip», что делает их несовместимыми
* с лицензией GPL. Библиотеки устройств Pic и заголовочные файлы расположены по адресу
* каталоги non-free/lib и non-free/include соответственно.
* Sdcc следует запускать с параметром командной строки —use-non-free в
* для включения несвободных заголовочных файлов и библиотек.
*
* См. http://sdcc.sourceforge.net/ для получения последней информации о sdcc.
*/
#ifndef __PIC12F629_H__
# определить __PIC12F629_H__
//============================================== ===============================
//
// Адреса регистров
//
//============================================== ===============================
#ifndef NO_ADDR_DEFINES
#define INDF_ADDR 0x0000
# определить TMR0_ADDR 0x0001
# определить PCL_ADDR 0x0002
#define STATUS_ADDR 0x0003
# определить FSR_ADDR 0x0004
# определить GPIO_ADDR 0x0005
# определить PCLATH_ADDR 0x000A
# определить INTCON_ADDR 0x000B
#define PIR1_ADDR 0x000C
# определить TMR1_ADDR 0x000E
# определить TMR1L_ADDR 0x000E
# определить TMR1H_ADDR 0x000F
# определить T1CON_ADDR 0x0010
# определить CMCON_ADDR 0x0019
# определить OPTION_REG_ADDR 0x0081
#define TRISIO_ADDR 0x0085
# определить PIE1_ADDR 0x008C
# определить PCON_ADDR 0x008E
# определить OSCCAL_ADDR 0x0090
# определить WPU_ADDR 0x0095
# определить IOC_ADDR 0x0096
# определить IOCB_ADDR 0x0096
# определить VRCON_ADDR 0x0099
#define EEDAT_ADDR 0x009A
# определить EEDATA_ADDR 0x009A
# определить EEADR_ADDR 0x009B
# определить EECON1_ADDR 0x009C
# определить EECON2_ADDR 0x009D
#endif // #ifndef NO_ADDR_DEFINES
//============================================== ===============================
//
// Определения регистров
//
//============================================== ===============================
внешний __at(0x0000) __sfr INDF;
внешний __at(0x0001) __sfr TMR0;
внешний __at(0x0002) __sfr PCL;
//============================================== ===============================
// Биты СОСТОЯНИЯ
внешний __at(0x0003) __sfr СТАТУС;
объединение типов
{
структура
{
без знака C : 1;
DC без знака: 1;
без знака Z : 1;
без знака NOT_PD : 1;
без знака NOT_TO : 1;
без знака RP0 : 1;
без знака RP1 : 1;
беззнаковый IRP: 1;
};
структура
{
без знака: 5;
RP без знака: 2;
без знака: 1;
};
} __STATUSbits_t;
extern __at(0x0003) volatile __STATUSbits_t STATUSbits;
# определить _C 0x01
# определить _DC 0x02
# определить _Z 0x04
# определить _NOT_PD 0x08
# определить _НЕ_ТО 0x10
# определить _RP0 0x20
# определить _RP1 0x40
# определить _IRP 0x80
//============================================== ===============================
внешний __at(0x0004) __sfr FSR;
//============================================== ===============================
// Биты GPIO
внешний __at(0x0005) __sfr GPIO;
объединение типов
{
структура
{
GP0 без знака: 1;
GP1 без знака: 1;
GP2 без знака: 1;
GP3 без знака: 1;
GP4 без знака: 1;
GP5 без знака: 1;
без знака: 1;
без знака: 1;
};
структура
{
беззнаковый GPIO0: 1;
беззнаковый GPIO1 : 1;
беззнаковый GPIO2: 1;
беззнаковый GPIO3: 1;
GPIO4 без знака: 1;
беззнаковый GPIO5: 1;
без знака: 1;
без знака: 1;
};
структура
{
беззнаковый GPIO: 6;
без знака: 2;
};
структура
{
GP без знака: 6;
без знака: 2;
};
} __GPIObits_t;
extern __at(0x0005) volatile __GPIObits_t GPIObits;
# определить _GP0 0x01
# определить _GPIO0 0x01
# определить _GP1 0x02
# определить _GPIO1 0x02
# определить _GP2 0x04
# определить _GPIO2 0x04
# определить _GP3 0x08
# определить _GPIO3 0x08
# определить _GP4 0x10
# определить _GPIO4 0x10
# определить _GP5 0x20
# определить _GPIO5 0x20
//============================================== ===============================
extern __at(0x000A) __sfr PCLATH;
//============================================== ===============================
// Биты INTCON
внешний __at(0x000B) __sfr INTCON;
объединение типов
{
структура
{
GPIF без знака: 1;
без знака INTF: 1;
T0IF без знака: 1;
GPIE без знака: 1;
INTE без знака: 1;
без знака T0IE : 1;
без знака PEIE: 1;
GIE без знака: 1;
};
структура
{
без знака: 1;
без знака: 1;
без знака TMR0IF : 1;
без знака: 1;
без знака: 1;
без знака TMR0IE : 1;
без знака: 1;
без знака: 1;
};
} __INTCONbits_t;
extern __at(0x000B) volatile __INTCONbits_t INTCONbits;
# определить _GPIF 0x01
# определить _INTF 0x02
# определить _T0IF 0x04
# определить _TMR0IF 0x04
# определить _GPIE 0x08
# определить _INTE 0x10
# определить _T0IE 0x20
# определить _TMR0IE 0x20
# определить _PEIE 0x40
# определить _GIE 0x80
//============================================== ===============================
//============================================== ===============================
// Биты PIR1
внешний __at(0x000C) __sfr PIR1;
объединение типов
{
структура
{
без знака TMR1IF : 1;
без знака: 1;
без знака: 1;
CMIF без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака EEIF : 1;
};
структура
{
T1IF без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
};
} __PIR1bits_t;
внешний __at(0x000C) volatile __PIR1bits_t PIR1bits;
# определить _TMR1IF 0x01
# определить _T1IF 0x01
# определить _CMIF 0x08
# определить _EEIF 0x80
//============================================== ===============================
внешний __at(0x000E) __sfr TMR1;
внешний __at(0x000E) __sfr TMR1L;
внешний __at(0x000F) __sfr TMR1H;
//============================================== ===============================
// Биты T1CON
внешний __at(0x0010) __sfr T1CON;
объединение типов
{
структура
{
без знака TMR1ON : 1;
без знака TMR1CS : 1;
без знака NOT_T1SYNC : 1;
без знака T1OSCEN : 1;
без знака T1CKPS0 : 1;
без знака T1CKPS1 : 1;
без знака TMR1GE : 1;
без знака: 1;
};
структура
{
без знака: 4;
T1CKPS без знака: 2;
без знака: 2;
};
} __T1CONbits_t;
внешний __at(0x0010) volatile __T1CONbits_t T1CONbits;
# определить _TMR1ON 0x01
# определить _TMR1CS 0x02
# определить _NOT_T1SYNC 0x04
# определить _T1OSCEN 0x08
# определить _T1CKPS0 0x10
# определить _T1CKPS1 0x20
# определить _TMR1GE 0x40
//============================================== ===============================
//============================================== ===============================
// Биты CMCON
внешний __at(0x0019) __sfr CMCON;
объединение типов
{
структура
{
без знака CM0 : 1;
без знака CM1 : 1;
без знака CM2 : 1;
без знака СНГ: 1;
CINV без знака: 1;
без знака: 1;
без знака COUT : 1;
без знака: 1;
};
структура
{
CM без знака: 3;
без знака: 5;
};
} __CMCONbits_t;
extern __at(0x0019) volatile __CMCONbits_t CMCONbits;
# определить _CM0 0x01
# определить _CM1 0x02
# определить _CM2 0x04
#define _CIS 0x08
# определить _CINV 0x10
# определить _COUT 0x40
//============================================== ===============================
//============================================== ===============================
// OPTION_REG Биты
внешний __at (0x0081) __sfr OPTION_REG;
объединение типов
{
структура
{
PS0 без знака: 1;
без знака PS1 : 1;
без знака PS2 : 1;
беззнаковая социальная реклама: 1;
без знака T0SE : 1;
T0CS без знака: 1;
без знака INTEDG : 1;
без знака NOT_GPPU: 1;
};
структура
{
без знака PS: 3;
без знака: 5;
};
} __OPTION_REGbits_t;
extern __at(0x0081) volatile __OPTION_REGbits_t OPTION_REGbits;
# определить _PS0 0x01
# определить _PS1 0x02
# определить _PS2 0x04
# определить _PSA 0x08
# определить _T0SE 0x10
# определить _T0CS 0x20
# определить _INTEDG 0x40
# определить _NOT_GPPU 0x80
//============================================== ===============================
//============================================== ===============================
// Биты TRISIO
внешний __at(0x0085) __sfr TRISIO;
объединение типов
{
структура
{
без знака TRISIO0 : 1;
без знака TRISIO1 : 1;
без знака TRISIO2 : 1;
без знака TRISIO3 : 1;
без знака TRISIO4 : 1;
без знака TRISIO5 : 1;
без знака: 1;
без знака: 1;
};
структура
{
без знака TRISIO : 6;
без знака: 2;
};
} __TRISIObits_t;
extern __at(0x0085) volatile __TRISIObits_t TRISIObits;
# определить _TRISIO0 0x01
# определить _TRISIO1 0x02
# определить _TRISIO2 0x04
# определить _TRISIO3 0x08
# определить _TRISIO4 0x10
# определить _TRISIO5 0x20
//============================================== ===============================
//============================================== ===============================
// Биты PIE1
внешний __at(0x008C) __sfr PIE1;
объединение типов
{
структура
{
без знака TMR1IE : 1;
без знака: 1;
без знака: 1;
CMIE без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака EEIE : 1;
};
структура
{
без знака T1IE : 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
};
} __PIE1bits_t;
extern __at(0x008C) volatile __PIE1bits_t PIE1bits;
# определить _TMR1IE 0x01
# определить _T1IE 0x01
# определить _CMIE 0x08
# определить _EEIE 0x80
//============================================== ===============================
//============================================== ===============================
// Биты PCON
внешний __at(0x008E) __sfr PCON;
объединение типов
{
структура
{
без знака NOT_BOR : 1;
без знака NOT_POR : 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
};
структура
{
без знака NOT_BOD : 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
без знака: 1;
};
} __PCONbits_t;
extern __at(0x008E) volatile __PCONbits_t PCONbits;
# определить _NOT_BOR 0x01
# определить _NOT_BOD 0x01
# определить _NOT_POR 0x02
//============================================== ===============================
//============================================== ===============================
// Биты OSCCAL
внешний __at(0x0090) __sfr OSCCAL;
объединение типов
{
структура
{
без знака: 1;
без знака: 1;
CAL0 без знака: 1;
CAL1 без знака: 1;
CAL2 без знака: 1;
CAL3 без знака: 1;
CAL4 без знака: 1;
CAL5 без знака: 1;
};
структура
{
без знака: 2;
беззнаковая клиентская лицензия: 6;
};
} __OSCCALbits_t;
внешний __at(0x0090) volatile __OSCCALbits_t OSCCALbits;
# определить _CAL0 0x04
# определить _CAL1 0x08
# определить _CAL2 0x10
# определить _CAL3 0x20
# определить _CAL4 0x40
# определить _CAL5 0x80
//============================================== ===============================
//============================================== ===============================
// Биты WPU
внешний __at(0x0095) __sfr WPU;
структура определения типа
{
без знака WPU0 : 1;
без знака WPU1 : 1;
без знака WPU2 : 1;
без знака: 1;
без знака WPU4 : 1;
без знака WPU5 : 1;
без знака: 1;
без знака: 1;
} __WPUbits_t;
extern __at(0x0095) volatile __WPUbits_t WPUbits;
# определить _WPU0 0x01
# определить _WPU1 0x02
# определить _WPU2 0x04
# определить _WPU4 0x10
# определить _WPU5 0x20
//============================================== ===============================
//============================================== ===============================
// Биты ввода-вывода
внешний __at(0x0096) __sfr IOC;
объединение типов
{
структура
{
без знака IOC0: 1;
без знака IOC1 : 1;
без знака IOC2 : 1;
без знака IOC3 : 1;
без знака IOC4: 1;
без знака IOC5: 1;
без знака: 1;
без знака: 1;
};
структура
{
без знака IOCB0 : 1;
без знака IOCB1 : 1;
без знака IOCB2 : 1;
без знака IOCB3 : 1;
без знака IOCB4 : 1;
без знака IOCB5 : 1;
без знака: 1;
без знака: 1;
};
struct
{
unsigned IOCB : 6;
unsigned : 2;
};
struct
{
unsigned IOC : 6;
unsigned : 2;
};
} __IOCbits_t;
extern __at(0x0096) volatile __IOCbits_t IOCbits;
#define _IOC0 0x01
#define _IOCB0 0x01
#define _IOC1 0x02
#define _IOCB1 0x02
#define _IOC2 0x04
#define _IOCB2 0x04
#define _IOC3 0x08
#define _IOCB3 0x08
#define _IOC4 0x10
#define _IOCB4 0x10
#define _IOC5 0x20
#define _IOCB5 0x20
//==============================================================================
//==============================================================================
// IOCB Bits
extern __at(0x0096) __sfr IOCB;
typedef union
{
struct
{
unsigned IOC0 : 1;
unsigned IOC1 : 1;
unsigned IOC2 : 1;
unsigned IOC3 : 1;
unsigned IOC4 : 1;
unsigned IOC5 : 1;
unsigned : 1;
unsigned : 1;
};
struct
{
unsigned IOCB0 : 1;
unsigned IOCB1 : 1;
unsigned IOCB2 : 1;
unsigned IOCB3 : 1;
unsigned IOCB4 : 1;
unsigned IOCB5 : 1;
unsigned : 1;
unsigned : 1;
};
struct
{
unsigned IOCB : 6;
unsigned : 2;
};
struct
{
unsigned IOC : 6;
unsigned : 2;
};
} __IOCBbits_t;
extern __at(0x0096) volatile __IOCBbits_t IOCBbits;
#define _IOCB_IOC0 0x01
#define _IOCB_IOCB0 0x01
#define _IOCB_IOC1 0x02
#define _IOCB_IOCB1 0x02
#define _IOCB_IOC2 0x04
#define _IOCB_IOCB2 0x04
#define _IOCB_IOC3 0x08
#define _IOCB_IOCB3 0x08
#define _IOCB_IOC4 0x10
#define _IOCB_IOCB4 0x10
#define _IOCB_IOC5 0x20
#define _IOCB_IOCB5 0x20
//==============================================================================
//==============================================================================
// VRCON Bits
extern __at(0x0099) __sfr VRCON;
typedef union
{
struct
{
unsigned VR0 : 1;
unsigned VR1 : 1;
unsigned VR2 : 1;
unsigned VR3 : 1;
unsigned : 1;
unsigned VRR : 1;
unsigned : 1;
unsigned VREN : 1;
};
struct
{
unsigned VR : 4;
unsigned : 4;
};
} __VRCONbits_t;
extern __at(0x0099) volatile __VRCONbits_t VRCONbits;
#define _VR0 0x01
#define _VR1 0x02
#define _VR2 0x04
#define _VR3 0x08
#define _VRR 0x20
#define _VREN 0x80
//==============================================================================
extern __at(0x009A) __sfr EEDAT;
extern __at(0x009A) __sfr EEDATA;
extern __at(0x009B) __sfr EEADR;
//==============================================================================
// EECON1 Bits
extern __at(0x009C) __sfr EECON1;
typedef struct
{
unsigned RD : 1;
unsigned WR : 1;
unsigned WREN : 1;
unsigned WRERR : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
unsigned : 1;
} __EECON1bits_t;
extern __at(0x009C) volatile __EECON1bits_t EECON1bits;
#define _RD 0x01
#define _WR 0x02
#define _WREN 0x04
#define _WRERR 0x08
//==============================================================================
extern __at(0x009D) __sfr EECON2;
//==============================================================================
//
// Configuration Bits
//
//==============================================================================
#define _CONFIG 0x2007
//—————————— CONFIG Options ——————————-
#define _FOSC_LP 0x3FF8 // LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN.
#define _LP_OSC 0x3FF8 // Генератор LP: маломощный кристалл на GP4/OSC2/CLKOUT и GP5/OSC1/CLKIN.
#define _FOSC_XT 0x3FF9 // Генератор XT: кристалл/резонатор на GP4/OSC2/CLKOUT и GP5/OSC1/CLKIN.
#define _XT_OSC 0x3FF9 // Генератор XT: кристалл/резонатор на GP4/OSC2/CLKOUT и GP5/OSC1/CLKIN.
#define _FOSC_HS 0x3FFA // Генератор HS: высокоскоростной кварцевый резонатор на GP4/OSC2/CLKOUT и GP5/OSC1/CLKIN.
#define _HS_OSC 0x3FFA // Генератор HS: высокоскоростной кварцевый резонатор на GP4/OSC2/CLKOUT и GP5/OSC1/CLKIN.
#define _FOSC_EC 0x3FFB // EC: функция ввода-вывода на выводе GP4/OSC2/CLKOUT, CLKIN на выводе GP5/OSC1/CLKIN.
#define _EC_OSC 0x3FFB // EC: функция ввода-вывода на выводе GP4/OSC2/CLKOUT, CLKIN на выводе GP5/OSC1/CLKIN.
#define _FOSC_INTRCIO 0x3FFC // Генератор INTOSC: функция ввода-вывода на выводе GP4/OSC2/CLKOUT, функция ввода-вывода на выводе GP5/OSC1/CLKIN.
#define _INTRC_OSC_NOCLKOUT 0x3FFC // Генератор INTOSC: функция ввода/вывода на выводе GP4/OSC2/CLKOUT, функция ввода/вывода на выводе GP5/OSC1/CLKIN.
#define _FOSC_INTRCCLK 0x3FFD // Генератор INTOSC: функция CLKOUT на выводе GP4/OSC2/CLKOUT, функция ввода-вывода на выводе GP5/OSC1/CLKIN.
#define _INTRC_OSC_CLKOUT 0x3FFD // Генератор INTOSC: функция CLKOUT на выводе GP4/OSC2/CLKOUT, функция ввода/вывода на выводе GP5/OSC1/CLKIN.
#define _FOSC_EXTRCIO 0x3FFE // RC-генератор: функция ввода-вывода на выводе GP4/OSC2/CLKOUT, RC на выводе GP5/OSC1/CLKIN.
#define _EXTRC_OSC_NOCLKOUT 0x3FFE // RC-генератор: функция ввода-вывода на выводе GP4/OSC2/CLKOUT, RC на выводе GP5/OSC1/CLKIN.
#define _FOSC_EXTRCCLK 0x3FFF // RC-генератор: функция CLKOUT на выводе GP4/OSC2/CLKOUT, RC на выводе GP5/OSC1/CLKIN.
#define _EXTRC_OSC_CLKOUT 0x3FFF // RC-генератор: функция CLKOUT на выводе GP4/OSC2/CLKOUT, RC на выводе GP5/OSC1/CLKIN.
#define _WDTE_OFF 0x3FF7 // WDT отключен.
#define _WDT_OFF 0x3FF7 // WDT отключен.
#define _WDTE_ON 0x3FFF // WDT включен.
#define _WDT_ON 0x3FFF // WDT включен.
#define _PWRTE_ON 0x3FEF // PWRT включен.
#define _PWRTE_OFF 0x3FFF // PWRT отключен.
#define _MCLRE_OFF 0x3FDF // Функция вывода GP3/MCLR — цифровой ввод-вывод, MCLR внутренне привязан к VDD.
#define _MCLRE_ON 0x3FFF // Функция контакта GP3/MCLR — MCLR.
#define _BOREN_OFF 0x3FBF // БПК отключен.
#define _BODEN_OFF 0x3FBF // БПК отключен.
#define _BOREN_ON 0x3FFF // БПК включен.
#define _BODEN_ON 0x3FFF // BOD включен.
#define _CP_ON 0x3F7F // Включена защита кода памяти программ.
#define _CP_OFF ​​0x3FFF // Защита кода программной памяти отключена.
#define _CPD_ON 0x3EFF // Включена кодовая защита памяти данных.
#define _CPD_OFF 0x3FFF // Кодовая защита памяти данных отключена.
//============================================== ===============================
# определить _DEVID1 0x2006
# определить _IDLOC0 0x2000
# определить _IDLOC1 0x2001
# определить _IDLOC2 0x2002
# определить _IDLOC3 0x2003
//============================================== ===============================
#ifndef NO_BIT_DEFINES
#define CM0 CMCONbits. CM0 // бит 0
#define CM1 CMCONbits.CM1 // бит 1
#define CM2 CMCONbits.CM2 // бит 2
#define CIS CMCONbits.CIS // бит 3
#define CINV CMCONbits.CINV // бит 4
#define COUT CMCONbits.COUT // бит 6
#define RD EECON1bits.RD // бит 0
#define WR EECON1bits.WR // бит 1
# определить WREN EECON1bits.ВРЕН // бит 2
#define WRERR EECON1bits. WRERR // бит 3
#define GP0 GPIObits.GP0 // бит 0, бит тени в GPIObits
#define GPIO0 GPIObits.GPIO0 // бит 0, теневой бит в GPIObits
# определить биты GP1 GP1.GP1 // бит 1, бит теней в GPIObits
#define GPIO1 GPIObits.GPIO1 // бит 1, бит тени в GPIObits
#define GP2 GPIObits.GP2 // бит 2, бит тени в GPIObits
#define GPIO2 GPIObits.GPIO2 // бит 2, бит теней в GPIObits
# определить биты GP3 GPIO.GP3 // бит 3, бит теней в GPIObits
#define GPIO3 GPIObits. GPIO3 // бит 3, бит тени в GPIObits
#define GP4 GPIObits.GP4 // бит 4, бит тени в GPIObits
#define GPIO4 GPIObits.GPIO4 // бит 4, бит теней в GPIObits
#define GPIObits GP5.GP5 // бит 5, бит теней в GPIObits
#define GPIO5 GPIObits.GPIO5 // бит 5, бит теней в GPIObits
#define GPIF INTCONbits.GPIF // бит 0
#define INTF INTCONbits.INTF // бит 1
#define T0IF INTCONbits.T0IF // бит 2, бит теней в INTCONbits
#define TMR0IF INTCONbits. TMR0IF // бит 2, бит тени в INTCONbits
#define GPIE INTCONbits.GPIE // бит 3
#define INTE INTCONbits.INTE // бит 4
#define T0IE INTCONbits.T0IE // бит 5, бит теней в INTCONbits
#define TMR0IE INTCONbits.TMR0IE // бит 5, бит тени в INTCONbits
#define PEIE INTCONbits.PEIE // бит 6
#define GIE INTCONbits.GIE // бит 7
#define IOC0 IOCbits.IOC0 // бит 0, бит теней в IOCbits
#define IOCB0 IOCbits. IOCB0 // бит 0, бит тени в IOCbits
#define IOC1 IOCbits.IOC1 // бит 1, теневой бит в IOCbits
#define IOCB1 IOCbits.IOCB1 // бит 1, бит тени в IOCbits
#define IOC2 IOCbits.IOC2 // бит 2, бит теней в IOCbits
#define IOCB2 IOCbits.IOCB2 // бит 2, бит тени в IOCbits
#define IOC3 IOCbits.IOC3 // бит 3, бит тени в IOCbits
#define IOCB3 IOCbits.IOCB3 // бит 3, бит теней в IOCbits
#define IOC4 IOCbits.IOC4 // бит 4, бит теней в IOCbits
#define IOCB4 IOCbits. IOCB4 // бит 4, бит теней в IOCbits
#define IOC5 IOCbits.IOC5 // бит 5, бит теней в IOCbits
#define IOCB5 IOCbits.IOCB5 // бит 5, бит теней в IOCbits
#define PS0 OPTION_REGbits.PS0 // бит 0
#define PS1 OPTION_REGbits.PS1 // бит 1
#define PS2 OPTION_REGbits.PS2 // бит 2
#define PSA OPTION_REGbits.PSA // бит 3
#define T0SE OPTION_REGbits.T0SE // бит 4
#define T0CS OPTION_REGbits. T0CS // бит 5
#define INTEDG OPTION_REGbits.INTEDG // бит 6
#define NOT_GPPU OPTION_REGbits.NOT_GPPU // бит 7
#define CAL0 OSCCALbits.CAL0 // бит 2
#define CAL1 OSCCALbits.CAL1 // бит 3
#define CAL2 OSCCALbits.CAL2 // бит 4
#define CAL3 OSCCALbits.CAL3 // бит 5
#define CAL4 OSCCALbits.CAL4 // бит 6
#define CAL5 OSCCALbits.CAL5 // бит 7
#define NOT_BOR PCONbits. NOT_BOR // бит 0, бит тени в PCONbits
#define NOT_BOD PCONbits.NOT_BOD // бит 0, бит тени в PCONbits
#define NOT_POR PCONbits.NOT_POR // бит 1
#define TMR1IE PIE1bits.TMR1IE // бит 0, бит тени в PIE1bits
#define T1IE PIE1bits.T1IE // бит 0, бит тени в PIE1bits
#define CMIE PIE1bits.CMIE // бит 3
#define EEIE PIE1bits.EEIE // бит 7
#define TMR1IF PIR1bits.TMR1IF // бит 0, бит тени в PIR1bits
#define T1IF PIR1bits. T1IF // бит 0, бит тени в PIR1bits
#define CMIF PIR1bits.CMIF // бит 3
# определить биты EEIF PIR1.EEIF // бит 7
#define C STATUSbits.C // бит 0
#define DC STATUSbits.DC // бит 1
#define Z STATUSbits.Z // бит 2
#define NOT_PD STATUSbits.NOT_PD // бит 3
#define NOT_TO STATUSbits.NOT_TO // бит 4
#define RP0 STATUSbits.RP0 // бит 5
#define RP1 STATUSbits. RP1 // бит 6
#define IRP STATUSbits.IRP // бит 7
#define TMR1ON T1CONbits.TMR1ON // бит 0
#define TMR1CS T1CONbits.TMR1CS // бит 1
#define NOT_T1SYNC T1CONbits.NOT_T1SYNC // бит 2
#define T1OSCEN T1CONbits.T1OSCEN // бит 3
#define T1CKPS0 T1CONbits.T1CKPS0 // бит 4
#define T1CKPS1 T1CONbits.T1CKPS1 // бит 5
#define TMR1GE T1CONbits.TMR1GE // бит 6
#define TRISIO0 TRISIObits. TRISIO0 // бит 0
#define TRISIO1 TRISIObits.TRISIO1 // бит 1
#define TRISIO2 TRISIObits.TRISIO2 // бит 2
#define TRISIO3 TRISIObits.TRISIO3 // бит 3
#define TRISIO4 TRISIObits.TRISIO4 // бит 4
#define TRISIO5 TRISIObits.TRISIO5 // бит 5
#define VR0 VRCONbits.VR0 // бит 0
#define VR1 VRCONbits.VR1 // бит 1
#define VR2 VRCONbits.VR2 // бит 2
#define VR3 VRCONbits. VR3 // бит 3
#define VRR VRCONbits.VRR // бит 5
#define VREN VRCONbits.VREN // бит 7
#define WPU0 WPUbits.WPU0 // бит 0
#define WPU1 WPUbits.WPU1 // бит 1
#define WPU2 WPUbits.WPU2 // бит 2
#define WPU4 WPUbits.WPU4 // бит 4
#define WPU5 WPUbits.WPU5 // бит 5
#endif // #ifndef NO_BIT_DEFINES
#endif // #ifndef __PIC12F629_H__

%PDF-1. 6 % 471 0 объект > эндообъект внешняя ссылка 471 84 0000000016 00000 н 0000003019 00000 н 0000003339 00000 н 0000003400 00000 н 0000003800 00000 н 0000003834 00000 н 0000003986 00000 н 0000004137 00000 н 0000004214 00000 н 0000005032 00000 н 0000005803 00000 н 0000006119 00000 н 0000006662 00000 н 0000007058 00000 н 0000007798 00000 н 0000008150 00000 н 0000008186 00000 н 0000009896 00000 н 0000010236 00000 н 0000010370 00000 н 0000014886 00000 н 0000015325 00000 н 0000015701 00000 н 0000015959 00000 н 0000023470 00000 н 0000023978 00000 н 0000024357 00000 н 0000024685 00000 н 0000030025 00000 н 0000030517 00000 н 0000030893 00000 н 0000032187 00000 н 0000033514 00000 н 0000033730 00000 н 0000033952 00000 н 0000035127 00000 н 0000035681 00000 н 0000035934 00000 н 0000036803 00000 н 0000040599 00000 н 0000040974 00000 н 0000041361 00000 н 0000041568 00000 н 0000045004 00000 н 0000045400 00000 н 0000045799 00000 н 0000046031 00000 н 0000046603 00000 н 0000047341 00000 н 0000048249 00000 н 0000049207 00000 н 0000050003 00000 н 0000052673 00000 н 0000075468 00000 н 0000075522 00000 н 0000075576 ​​00000 н 0000075647 00000 н 0000075742 00000 н 0000075833 00000 н 0000075886 00000 н 0000076020 00000 н 0000076073 00000 н 0000076236 00000 н 0000076347 00000 н 0000076400 00000 н 0000076543 00000 н 0000076700 00000 н 0000076807 00000 н 0000076859 00000 н 0000076966 00000 н 0000077119 00000 н 0000077209 00000 н 0000077261 00000 н 0000077377 00000 н 0000077431 00000 н 0000077483 00000 н 0000077535 00000 н 0000077587 00000 н 0000077640 00000 н 0000077776 00000 н 0000077829 00000 н 0000077882 00000 н 0000002834 00000 н 0000002016 00000 н трейлер ]>> startxref 0 %%EOF 554 0 объект > поток xb«b`c`c«[email protected]

PIC12F629

  • Стр. 1 и 2: PIC12F629/675Технические характеристики, 8-контактный, флэш-память
  • Стр.
  • Стр. 5: PIC12F629/675 Содержание1.0 D
  • Page 9 и 10: PIC12F629 / 6752.0 Memory Organizatio
  • Page 11 и 12: PIC12F629 / 675FTABLE 2-1: Специальный Func
  • Page 13 и 14: PIC12F629 / 6752.2.2.1 Status Regize
  • Page 15 и 16 : Piction12f629 / 6752.2.3 intcon Регистрируйте
  • Page 17 и 18: Pic12F629 / 6752.2.5 PIR1 Registert
  • 0
  • Page 19 и 20: PCL12F629 / 6752.3 PCL и PCLATHTHTHE
  • Page 21 и 22: PIC12F629 / 6753.0 GPIO PORTTHHERE
  • Страница 23 и 24: PIC12F629/6753.2.2 INTERRUPT-ON-CHA
  • Страница 25 и 26: PIC12F629/6753.3.3 GP2/AN2/T0CKI/IN
  • Страница 27 и 28: PIC12F629/675 / 6754.0 Timer0 Modulethe T
  • стр. 31 и 32: Pic12F629 / 6754.4 Pic12F629 / 6754.4 Prescaleran 8-BIT
  • Page 33 и 34: PIC12F629 / 6755.1 Timer1 Режимы OP
  • Page 35 и 36: PIC12F629 / 6755.4 TIMER1 Операция I
  • Page 3 и 38: МОДУЛЬ КОМПАРАТОРА PIC12F629/6756. 0
  • Страница 39 и 40: PIC12F629/6756.2 компаратора CONFIGU
  • Page 41 и 42: PIC12F629 / 6756.5 Comparator Fire Referen
  • Page 43 и 44: PIC12F629 / 6757.0 Analog-to-digitalc
  • Page 45 и 46: Pic12F629 / 67550959 Page 47
  • Page 47 48: Pic12F629 / 6757.2 A / D Приобретение Re
  • Page 49 и 50: PIC12F629 / 6758.0 Данные EEPROM Memory
  • Page 51 и 52: PIC12F629 / 6758.3 Чтение EEPROM
  • Page 53 и 54: PIC12F629 / 6759.0 Особенности O
  • стр. 55 и 56: PIC12F629/6759.2 Осциллятор Configuum
  • Page 57 и 58:

    Page 57 и 58:

    Page12f629 / 6759.3 ResetThe Pic12F629

  • Page 129 и 60:

    PIC12F629 / 675TABLE 9-7: INATIVEIZAT

  • Page 63 и 64:

    PIC12F629 / 6759.4 прерывает PIC1

  • Page 65 и 66:

    PIC12F629 / 6759.4.1 GP2 / INT Interrup

  • Page 67 и 68:

    PIC12F629 / 675Figure 9-12: Watchdog T

  • Стр. 69 и 70:

    PIC12F629 / 67510.0 Набор инструкций S

  • Page 73 и 74:
  • Page12f629 / 67510.2 Инструкция по эксплуатации

  • Page 75 и 76:

    PIC12F629 / 675DECFSZ Уменьшение F, SK

  • Page 77 и 78:

    Page 77 и 78:

    PIC12F629 / 675RLFROTATE LEFT FH THROU

    PIC12F629 / 6758 PIC12F629 / 67511.0 Development Suppo

  • Page 81 и 82:

    PIC12F629/67512.0 Электрический вклад

  • Page 12760
  • Page 85 и 86:

    PIC12F629 / 675Figure 12-3: Pic12F675

  • Page12F629 / 67512.2 Характеристика DC

  • 9478 Page 89 и 90:

    PIC12F629 / 67512.4 DC Характеристика

  • Page 91 и 92:

    PIG12F629 / 67512. 6 DC Характеристики

  • Page
  • Page
  • Page
  • Page
  • 9 / 67512.8 Timing Parameter

  • Page 95 и 96:

    PIC12F629 / 675TABLE 12-2: Precision

  • стр. 97 и 98 :

    PIC12F629 / 675Figure 12-7: Reset, Wat

  • Page 94 и 100:

    Page12F629 / 675Figure 12-9: Timer0 и

  • Page 10 и 102:

    PIC12F629 / 675TABLE 12-8: PIC12F675 A

  • Страница 103 и 104:

    PIC12F629/67513.0 DC и AC Charact

  • Page 10 и 108:

    PIC12F629 / 675Figure 13-5: Максимальный IP

  • :
  • Page22F629 / 675Figure 13-9: Типичный IP

  • Page 111 и 112:

    PIC12F629 / 675Figure 13-13: типичный i

  • Page 113 и 114:

    PIC12F629 / 675Figure 13-17: типичный W

  • Page 115 и 116:

    PIC12F629/6758-Lead Plastic Small O

  • Страница 119 и 120:

    PIC12F629/675ПРИЛОЖЕНИЕ A: Редакция AT

  • Страница 121 и 122:

    PIC12F629/D675.INDEXAA………..

  • Стр. 123 и 124:

    PIC12F629/675Предварительный делитель………….

  • Стр. 125 и 126:

    PIC12F629/675THE MICROCHIP WEB САЙТ

  • Стр. 127 и 128:

    PIC12F629/675 ИДЕНТИФИКАЦИЯ ПРОДУКТА

  • Извлечение микропрограммы из микроконтроллеров Microchip PIC Объяснение

    Этот блог является третьей частью из четырех статей о взломе оборудования для специалистов по безопасности и исследователей.Обязательно ознакомьтесь с первой частью, в которой рассматриваются микроконтроллеры Atmel, и второй частью, в которой обсуждаются микроконтроллеры Nordic RF.

    В этом блоге мы будем проводить дальнейшие упражнения по извлечению прошивки и рассмотрим микроконтроллер Microchip PIC (PIC32MX695F512H). Чтобы получить доступ к прошивке на микроконтроллерах PIC, нам нужно будет считывать напрямую с контроллера через встроенный последовательный программатор (ICSP).

    ICSP — это еще один метод, который позволяет программировать или перепрограммировать микроконтроллер (MCU) внутри схемы.Для этого мы будем использовать следующие инструменты и программное обеспечение:

    PICkit 3 — недорогой внутрисхемный отладчик. Доступны и более дешевые универсальные версии устройства. По нашему опыту, хорошо себя зарекомендовали как брендовые, так и непатентованные версии.

    PICkit 3 Функция
    ВПП (или MCLR) Напряжение программирования (обычно 13 В)
    VCC или VDD Питание (обычно 5В)
    VSS или GND Земля (0 вольт)
    ICSPDAT\PGD Данные – обычный порт и соединение RB7 (PGED)
    ICSPCLK\PGC Часы – обычный порт и подключение RB6 (PGEC)
    ПГМ – LVP Программирование низкого напряжения – обычный порт и подключение RB3/RB4

    При подключении PICkit 3 к печатной плате для отладки нередко можно обнаружить на печатной плате соответствующий разъем для PIC ICSP. Пример этого показан ниже:

    Также важно предположить, что заголовок ICSP не может быть закреплен должным образом, а это означает, что простое подключение PICkit 3 может не дать ожидаемых результатов. Мы рекомендуем сначала проверить распиновку. Это лучше всего сделать с помощью таблицы данных для MCU и мультиметра, настроенного на непрерывность, чтобы прозвонить заголовок ICSP к фактическим контактам на микросхеме.

    В этом примере, используя таблицу данных для микроконтроллера PIC32MX695F512H и мультиметр, мы обнаружили, что распиновка заголовка предназначена для ICSP микроконтроллера, но его расположение контактов не соответствует правильному порядку распиновки для прямого подключения, как показано ниже:

    Как видите, полезно всегда перепроверять распиновку перед подключением любого отладчика или анализатора к печатной плате.Это убережет вас от головной боли в будущем и может помочь предотвратить повреждение затронутых компонентов. Также обратите внимание, что контакт 6 PGM – LVP на PICkit 3 не используется. Этот вывод нужен только при программировании определенных устройств MCU, и, насколько я понимаю, он никогда не нужен при чтении флэш-памяти.

    После успешного подключения PICkit 3 к целевому устройству вам потребуется загрузить и установить программное обеспечение MPLab X IDE, доступное от Microchip. После установки пришло время извлечь прошивку из MCU.

    Откройте программу MPLAB X IDE и создайте новый проект. Вы можете использовать значения по умолчанию для категории и типа проекта. Когда будет предложено выбрать устройство, выберите семейство и тип тестируемого устройства. В нашем примере мы использовали следующее:

    • Семейство: 32-разрядные микроконтроллеры (PIC32)
    • Устройство: PIC32MX695F512H

    При появлении запроса на выбор инструмента выберите используемый отладчик (в нашем случае PICkit 3). На следующем шаге вам нужно будет выбрать Компилятор для распаковки прошивки.Вам это не понадобится, но необходимо для настройки проекта. Выберите то, что доступно, или, если вы используете этот инструмент впервые, вам может потребоваться загрузить компилятор. Последний шаг — дать вашему проекту имя и нажать «Готово».

    На этом этапе вы должны быть готовы к считыванию памяти с MCU. Это делается путем выбора значка, изображенного здесь:

    .

    Затем выберите Чтение памяти устройства.

    При правильной настройке и подключении индикатор состояния PICkit 3 должен начать мигать красным, и вы должны увидеть следующую информацию в приложении MPLAB, а затем запрос на сохранение файла:

    При сохранении файла он будет сохранен как файл типа Intel Hex.Чтобы иметь возможность исследовать и тестировать микропрограмму дальше, вам необходимо преобразовать ее в двоичный тип файла. Это легко сделать с помощью приложения для Linux hex2bin, как показано ниже:

    .

    После того, как он будет преобразован в двоичный файл, вы сможете провести дальнейшее тестирование встроенного ПО и использовать другие приложения, такие как Binwalk, для извлечения данных.

    Author:

    Добавить комментарий

    Ваш адрес email не будет опубликован.