Бегущие огни на atmega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Бегущие огни на atmega8

Сообщение amirus »

Доброго всем времени суток. Это моя первая программка, прошу сильно не пинать. Сделал бегущие огни, по 2 светодиода. один такт в право и один влево. Подскажите пожалуйста, как заставить выполнять определенное количество тактов, к примеру 3 влево и после 3 в право. Просто повторять код, выполняет, но код у меня получается огромный. Заранее благодарен.
Вложения
led.rar
(26.34 КБ) 323 скачивания
Реклама
phenomen
Потрогал лапой паяльник
Сообщения: 310
Зарегистрирован: Пт дек 17, 2010 14:41:25

Re: Бегущие огни на atmega8

Сообщение phenomen »

Используйте циклы:

Код: Выделить всё

int i;
   for(i=0;i<10;i++)
    {
        ...
    }
или

Код: Выделить всё

int i=0;
while(i<10){
  .....
  i++;
}
кстати, Вам сюда http://radiokot.ru/forum/viewtopic.php?f=20&t=37190
Реклама
xVekx
Встал на лапы
Сообщения: 125
Зарегистрирован: Вс мар 01, 2009 20:41:19

Re: Бегущие огни на atmega8

Сообщение xVekx »

Код: Выделить всё

#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);
         }
       }
}
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Бегущие огни на atmega8

Сообщение amirus »

Спасибо. Слишком уж сложно для меня. Не могли бы вы показать на примере с использованием моего исходника. Спасибо.
Реклама
Эиком - электронные компоненты и радиодетали
phenomen
Потрогал лапой паяльник
Сообщения: 310
Зарегистрирован: Пт дек 17, 2010 14:41:25

Re: Бегущие огни на atmega8

Сообщение phenomen »

Код: Выделить всё

       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мсек
     } 
 }     
};  
Реклама
Аватара пользователя
amirus
Открыл глаза
Сообщения: 63
Зарегистрирован: Пт авг 07, 2009 06:55:32
Откуда: Asia.

Re: Бегущие огни на atmega8

Сообщение amirus »

Спасибо огромное!
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»