Ir ao conteúdo
  • Cadastre-se

PIC não obedece programa agravado


Posts recomendados

Pessoal comecei recentemente na programação de PIC e já mim deparo com um problema. 

 

Meu código recebe um botão em RA0 e  1 LED no RA1 + outro LED no RB0 o codigo segue abaixo:

#include <p16f628a.inc>
    #define bank0 BCF STATUS,RP0
    #define bank1 BSF STATUS,RP0
    
    #define BTN PORTA,RA0
    #define LED PORTA,RA1
    #define LED2 PORTB,RB0
    
    org 0x0000
    goto inicio
    org 0x0004
    retfie
    CBLOCK 0x0C
    
    ENDC
    
    inicio:
    bank1
    BSF TRISA,RA0
    BCF TRISA,RA1
    BCF TRISB,RB0
    bank0
    BSF LED
    de novo:BTFSC BTN
    goto btn_press
    goto btn_lib
    
    btn_press:
	BSF LED
	BCF LED2
	goto de novo
    btn_lib:
	BCF LED
	BSF LED2
	goto de novo
END

porém o PIC não esta executando esse código, o RA1 sempre fica ligado o RB0 fica piscando de forma aleatória ( passa varios segundos desligado da uma piscada rapida  e desliga ) 

 

e como vocês podem ver no código o LED fica ligado ate apertar o botão, o LED2 liga assim que o botão é pressionado  

desde já agradeço :D

 

Infos: 

PIC16F628A 

Crystal Externo - 20mhz ligado a 2x capacitores de 22pf

Leds - auto brilho, 3,3v + resistores de 62R

Link para o comentário
Compartilhar em outros sites

Já concertei o problema ! resolve colocando resistor de pull-down no pino do botão, aqui segue os fuses porque agora estou com outra duvida @Isadora Ferraz, por curiosidade desliguei os fios terra do cristal e o PIC funcionou normalmente, retirei todo o cristal e capacitores  e o PIC funcionou normalmente :\  afinal das contas qual a funcionalidade do cristal ? já que sem ele funciona do mesmo jeito

 

__config _HS_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BOREN_OFF & _CPD_OFF

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A explicação mais provável é que como você deixou os pinos do cristal em aberto, sua montagem não está lá estas coisas, tem ruído pra tudo que é lado, está montado em protoboard ou placa padrão, esqueceu do capacitor de desacoplamento, esqueceu (de novo) de outros pullups ou downs e etc, o oscilador entra em parafuso e gera pulsos de clock aleatoriamente. Some-se isso ao fato que seu programa faz pouco ou quase nada além de avaliar entradas e acender led portanto não precisa de precisão(!). Se fosse algo mais complexo com timer, interrupts e afins você e o mc sentiria melhor o drama da falta que o "relógio" faz.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!