Berezka7km.ru

Березка 7км
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Микроконтроллер PIC16F84A: организация памяти программ и данных, портов ввода/вывода

Микроконтроллер PIC16F84A: организация памяти программ и данных, портов ввода/вывода

Память программ. В PIC16F84A команды имеют 14 разрядов и хранятся во флэш-памяти. Ячейки памяти также имеют 14 разрядов и образуют слово. Объем памяти составляет 1 К (1024) слов.

При сбросе МК сигналом низкого уровня на выводе MCLR (Master Clear) происходит сброс в нуль счетчика команд PC, и после окончания сигнала MCLR дальнейшее выполнение команд программы производится с адреса 000h. Так как программа находится в энергонезависимой памяти, при отключении питания ее стирание не происходит.

Память данных. Память данных (ПД) PIC16F84A представляет собой 8-разрядные ячейки ОЗУ, которые по терминологии фирмы Microchip называются регистрами. ПД по выполняемым функциям состоит из двух областей. Первые 12 адресов – это область регистров специальных функций (РСФ), а вторая – область регистров общего назначения (РОН). При выключении питания данные, находящиеся в регистрах ПД, уничтожаются.

В PIC16F84A все регистры распределены по двум банкам, которые имеют нумерацию 0 и 1. В каждый момент времени программе доступен только один регистровый банк. Переключение между банками осуществляется при помощи 5-го бита с именем RP0 из регистра состояния STATUS. При сбросе этого бита в 0 доступен банк 0, при установке бита в 1 – банк 1. Наиболее часто используемые РСФ находятся в банке 0. Некоторые из РСФ присутствуют в обоих банках. Регистры РОН, а их всего 68, продублированы в обоих банках. После сброса МК автоматически выбирается регистровый банк 0.

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

· регистр статуса STATUS содержит флаги АЛУ, состояния контроллера при сбросе и биты выбора банков ПД;

· регистр конфигурации OPTION_REG содержит управляющие биты для конфигурации предварительного делителя (предделителя), внешних прерываний, таймера, а также подтягивающих резисторов (pull-up) на выводах порта В;

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

Порты ввода/вывода. МК PIC16F84A имеет 13 выводов (линий), каждый из которых может быть сконфигурирован (программно настроен) на ввод или вывод данных. На рисунке 1 приведена упрощенная функциональная схема одной линии порта. В каждой линии имеется триггер данных, входящий в регистр данных порта PORT; триггер направления передачи данных, входящий в регистр направления TRIS; выходной буфер OBF; буфер чтения вывода порта IBF. Буферы OBF и IBF имеют выходы с тремя состояниями. Управление состоянием выходов выполняется с помощью сигналов на входах EN. При EN = 1 выходы буферов находятся в активном режиме и передают логические “1” или “0” со входов. При EN = 0 выходы находятся в отключенном Z-состоянии. Управление буфером OBF выполняется от триггера TRIS. Когда в триггере записан “0”, высокий уровень с инверсного выхода триггера поступает на управляющий вывод EN буфера OBF и переводит его выход в активный режим. Информация, записанная в триггере данных PORT (“0” или “1”), поступает на выход линии порта. Когда в триггере TRIS записана “1”, на выводе EN будет “0”, и выход буфера OBF переходит в Z-состояние, т.е. отключается от вывода порта. Логическое состояние на выводе порта в этом случае может быть прочитано с помощью буфера IBF, который открывается командой чтения выводов порта. Буфер IBF открывается кратковременно только на момент чтения выводов порта. В остальное время выход IBF находится в Z-состоянии и не влияет на шину данных МК. Таким образом, для настройки линии порта на вывод в соответствующий разряд регистра TRIS надо записать 0, а для настройки линии на ввод – записать 1.

Читайте так же:
Счетчик времени до конца работы

Выводы распределены между двумя портами МК: пять выводов порта А (RA0-RA4) и восемь выводов порта В (RB0-RB7). Выбор состояния вывода (вход или выход) определяется регистрами TRISA и TRISB. После сброса МК автоматически все линии портов настроены на ввод. Для изменения настройки необходимо в регистры направления загрузить соответствующую информацию. Пример настройки линий порта В: линии RB0-RB3 – на вывод, линии RB4-RB7 – на ввод:

movlw b’11110000’ ; загрузить в регистр W двоичное число 11110000

movwf TRISB ; переслать содержимое W в регистр TRISB

Некоторые выводы портов обладают специальными функциями. Так, будучи настроенными на ввод линии RB0 и RB4-RB7 могут активизировать прерывания. Вывод RA4 порта А может служить входом подключения внешнего генератора для подсчета числа импульсов с помощью TMR0. Особенностью линий порта В является возможность программного подключения к его выводам, настроенным на ввод, внутренних “подтягивающих” резисторов сопротивлением приблизительно 50 кОм. Возможность такого подключения упрощает взаимодействие с клавиатурой и исключает необходимость в использовании внешнего резистора.

Внутрисхемное программирование и отладка микроконтроллеров Microchip

Для демонстрации внутрисхемного программирования и отладки микроконтроллера соберём простую схему. Задача данного прибора будет сводится к миганию светодиода.

Схема на МК

Данный прибор может быть собран на демонстрационной (отладочной) плате фирмы Microchip PICDEM 2 PLUS. Схему демонстрационной платы PICDEM 2 PLUS и техническую спецификацию программируемого микроконтроллера можно найти на сайте http://www.microchip.com/.Источник питания схемы должен давать напряжение 9-15В и ток не менее 0,5А. Стоит отметить, что конденсаторами C1 и C2 можно пренебречь, они обеспечивают стабильность работы кварцевого резонатора ZQ1.

MPLAB IDE v8.15

Показана рабочая область MPLAB IDE v8.15.

В меню выбираем Configure -> Select Device…

Select Device

Выбрав программируемый микроконтроллер PIC16F873A, нажимаем «OK».

В меню выбираем Project -> Project Wizard…

Project Wizard

Нажимаем «Далее».

Project Wizard

Подтверждаем выбранный микроконтроллер нажатием «Далее».

Project Wizard

Выбрав компилятор, нажимаем «Далее».

Project Wizard

Нажав «Browse…» выбираем папку и имя фала.

mc148-8.png

Указываем имя файла «LED» в папке«LED» и нажимаем «Сохранить».

Читайте так же:
Счетчик жидкости для масла

Project Wizard

Нажимаем «Далее».

Project Wizard

Выбираем путь к файлу, где будет написан код программы (листинг)

C:Program FilesMicrochipMPASM SuiteTemplateCode16F873ATEMP.ASM

Нажимаем «Add>>», затем выбираем «С».

Нажимаем «Далее».

Project Wizard

Появилась заключающие окно, нажимаем «Готово».

mc148-12.jpg

Файлы в созданном проекте «LED» указаны в окне (сверху справа)LED.mcw

Нажимаем на надпись «16F873ATEMP.ASM».

mc148-13.jpg

Открылся файл 16F873ATEMP.ASM, где будет написан код программы на ассемблере.

Алгоритм

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

Вот листинг, который должен быть в файле 16F873ATEMP.ASM.

mc148-15.jpg

В конфигурации микроконтроллера указываем _HS_OSC, так как внешний кварцевый резонатор будет с рабочей частотой 20 МГц. Присваиваем статической ОЗУ (SRAM) новые регистры PAUSE1 – PAUSE3.

В меню выбираем View-> File Registers, где отображается вся статическая ОЗУ (SRAM) микроконтроллера.

mc148-16.jpg

Для внутрисхемной отладки в меню нужно выбрать Debugger -> Select Tool -> 1 MPLAB ICD 2.

Собрав схему на демонстрационной плате и подключив к ней питание и внутрисхемный отладчик, нажмём «Reset and Connect to ICD», если устройство готово к работе нажимаем «Program target device» и запускаем отладку нажав «Run».

Структурная связь

Структурная связь всех используемых компонентов для внутрисхемной отладки и программирования.

Подключение отладочной платы PICDEM 2 PLUS

Показано подключение отладочной платы PICDEM 2 PLUS с микроконтроллером PIC16F873A к источнику питания и внутрисхемному отладчику MPLAB ICD 2. Во время отладки мигает светодиод, подключенный к выводу микроконтроллера RB0.

mc148-19.jpg

Для самостоятельной работы, микроконтроллер нужно запрограммировать. Для этого выбираем в меню Programmer -> Select Programmer -> MPLAB ICD 2. Затем «Reset and Connect to ICD», если устройство готово к работе нажимаем «Program target device», проверяем нажатием «Verify target device memory».

mc148-20.jpg

Теперь микроконтроллер самостоятельно выполняет запрограммированные в него инструкции. Внутрисхемный отладчик MPLAB ICD 2 отключен.

Проект на PIC микроконтроллере PIC16C84 (или PIC16F84)

PIC16C84 (или PIC16F84) фирмы Microchip — миниатюрный, но мощный микроконтроллер. Он основан на EEPROM или "FLASH" технологии, позволяющей перепрограммировать его буквально за секунды. Типовое количество циклов перезаписи — около 1000. Из его 18-ти выводов 13 могут использоваться как разряды ввода/вывода общего назначения. Когда они программируются на вывод, то допускают ток "1" до 20 мА и ток "0" до 25 мА (более чем достаточный для подключения, например, светодиодов). Это позволяет разрабатывать на данном микроконтроллере простые и недорогие электронные устройства и делает его идеальным для желающих изучить принципы работы микроконтроллеров.

Светодиодные драйверы MEAN WELL для систем внутреннего освещения

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

Читайте так же:
Как установить счетчик цэ6803в

Выводы RA* и RB* — это контакты ввода/вывода, связанные с регистрами микроконтроллера PORTA и PORTB соответственно (RA4 также может быть использоваться как вход внутреннего таймера, а RB0 может быть использован как источник прерываний). VDD и VSS — выводы питания (+Uпит и GND соответственно). Серия 16 x 84 работает в широком диапазоне питающих напряжений, но обычно VSS подключен к 0В, а VDD подключен +5 В. Вывод основного сброса /MCLR обычно подключен к VDD (напрямую или через резистор), потому что микроконтроллер содержит надежную схему сброса при включении питания — все, что вам надо, микроконтроллер выполнит сам. Выводы OSC1 и OSC2 подключаются к генератору тактовой частоты и могут быть сконфигурированы для различных его типов, включая режимы кварца и RC-генератора. Простая схема, которая используется как база для проекта с использованием PIC16C84 представлена на рисунке:

Более наглядная схема:

Схема содержит RC-генератор и один вывод (RB4) подключен к индикатору. Это — все, что необходимо для работы микроконтроллера. Charles Manning (Electronics Australia, April 1996) написал изумительно короткую (6 слов) программу для мигания индикатора, которую вы можете использовать с этой схемой: http://www.microchip.com). Для использования программы вы должны извлечь ее из этого файла любым редактором, сохранить в другой файл (например LIGHTS.ASM), затем проассемблировать с помощью MPASM (используйте команду "MPASM LIGHTS.ASM") для получения HEX файла LIGHTS.HEX, который может быть загружен в микроконтроллер с помощью программатора. Не обращайте внимания на замечания MPASM о том, что использование регистров TRIS и OPTION "не рекомендуется". Убедитесь в том, что сторожевой таймер "watchdog" включен и выбран RC-генератор. Если у вас еще нет MPASM, то здесь представлен HEX-вариант приведенной выше программы:

Эта программа написана для MPASM (бесплатный ассемблер от Microchip, доступный по адресу

Вы можете записать эти две строки в файл LIGHTS.HEX без использования MPASM. Если вы используете один из моих PIC программаторов (например TOPIC или PP), вы можете можете загрузить этот файл с корректной конфигурацией с помощью следующей команды:

PP -RW8 LIGHTS.HEX (PP V-0.3)

PP -RW LIGHTS.HEX (PP V-0.4)

Программа использует таймаут "watchdog" таймера как как источник синхронизации для определения моментов включения и выключения светодиода; в результате вы можете заставить светодиод вспыхивать с различной частотой, подключая его к различным разрядам порта PORTB (RB0-RB7, выводы 6-13). Это необычное использование "watchdog" таймера. Обычно "watchdog" таймер используется, чтобы удостовериться, что PIC ведет себя в соответствии с заданной программой, и, если ваша программа специально не сконфигурирована для использования "watchdog" таймера, активизировать его было бы большой ошибкой. Простая программа LIGHTS использует его для выхода из режима "SLEEP" (т.е. режима "засыпания"); при выходе из этого режима PIC увеличивает содержимое регистра PORTB, что изменяет состояние RB0-RB7 и опять переходит в режим "засыпания" до следующего таймаута "watchdog" таймера. "Watchdog" таймер синхронизирован внутренним RC генератором, который имеет одинаковый период на всех PIC микроконтроллерах, следовательно, использование "watchdog" таймера для операций со временем гарантирует, что временные задержки будут измеряться стабильно независимо от конфигурации задающего генератора микроконтроллера или используемой частоты (желательно, чтобы частота составляла хотя бы несколько кГц). Это свойство делает программу LIGHTS очень удобной для начального тестирования большинства макетных плат для PIC. Схема может быть изменена для получения значительно большего количества эффектов путем добавления сведодиодов. Подключите первый из них к выводу RB0 (контакт 6), второй — к RB1 (контакт 7), третий — к RB2 (контакт 8) и т.д. Наилучшим вариантом является использование как минимум четырех светодиодов с увеличением до восьми (последний подключить к RB7, т.е. контакт 13). Каждый сведодиод подключается через резистор 470 Ом между ножкой микроконтроллера и "землей" (см. схему). Следующая программа реализует эффект "бегущего огня":

Читайте так же:
Право самостоятельно устанавливать счетчики

:100000008601831686010A3081008312860A031056 :100010006300860D861D08286300860C061C0C28CC :020020000828AE :00000001FF

Снова вы должны с указать программатору включить "watchdog" таймер и RC генератор. Если вы запишете указанные выше четыре HEX строки в файл (например, WALKLEDS.HEX), вы можете загрузить программу, используя

PP -RW8 WALKLEDS.HEX (PP V-0.3) PP -RW WALKLEDS.HEX (PP V-0.4) TOPIC -RWG WALKLEDS.HEX (TOPIC V-0.2)

Программа "бегущий огонь" предназначена для использования четырех светодиодов, но вы можете изменять значение MSB для использования большего количества светодиодов: для количества светодиодов 5, 6, 7 и 8 значения MSB должны быть 4, 5, 6 и 7 соответственно.

В программе не используются команды TRIS и OPTIONS, не рекомендованные к применению фирмой "MicroChip", т.к. они могут не поддерживаться в будущих микроконтроллерах. Таким образом, в отличие от предыдущей программы, во время ассемблирования не будут генерироваться предупреждения Для предотвращения генерации MPASM'мом сообщений о корректном использовании регистровых банков необходимо инвертировать старший значащий бит в любом адресе, приходящемся на банк 1 (например, использовать TRISB^80H вместо обычного TRISB, где оператор "^" означает битовое "исключающее ИЛИ"). Это — одна из уловок, которые используются для подавления вывода предупреждающих сообщений MPASM.

В качестве заключительного примера рассмотрим программу, когорая демонстрирует такие же эффекты, как и программа WALKLEDS на 4-х светодиодах. Вы обратите внимание на то, что она значительно больше по объему и ее нельзя назвать примеров эффективного программирования. Она всего лишь предназначена для демонстрации нескольких ключевых идиом и технологий PIC микропроцессоров. Кроме прочего, она содержит обработчик прерываний, процедуры записи и чтения данных встроенного FLASH EEPROM и демонстрирует, как в PIC реализован принцип табличного поиска. Программа содержит примеры одной из наиболее удобных особенностей MPASM, такой как два вида макрокоманд. Она также показывает, как отменить заданное по умолчанию основание системы счисления (шестнадцатеричное) для чисел и как внедрить информацию о конфигурации микроконтроллера. По крайней мере, по стилю она больше напоминает "настоящую" программу для микроконтроллера.

Читайте так же:
Счетчики банкнот sbm 1100

Основные характеристики. Микроконтроллеры подгруппы PIC16F8X относятся к семейству 8-разрядных КМОП микроконтроллеров группы PIC16CXXX

Микроконтроллеры подгруппы PIC16F8X относятся к семейству 8-разрядных КМОП микроконтроллеров группы PIC16CXXX, для которых характерны низкая стоимость, полностью статическая КМОП-технология и высокая производительность.

В состав подгруппы входят МК PIC16F83, PIC16CR83, PIC16F84 и PIC16CR84. Основные характеристики МК подгруппы PIC16F8X приведены в табл. 5.1.

Все микроконтроллеры подгруппы PIC16F8X используют гарвардскую архитектуру с RISC-процессором, обладающую следующими основными особенностями:

  • используются только 35 простых команд;
  • все команды выполняются за один цикл (400 нс при частоте 10 МГц), кроме команд перехода, которые требуют 2 цикла;
  • рабочая частота 0 Гц . 10 МГц;
  • раздельные шины данных (8 бит) и команд (14 бит);
  • 512 х 14 или 1024 х 14 память программ, выполненная на ПЗУ или электрически перепрограммируемой Flash- памяти;
  • 15 восьмиразрядных регистров специальных функций (SFR);
  • восьмиуровневый аппаратный стек;
  • прямая, косвенная и относительная адресация данных и команд;
  • 36 или 68 восьмиразрядных регистров общего назначения (GPR) или ОЗУ;
  • четыре источника прерывания:
    • внешний вход RB0/INT;
    • переполнение таймера TMR0;
    • изменение сигналов на линиях порта B;
    • завершение записи данных в память EEPROM;

    Микроконтроллеры подгруппы PIC16F8X обладают развитыми возможностями ввода/вывода:

    • 13 линий ввода-вывода с индивидуальной установкой направления обмена;
    • высокий втекающий/вытекающий ток, достаточный для управления светодиодами:
    • максимальный втекающий ток – 25 мА;
    • максимальный вытекающий ток – 20 мА;
    • 8-битный таймер/счетчик TMR0 с 8-битным программируемым предварительным делителем.

    Специализированные микроконтроллерные функции включают следующие возможности:

    • автоматический сброс при включении (Power-on-Reset);
    • таймер включения при сбросе (Power-up Timer);
    • таймер запуска генератора (Oscillator Start-up Timer);
    • сторожевой (Watchdog) таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность;
    • EEPROM бит секретности для защиты кода;
    • экономичный режим SLEEP;
    • выбираемые пользователем биты для установки режима возбуждения встроенного генератора;
    • последовательное встроенное устройство программирования Flash/EEPROM памяти программ и данных с использованием только двух выводов.

    КМОП технология обеспечивает МК подгруппы PIC16F8X дополнительные преимущества:

    • статический принцип работы;
    • широкий диапазон напряжений питания: 2,0 . 6,0 В;
    • низкое энергопотребление:
    • менее 2 мА при 5В и 4МГц;
    • порядка 15 мкА при 2В и 32КГц;
    • менее 1 мкА для SLEEP-режима при 2В.

    Микроконтроллеры подгруппы PIC16F8X различаются между собой только объемом ОЗУ данных, а также объемом и типом памяти программ. Наличие в составе подгруппы МК с Flash-памятью программ облегчает создание и отладку прототипов промышленных образцов изделий.

    голоса
    Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector