Hola MGLSOFT !!.... te cuento... la comunicación se realiza de lo mas bien, el problema es que si yo le envio por ejemplo un '1' a travez del puerto serie al pic, este me responde '1' cuando en ningún lugar de mi programa del pic indico que me reenvie el dato que entró. al puerto serie lo tengo configurado así :
#include <16F628.h>
#use delay(clock=4000000) //#use delay(clock=4000000,RESTART_WDT)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD
#use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1)
Lo configuré a 1200 baudios para disminuir la probabilidad de falla, aunque tambien lo he usado a 9600 sin ningún problema, salvo el que estoy exponiendo en este mensaje !!

En definitiva, el pic reacciona a las "ordenes" que le envio a travez del puerto serie, pero me reenvia todo byte que le envio !!!
Te dejo el código mas sencillo para ver si salta algo !!
gracias !!
#include <16F628.h>
#use delay(clock=4000000) //#use delay(clock=4000000,RESTART_WDT)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD
#use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1)
//-------------------------------------------------------------------------------//
#BYTE PORTA = 0X05
#BYTE PORTB = 0X06
#BYTE STAT = 0X03
#define RP0 5
#define RP1 6
#BYTE EEDATA = 0X9A
#BYTE EEADR = 0X9B
#BYTE EECON1 = 0X9C
#define RD 0
byte Dato_recib;
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// INT_RS232 //////////////////////////////////////
#int_RDA
void RDA_isr()
{
//*************************************************************************************
//
// ESTA FUNCION SE ENCARGA DE LEER DEL PUERTO PARAMETROS COMO POR EJEMPLO
// : EL duty up_pwm; ciclo down_pwm; tiempo de activacion del PWM, Y TAMBIEN
// DEVELVE ESTOS PARAMETROS Y LOS CODIGOS CORRESPONDIENTES A LOS ERRORES
// DETECTADO POR EL SISTEMA !!
//
//
// El PROTOCOLO ES EL SIGUIENTE :
// 1) EL BYTE DE START ES EL .200
// 2) ES EL BYTE QUE CONTIENE EL NUMERO DE BYTE QUE SERAN ENVIADO POR EL PC AL PIC
// 3) ES EL BYTE QUE CONTIENE LA ACCION A REALIZAR
// a) SI EL BYTE ES .1 : LA ACCION ES UNA LECTURA DE PARAMETROS Y CODIGOS DE ERROR !
// b) SI EL BYTE ES .2 : LA ACCION ES UNA ESCRITURA DE PARAMETROS!
// c) SI EL BTYE ES .3 : LA ACCION ES BORRADO DE LOS CODIGOS DE ERROR !
//
// SI EL 3º BYTE ES .2 (ESCRITURA)
// 4) ESTE BYTE PERTENECE AL VALOR PWM_ON !
// 5) ESTE BYTE PERTENECE AL VALOR PWM_OFF !
// 6) ESTE BYTE PERTENECE AL VALOR DE ACTIVACION DEL PWM !
// 7) ESTE BYTE SERÁ DE VALOR '0' (CERO), INDICA FINAL DE LA TRAMA !
//
//*************************************************************************************
Dato_recib = 0;
if(kbhit())
{
Dato_recib = getc(); //Aquí siempre se guarda el dato, y no se hace nada con él ! ... pero como dije antes, el dato que
//recibido no se como pero sale por el puerto del pic !!!
}
}
///////////////////////////////////////////////////////////////////////////////////////
void main()
{
PORTA=0;
PORTB=0;
set_tris_A(0b00111100); //Configuro los pines del puerto A
set_tris_B(0b00001011); //Configuro los pines del puerto B
PORTA=0b00000011; // Inicio apagando el motor !!
PORTB=0b00110000;
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
disable_interrupts(INT_EXT);
disable_interrupts(INT_TBE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
Dato_recib = 0;
//***************************************************************************//
// Aquí chequeo los sensores de: //
// - Corriente máximas. //
// - Tension mínimas. //
//***************************************************************************//
while(TRUE)
{
//Aquí no hago nada, solo veo lo que hace la interrupcion !
}
}