Ir ao conteúdo
  • Cadastre-se
ranielcardoso

Programação simples em pic16f877a

Recommended Posts

Boa noite à todos. Estou aprendendo a programar em Pic e estou usando C. Fiz uma programação e testei no proteus, mas no proteus ao ativar uma entrada, a saída não ativa conforme está na programação. Segue o código usado: 

#include "G:\main.h"
//entrada
#define BSN PIN_B1   // Comando para ligar o motor com o seu sentido normal
#define BSI PIN_B2   // Comando para ligar o motor com o seu sentido inverso
#define BD PIN_B3    // Desliga o motor
//saida
#define SaidaNormal PIN_B4     // Liga o motor com o seu sentido normal
#define SaidaInversa PIN_B5    // Liga o motor com o seu sentido inverso
#use delay(clock=20000000)
void main()
{
   
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   // TODO: USER CODE!!
   while(TRUE)
   {
      if(input(BD == 1)){
      output_low(SaidaNormal);
      output_low(SaidaInversa);
      delay_ms(15); //retardo para eliminar ruído ao pressionar botão.
      }
      if (input(BSN == 1)){
      output_high(SaidaNormal);
      output_low(SaidaInversa);
      delay_ms(15); //retardo para eliminar ruído ao pressionar botão.
      }
      if (input(BSI == 1)){
      output_low(SaidaNormal);
      output_high(SaidaInversa);
      delay_ms(15); //retardo para eliminar ruído ao pressionar botão.
      }      
   }
}

 

Editado por DiF
Não apague o conteúdo dos posts

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ranielcardoso Caro usuário, peço que NUNCA  apague o conteúdo dos posts.

Poste aqui a sua resolução para seu problema. Assim você ajudará os demais que estiverem com esta mesma dúvida.

certo de sua compreensão,

Moderador DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publique o esquema do proteus. Pode ser que tenhas esquecido de algo como pino do reset aberto. Também podes ter esquecido de configurar os fuses. Se for este o conteúdo que apagaste, não te acanhes e apenas confirme. Afinal...

10 horas atrás, ranielcardoso disse:

aprendendo a programar em Pic

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, desculpem ^^. O problema era mesmo no transistor usado no proteus. Pois tem alguns transistores que não permitem simulação. Troquei por um BC 337 e deu certo. Ah, tem uma mudança na programação para que dê certo também.  Por exemplo: é incorreto usar:   if(input(BD == 1)){   o certo é:  if(input(BD) == 1){  

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×