Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
08.08.2013
Размер:
320.51 Кб
Скачать

Лабораторная работа №4

ИЗУЧЕНИЕ ОСНОВНЫХ ПРИНЦИПОВ ПРОГРАММИРОВАНИЯ ОПЕРАЦИЙ ВЫВОДА МИКРОКОНТРОЛЛЕРОВ

НА ПРИМЕРЕ УПРАВЛЕНИЯ БЛОКОМ СВЕТОДИОДОВ

Цель работы: изучить архитектуру и принципы программирования микроконтроллера AVR АТMEGA128 на примере разработки программы для управления блоком светодиодов; структурную организацию, состав и возможности компонентов лабораторного макета, освоить пользовательский интерфейс среды программирования C Code Vision AVR.

1 Указания по организации самостоятельной работы

Перед работой необходимо проработать теоретический материал по литературе [1, 2] и конспект лекций, ознакомиться со структурой и принципами функционирования микроконтроллера AVR АТMEGA128, системой команд и основами программирования на языке Assembler. При подготовке к лабораторной работе необходимо составить предварительные варианты листингов программ, указываемых в пунктах практического выполнения работы.

1.1 Принципы программного управления светодиодами, подключенными к внешним выводам портов ввода/вывода микроконтроллера AVR ATMEGA128.

Согласно технической документации на выходных линиях микроконтроллеров AVR при уровне напряжения, соответствующем “логическому нулю”, ток нагрузки составляет порядка 20 мА. Стандартные светодиоды потребляют ток в пределах 320 мА при рабочем напряжении порядка 1,54 В. Это позволяет непосредственно подключать светодиод к выходной линии порта последовательно с ограничивающим ток резистором (см. рисунок 1). Второй вывод цепи необходимо подсоединить к положительному полюсу источника питания (+5 В).

Для управления светодиодом необходимо подавать на соответствующий вывод микроконтроллера уровни “логического нуля” или “логической единицы”. При появлении на выводе микроконтроллера, к которому подключен светодиод, уровня «логического нуля», падение напряжения на светодиоде будет достаточным для свечения. При формировании на соответствующем выводе микроконтроллера напряжения “логической единицы” падения напряжения на светодиоде не будет, и он будет погашен.

Рисунок 1 – Схема подключения светодиода к выходу порта

ввода/вывода микроконтроллера AVR

Для управления уровнями напряжения на выходных линиях микроконтроллера можно применять алгоритмы маскирования или, непосредственно, команды для работы с битами (cbi, sbi). Прямое обращение к регистрам портов ввода/вывода на языке Assembler обеспечивается с помощью команд in и out. Компилятор языка С допускает использование идентификаторов регистров ввода/вывода: DDRX – регистр управления направлением передачи данных, PORTX регистр вывода данных, PINX – регистр ввода данных, где Х – обозначение порта ввода/вывода. Например, программно доступные регистры порта А обозначаются как: DDRA, PORTA, PINA. Если линия порта ввода/вывода Х программируется на вывод, то в соответствующем бите регистра управления направлением передачи данных DDRX должна быть установлена 1, если на ввод – то 0. Рассмотрим примеры:

unsigned char a, b; декларация переменных а и b размером в байт;

DDRB=0b0101110; линии 0, 5 и 7 порта В запрограммированы на вывод данных, остальные (1,2,3,6) – на ввод.

DDRD=0xFF; установка всех линий порта D в режим вывода данных;

а=0х12; присвоить переменной а значение 12h;

PORTD = a; вывести данные (значение переменной а) в порт вывода D.

DDRС=0; установка всех линий порта С в режим ввода данных;

b=PINС; записать данные из порта ввода С в переменную b.

Для работы с отдельными разрядами регистров портов ввода/вывода на языке С можно использовать конструкции: POTTX.NиPINX.N, гдеN– номер бита. Например,

PORTB.2=0; второй бит порта D сбросить в 0;

PORTB.4=1; четвертый бит порта D установить в 1;

PORTD.5=PINF.3; пятому биту порта D присвоить значение третьего

бита порта F;

Наиболее универсальным способом работы с отдельными разрядами регистров портов ввода/вывода является использование масок и поразрядных логических операций.