Микроконтроллеры семейства AVR. Воробьева Г.С. - 75 стр.

UptoLike

Составители: 

_delay_loop_2(100); //Задержка
}
}
}
Пример 2.
К выводам порта D подключены переключатели, а к выводам
порта B – светодиодные индикаторы. Эффект "бегающих глаз" может
быть создан путем поочередное включения двух светодиодов при
выключенных остальных или наоборотпоочередного выключения
двух светодиодов при включенных остальных. Один из этих двух типов
выбирается с помощью переключателя, подсоединенного к выводу 7
порта D. Остальные входы этого порта определяют скорость "бега"
(коэффициент от 0 до 127)..
#include <avr/io.h>
#include <avr/delay.h>
unsigned long DelayCount; /* Переменная DelayCount - значение
временной задержки, определяющей скоростью "бега глаз"*/
unsigned long Velocity = 0; //Переменная для "скорости бега глаз "
unsigned char EyeType = 0; //Переменная для типа "глаз"
void ShowEyes(int i) //Функция отображающая "глаза"
{
if(EyeType) PORTB=~i //Инвертируем перед выводом на порт
else PORTB = i;
_delay_loop_2(DelayCount);
}
int main (void)
{
DDRB = 0b1111111; //Инициализация портов
DDRD = 0;
while(1)
{
Velocity = PIND //Считываем значение переключателей
if (Velocity > 127) //Если больше, то значит вывод 7 отжат
{
Velocity -= 127; //Получаем нормальную "скорость бега"
Eyetype = 1; //"Бегать" будет 1, то есть два светодиода гореть
75