//Bibliotecas:
#define __ATmega2560__
#define __AVR_ATmega2560__
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include <stdint.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdbool.h>
#include <stdint.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdlib.h>
#include <avr/interrupt.h>
int main (void)
{
// Definição dos pinos para botão e LED
//chave //PB1 pin 52
//LED //PBO pin 53
//Definição das variáveis
uint8_t agora;
uint8_t antes;
uint8_t contador;
//Configuração do Sistema
DDRB = DDRB | (1<<DDB0); // Operador OR usado para definir o bit específico
//para o led iniciar desligado
DDRB = DDRB & (~(1<<DDB1)); //operador AND usado para produzir 0 e definir para IN
PORTB = PORTB | (1<<PORTB1); //operador or usado para fazer pull up na chave
//garantir estado lógico HIGH quando não é mantida pressionada
//Configurar as variáveis
PORTB = PORTB | (1<<PORTB0); //iniciar com led desligado
//1 é como setar 5v no pin 53 então não tem DDP e o led fica desligado
agora = ((PINB & (1<<PINB1)) == 0X02); //lê a chava de novo
//faz uma and para verificar se é igual a 2
while (1)
{
_delay_ms(5);
antes = agora;
agora = ((PINB & (1 << PINB1)) == 0x02);
if (agora == 0x00 && antes == 0x01)
{
contador = contador +1;
}
switch (contador)
{
case (3):
PORTB = PORTB ^(1 << PORTB0);
contador=0;
break;
default:
break;
}
}
return 0;
}