Ir ao conteúdo
  • Cadastre-se

Programação PIC16f877a


Posts recomendados

boa tarde seus *****,

estou fazendo uma programação do meu tcc, e não está dando certo, já deu certo na primeira vez, mas depois que remontei o circuito, o pic não executa mais a programação, procurei algumas soluções, e testei eu dois pics, um deles tinha acabado de comprar pela net. pelo q eu vi aqui no site pode ser a programação, eu mudei ela um pouco, depois de testar a primeira vez, vou mandá-la aqui, se alguém puder ajudar eu agradeço.

 

 

 

// lcd configuração dos pinos
sbit lcd_rs at rc2_bit;
sbit lcd_en at rc3_bit;
sbit lcd_d4 at rc4_bit;
sbit lcd_d5 at rc5_bit;
sbit lcd_d6 at rc6_bit;
sbit lcd_d7 at rc7_bit;

// pin direction  definindo os pinos
sbit lcd_rs_direction at trisc2_bit;
sbit lcd_en_direction at trisc3_bit;
sbit lcd_d4_direction at trisc4_bit;
sbit lcd_d5_direction at trisc5_bit;
sbit lcd_d6_direction at trisc6_bit;
sbit lcd_d7_direction at trisc7_bit;


        //variáveis

int stop = 0;
int conta = 0;  //botão
int conta2 = 0; //tezoura
int conta3 = 0; //pinça
int conta4 = 0; //afastador

void main() {

 cmcon =0x07;// desabilita os coparadores do pic  (recomendado quando não utilizar os comparadores)

  lcd_init(); //inicia o display
  lcd_cmd(_lcd_clear);// limpa o display
  lcd_cmd(_lcd_cursor_off);// desliga o cursor do display

  lcd_out(1,5,"semic" );

  delay_ms(1000);

  lcd_cmd(_lcd_clear);// limpa o display

  //saídas

  //bisturi
  //led verde sensor 1
  portb.b0 = 0;
  trisb.b0 = 0;

  //led amarelo sensor 1
  portb.b1 = 0;
  trisb.b1 = 0;

  //led vermelho sensor 1
  portb.b2 = 0;
  trisb.b2 = 0;

  //pinça
  //led verde sensor 2
  portb.b3 = 0;
  trisb.b3 = 0;

  //led amarelo sensor 2
  portb.b4 = 0;
  trisb.b4 = 0;

  //led vermelho sensor 2
  portb.b5 = 0;
  trisb.b5 = 0;

  //afastador
  //led verde sensor 3
  portb.b6 = 0;
  trisb.b6 = 0;

  //led amarelo sensor 3
  portb.b7 = 0;
  trisb.b7 = 0;

  //led vermelho sensor 3
  portd.b0 = 0;
  trisd.b0 = 0;


//entradas

//botão inicia/para cirurgia
 trisd.b4 = 1;

//sensor1
 trisd.b7 = 1;
//sensor2
 trisd.b6 = 1;
//sensor3
 trisd.b5 = 1;

 while(1){

  ///bisturi: antes de começar a cirurgia
  if ( stop == 0 && conta2 == 0 && portd.b7 == 1 ) {
  portb.b0 = 1;
  portb.b1 = 0;
  portb.b2 = 0;
  }
  if ( conta == 0 && conta2 == 0 && portd.b7 == 0 ) {
  portb.b0 = 0;
  portb.b1 = 0;
  portb.b2 = 1;
  lcd_out(1,3,"bisturi" );
  lcd_out(2,3, "em falta");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  }

  //pinça: antes de começar a cirurgia
  if ( stop == 0 && conta2 == 0 && portd.b6 == 1 ) {
  portb.b3 = 1;
  portb.b4 = 0;
  portb.b5 = 0;
  }
  if ( conta == 0 && conta2 == 0 && portd.b6 == 0 ) {
  portb.b3 = 0;
  portb.b4 = 0;
  portb.b5 = 1;
  lcd_out(1,3,"pinça" );
  lcd_out(2,3, "em falta");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  }

  //alaragador: antes de começar a cirurgia
  if ( stop == 0 && conta2 == 0 && portd.b5 == 1 ) {
  portb.b6 = 1;
  portb.b7 = 0;
  portd.b0 = 0;
  }
  if ( conta == 0 && conta2 == 0 && portd.b5 == 0 ) {
  portb.b6 = 0;
  portb.b7 = 0;
  portd.b0 = 1;
  lcd_out(1,3,"afastador" );
  lcd_out(2,3, "em falta");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);// limpa o display
  }


   //botão liga/desliga
  if (portd.b4 == 1 && stop == 0 ){
  stop = 1;
  }
  if (portd.b4 == 0 && stop == 1 ){
  conta++;
  stop = 0;
  }

  if (conta == 1 && portd.b7 == 0 || portd.b6 == 0 || portd.b5 == 0){
  conta = 0;

  }

  //display liga/desliga
  if( conta == 1 && conta2 == 0 ){
  lcd_out(1,3,"cirurgia" );
  lcd_out(2,3, "iniciada");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  conta2 = 1;
  }

   //bisturi
  if (conta2 == 1 && portd.b7 == 1 ) {
  portb.b0 = 1;
  portb.b2 = 0;
  portb.b1 = 0;
  }

  if( conta2 == 1 &&  portd.b7 == 0 ){
  portb.b0 = 0;
  portb.b1 = 1;
  lcd_out(1,3,"tezoura" );
  lcd_out(2,3,"em uso");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  }

  //pinça
  if (conta2 == 1 && portd.b6 == 1 ) {
  portb.b3 = 1;
  portb.b4 = 0;
  portb.b4 = 0;
  }
  if( conta2 == 1 &&  portd.b6 == 0 ){
  portb.b3 = 0;
  portb.b4 = 1;
  lcd_out(1,3,"pinca" );
  lcd_out(2,3,"em uso");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  }

  
  
  //afastador
  if (conta2 == 1 && portd.b5 == 1 ){
  portb.b6 = 1;
  portb.b7 = 0;
  portb.b7 = 0;
  }
  if (conta2 == 1 && portd.b5 == 0 ){
  portb.b6 = 0;
  portb.b7 = 1;
  lcd_out(1,3,"afastador");
  lcd_out(2,3,"em uso");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  }

  //fim da cirurgia
  if( conta == 2 ) {
  lcd_out(1,3,"cirurgia" );
  lcd_out(2,3,"finalizada");
  delay_ms(1000);
  lcd_cmd(_lcd_clear);
  conta = 0;
  conta2 = 0;
  }


  }


  }

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!