Ir ao conteúdo

Posts recomendados

Postado

Olá a todos,

 

Tenho este código:

increment = 0;
while (1){
       char K[10]; // declarar vector
       K[0]=0X3F;
       K[1]=0X06;
       K[2]=0X5B;
       K[3]=0X4F;
       K[4]=0X66;
       K[5]=0X6D;
       K[6]=0X7D;
       K[7]=0X07;
       K[8]=0X7F;
       K[9]=0X67;
      // incrementa
      if(RA0==1){	
       __delay_ms(2000);	//para que o botão mecanico não active duas vezes seguidas
       if(0<=increment<=8){
          increment=increment + 1;
          PORTC=K[increment];    
       } else if(increment==9){ // voltar a zero quando atinge o maximo
          PORTC=K[increment];
          increment = 0;
       } else {

       }	
        } // end incrementa
} //end while

O objectivo é que a cada clique seja incrementado um valor na variável increment. E assim vá percorrendo o array. Quando chegar a 9, executa o 9 e passa para zero.

Acontece que quando chega a 9 ele não passa para o zero.

 

Este código é utilizado no mplab, ou no proteus, para incrementar valores num display de 7 segments. Decidi colocar aqui a questão, ao invés no "Programação de microcontroladores" porque achei mais apropriado. Mas caso esteja no local errado por favor me avisem.

 

Obrigado

  • Curtir 1
Postado

Isso não funciona em C:

if(0<=increment<=8)

 

É preciso fazer uma comparação por vez, e usar a operação lógica E para checar que ambas são válidas:

if(0<=increment && increment<=8)

 

  • Curtir 2
Visitante
Este tópico está impedido de receber novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!