Ir ao conteúdo
  • Cadastre-se

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


Dogolino

Posts recomendados

#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);

}

}

}

:(

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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);

}

}

}

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

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?

:(

Link para o comentário
Compartilhar em outros sites

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