Бегущие огни на atmega8
Бегущие огни на atmega8
Доброго всем времени суток. Это моя первая программка, прошу сильно не пинать. Сделал бегущие огни, по 2 светодиода. один такт в право и один влево. Подскажите пожалуйста, как заставить выполнять определенное количество тактов, к примеру 3 влево и после 3 в право. Просто повторять код, выполняет, но код у меня получается огромный. Заранее благодарен.
- Вложения
-
- led.rar
- (26.34 КБ) 323 скачивания
- Реклама
Re: Бегущие огни на atmega8
Используйте циклы:
или
кстати, Вам сюда http://radiokot.ru/forum/viewtopic.php?f=20&t=37190
Код: Выделить всё
int i;
for(i=0;i<10;i++)
{
...
}Код: Выделить всё
int i=0;
while(i<10){
.....
i++;
}Re: Бегущие огни на atmega8
Код: Выделить всё
#define BIT(B) (1<<B)// преобр. номера бита в позицию в байте
#define SETBIT(ADDRESS,B) (ADDRESS |= BIT(B))// установка бита
int main()
{
unsigned char i=0
while(true)
{
for(i=0;i<3;i++)
{
delay(time);
PORTB=0;
SETBIT(PORTB,i);
}
for(i=0;i<3;i++)
{
delay(time);
PORTB=0;
SETBIT(PORTB,3-i);
}
}
}Re: Бегущие огни на atmega8
Спасибо. Слишком уж сложно для меня. Не могли бы вы показать на примере с использованием моего исходника. Спасибо.
Re: Бегущие огни на atmega8
Нужен код трижды бегущего огня а не по трем диодамКод: Выделить всё
for(i=0;i<3;i++) { delay(time); PORTB=0; SETBIT(PORTB,i); }
Код: Выделить всё
int i;
....
while (1)
{
// Place your code here
//if (PIND.0==1) //проверка нажатия кнопки
// Сдвиг в право
for(i=0;i<3;i++)
{
rab=0b11000000; //запись начального значения
while (rab!=0)
{
PORTB=rab^0xFF; //запись в порт с инверсией
rab=rab >> 1; //сдвиг разрядов
delay_ms (200); //задержка в 200мсек
}
}
//else
//сдвиг влево
for(i=0;i<3;i++)
{
rab=0b00000011; //запись начального значения
while (rab!=0)
{
PORTB=rab^0xFF; //запись в порт с инверсией
rab=rab << 1; //сдвиг разрядов
delay_ms (200); //задержка в 200мсек
}
}
};
- Реклама
Re: Бегущие огни на atmega8
Спасибо огромное!


