Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
Entre para seguir isso  
Dogolino

AlguÉm sabe o q hÁ de errado com o programa?

Recommended Posts

#include <16F628A.h>

#fuses INTRC,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOMCLR,NOWDT

#use delay(clock=4000000)

main(){

while(1){

if(input(pin_a0)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b0000110);

}

if (input(pin_a1)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b1011011);

}

if(input(pin_a2)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b1001111);

}

if(input(pin_a3)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b1100110);

}

if(input(pin_a4)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b0000000);

delay_ms(1);

//---------gfedcba

output_b(0b1101101);

}

if(input(pin_a5)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b1111101);

}

if(input(pin_b7)==1 ){

delay_ms(1);

//---------gfedcba

output_b(0b1010000);

}

if(input(pin_a0)==0 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==0 && input(pin_a4)==0 && input(pin_a5)==0 && input(pin_b7)==0){

delay_ms(1);

//---------gfedcba

output_b(0b1110011);

}

}

}

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

#fuses INTRC,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOMCLR,NOWD T // o certo seria NOWDT tudo junto

Olha sem saber o que ele faz é difícil, porém olhando assim de cara, só vi isso ai em cima.

tente juntar as letras, e se não for isso, primeiro nos diga o que o codigo deveria fazer.

abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • ESSE T seprarado é pau na postagem, não esta assim

    simplesmente vai mostrar num display de 7 seg a marcha no cambio do meu simulador

    se estiver na marcha mostra o 1 no display e assim por diante

    (obs: proteus também rodou esse, o simulador deveria ser mais fiel)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Não funciona aonde, real?

    explique melhor sim, pois não vi nada de errado, alias poste tudo, circuito e código, senão não vai ter como ajudar muito.

    abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Sim não funciona REAL, simulador funciona, isso mesmo, não consigo achar erro, fiz e refiz varias vezes o programa, mudei os fuses e etc, mas não adianta,

    o circuito é basico só um display catodo de 7 ligado nas poras do pic, só isso

    inclusive comecei a achar q montei errado as portas do pic, dai pra testar coloquei em sequencia, fiz um programa +- assim:

    ......

    output_b(0b0000011);

    delays_ms(1000);

    output_b(0b......);

    delays_ms(1000);

    .......

    mostrou td perfeito, da ré a 6 marcha sem problema algum, então o circuito ta montado correto, e o gravador funcionando normal.

    muito estranho

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    foi o que disse, poste o circuito que voce quer montar, e o código, posi o problema as vezes não é erro, mas sim configurações inadequadas paar o teu circuito, ou montagem equivocada.

    fico no aguardo.

    abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • sim aqui vai o circuito e o codigo completo

    #include <16F628A.h>

    #fuses INTRC,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOMCLR,NOWDT

    #use delay(clock=4000000)

    main(){

    while(1){

    if(input(pin_a0)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b0000110);

    }

    if (input(pin_a1)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1011011);

    }

    if(input(pin_a2)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1001111);

    }

    if(input(pin_a3)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1100110);

    }

    if(input(pin_a4)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b0000000);

    delay_ms(1);

    //---------gfedcba

    output_b(0b1101101);

    }

    if(input(pin_a5)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1111101);

    }

    if(input(pin_b7)==1 ){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1010000);

    }

    if(input(pin_a0)==0 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==0 && input(pin_a4)==0 && input(pin_a5)==0 && input(pin_b7)==0){

    delay_ms(1);

    //---------gfedcba

    output_b(0b1110011);

    }

    }

    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    fácilimo responder sua duvida,

    você montou o circuito igual ao que desenhou no proteus?

    se sim, o problema é que você está queimando seus displays de 7 segmentos,

    assim como os leds esses displays precisam dos resistores em cada pino com exceção do que vai o gnd, pois eles nada mais são do que leds.

    de 1K a 220R está bom dependendo da luminosidade desejada.

    abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • mas o q nao entendo se é por isso, porque q roda normal com o programa sequencial só para mostrar os digitos como falei acima?

    os leds estão acendendo normal

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    nao acho q e isso nao,ate porque ja montei um circuito sem resistor e o display nao queimou os leds.

    Nao seria porque nao desativou os comparadores?

    tenta por cmcon=0x07

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se não me engano,os pinos do PIC não tem corrente suficiente para queimar displays.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • seria mesma coisa se usasse:

    main(){

    set_tris_b(0b00000001);

    set_tris_a(0b11111001);

    pra definir as portas? ou nada ver?

    Bom após tentativas e erros parece q o programa funcionou:

    essa logica

    ..............

    if (input(pin_a1)==1){

    delay_ms(100);

    while(input(pin_a1)==1){

    output_b(0b1011011);

    delay_ms(1);

    }

    }

    ...........

    PORÉMMMMMMMMMM, funciona perfeito se segurar com a mão no terra ou qualquer pino do pic(percebi isso quando vi q funcionava uma hora outra nao, ai percebi q minha mao estava encostada no fio)

    Que coisa bizarra, como corrigir isso? sera q tem q jogar algo pra anular algum campo magnetico sei la?

    :(

    Editado por Bcpetronzio
    Unir Post seguidos em menos de 24 horas, use a opção Editar

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×