Ir ao conteúdo
  • Cadastre-se

marcuscosta1957

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. void main(){ // "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" unsigned char ucMask[] = {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9}; /* Variavel do tipo matriz que armazena os valores correspondentes ao numero para ser mostrado no display de 7 segmentos */ unsigned char ucStatus_inc; // Variavel de travamento do incremento. unsigned char ucStatus_dec; // Variavel de travamento do decremento. unsigned int uiContador; // Variavel de armazenamento do contador. unsigned int uiValor; // Variavel auxiliar para exibição do contador. unsigned int uiValor1; // Variavel auxiliar para exibição do contador. bit oldstate; TRISB.RB4=1; // Define o pino RB0 do PORTB como entrada. TRISB.RB5=1; // Define o pino RB1 Do PORTB como entrada. TRISA.RA0=1; TRISA.RA1=0; // Define o pino RA3 do PORTA como saida(Seleção Display 2). TRISA.RA2=0; // Define o pino RA4 do PORTA como saida(Seleção Display 3). TRISA.RA3=0; // Define o pino RA5 do PORTA como saida(Seleção Display 4). TRISA.RA4=1; TRISB = 0b00110000; // Define todos os pinos Do PORTB como saida. PORTA=0; ucStatus_inc=0; // Inicializa a variavel com o valor 0. ucStatus_dec=0; // Inicializa a variavel com o valor 0. uiContador=0; // Inicializa a variavel com o valor 0. while(1){ // Aqui definimos uma condição sempre verdadeira como parametro, portanto todo o bloco será repetido indefinidamente. // Le Tecla E Incrementa Contador. if((PORTB.RB4==0)&&(ucStatus_inc==0)){ // Incrementa somente uma vez quando a tecla for pressionada. ucStatus_inc=1; // Variavel de travamento do incremento. uiContador++; // Esse operador aritmetico(++) realiza o mesmo que variavel = variavel + 1. if (uiContador==1) { uiValor1=0x2; } if (uiContador==2) { uiValor1=0x4; } if (uiContador==3) { uiValor1=0x6; } if (uiContador==4) { uiValor1=0x8; } if (uiContador==5) { uiValor1=10; } if (uiContador==6) { uiValor1=15; } if (uiContador==7) { uiValor1=22; } if (uiContador==8) { uiValor1=33; } if (uiContador==9) { uiValor1=50; } if (uiContador==10) { uiValor1=60; } if (uiContador==11) { uiValor1=70; } if (uiContador==12) { uiValor1=80; } if (uiContador==13) { uiValor1=90; } if (uiContador==14) { uiValor1=100; } if (uiContador==15) { uiValor1=125; } if (uiContador==16) { uiValor1=150; } if (uiContador==17) { uiValor1=200; } if (uiContador==18) { uiValor1=220; } if (uiContador==19) { uiValor1=250; } if (uiContador==20) { uiValor1=300; } if(uiContador==21){ /* Essa comparação é feita pois nosso valor máximo é 9999. */ uiContador=20; } } if((PORTB.RB4==1)&&(ucStatus_inc==1)){ // Volta a disponibilizar a opção de incremento quando a tecla for solta. ucStatus_inc=0; } // Le tecla e decrementa contador. if((PORTB.RB5==0)&&(ucStatus_dec==0)){ // Decrementa somente uma vez quando a tecla for pressionada. ucStatus_dec=1; // Variavel de travamento do decremento. uiContador--; // Esse operador aritmetico(--) realiza o mesmo que variavel = variavel - 1. if(uiContador>21){ /* Essa comparação é feita pois ao decrementar variaveis sem sinal o valor irá para o valor máximo da variavel que no caso é 65535. */ uiContador=0; } } if((PORTB.RB5==1)&&(ucStatus_dec==1)){ // Volta a disponibilizar a opção de incremento quando a tecla for solta. ucStatus_dec=0; } if (uiContador==1) { uiValor1=0x2; if(porta.ra0=1) {portb.rb6=1; delay_ms(1500); portb.RB6=0; portb.rb7=1; delay_ms(20); } } if (uiContador==2) { uiValor1=0x4; } if (uiContador==3) { uiValor1=0x6; } if (uiContador==4) { uiValor1=0x8; } if (uiContador==5) { uiValor1=10; } if (uiContador==6) { uiValor1=15; } if (uiContador==7) { uiValor1=22; } if (uiContador==8) { uiValor1=33; } if (uiContador==9) { uiValor1=50; } if (uiContador==10) { uiValor1=60; } if (uiContador==11) { uiValor1=70; } if (uiContador==12) { uiValor1=80; } if (uiContador==13) { uiValor1=90; } if (uiContador==14) { uiValor1=100; } if (uiContador==15) { uiValor1=125; } if (uiContador==16) { uiValor1=150; } if (uiContador==17) { uiValor1=200; } if (uiContador==18) { uiValor1=220; } if (uiContador==19) { uiValor1=250; } if (uiContador==0) { uiValor1=0; } if(uiContador<=0){ /* Essa comparação é feita pois nosso valor máximo é 9999. */ uiContador=0; } uiValor = uiValor1; // Coloca o conteudo da variavel do contador na varaivel auxiliar. // Mostra valor da unidade. PORTB = ucMask[uiValor%10]; // Pega modulo (resto) da divisão por 10 e coloca o valor no PORTD. PORTA.RA3 = 1; // Liga o transistor associado ao display 1. Delay_ms(2); // Delay para escrita no display. PORTA.RA3 = 0; // Desliga o transistor associado ao display 1. uiValor/=10; // Divide variavel por 10. // Mostra valor da dezena. PORTB = ucMask[uiValor%10]; PORTA.RA2 = 1; Delay_ms(2); PORTA.RA2 = 0; uiValor/=10; // Mostra valor da centena. PORTB = ucMask[uiValor%10]; PORTA.RA1 = 1; Delay_ms(2); PORTA.RA1 = 0; uiValor/=10; // Mostra valor do milhar. PORTB = ucMask[uiValor%10]; PORTA.RA0 = 1; Delay_ms(2); PORTA.RA0 = 0; } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!