He intentado realizar una operación simple basada en el byte de datos recibido por la MCU (pic18F) desde el terminal de la PC a través de UART. La operación enciende un LED según el contenido del byte de datos recibido. Así que aquí está el código para la lógica:
char data = 0;
unsigned char UARTReadByte()
{
while(!PIR1bits.RCIF); //Wait until the receive buffer is full
return RCREG; //Return received byte
}
void main()
{
TRISAbits.TRISA1 = 0
UARTInit(); //Initialize UART
LCDInit(); //Initialize LCD
while(1)
{
data = UARTReadByte(); //The received data from the virtual terminal (UART) is stored in another variable char
Write_Command(0x80);
Write_data(data); //Display the received data on the LCD
if(data==1) //check if the data is 1, if 1 turn ON the LED
PORTAbits.RA0 = 1;
}
}
El número recibido se muestra en la pantalla LCD, sin embargo, el LED no se enciende. Supongo que la MCU no puede verificar ni validar el byte recibido debido a problemas en el formato de datos. ¿Puede alguien ayudarme a resolver este problema? Gracias a todos de antemano.