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