Работа с кнопками в контроллерах AVR [ AtMega8 ]

В этой статье мы научимся строить устройства подобные сигнализации.
Суть его в том, что мы используем контакт (кнопку) при размыкании которой светодиод на выходе контроллера начинает мигать. Причём при повторном замыкании контакта он продолжает мигать.

Всё осуществим при помощи AVRCodeVision и ISIS.
Откроем AVRCodeVision, создадим проект и введём такую программу.
 

#include <mega8.h> //Включаем библиотеку для работы с микроконтроллером ATMega8
#include <delay.h>

void main(void){

// настройка Port B 
  PORTB=0xFF;         //вкл. подтягивающие резисторы

  DDRB=0x00;           // весь порт как вход
// настройка Port D 
  PORTD=0x00;        //откл. подтягивающие резисторы
  DDRD=0xFF;          // весь порт как выход

// ждём когда кнопка разомкнётся
  while(PINB.0==0)  {
  }

  while(1)     // бесконечный цикл мигания диода
  {  
          PORTD.0=1;
          delay_ms(100);
          PORTD.0=0;
          delay_ms(100);
  }
}

Откомпилируем пример (думаю из комментариев всё ясно) и перейдём в Proteus для симуляции.

 

Обратите внимание что кнопка изначально замкнута!!

Как видите мы используем порт B как вход, а порт D — как выход. принимаем сигнал размыкания на PB0, а отправляем на — PD0.

Кликаем 2 раза по микроконтроллеру и выбираем откомпилированный hex файл.
Запускаем симуляцию и радуемся.. При размыкании кнопки диод моргает.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий