Me gustaría saber si una velocidad de 9600 baudios es tan rápida para un 8051 MCU usando un cristal de 11.0952Mhz. ¿Por qué? He observado cierta inconsistencia en el comportamiento de mi MCU, en el sentido de que cuando envío un conjunto de caracteres buscando un carácter en particular para realizar ciertas operaciones, descubro que mi MCU no realiza la operación requerida. Lo que significa que hubo un error en la línea durante la recepción. Entonces hice una rutina en serie. Envié un "ABC" desde el terminal al MCU, el cual debería transmitir al terminal un incremento de cada carácter enviado, por lo tanto debería dar "BCD". Pero esto es lo que obtuve consistentemente - "BD" sin "C". Lo que significa que al MCU le faltó la "B". También envié otro conjunto de caracteres y descubrí que algunos caracteres se perdieron en el MCU. ¿Cuál podría ser la causa de esto? ¿Podría ser la tasa de baudios o en mi código? ¿Cómo puedo rectificar esto?
Aquí está el código.
void initUART()
{
SCON = 0x50;
TMOD = 0x20;
TH1 = TL1 =-3;
TR1 = 1;
}
void sendCHAR()
{
SBUF = uartBUFF[s];
while(!TI);
TI=0;
}
void serial_isr(void) interrupt 4
{
if (RI)
{
RI = 0;
tmpBUFF = SBUF;
charFLAG=1;
}
}
main()
{
IE= 0x91;
initUART();
while (1)
{
if(charFLAG)
{
SBUF = (tmpBUFF+1);
while(!TI);
TI=0;
charFLAG = 0;
}
}
}
¡Gracias!