Ir ao conteúdo

Multiplex com 16f628a travando


marcuscosta1957

Posts recomendados

Postado
     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;
}
 
}

Postado
void main() {   o que esta acontecendo? }

é mesmo amigo, você não explicou NADA, não falou qual era o problema, sintomas, não explicou o que o software deveria fazer, não fez nenhuma pergunta, como vamos responder? haha....

 

flowww

Arquivado

Este tópico foi arquivado e está fechado para 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!