Разработка лабораторного макета и системы лабораторных работ для изучения микроконтроллера PIC16C84

Страницы работы

Фрагмент текста работы

Данная лабораторная работа предназначена для ознакомления с возможностями ввода-вывода микроконтроллера PIC16C84. Методика с текстом программы по данной работе приведена в приложении. Тестовая программа в данной работе выполняет следующие функции : В обычном режиме содержимое бита 1 порта В отображается на бит 3 порта А. Обновление состояния происходит по прерыванию от порта В. На остальных трех индикаторах отображается переменная из памяти. При появлении сигнала высокого уровня на бите 2 порта B бит 3 порта А переключается на ввод и при переключении на нем с низкого на высокий уровень увеличивается значение переменной и отображается на индикаторах. При появлении сигнала низкого уровня на  бите 2 порта В бит 3 порта А опять переключается на вывод и программа возвращается в обычный режим. Далее идет общий обзор портов микроконтроллера PIC16C84.

PORTA-для PICI6C84 - 5-разрядный регистр. Контакт RA4/TOCKI - на входе имеет триггер Шмидта, а на выходе открытый сток выходного транзистора. Все остальные контакты порта RA имеют входные буферы TTL и полные выходные драйверы КМОП.

Все контакты можно конфигурировать как выходы или входы программированием регистра TRISA. Запись "1" в соответствующие разряды регистр TRISA переводит выход в режим высокого импеданса. Запись "0" в регистр TRISA открывает выходные драйверы на выбранных контактах. После записи данных в регистр PORTA они автоматически появляются на контактах I/O откуда и считывается их состояние. Все операции записи представляют собой операции "чтение - модификация - запись". Следовательно, запись в порт подразумевает, что данные считываются с контактов порта, это значение изменяется и затем записывается в регистр данных порта. Контакт RA4 мультиплексирован с входом синхронизации модуля таймера 0 и называется RA4/TOCKI.

Примечание: После "Сброса" при включении питания все контакты конфигурированы как аналоговые входы и читаются как "0".

Регистр TRISA управляет направлением контактов RA даже когда они используются как аналоговые входы. При использовании контактов как аналоговых входов, пользователь должен следить за тем, что бы в регистре TRISA соответствующие разряды были запрограммированы как входы.

Инициализация PORTA

CLRF           PORTA  инициализация выходных данных PORTA

BSF              STATUS,RPO ;установить обращение к банку 1        

MOVLW     OxCF      Значение для инициализации порта:

MOVWF     TRISA    установить RA<3:0> входы, RA,<5;4> выходы, TRISA <7,6> всегда читается как '0'.

РЕГИСТРЫ PORTB И TRISB

PORTB - это 8-разрядный двунаправленный порт. Любой разряд порта можно конфигурировать как. выход или вход программированием соответствующего разряда регистра TRISB. Запись "1" в соответствующие разряды регистра TRISB переводит выходы в режим высокого импеданса; запись "0" открывает выходные драйверы на выбранных контактах.

Все контакты PORTB могут быть подтянуты К высокому уровню внутренними ключами. Включение ключей выполняется записью "0" в разряд 7 регистра OPTION (бит RBPU). Ключи автоматически выключаются, когда контакт порта конфигурируется как выход. После "Сброса" при включении питания ключи закрываются.

Четыре контакта PORTB (RB7:RB4) формируют прерывание при изменении состояния. Контакты, сконфигурированные   тояько как входы, могут вызывать это прерывание (то есть любой контакт RB7:RB4, сконфигурированный как выход, исключается из формирования этого прерывания). Состояние сигналов f на контактах (RB7:RB4) сравнивается со старым. Значением, записанным при последнем чтении PORTB. Сигналы "несоответствия" состояния на контактах RB7:RB4 объединяются по "ИЛИ" и общий сигнал генерирует прерывание изменения состояния порта RB флажком RBIF (INTCON < 0>).   Более подробная информация по портам микроконтроллера PIC16С84 приведена в приложении.

3.3.3 Работа с таймером

Данная лабораторная работа предназначена для ознакомления с таймером микроконтроллера PIC16C84. Методика с текстом программы по данной работе приведена в приложении. Тестовая программа в данной работе выполняет следующие функции : По прерыванию от таймера увеличивается значение переменной в памяти и отображается на светодиодах порта А, при изменении уровня на бите 2 порта B в изменяется коэффициент деления предделителя. Далее идет общий обзор таймера  микроконтроллера PIC16C84.

Модуль Таймера - это простой 8 разрядный счетчик с переполнением. Источником синхронизации может быть внутренний генератор системы (Fosc /4) или внешний. Когда источник синхронизации внешний, модуль таймера может быть запрограммирован на счет по переднему или заднему фронту входного сигнала.                                   

К модулю таймера может быть подключен предварительный счетчик (предделитель). Предделитель подключается к таймеру или к сторожевому таймеру WDT. Бит PSA (OPTION <3> ) определяет назначение предварительного счетчика, а биты PS2:PSO (OPTION<2:6>) устанавливают коэффициент деления предварительного счетчика. Для таймера 0 можно установить следующие коэффициенты деления предварительного счетчика: 1:1 (когда предварительный счетчик подключен к сторожевому таймеру), 1:2, 1:4, 1:8, 1:16 и 1:32, 1:64, 1:128 и 1:256.

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

МОДУЛЬ ТАЙМЕРА 0

Модуль таймера  - это таймер/счетчик, который имеет следующие возможности:

•• 8-разрядный таймер / счетчик

•• чтение и запись счетчика

•• 8-разряднй программируемый предварительный счетчик

•• выбор внутренней или внешней синхронизации

•• прерывание по переполнению, переход от FFh к 00h

• выбор фронта при внешней синхронизации

Режим таймера устанавливается при обнулении бита TOCS (OPTION <5>). В режиме таймера модуль таймера увеличивается на каждом цикле команд (без предварительного счетчика). Если в регистр TMR0 записано новое значение, то в течении следующих двух циклов команд приращение не выполняется. Пользователь не может корректировать работу таймера записью нового значения в регистр TMR0. Режим счетчика задается установкой бита TOCS (OPTION <5>). В режиме счетчика таймер 0 увеличивается по каждому переднему или заднему фронту сигнала на контакте RA4/TOCKI, фронт приращения таймера определяется состоянием бита TOSE (OPTION<4>). Если бит TOSE = "0", то выбирается передний фронт сигнала.

Предделитель может быть подключен к модулю таймера или к сторожевому таймеру. Назначение предделителя управляется программно модификацией бита PSA (OPTIOI1 <3>). Обнуление бита PSA подключает предделитель, к модулю таймера. Предделитель не читается и не записывается. Когда предделитель подключен к модулю таймера , то его коэффициент деления может принимать следующие значения: 1:2, 1:4 .... 1:256.

Более подробная информация по таймеру микроконтроллера PIC16С84 приведена в приложении.

3.3.4 Работа с EEPROM

Данная лабораторная работа предназначена для ознакомления с EEPROM   микроконтроллера PIC16C84. Методика с текстом программы по данной работе приведена в приложении. Тестовая программа в данной работе выполняет следующие функции : Значение переменной EEPROM считывается и заноситься в переменную в памяти, затем переменная в памяти отображается на индикаторах, при появлении высокого уровня на бите 2 порта B переменная в памяти увеличивается и записывается в EEPROM. При выключении микроконтроллера значение переменной сохраняется, и при следующем включении отображается на индикаторах. Далее идет общий обзор EEPROM микроконтроллера PIC16C84.

Flash-ПЗУ данных доступно для чтения и записи во время нормальной работы. Эта память не отображается непосредственно в адресное пространство памяти данных, а доступна через регистры специального назначения(PCH). Для доступа к Flash-ПЗУ данных используются 4 РСН:

-  EECON1

-  EECON2

-  EEDATA

-  EEADR

Регистр EEDATA хранит данные чтения/записи, EEADR содержит адрес ячейки, к которой производиться доступ. PIC16C8X имеет Flash-ПЗУ данных объемом 64 байт по адресам от 00h до 3Fh.

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

При установлении защиты кода ЦПУ по-прежнему имеет доступ на чтение/запись к Flash-ПЗУ данных, но программатор не имеет возможности читать и записывать в него.

Регистр EEADR может адресовать до 256 байт Flash-ПЗУ данных из которых реализованы только 64 байта. Старшие два бита участвуют в формировании адреса, поэтому для обращения к 64-х байтному пространству их необходимо устанавливать в 0.

Регистр EECON1 содержит пять управляющих битов, три старших бита не реализованы. Управляющие биты RD и WR инициируют соответственно чтение и запись. Программно эти биты могут быть установлены только в 1. В 0 они устанавливаются аппаратно только по завершению чтения или записи. Невозможность программного установления этих битов в 0 позволяет предотвратить преждевременное завершение операции записи.

Если бит  WREN установлен в 1, то запись во Flash-ПЗУ данных разрешена. После РОR этот бит установлен в 1. Бит WRERR устанавливается в 1, если операция записи прерывается сбросом по –MCLR или по WDT во время нормальной работы. В этой ситуации после сброса регистры EEDATA и EEADR останутся без изменения, и пользователь может проверить состояние бита WRERR и повторить запись.

При завершении записи флаг EEIF устанавливается в 1. После проверки его можно программно установить в 0.

Регистр EECON2 не реализован физически, его чтение возвращает 00h. Регистр EECON2 используется исключительно в цикле записи Flash-ПЗУ данных.

3.3.5 Работа с WDT

Данная лабораторная работа предназначена для ознакомления с WDT   микроконтроллера PIC16C84. Методика с текстом программы по данной работе приведена в приложении. Тестовая программа в данной работе выполняет следующие функции : При включении микроконтроллера он поочередно подает высокий уровень на светодиоды порта А. В перерывах между этим он входит в спящий режим и вызывается из него прерыванием от WDT. Далее идет общий обзор WDT микрокон-троллера PIC16C84.

СТОРОЖЕВОЙ ТАЙМЕР (WDT)

Сторожевой таймер функционирует от своего RC генератора, который не требует никаких внешних компонентов. Этот RC генератор функционирует не зависимо от основного генератора на контактах OSC1/CLKIN и OSCI/CLFCN. Это означает, что WDT функционирует в режиме останова после команды SLEEP. Окончание счета WDT в процессе выполнения программы, генерирует сброс устройства (сброс от сторожевого таймера). Если устройство находится в режиме останова, то окончание счета WDT пробуждает   устройство для продолжения программы. Если бит WDTE  в  слове конфигурации сброшен, то WDT отключен. Команды CLRWDT и SLEEP сбрасывают WDT и предделитель, если он назначен к WDT, предотвращают окончание счета и условие формирования сброса устройства. Бит ТО в регистре STATUS будет сброшен после окончания счета сторожевого таймера.

ПЕРИОД WDT

WDT имеет номинальный период счета 18 мС (без предделителя). Период счета зависит от температуры, напряжения питания Voo и может изменятся в зависимости от модификации и партии устройств. Если требуется более длительный период счета, то, установкой соответствующих разрядов регистра OPTION в программном обеспечении, к WDT может быть подключен предделитель с коэффициентом деления до 1:128. Таким образом, период счета может быть увеличен до 2,3 с.

РЕКОМЕНДАЦИИ ДЛЯ ПРОГРАММИРОВАНИЯ WDT

Необходимо принимать во внимание что даже при самых плохих

Похожие материалы

Информация о работе