Изучаем микроконтроллеры AVR. Пишем следующую программу

Автор: g1ar от 5-02-2013, 00:46

Написание 2й программы неизбежно как падение капитализма, и поэтому мы сегодня напишем программу для крутой мигалки. Нам нужно будет не только сконфигурировать порты, но и задействовать кнопку (для этого будем использовать циклы for, while).
Принцип работы: мк ждёт нажатия кнопки, после чего происходит поочередное мигание светодиодов с частотой в 2Гц.
Самый простой способ использовать кнопку -  выставить порт к которому она подключена на вход, либо сконфигурировать только определенный вывод. Я буду использовать порт В для кнопки и порт D для светодиодов.

#include <mega8.h>
#include <delay.h>
// Declare your global variables here
 int i; //переменная для цикла
void main(void)
{PORTB=0xff; //вкл подтягивающие резисторы
DDRB=0x00; //весь порт как вход
PORTD=0x00; //все нули(GND)
DDRD=0xff; //весь порт как выход
 while (PINB.0==1) //проверяем состояние кнопки, если = 1, то разомкнута
      {     
      }           
 while (PINB.0==0) //кнопка замкнута
      { 
while (1) //запускаем бесконечный цикл
      {
      for(i=0;i<3;i++) //цикл выполнится 3 раза, т.е. наш светодиод мигнет столько же
      { PORTD.0=1; //выставили в 1 нулевой выход порта В
      delay_ms(500); //500мс задержка 
      PORTD.0=0; //выставили в 0 нулевой выход порта В
      delay_ms(500); }
      
      for(i=0;i<3;i++)
      {PORTD.1=1; //выставили в 1 первый  выход порта D
      delay_ms(500);
      PORTD.1=0; //выставили в 0  первый  выход порта D
      delay_ms(500);}  
      break; //Фуллстоп 
      }     
      }           
}


Теперь рассмотрим пару моментов.
Почему, когда кнопка разомкнута на входе "1" ? В общем, как я уже говорил, на входах висит слабая единица, которая возникает там благодаря подтягивающим резисторам (вход подключён к источнику питания резистором на 100КОм), когда мы замыкаем кнопку, то все внимание переходит к ней т.к. ток течет по наименьшему сопротивлению, и эта единица уходит через кнопку (уровень напряжения на входе падает и мы получаем "0").

Комманда PINx.x отслеживает состояние только для ВХОДОВ!

Если хотите переделать программу - валяйте, как пример можно сделать, чтобы светодиоды чередовались, творите.


Вот вам прошивка Project2.rar [395 b] (cкачиваний: 333) и скрин схемы:

Изучаем микроконтроллеры AVR. Пишем следующую программу

Ещё учтите, что при сборке реальной схемы, необходимо обеспечить светодиоды токоограничительными резисторами, в протеусе ничего не сгорит, а вот в реальной схеме wizard .

Продолжение следует ...

Теги: микроконтроллер, программа, первая, проект, codevisin, atmega, avr

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.