Red de conocimiento informático - Espacio del host - Quiero que el microcontrolador 51 se comunique con el puerto serie de la computadora, para que la computadora pueda ingresar decimales y devolver el código BCD. Es mejor tener un programa. ¿Pueden darme algún consejo? .

Quiero que el microcontrolador 51 se comunique con el puerto serie de la computadora, para que la computadora pueda ingresar decimales y devolver el código BCD. Es mejor tener un programa. ¿Pueden darme algún consejo? .

Aquí hay un código fuente para enviar y recibir datos a través del puerto serie.

Siéntate y espera los puntos de recompensa.

El código fuente se reproduce de: "51 Microcontroller C Language Innovation Tutorial" de Wen Ziqi y otros.

/*Nombre del experimento: experimento de envío y recepción de datos por puerto serie

*Descripción: en el experimento de recepción de datos por puerto serie utilizando un microcontrolador,

¿Qué datos son? enviado utilizando el asistente de depuración del puerto serie,

El microcontrolador utiliza el método de consulta para enviar los datos recibidos a la PC

*Autor: Wen Ziqi

*Fecha de modificación: 4/5/2010

*/

#include "stc.h" //Cargar "stc.h"

/** ********** *******************************

*Nombre de la función : UARTInit

*Entrada: Ninguna

*Salida: Ninguna

*Función: Inicialización del puerto serie

****** ******************* *************************/

void UARTInit(void) //Definir la función de inicialización del puerto serie

{

SCON =0x50; //8 bits de datos, se permite la recepción

T2CON =0x34; //El temporizador 2 se utiliza como generador de velocidad en baudios

RCAP2L=0xD9; //Los 8 bits inferiores de la velocidad en baudios de 9600

RCAP2H=0xFF; Los 8 bits superiores de la velocidad en baudios de 9600

}

/************************ ******************

*Nombre de función: UARTSendByte

*Entrada: byte El byte a enviar

*Salida: Ninguna

*Función: El puerto serie envía un solo byte

******************** **********************/

void UARTSendByte(unsigned char byte)//Definir la función de envío de datos del puerto serie

{

SBUF=byte; //El buffer carga los bytes a enviar

while(TI==0); //Esperando que se complete la transmisión, el indicador TI se establecerá en 1

TI=0 //Borrar el indicador de finalización de transmisión

}

/*******; ********************************

*Nombre de función: principal

*Entrada: Ninguna

*Salida: Ninguna

*Función: Cuerpo de la función

*************** ***************************/

void main(void) //Función principal

{

unsigned char recv; //Declarar variable recv

UARTInit() //Inicialización del puerto serie

while(1)

//Ingresa un bucle infinito

{

if(RI) //Detecta la posición 1 del indicador de finalización de recepción

{

RI =0 ; //Borrar el indicador de finalización de recepción

recv=SBUF; //Leer los datos recibidos

UARTSendByte(recv); //Devolver los datos recibidos

}

}

}