Red de conocimiento informático - Computadora portátil - ¿Cómo recibe el microcontrolador 51 un puerto serie multibyte? ! ! !

¿Cómo recibe el microcontrolador 51 un puerto serie multibyte? ! ! !

El envío y recepción del puerto serie se puede realizar mediante consultas e interrupciones.

1. El método de consulta es más adecuado para el mecanismo semidúplex. La idea de escritura es simple y la estructura del programa es simple.

2. El método de interrupción es más eficiente. Su programa combina estos dos enfoques y es propenso a errores.

Tome su programa como ejemplo. Una vez que se recibe el primer carácter 23H, deje de esperar los 5 caracteres restantes en el bucle for del servicio de interrupción. Suponiendo que el sensor solo envía tres caracteres, su programa se detiene en el bucle for.

Utiliza tu programa como ejemplo para mejorarlo. Al recibir el servicio de interrupción, solo reciba 1 carácter cada vez que reciba una interrupción y salga una vez finalizada.

void uart_interrupt(void) interrupción 4 usa 0

{

Carácter estático sin firmar I = 0;

Área de búfer de caracteres sin firmar;

if(RI==1)

{

buf = SBUF

Interruptor (1)

{

Caso 0:

if(buf = = 0x 23)I = 1;

Rotura;

Caso 1:

Caso 2:

Caso 3:

Caso 4:

Caso 5:

buffer[ I- 1]= buf;

i;

si(buf==0x23)

I = 1;

si (i= =5)

{

hacer_algo_aquí(buffer);

I = 0;

}

Romper ;

Predeterminado: I = 0; Interrupción;

}

RI = 0; //RI se borra

}

if(TI = = 1)TI = 0; //TI clear

}

¿Este cambio se ajusta a tus hábitos de pensamiento? El análisis del protocolo en serie real está estrechamente relacionado con el protocolo y se realiza mejor utilizando máquinas de estado. Lo convertí en una máquina de estado en el programa. Pensando en ello, también podría cambiar el programa.