Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar la programación en lenguaje C para recibir una cadena desde el puerto serie en el microcontrolador c51?

¿Cómo utilizar la programación en lenguaje C para recibir una cadena desde el puerto serie en el microcontrolador c51?

Solo puedo darte subrutinas, solo como referencia

IE=0x90; //Enciende el interruptor de interrupción principal y la interrupción del puerto serie

SCON=0x50 ; / /Establece el modo de trabajo del puerto serie 1, permite la recepción

TMOD=0x20; //Establece el temporizador 1, carga automáticamente y genera una tasa de interrupción

TH1=0xfd; //La tasa de interrupción es 9600

TR1=1; //Inicia el temporizador 1

PCON=0x80; //Definir SMOD,

Enviar

while(RI==0) //RI==1;

{

; //Esperando que se envíen los datos

}

RI=0; //Borrado manual

Enviar

void disf(unsigned int y)

{

carácter sin firmar i;

DAT[3]=y%10; // ===7

DAT[2]=(y/10)%10; = =8

DAT[1]=(y/100)%10; //==9

DAT[0]=y/1000; p >

for(i=0;i<4;i++)

{

SBUF=DAT[i];

while(TI= = 0); //Espera a que se envíen los datos

TI=0; //Borrar manualmente

}

}

Recibir

while{disp();} // Bucle infinito

Cuatro caracteres, enviar

while(key==0);

disp(1949);

for(i=0;i<4;i++)

{

SBUF=DAT[i];

while(TI==0); //Espera a que se envíen los datos

TI=0; //Borrar 0 manualmente

}

Caracteres de cuatro bits, recibe interrupción del puerto serie

void ck_js() interrupción 4

{

unsigned char i;

for(i= 0;i<4;i++)

{

while(RI==0); //Esperando recepción de datos

RI= 0; //Borrado manual

DAT[i]=SBUF; //Almacenamiento de caracteres recibidos

}

}

Múltiples Función de recepción de caracteres

void seri_int() interrupción 4

{

count1=0;

if(RI)

{

unsigned int count2=10000;

while(1)

{

flag1=1;

while(!RI)

{

if(count2==0)

{

RI=0;

p>

ruptura;

}

cuenta2--;

}

dat1[cuenta1]= SBUF;

p>

count1++;

RI=0;

}

p>

}

}