Estoy tratando de transmitir continuamente el carácter 'L' del microcontrolador 8051 al PC a una velocidad de baudios de 9600. La frecuencia del 8051 es de 16 MHz, y por consiguiente cargué el registro BRL con "0XFC" Generación de velocidad en baudios. Sin embargo, puedo ver un flujo de valores de basura en el terminal hiperactivo; Incluso intenté cambiar los valores de recarga automática de 0xFB a 0xFF sin éxito. ¿Hay alguna forma para que pueda generar la velocidad de transmisión exacta en el microcontrolador o una manera para que solucione este problema?
Editar: Además, incluso si transmito un solo alfabeto desde la PC al controlador, y el código está escrito de manera que el controlador haga eco de todo lo enviado desde la PC, a veces el carácter que envía el controlador en respuesta es diferente de lo que había enviado.
Mi código es el siguiente:
#include "reg_c51.h"
char uart_data='L';
void main (void)
{
SCON = 0x40;
BDRCON &=0xE0;
BDRCON |=0x08;
BRL=0xFC;
IEN0 = 0xF0;
BDRCON |=0x10;
while(1)
{
SBUF = uart_data;
while(TI==0);
TI=0;
}
}