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
}
}
}