Microcontrolador 51, envía una cadena al microcontrolador a través del asistente del puerto serie, y el microcontrolador envía la cadena de regreso a la computadora en orden inverso, programado en lenguaje C
Para enviar una cadena como esta, es necesario que haya un indicador de fin de cadena, ¡y 0 no se puede usar como indicador de fin de cadena! ¡Aquí, el retorno de carro 0xd se utiliza como marca final!
#include lt;reg51.hgt;
typedef unsigned char uint8;?
bit flag = 0;
uint8 idata buf [30];
uint8 ct;
void InitUART(void) //Inicialización del puerto serie 9600bps
{
TMOD = 0x20
SCON = 0x50;
TH1 = 0xFD
TL1 = TH1; p > EA = 1;
ES = 1;
TR1 = 1;
}
envío nulo(uint8 c)
{
SBUF = c;
mientras(!TI
TI = 0;
void main(void)
{ char j;?
InitUART();
while(1)
{
if(flag) //¿Se recibió un retorno de carro? La cadena ha sido enviada
{
flag = 0; p>
for(j = ct; j gt; 0; j--)
{
? Enviar(buf[j-1]);
}
}
}
}
interrupción UARTInterrupt(void) nula 4
{ estático uint8 i = 0;?
if(RI)
{
RI = 0
? = SBUF ;
? if(SBUF == 0x0d) //Ingreso de carro recibido
{
ct = i-1;
bandera = 1;
i = 0
}
}
más
TI = 0;
}
Resultados de la simulación
El programa se utiliza como referencia. ¡Espero que puedas entender el programa tú mismo! ¡Solo cuando lo domines podrás usarlo bien!