Ir ao conteúdo
  • Cadastre-se

Programação simples em pic16f877a


Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

 

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

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