роботы робототехника микроконтроллеры

Мигание светодиодом с помощью таймера


/*******************************************************************
 Title:		Пример мигания светодиодом с помощью таймера
 Сopyright:	myROBOT, http://myrobot.ru
 Date:		апрель 2011
 Software:	AVR-GCC (WinAVR)
 Hardware:	ATmega8, 1 MHz

 Description:
 Пример мигания светодиодом с помощью 8-разрядного таймера.
 Светодиод подключается к выводу PB1.

*******************************************************************/

   #define F_CPU 1000000UL  // 1 MHz
   #include <avr/io.h>
   #include <util/delay.h>
   #include <avr/interrupt.h>


SIGNAL(SIG_OVERFLOW0)   // подпрограмма обработки прерывания по 
                        //  переполнению таймера
{
   TCNT0=0x00; // сбрасываем счетный регистр таймера/счетчика T0

   if (PINB & (1<<PINB1)) // переключаем светодиод на линии PB1
		PORTB &= ~_BV(PB1);
   else 
		PORTB |= _BV(PB1);
}



   int main(void)      // начало основой программы
   {

      DDRB = 0xff;   // все выводы порта B сконфигурировать как выходы
      PORTB = 0x00;  // установить "0" на всех линиях порта B


      TIMSK =0b00000001;  // записываем 1 в бит TOIE0 регистра TIMSK
                          // устанавливаем флаг разрешения прерывания
                          // по переполнению таймера/счетчика T0

      TCNT0=0x00;   // сбрасываем счетный регистр таймера/счетчика T0

      TCCR0=0b00000101;   // устанавливаем предделитель CK, 
                          // используя биты CS00, CS01, CS02


      sei(); // разрешаем прерывания;


        while (1) {}  // бесконечный цикл


   }   // закрывающая скобка основной программы

  1. WIKI (главная)
  2. ОСНОВЫ
  3. КОМПОНЕНТЫ
  4. МИКРОКОНТРОЛЛЕРЫ
  5. ПРОГРАММИРОВАНИЕ
  6. ПРОЕКТЫ
  7. РОБОТЫ
  8. СОВЕТЫ и ХИТРОСТИ
.