Микроконтроллер PIC16F690

7-11-2013, 17:45
Просмотров: 2448
Программирование микроконтроллеров PIC, главным образом, заключается в записи данных в массивы регистров. Доступны два вида регистров
Микроконтроллер PIC16F690

:
• регистры специального назначения - содержат данные, имеющие отношение к входным и выходным портам, компараторам таймерам, другим функциям, а также - общему управлению микроконтроллером (подробнее рассматриваются далее);
• регистры общего назначения хранят обрабатываемые программой данные.
Данные в регистрах хранятся в виде байтов и при выключении питания теряются. В регистрах специального назначения данные принимают исходные значения по умолчанию при подаче питания. Зачастую значения по умолчанию - как раз то, что требуется, а доступ к этим регистрам необходим только для установки другого значения или чтения данных.
Выводы и порты
Рассматриваемая здесь модель F690 выполнена в плоском корпусе с 20-ю выводами с двухрядным расположением. Существуют и другие варианты корпусов (например, для поверхностного монтажа).
Все выводы, за исключением 1 и 20, могут быть использованы для ввода-вывода.
Еще один пример - вывод 10 (RB7). В случае использования приемопередатчика USART (рассматривается ниже) этот вывод необходимо задействовать для передачи данных в другой микроконтроллер PIC по физической или радиолинии. Более подробно этот особый вывод рассматривается чуть позже.

Разряды
Во всех описаниях в этой книге используется следующая терминология. Восемь разрядов байта нумеруются справа (разряд 0, младший, LSB) налево (разряд 7, старший, MSB).
Ссылаясь на некоторый разряд регистра, мы указываем имя регистра, а после него - номер разряда в угловых скобках. Например, разряд RB5 (разряд 5 регистра PORTB) обозначается как RB. Это же соглашение используется во всех спецификациях микроконтроллеров PIC.
Диапазон разрядов обозначается путем указания его старшего и младшего разрядов (именно в таком-порядке). Например, младшие четыре разряда PORTB - это RB.

Регистры специального назначения
Эти регистры контролируют все аспекты работы микроконтроллера PIC. Операции записи/чтения данных для них выполняются побайтно или с отдельными разрядами. В некоторых случаях разряды предназначены только для чтения или только для записи. Регистры специального назначения вместе с восьмиразрядным рабочим регистром (обозначайся как w) формируют рабочую среду.
Регистры специального назначения размещены в четырех областях памяти (банки от 0 до 3), причем в каждый момент времени можно осуществлять доступ только к одной из таких областей. Некоторые регистра (например, STATUS) находятся в одной и той же позиции во всех четырех банках, другие же входят в состав только одного или двух банков. Например, регистр TRISA (определяет, какие разряды порта А будут кодами, а какие - выходами) присутствует только в банках 0 и 3.
Банк, доступный в данный момент, определяется значениями разрядов 5 и 6 регистра STATUS. Например, для выбора банка 2 следует установить разряды в двоичное 10 (десятичное 2). Контроль текущего банка - крайне важный элемент программирования. В обычно случае используется банк 0, содержащий наиболее популярные регистры, наподобие STATUS и регистров портов.
Рассмотрим пример переключения банков. Первая задача большинства программ - инициализация входов и выходов. После подачи питания все выводы являются входами, поэтому для того, чтобы, например, включить светодиод, мы должны сделать соответствующий вывод выходом. Светодиод может быть подключен между выводом 16 и линией 0 В. Вывод 16 - это RC0, соответствующий разряду 0 порта С.
Предположим, мы работаем с банком 0. При этом STATUS = 0 0. Для того, чтобы сделать RC0 выходом, мы переключаемся в банк 11 путем установки разряда STATUS. Затем мы делаем RC0 выходом, обнулив соответствующий разряд в регистре TRISC. После этого мы 3 возвращаемся в банк 0 путем обнуления разряда 5 в регистре STATUS.
Фрагмент программы, выполняющий перечисленные операции, выглядит следующим образом:
Множество других примеров переключения банков представлено в программах, рассмотренных.
Микроконтроллер PIC16F690

Конфигурационное слово
Это 14-разрядное слово, которое хранится по специальному адресу в памяти, определяет характер работы микроконтроллера. Его определение - одна из первостатейных задач программы. Не вдаваясь в детали ряда функций, отметим, что конфигурационное слово, используемое для программ в этой книге, имеет следующую структуру:
• - не реализовано, устанавливается в 11;
• - разрешение или запрет функций для максимально простой работы (устанавливайте в 0 0 0011);
• - делает вывод 3 (RA4) цифровым входом (устанавливайте , в 0);
• - включает таймер подачи питания (устанавливайте в 0);
• - отключает сторожевой таймер (устанавливайте в 0);
• - выбирает INTOSCIO, внутренний осциллятор с выводом 2 (RA5) для обычного ввода-вывода, а не выхода осциллятора (устанавливайте в 10 0).
В совокупности эти параметры дают значение 11 0000 1100, что в шестнадцатеричном виде выглядит как 30С4.
Использование других настроек дает незначительное различие в характере выполнения программ, однако в наших программах мы принимаем, что разряд установлен в 0, и выбран внутренний осциллятор.

Порты
Порты соединяют микроконтроллер PIC со внешним миром. Каждому порту соответствует регистр специального назначения в банках памяти 0 и 2: PORTA, PORTB и PORTC. Хотя все эти регистры - байтовые, в портах А и В реализованы не все каналы.
Одинаковые адреса в банках памяти 1 и 3 соответствуют регистрам трех состояний трех портов: TRISA, TRISB и TRISC. Эти регистры определяют, являются ли каналы входными или выходными. Установка соответствующего разряда в 1 делает канал входным, а в 0 - выходным.
При подаче питания все каналы устанавливаются как входы, поэтому, если их использование предполагается именно в такой конфигурации, то никаких действий предпринимать не требуется. Однако в микроконтроллере F690 каналы автоматически устанавливаются как аналоговые входы. Способ конфигурирования их в качестве цифровых входов будет рассмотрен в следующей главе.

Источник: delete-it.ru
Автор: ziko
Опубликовано пользователем: 81 (смотреть все)
Комментарии: