//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 //PB0 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 ler 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 e 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 poin 53 o led fica desligado
agora = ((PINB & (1<<PINB1)) == 0X02); //lê a chave de novo e faz uma AND para verificar se é igual a dois
while (1)
{
antes = agora;
agora = ((PINB & (1<<PINB1)) == 0x02);
if (agora == 0x00 && antes == 0x01)
{
contador = contador+1;
}
switch (contador)
{
case(2):
PORTB = PORTB ^(1 << PORTB0);
contador=0;
break;
default:
break;
}
}
return 0;
}