Red de conocimiento informático - Conocimiento informático - Ayuda con un programa de comunicación serial escrito en lenguaje C

Ayuda con un programa de comunicación serial escrito en lenguaje C

#include lt; reg52.hgt;

#define uchar unsigned char

#define uint unsigned int

unsigned char a, i;

tabla de códigos uchar[]="Obtengo ";

void init()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd

TR1=1;

REN=1; > SM0=0;

SM1=1;

EA=1;

ES=1;

void main()

{

init();

mientras(1);

void ser() interrupción 4

{

while(RI==0); //Eliminar un carácter

a=SBUF;< / p>

RI=0;

if(a=='x')

for(i=0; ilt; 6; i ) //Enviando parte, prueba poner las cosas a hacer en la interrupción tanto como sea posible

{

TI=0

SBUF=table[i]; >

while(TI==0);

TI=0;

}

}

SBUF es un dedicado registro. Físicamente, corresponde a dos registros, a saber, un registro de transmisión y un registro de recepción. Escribir SBUF por la CPU significa modificar el registro de transmisión y leer SBUF significa leer el registro de recepción. El receptor tiene un doble buffer para evitar el problema de la superposición de dos cuadros de datos si la CPU no responde a la interrupción del receptor a tiempo y no lee los datos del cuadro anterior antes de recibir el siguiente cuadro de datos. Para el transmisor, para mantener la velocidad de transmisión máxima, generalmente no se requiere doble almacenamiento en búfer, porque la CPU está activa durante el envío y no se producirán problemas de superposición.