Comunicación serie MCU, la computadora host envía una cadena de caracteres y la MCU determina si las cadenas coinciden y, de ser así, enciende una luz LED. Sería mejor tener ejemplos.
Como usted también es un novato y no tiene puntos, dedicaré 5 minutos a escribir un programa de referencia para usted y lo estudiaré usted mismo. Puede utilizar este programa directamente.
#include "REG52.H"
carácter sin firmar MAIN_FLG;
carácter sin firmar MAIN_BUF
carácter sin firmar Cverrput[5]; //Matriz de visualización de temperatura
/*
* Configurar la inicialización de la velocidad en baudios del puerto serie USART
*/
void SysemInit(void)
{
TMOD = 0x20;
TH1 = 0xFD; //El temporizador se carga con un valor inicial de 9600 baudios
TL1 = 0xFD;
TR1 = 1; //Inicia el temporizador
REN = 1; //REN = 1 permite que el puerto serie reciba datos, de lo contrario dejará de recibir
SM0 = 0; //Selección de modo
SM1 = 1; //Selección de modo SM0 = 0; SM1 = 1; recepción y transmisión asíncrona de datos de 8 bits
ES = 1; // Habilitar interrupción del puerto serie
EA = 1; //Habilitar interrupción total
}
/*
* Función principal del programa
*/
int main(void)
{
SysemInit() ;
mientras(1) p>
{
cambiar (MAIN_BUF)
{
caso 0xAA: / /Recibir datos consistentes con el encendido del LED1
P1 = 0xFE;
romper;
caso 0xBB:
P1 = 0xFD; /Los datos recibidos coinciden y encienden el LED2
break ;
case 0xDD:
P1 = 0xFB //Los datos recibidos coinciden y encienden el LED1
break;
caso 0xCC:
P1 = 0xFB; //Si los datos recibidos coinciden, enciende el LED1
break;
default:P1 = 0xFF; //Si los datos recibidos no coinciden, apague todos los LED
break
}
}
}
/*
* Puerto serie interrumpe la rutina de servicio, el microcontrolador activa la interrupción del puerto serie
*/
void USART_TI(void) interrupción 4
{
while(RI = = 1) //Juzga el indicador de recepción, si hay datos recibidos, RI está configurado p>
{
MAIN_BUF = SBUF; //La computadora inferior asigna los datos recibidos de la computadora superior a la variable MAIN_BUF
RI = 0; por hardware y debe borrarse por software
}
}