Programación de comunicación Rs232
Si su fáser solo necesita enviar p0 c0 l0 al principio, eso significa que todos los datos posteriores son enviados por el fáser.
Si el microcontrolador recibe, no hay gran problema en la parte de inicialización, pero hay un problema con ReceStr() para recibir datos. Debe ser que no se pueden recibir los datos ¿no?
1. ¿El programa de inicialización del puerto serie primero determina si el valor de TH1 coincide con el oscilador de cristal del microcontrolador? Cuando la velocidad en baudios del oscilador de cristal 11.0592M no se duplica (smod = 0), se utiliza 0xfd para 9600bps.
De esta manera usted puede controlar el microcontrolador para enviar, y la PC configurará 9600 para recibir, para ver si la velocidad del puerto serie del microcontrolador está configurada correctamente.
2. La función de recepción del puerto serie actual no puede recibir datos incluso si se ejecuta. Dado que el puerto serie del microcontrolador tiene solo un búfer de bytes, los datos generalmente se reciben de forma interrumpida.
Cada vez que se recibe un byte, el byte recibido se coloca en el búfer del programa mediante una interrupción.
¿Cómo se escribe la variable receptora como flotante? Utilice caracteres lo menos posible en una sola palabra.
Si los datos enviados por el medidor de fase son de tipo punto flotante y usted mismo necesita convertirlos, el puerto serie solo enviará entre 8 y 8 dígitos de datos hexadecimales.
3. Si el programa requiere un retraso preciso, debe depurar la función de retraso.
Receptor de puerto serie:
Variables globales:
Unsigned char x _ Buf[50]= { 0 };
Unsigned char * pX = x _ Buf
//volatile unsigned char posBf = 0;
Servicio interrumpido:
Serial_ISR no válido (no válido) Interrupción 4
{
Frecuencia intermedia (RI)
{
RI = 0;
* px++ = SBUF;
if(pX = = &x_Buf[49]+1)pX = x_Buf;
}
}
***** ******************************************* ******/
/* -
Inicialización del puerto serie
- */
Inicialización no válida (no válida)
{
SCON = 0x 50;
TMOD | = 0x 20;
ésimo 1 = 0x FD
tr 1 = 1;
ES = 1; //Habilitación de interrupción en serie
EA = 1;
}