// ATtiny85 Blink!
// Entrada e Saída – Manipulando Registradores

#include <avr/io.h>
#include <util/delay.h>
#include <SoftwareSerial.h>
#include "debug.h"

#define F_CPU 1000000UL

int main(void)
{
  // Nota: PB0 e PB3 estão sendo manipulados pela comunicação serial
  mySerial.begin(9600);
  _delay_ms(500);            // Aguarda 1/2 segundo para estabilizar a serial
  
  DDRB |= (1 << PB1);         // Configura Pino PB1 como saída (Pino do LED)

  uint8_t ex = 1;             // Alterna o exemplo (1-3)

  while (1)
  {
    switch (ex) {
      case 1: // Exemplo 1
        PINB = (1 << PINB1);  // Alterna o LED vermelho
        printBin(PINB);       // Envia o valor binário para o monitor serial
        _delay_ms(1000);      // Aguarda 1 segundo
        break;
      case 2: // Exemplo 2
        PORTB |= (1 << PB1);  // Liga o LED vermelho
        printBin(PORTB);      // Envia o valor binário para o monitor serial
        _delay_ms(500);       // Aguarda 1/2 segundos
        PORTB &= ~(1 << PB1); // Desliga o LED vermelho
        printBin(PORTB);
        _delay_ms(500);       // Aguarda 1/2 segundos
        break;
      case 3: // Exemplo 3
        PORTB ^= (1 << PB1);  // Alterna o LED vermelho
        printBin(PORTB);      // Envia o valor binário para o monitor serial
        _delay_ms(250);       // Aguarda 1/4 segundos
        break;
    }
  }

  return (0);
}
ATTINY8520PU