¿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
} p>
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]; p >
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>
}
}