Код: Выделить всё
// ---------- Проверка разряда на наличие логической единицы (установки) с if------------------
//
//
// кнопка на PB0 , а светодиоды на PB1
//
// переключение нагрузки при нажатии кнопки, не проверена в железе,
// в протеусе через раз работает
//
//
//
//
#include <avr/io.h>
#define F_CPU 1200000UL
#include <util/delay.h>
//===================
int main(void)
{
DDRB = 0b00000010; // настраиваем бит в1 на выход, остальные на вход
PORTB = 0b11111101; // подтягиваем резистороми биты которые на вход
int i=0; // объявляем переменную счетчик и обнуляем ее
//===============
while (PINB & (1<<PB0)) // Код1 будет выполняться пока 0-й разряд регистра PINB установлен.
// При сбросе его начнет выполняться Код2.
{
}
_delay_ms(1000); // Код1; задержка 10 мс
i++; // Код2; кнопка нажата, добавляем 1 к переменной
//===============
while (PINB & (1<<PB0)) // Код1 будет выполняться пока 0-й разряд регистра PINB установлен.
// При сбросе его начнет выполняться Код2.
{
}
_delay_ms(1000); // Код1; задержка 10 мс
i++; // Код2; кнопка нажата, добавляем 1 к переменной
//===============
while (PINB & (1<<PB0)) // Код1 будет выполняться пока 0-й разряд регистра PINB установлен.
// При сбросе его начнет выполняться Код2.
{
}
_delay_ms(1000); // Код1; задержка 10 мс
i++; // Код2; кнопка нажата, добавляем 1 к переменной
//===============
if (i==3) //если i =3 ( при траекратном опросе кнопки было обнаружено нажатое состояние)
{
PORTB ^= (1<<PB1); // инвертируем состояние пина PB1
i=0; // сбросим счетчик
}
}