E ai Pessoal beleza.
Estou com um problema aqui tenho que fazer um programa para comunicar serial mente com um PC porém meu problema e que so posso enviar os valores via serial quando o programa no PC enviar uma pergunta ou seja por exemplo o programa do PC envia o valor 1 e o microcontrolador envia os valores coletados dos sensores exemplo printf("%lu,%lu,%f,%f"x,y,z,a) e depois para de enviar e fica aguardando novamente o valor um do PC e problema e que o o pic tem um programa que fica lendo e controlando a vazão de um fluido e os dados do mesmo são enviados para o PC e não posso ficar com a interrupção ativa.
Fiz um programa para testar a interrupção e ele fica sempre passando pela interrupçaõ apos eu enviar o valor pela serial para que o pic responda.
O programa esta abaixo e peço a ajuda de você para resolver este problema.
Programa de Teste
#include<16f877A.h> // modelo do microcontrolador #use delay(clock=4000000) //configura clock para 4Mhz #fuses HS,NOLVP,NOWDT,BROWNOUT,NOPUT,NODEBUG,NOPROTECT,NOWRT,NOCPD //configura fusiveis da MCU #include<mod_lcd.c> #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //configura rs232 #include <input.c> int cont=0; void main() { setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(int_rda); enable_interrupts(global); lcd_ini(); while (1)//aqui fica rodando { enable_interrupts(global); printf(lcd_escreve"Display=%i\n\r"cont); output_high(pin_b0); delay_ms(400); lcd_escreve('\f'); output_low(pin_b0); cont++; if(cont==125) cont=0; } } #int_rda void recebe_serial() { printf("%i"cont); output_high(pin_b1); }