jejejej ya hice la prueba con el ejemplo de buffer que me facilito el pana palitroqueZ, solo tengo algunos detallitos que corregir... ya que logro recibir el dato correcto, pero no logro desabilitar y habilitar la interrupcion serial para esperar un nuevo dato.. ahi les dejo el codigo
// CONSTANTES /////////////////////////////////////////////////////////////////
int const lenbuff=32; // Longitud de buffer, Ajustar
// a lo que desees (o te sea posible)
// VARIABLES EN RAM ///////////////////////////////////////////////////////////
int xbuffrec=0x00; // Índice: siguiente char en cbuff
char buffrec[lenbuff]; // Buffer
char rcvchar=0x00; // último caracter recibido
int1 bandera=0; // Flag para indicar comando disponible
char x=0x00;
char fin=0x00;
void addcbuff(char c); // añade caracter recibido al buffer
#int_rda
void serial_isr() { // Interrupción recepción serie USART
if(kbhit()){ // Si hay algo pendiente de recibir ...
rcvchar=getc(); // lo descargo y ...
addcbuff(rcvchar); // lo añado al buffer y ...
rcvchar=0;
}
}
void addcbuff(char c){ // Añade caracter al Buffer de Recepcion
if (c==0x22){
// aqui va el codigo que corresponde al fin de trama
fin=c;
putc(x);
bandera=0;}
if (c==0x21){
// aqui va el codigo que corresponde al inicio de trama
bandera=1; //activa el procesamiento de captura de datos
}
if (bandera==1){
x= buffrec[xbuffrec++]=c; // Añade caracter recibido al Buffer
}
}
void main(){
setup_adc_ports(NO_ANALOGS); //puerto ADIGITALES
lcd_init(); //INICIALIZA EL LCD
set_tris_a(0x01);
enable_interrupts(global);
enable_interrupts(int_rda);
do{
if(fin==0x22){
lcd_putc("\fCONTROL TEMPERATURA"); //IMPRIME EN PANTALLA
lcd_gotoxy(7,2); //COLOCA EL CURSOR EN COLUMNA 7 FILA 2
printf(lcd_putc,"T=%d",x); //muestro el dato en la LCD en decimal
delay_ms(500);
}
}while(1);
}
cuando hablamos de este ejemplo de ceckSum, que significa ^= ????
CheckSum=0;
for(k=0;k<10;k++){
CheckSum^=Trama[k];
}