#define F_CPU 16000000UL
#include<avr/io.h>
#include<util/delay.h>
int main() {
DDRB |= (1 << DDB0); // Segmento a
DDRB |= (1 << DDB1); // Segmento b
DDRB |= (1 << DDB2); // Segmento c
DDRB |= (1 << DDB3); // Segmento d
DDRB |= (1 << DDB4); // Segmento e
DDRB |= (1 << DDB5); // Segmento f
DDRD |= (1 << DDD7); // Segmento g
DDRD &= ~(1 << DDD2); // Botão para aumentar
DDRD &= ~(1 << DDD3); // Botão para diminuir
char aum;
char dim;
char estado = 0;
char antau = 0;
char antdi = 0;
while(1) {
aum = (PIND & (1 << PIND2)) == (1 << PIND2);
if(aum == 1 && antau ==0){
if(estado<9){
estado++;
}
}
dim=(PIND &(1<< PIND3)) ==(1 << PIND3);
if(dim == 1 && antdi==0){
if(estado>0){
estado--;
}
}
if (aum == 1 && dim ==1 ){
estado=0;
}
antau = aum;
antdi = dim;
if (estado == 0) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB &= ~(1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD |= (1 << PORTD7);
}
else if (estado == 1) {
PORTB |= (1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB |= (1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB |= (1 << PORTB5);
PORTD |= (1 << PORTD7);
}
else if (estado == 2) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB |= (1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB &= ~(1 << PORTB4);
PORTB |= (1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 3) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB |= (1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 4) {
PORTB |= (1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB |= (1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 5) {
PORTB &= ~(1 << PORTB0);
PORTB |= (1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 6) {
PORTB &= ~(1 << PORTB0);
PORTB |= (1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB &= ~(1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 7) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB |= (1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB |= (1 << PORTB5);
PORTD |= (1 << PORTD7);
}
else if (estado == 8) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB &= ~(1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
else if (estado == 9) {
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB2);
PORTB &= ~(1 << PORTB3);
PORTB |= (1 << PORTB4);
PORTB &= ~(1 << PORTB5);
PORTD &= ~(1 << PORTD7);
}
_delay_ms(50);
}
}