Programa C de comunicación serie para 51 microcontroladores, muy sencillo...
#define uchar unsigned char //Reemplazar unsigned char con uchar
#define uint unsigned int //Reemplazar con unsigned int uint
unsigned char flag, a, i; //Definir variable flag, a, i
uchar code table[]="Recibo, gracias" //Definir string Array
void init()
{
}//Establezca una solución alternativa, esto se puede obtener.
void main()
{
init(); //inicialización del sistema, lo obtienes
while(1) / /parte del bucle principal, continúa ejecutándose
{
if(flag==1) //espera a que se establezca el bit de posición del indicador en el puerto serie cuando se establece la interrupción de recepción de datos
{
ES=0; //Deshabilita la interrupción en serie, pero ten en cuenta que el indicador de interrupción de transmisión todavía está configurado normalmente
for(i=0; ilt ; 18; i) //Bucle For para escribir cadenas previamente definidas una por una
{
SBUF=table[i] //Escribe respuesta "Recibo, gracias"
while(!TI); //espera a que se complete el envío, el indicador de interrupción de envío se establece en uno; de lo contrario, el ciclo while continúa
TI=0; enviar bit de indicador de interrupción
{
SBUF=table[i] //escribe la respuesta "Recibo, gracias"
for loop para poder enviar la cadena previamente definida una por una. flag bit
}
SBUF=table[i] //escribe la respuesta "Recibo, gracias"
; for bucle para enviar las cadenas previamente definidas una por una.
SBUF=a; //continúa enviando un al buffer del transceptor serie a través del puerto serie para mostrar los datos recibidos
mientras(! TI); // Espera a que se complete la transmisión
TI=0; // Borra el bit de bandera de interrupción de transmisión
ES=1 // Vuelve a habilitar la interrupción del puerto serie.
flag=0; // Borra la bandera para esperar la próxima recepción
}
}
}
void serial() interrupción 4 //Rutina de servicio de interrupción en serie, nivel de prioridad 4
{
RI=0 // Cuando se completa la recepción, RI se establece en 1; . Se produce una interrupción en serie, borre el bit de bandera
a=SBUF; //Lee los caracteres recibidos y asígnalos a la variable a
flag=1 //La recepción será completado El indicador se establece en 1 para que la respuesta pueda enviarse en el programa principal
}