hola pocher, nose en que me equivoco pero el punto es que no me quiere salir en la pantalla lo que llega al bufer, lo unico que logro es tener una variacion de 12 a 255, arrojando este ultimo como lectura maxima, siendo que deveria tener una variacion de 0 a 765, he recontra revisado el codigo, en conjunto con el debug y nada todo anda bien en conjunto con proteus, nose que anda mal, lo que pienso es que le estoy mandando mal el dato a la LCD. incluso modifique nuevamente el codigo.
#INCLUDE <16F877a.h>
#FUSES NOWDT,XT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#USE delay (clock=4000000) //clock=20Mhz
#USE rs232(baud=9600,parity=N,xmit=PIN_C6, rcv=PIN_C7,bits=8) //Configuracion del puerto serie....
#DEFINE use_portd_lcd TRUE //definir portb lcd
#INCLUDE<LCD420puertD.c> //libreria manejo lcd de 20x4 modificada por suky para el puerto D
#INCLUDE <stdlib.h>
#include <string.h>
int lectura=0x00,destino[8],dato[8];
//char convert[8];
int x=0,w=0,z=0;
#int_RDA
void RDA_isr(void)
{
lectura=getc(); //leo el puerto serie del pic
dato[x++]=lectura; //almaceno en variable dato el caracter ingresado....
//he incremento en 1 para guardar le siguiente ddato....
if(lectura==0x52){ //a llegado el caracter R...Sí... entonces....
dato[0]=0x00; //el primer caracter de la se borra del string...
x=0; //y buelvo a posicion cero del string..
}
else if(lectura==0x0D || x==4){ //llego el retorno de carro.. (caracter 0x13)...sí..
if(lectura==0x0D){
z=x-1;
dato[z]='\0'; //borro el caracter de retorno de carro y lo reemplazo por.. //caracter nulo..
strcpy( destino,dato ); //copio el dato de recepcion serial a otra variable...
}
for(w=0;w<x;w++){ //borro el buff de recepcion de dato, "dato"....
dato[w]=0x00;
}
x=0; //pongo en la posicon cero el dato de recepcion nuevo..
}
}
void main() {
////////////////////////////////////////// INICIALIZACIONES GENERALES
lcd_init(); //inicializa pantalla LCD
enable_interrupts(INT_RDA); //avilito interrupcion de resepcion serial
enable_interrupts(GLOBAL); // avilito todo lo necesario...
output_low(PIN_C0); //pone en cero el sensor2
output_low(PIN_C1); //pone en uno el sensor1
While(TRUE){ //infinito..........
lcd_gotoxy( 1, 1);
printf(lcd_putc,"%C%C%C",dato[0],dato[1]dato[2]); //imprimo en LCD los datos del puerto serie.....
//sin contar con la R y el retorno de carro....
lcd_gotoxy( 1, 3);
printf(lcd_putc,"%S",destino);
lcd_gotoxy( 1, 4);
printf(lcd_putc,"%i",x);
}}
saludos y espero que me puedan ayudar ya que no se que pasa