PIC16C84 (или PIC16F84) фирмы "Microchip" - миниатюрный, но мощный
микроконтроллер. Он основан на EEPROM или "FLASH" технологии, позволяющей
перепрограммировать его буквально за секунды. Типовое количество циклов
перезаписи - около 1000. Из его 18-ти выводов 13 могут использоваться как
разряды ввода/вывода общего назначения. Когда они программируются на вывод, то
допускают ток "1" до 20мА и ток "0" до 25мА (более чем достаточный для подключения,
например, светодиодов). Это позволяет разрабатывать на данном микроконтроллере простые
и недорогие электронные устройства и делает его идеальным для желающих изучить
принципы работы микроконтроллеров.
Этот короткое руководство предназначено для людей, которые только что собрали или купили
программатор для PIC микроконтроллера и хотят убедиться, что оба, программатор и
микроконтроллер, работают. Для этого сначала необходимо обладать некоторыми знаниями
о структуре и функционировании PIC микроконтроллера. Это цоколевка выводов (см.рис.):
Эта программа написана для MPASM (бесплатный ассемблер от Microchip, доступный
по адресу http://www.microchip.com). Для
использования программы вы должны извлечь ее из этого файла любым редактором,
сохранить в другой файл (например LIGHTS.ASM), затем проассемблировать с помощью
MPASM (используйте команду "MPASM LIGHTS.ASM") для получения HEX файла LIGHTS.HEX,
который может быть загружен в микроконтроллер с помощью программатора. Не обращайте
внимания на замечания MPASM о том, что использование регистров TRIS и OPTION "не
рекомендуется". Убедитесь в том, что сторожевой таймер "watchdog" включен
и выбран RC-генератор.
Если у вас еще нет MPASM, то здесь представлен HEX-вариант приведенной выше программы:
:0C0000000030660062006300860A0328DE
:00000001FF
Вы можете записать эти две строки в файл LIGHTS.HEX без использования MPASM. Если вы
используете один из моих PIC программаторов (например TOPIC или PP), вы можете можете загрузить этот файл
с корректной конфигурацией с помощью следующей команды:
PP -RW8 LIGHTS.HEX (PP V-0.3)
PP -RW LIGHTS.HEX (PP V-0.4)
TOPIC -RWG LIGHTS.HEX (TOPIC V-0.2)
Программа использует таймаут "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 Ом между ножкой микроконтроллера и "землей" (см. схему). Следующая программа реализует эффект "бегущего огня":
Снова вы должны с указать программатору включить "watchdog" таймер и RC генератор. Если вы запишете указанные выше четыре HEX строки в файл (например, WALKLEDS.HEX), вы можете загрузить программу, используя программатор, указав ему следующие параметры:
Программа "бегущий огонь" предназначена для использования четырех светодиодов,
но вы можете изменять значение 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, такой как два вида макрокоманд. Она также показывает, как
отменить заданное по умолчанию основание системы счисления (шестнадцатеричное) для чисел
и как внедрить информацию о конфигурации микроконтроллера. По крайней мере, по стилю она
больше напоминает "настоящую" программу для микроконтроллера.