Created
June 20, 2018 17:50
-
-
Save requeijaum/5d0a1bdee75a53431a8c40090b0bb39f to your computer and use it in GitHub Desktop.
This file contains hidden or 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
//usando código do AVR_GCC, diretamente | |
#define F_CPU 16000000UL //define a frequência do microcontrolador em 16 MHz | |
#include <avr/io.h> //definições do componente especificado | |
#include <util/delay.h> //biblioteca para o uso das rotinas de _delay_ | |
#include <avr/pgmspace.h> //biblioteca para poder gravar dados na memória flash | |
#define DISP PORTD //define um nome auxiliar para o DISP | |
#define BTN_MAIS PB0 //define PB0 com o nome de BOTAO | |
#define BTN_MENOS PB1 // define PC0 com o nome BOTAO2 | |
#define DELAY_MS 100 //valor de delay em milissegundos | |
//variável gravada na memória flash | |
const unsigned char Tabela[] PROGMEM = {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x18}; | |
char uni=0, dez=0; | |
void ler_botoes(){ | |
if (PORTB == 0b00000001) uni++; //se o botão for pressionado executa | |
if (PORTB == 0b00000010) uni--; //se o botão for pressionado executa | |
} | |
void alternar(){ | |
//copiando do Arduino... logica inversa? | |
PORTC=0b00000011; | |
_delay_ms(DELAY_MS); | |
mostrar(uni); | |
PORTC=0b00000001; | |
_delay_ms(DELAY_MS); | |
PORTC=0b00000010; | |
_delay_ms(DELAY_MS); | |
mostrar(dez); | |
PORTC=0b00000001; | |
_delay_ms(DELAY_MS); | |
PORTC=0b00000010; | |
_delay_ms(DELAY_MS); | |
} | |
void mostrar(unsigned int valor){ | |
//decodifica o valor e mostra no DISP, busca o valor na Tabela. | |
DISP = pgm_read_byte(&Tabela[valor]); | |
} | |
void verifica_numeros(){ | |
if ((uni<0) && (dez==0)) {uni=0;} //segurança | |
if ((uni<0)&&(dez>0)) { uni=9; dez--; } | |
if (uni>9) {uni=0;} | |
if (dez>9) {dez=0;} | |
} | |
int main() | |
{ //setup() | |
DDRB = 0b00000000; //PB0 e PB1 como pino de entrada, os demais pinos como saída | |
PORTB = 0b00000011; //habilita o pull-up do PB0 e PB1 | |
DDRC = 0b11111111; //habilita PC[0:1] como saída e PC[2:7] como entradas | |
PORTC = 0xFF; //habilita o pull-up de PC0 e PC1 (???) | |
DDRD = 0xFF; //PORTD como saída ( DISP) | |
PORTD = 0xFF; //desliga o DISP | |
UCSR0B = 0x00; //PD0 e PD1 como I/O genérico, para uso no Arduino - UART (Serial COM)? | |
while (1) //laço infinito | |
{ | |
ler_botoes(); | |
verifica_numeros(); | |
alternar(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment