AVR:Пример c:Моргаем светодиодом

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск


<source lang="c"> //========================================================= // ATmega16 моргает светодиодом на порту PС0 21pin // используем библиотеки

  1. include <inttypes.h> // не верю не нужны здесь типы
  2. include <avr> // а вот это пожалуй да
  3. include <avr> // не верю какие int
  4. include <avr> // не верю

// Подпрограмма задержки AVR //на Intel за такое ставят двойки и выгоняют-- // Минимальная задержка с кварцем 4MHz, равна 1 ms // При пошаговой отладке эту функцию можно оключить void delay_ms(unsigned short ms){

  unsigned short outer1, outer2;    // init он и в африке Init
  outer1 = 200;                     // init он и в африке Init
  while (outer1) {                  // зациклиться кошмар :O
         outer2 = 1000;             // init он и в африке Init
         while (outer2) {           // еще зациклиться кошмар на кошмар :O
                while ( ms ) ms--;  // еще зациклиться кошмар на кошмар на кошмар:O
                outer2--;           // расcасыватся по единичке
         }
         outer1--;                  // расcасыватся по единичке
  }

}

// Основная программа =================================== void main(void){

    DDRC |= _BV(PC0);               // Установить линию 0 порта С в "1" т.е. на вывод
    while(1) {                      // Бесконечный цикл обязательный кошмар для микропроцессоров
          PORTC &= ~_BV(PC0);       // Сбросить бит PС0 в "0" = 0V, светодиод включен
          delay_ms(500);            // Ждем 0.5 сек.
          PORTC |= _BV(PC0);        // Установить бит PС0 в "1" = 5V, светодиод выключен
          delay_ms(500);            // Ждем 0.5 сек.
    }

} //======================================================= </source>

Avr primer led 1.jpg

Автор: Efremov Artem