Code:
void main() { char R,X;trisb.f0=1;intcon=0xA0;tri sb.f6=0;
UART1_init(9600);
Delay_ms(100);
loop:
lecture_message ();
if(X==1){ Emission_Message(); Emission_presence();X=0; }....
You didn't define the value of the variable X, and you're checking 'if (X==1)'. In the beginning of the program, X has no value (actually it holds some unknown value). Also R holds no value.
A dirty solution for the interrupt problem would be
char send_flag = 0;
char receive_flag = 0;
In the interrupt routine instead of UART1_WRITE, just set send_flag = 1.
And in the loop in the main program put an 'if' to check that register:
if (send_flag == 1) { send_flag = 0; UART1_WRITE(.....); }
And inside this 'if', do the things that you're doing now in the interrupt routine.