Created
March 30, 2015 14:12
-
-
Save Microcontrolandos/80d9055fbc5838bde3a3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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