La computadora host envía 8 números hexadecimales al microcontrolador cada vez. Quiero que los expertos escriban un programa en C para el microcontrolador y transfieran los datos recibidos a la computadora host en el programa principal.
El siguiente es un programa de microcontrolador de envío y recepción de datos de puerto serie con una velocidad de baudios de 9600. No sé qué microcontrolador no se utiliza, por lo que no tengo el archivo de encabezado que puede proporcionar. hágalo usted mismo.
Puede utilizar la herramienta de puerto serie en la computadora para enviar datos al microcontrolador. El microcontrolador enviará los datos de regreso a la computadora host mientras recibe los datos de la computadora host.
char nCountRx, rec_1;
char nCountRx, rec_1; p>
char TxBuffer1[8], RxBuffer1[8];
void Port_Init(void)
{
AUXR = 0x1D; los puertos 1 y 2 utilizan velocidades de baudios independientes en modo 1T, modo T0 T1 12T, S2SMOD = 1
//---Temporizador 0, 1------
TMOD. =0x11; //El temporizador 1 es el modo 1, modo de conteo de 16 bits; el temporizador 0 está configurado en el modo 2, carga automática de 8 bits
SCON=0x50; , Recepción y recepción asíncrona de 11 bits, 1101 0000 - velocidad de baudios variable de 9 bits, bit de bandera, permite que el puerto serie acepte habilitar
PCON=PCON|0x80; // Duplica la velocidad de baudios, 9600; no duplique la velocidad en baudios, 4800 TR0=1; //Iniciar temporizador Dispositivo 0
TR1=1; //Iniciar temporizador 1
BRT=0xB8; configuración de tasa de desbordamiento del generador SMOD=0 baundrate=4800 p>
ES=1; //bit de habilitación de interrupción del puerto serie 1
EA=1 //interruptor de control maestro de interrupción
}
// ------------Enviar cheque----------------------- ---
void Check_Uart() //Determina si los datos en el puerto serie se han enviado correctamente
{
while(TI==0) ; //Esperar a que se complete el envío de datos
TI= 0; //Borrado de software
}
//-------- -----Enviar un byte al puerto serie------- ----------
void Write_Byte_Uart(byte de caracteres sin firmar)
{
SBUF = byte; //El byte enviado se envía Guardar en el área del búfer del puerto serie
Check_Uart() //Comprueba si se han enviado los datos del puerto serie
p>}
//---------- -----------Función de interrupción del puerto serie---se utiliza para recibir datos del puerto serie- ----------------
void UART_int() interrupción 4
{
if(RI) p>
{
nRxBuf[nCountRx]=SBUF;
for(i=0; ilt;
nCountRx; i) TxBuffer1 [i] = RxBuffer1 [i]; =0;
}
void main(void)
{
char i;
Port_Init( );
mientras(1)
{
si(rec_f==1)
{
for(i=0;ilt;8;i)Write_Byte_Uart(TxBuffer1[i]);
rec_f=0;
}
}
}