PIC16F877A : How to keep controller awake?
When a byte comes into the receive ISR, if the interrupt flag is set, you reset it, and then set a flag using UART_SetRecvByteStatus( true ).  The ISR also disables the receive interrupt.  You do not read a byte out of the UART receive register at this time.  Not good.

In main, inside the while(1) loop, if the RecvByteStatus flag is set, you reset it and call receiveDataPkt().  In that function, inside the while loop: while ( buf_count != MAX_PKT_SIZE ), you make repeated calls to read the UART buffer.

But except for the first time, you don't really know if a character is available (unless the UART_Read() blocks waiting for the receive buffer to be full, and I doubt that). While you are making all of these calls to UART_Read(), the ISR is not triggered because the interrupt is disabled.

You exit receiveDataPkt() only if you have received one of two special characters.  If these are missing, you will continue to receive characters until the buffers are full.

The way this should work, is you should leave the interrupt enabled, and you should be putting characters into a circular buffer inside the ISR, and then pulling them off in the receiveDataPkt() function.  This entails using two pointers, one for keeping track of the next byte for the ISR, and another for pulling the bytes off the buffer.  If you are not familiar with circular buffers, look it up.