Fala galera,

Sou novo aqui no fórum, e também estou aprendendo programação faz pouco tempo..

To tentando programar o PIC 16f877a para trabalhar, utilizando o mesmo pino para entrada e saída...

Não consigo de jeito nenhum, alguém pode me ajudar ?

No momento meu codigo ta assim:

#define Botao button(&portc, 0, 50, 0)
#define led1 rc0_bit

bit flag, flagled;

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit   = 0;
    TMR0           = 100;

     TRISC0_bit = 1;                                  // RC0_bit como entrada
     if ( Botao && flag == 0) {
     flagled = 1;                                         // seta flag do led
     flag = 1;                                             // seta flag do botao
     }    if ( !Botao && flag == 1) flag = 0;     // reseta flag do botao
     TRISC0_bit = 0;                                  // RC0_bit como saida
  }
}

void main() {

//TMR0
//Prescaler 1:64; Interrupt Time : 1,9968 ms ( f = 500Hz )
  OPTION_REG     = 0x85;
  TMR0                 = 100;
  INTCON              = 0xA0;
// *************************

  TRISC0_bit  = 0;
  led1            = 0;

  for (;;) {
    if (flagled == 1) {               // testa flagled
      led1 = 1;                        // liga led
    } else if ( flagled == 0 ) {    // testa flagled
      led1 = 0;                        // desliga led
    }
  }
}

Exibições: 965

Responder esta

Respostas a este tópico

Oi GM, boa noite.
Recomendo a voce ler o tópico:
http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
Tenho uma pergunta:

Qual compilador e "IDE" voce está usando para compilar e gravar o PIC?

Rui

Opa, boa noite Rui

Faço os comandos no compilador mikroC, não faço a gravação no pic, somente simulo no ISIS

Obrigado pelo retorno =)

Eu não uso o mikroc nem o ISIS, eu uso o HiTech C,

mas vou tentar entender sua logica.

Se conseguir resolver, post aqui.

Uma pergunta. Porque voce está usando o recurso de interrupt do timer 0?

Rui

Bom, vi em uma apostila uma aplicação de utilizar o pino tanto para controlar o botão e tb liberar 5v para acender o led ..porem não faço ideia de como começar.

Minha ideia era manter o pino RC0 como saida para controlar o led e, utilizar o TMR0 para inverter o estado do pino para entrada e fazer a leitura do botão, após a leitura resetar o pino para saida. Imaginei que seria bom utilizar este recurso pela interrupt, pois usando a frequencia de 500Hz ficaria invisível para nós essa mudança no pino. Mas, estou aberto para sugestões.

Abraço =)

Olá,
Abaixo segue um tutorial  para maximização de pinos de I/O no PIC usando o compilador CCS, mas o mais importante é que podemos facilmente adaptar o sistema para funcionar com qualquer compilador ou microcontrolador.

O tutorial foi retirado de uma apostila de Programação em C para PIC de Rinaldo Câmara Gonçalves da Labtools.

Cara muito obrigado, vou tentar resolver o problema com este tutorial.

Vou aproveitar e ler essa apostila =))

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço