Skip to content

Instantly share code, notes, and snippets.

@Microcontrolandos
Created March 30, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Microcontrolandos/80d9055fbc5838bde3a3 to your computer and use it in GitHub Desktop.
Save Microcontrolandos/80d9055fbc5838bde3a3 to your computer and use it in GitHub Desktop.
//Mascara de bits usado para escrever um digito no display
char DisplayCatodoComum[] = { 63, 6, 91, 79, 102, 109, 125, 7, 127, 111 };
char contador = 1; //conta de 0 até 99.
char flags = 0; //usado para salvar o estado do botao
char digitoDasUnidades; //usado para guardar o digito das unidades ( 0...9 )
char digitoDasDezenas; //usado para guardar o digito das dezanas ( 0...9 )
void main()
{
//Inicializa os pinos do Display
DDRD = 255; //PORTB como saída
PORTD = 0; //inicializa a PORTB com o valor 0.
DDRB.B0 = 1; //pino PB0 como saída
PORTB.B0 = 1; //valor inicial do pino PB0 ( 1 = display desligado )
DDRB.B1 = 1; //pino PB1 como saída
PORTB.B1 = 1; //valor inicial do pino PB1 ( 1 = display desligado )
DDRB.B4 = 0; //pino do botao como entrada
PORTB.B4 = 1; //habilita o resistor de pull-up do pino do botao
while(1)
{
//botão foi pressionado? Sim!!! Vamos então, salvar seu estado na flag.
if( !PINB.B4 ) flags.B0 = 1;
if( PINB.B4 && flags.B0 ) //O botão foi solto e anteriormente estava pressionado? Sim!!!
{
flags.B0 = 0; //limpa a flag
contador++; //acrescenta +1 à variável 'contador'
//display com dois segmentos conta até 99.
if( contador > 99 ) //'contador' é maior que 99? Sim!!!
contador = 0;
}
//recupera os digitos das unidades e dezenas
//10 porque estamos contando na base decimal!
//E se quisessemos contar na base hexadecimal ou octal?
digitoDasUnidades = contador % 10;
digitoDasDezenas = ( contador / 10 ) % 10;
//desativa todos os displays
PORTB.B0 = 1;
PORTB.B1 = 1;
//Escreve o digito num display
PORTD = DisplayCatodoComum[ digitoDasUnidades ];
//habilita o display 2
PORTB.B0 = 0;
Delay_ms( 1 );
//desativa todos os displays
PORTB.B0 = 1;
PORTB.B1 = 1;
//Escreve o digito num display
PORTD = DisplayCatodoComum[ digitoDasDezenas ];
//habilita o display 1
PORTB.B1 = 0;
Delay_ms( 1 );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment