Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

В Программе 11.1,б приведена эквивалентная реализация такого обмена на языке Си. Эта программа имеет похожую структуру; обратите только внимание на то, как осуществляется проверка состояния входа. Для этого используется конструкция вида while (RFD) {;}, которая ничего не делает ({;} является пустым оператором) до тех пор, пока при считывании вывода, названного RFD, не возвращается ИСТИНА, т. е. ненулевое значение. Когда RFD становится равным 0, т. е. на выводе RA1 появляется НИЗКИЙ уровень, цикл завершается и управление передается на следующий оператор программы. В конце программы имеется аналогичная конструкция while(!RFD) {;}, в которой используется оператор языка Си «!» (NOT). В данном случае выход из цикла произойдет при установке RFD в 1 (операция! RFD вернет нулевое значение).

Встроенная функция delay_cycles () формирует дополнительную задержку заданной длительности (в машинных циклах) и при необходимости может быть заменена любой подходящей функцией задержки.

Может показаться, что эти программы бесполезны, поскольку содержимое регистра h’20’ нигде не задается и не изменяется. Однако в реальной жизни данное значение могло бы изменяться в каком-либо прерывании, скажем, по сигналу от внешнего или внутреннего таймера. Также в этот регистр по прерыванию от модуля АЦП мог бы заноситься результат преобразования. Все эти модули мы будем рассматривать в последующих главах книги.

Наша программа рассчитана на микроконтроллер PIC16F84A. Разумеется, она может выполняться и на других моделях семейства, следует только быть более внимательными при использовании моделей, имеющих аналоговые модули. В этих моделях выводы портов, используемые также и аналоговыми модулями, после сброса работают как аналоговые входы. Так сделано потому, что аналоговое напряжение, формируемое внешней схемой, может повредить входные транзисторы, рассчитанные на работу с логическими сигналами. Поэтому если программист собирается использовать указанные выводы для ввода/вывода цифровых сигналов, то ему необходимо задать такую конфигурацию аналогового модуля, при которой требуемые выводы подключены не к модулю, а к цифровому порту. Обычно эта операция выполняется во время процедуры инициализации вместе с установкой значений регистров TRIS. К примеру, в моделях PIC16F87X входы модуля АЦП выведены на линии порта А. Чтобы выводы RA[3:0] и RA5 работали как цифровые, необходимо загрузить число Ь’00000110’ в 1-й регистр управления АЦП ADCON1 (см. Рис. 14.12 на стр. 512). Поскольку этот регистр находится в 1-м банке, то к командам

movlw b’00000110’; Все выводы — цифровые

movwf ADCON1

следует добавить команды, осуществляющие переключение банков памяти. В компиляторе CCS для этих целей предусмотрена специальная функция setup_adc_ports (), вызов которой с параметром setup_adc_ports (NO_ANLOGS) выполняет те же самые операции.

Чтобы хорошо понимать характеристики портов ввода/вывода, необходимо знать, как они устроены. Несколько упрощенная схема одного канала порта ввода/вывода показана на Рис. 11.3. Основными элементами этой схемы являются D-триггер данных и тристабилъный (с тремя состояниями) буфер данных.

Рис. 11.3.Упрощенная схема одной линии порта ввода/вывода

• Запись в порт вызывает переключение D-триггера данных, в результате чего в него будет записано значение, находящееся на линии шины данных. Эти данные будут храниться до тех пор, пока на микроконтроллер подается напряжение питания (см. Рис. 2.16, в и г на стр. 46). К примеру, в результате выполнения команд

movlw b’11111111’; Все биты рабочего регистра установлены в 1

movwf h’06’; Копируем его в порт В (регистр h’06’)

во все восемь D-триггеров, составляющих регистр порта В (PORTB), будет записана лог. 1.

Установка битов порта будет происходить независимо от того, как сконфигурированы его выводы (на вход или на выход). Однако для выдачи состояния триггера на вывод микроконтроллера должен быть включен буфер TRIS (тристабильный). В этом случае, как показано на Рис. 11.4, б, триггер данных оказывается напрямую подключенным к остальным узлам схемы.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки