Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Vinicius Picciani

Programação PIC16f877a

Recommended Posts

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


  }


  }

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
Entre para seguir isso  





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

×