Red de conocimiento informático - Problemas con los teléfonos móviles - Código del microcontrolador STC 89c52rc

Código del microcontrolador STC 89c52rc

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

Ola La velocidad de bits está establecida en 9600, sin verificación de paridad, oscilador de cristal de 11,0592 MHz, STC89C52.

El microcontrolador recibe el carácter "a" a través del puerto serie, y el microcontrolador retroalimenta "a" y enciende p1.0 =1.

Si el microcontrolador no recibe "a" en 30 segundos p 1.0 = 0.

Preguntas: 1. Los retrasos y los puertos deben cambiarse según su situación real.

2. Después del encendido o reinicio, el primer tiempo de conmutación de P1.0=0 es más largo que el tiempo de conmutación posterior, lo cual es inconsistente. Será normal después de eso

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

# incluir & ltreg52.h & gt

#Definir carácter uchar sin signo

#Definir uint entero sin signo

uchar buf

sbit out = p1^0;

Retraso nulo (carácter sin signo) //11.0592 MHz, con retardo de parámetro.

{

Caracteres sin signo I, j, k

for(k = s; k & gt0;k -)

{

I = 180;

j = 73

Hacer

{

mientras(-j ) ;

} while(-I);

}

}

Administrador no válido (no válido)

{

SCON = 0x 50; //Establece el modo de funcionamiento del puerto serie

PCON = 0x 00; //La velocidad en baudios no se multiplica

TMOD = 0x 20; //El temporizador 1 funciona en modo de recarga automática de 8 bits para generar velocidad en baudios.

EA = 1;

ES = 1; //Habilitar interrupciones del puerto serie

TL 1 = 0x FD

th 1; = 0x FD; //Velocidad en baudios 9600

tr 1 = 1;

mientras(1)

{

Tiempo de retardo( 100); // Retraso, esto debe modificarse al valor que necesite según la situación real.

out = 0; //Arranque normal. Después del retraso, P1.0 será igual a 0.

//Después de recibir A del puerto serie, P1.0 será igual a 1 inmediatamente.

//Entonces, si A no se recibe nuevamente dentro del tiempo de retardo, el programa hará que P1.0 sea igual a 0 nuevamente y realizará un bucle. . .

}

}

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

Función de servicio de interrupción en serie

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

Interrupción serie() no válida 4

{

ES = 0 //Desactivar interrupción serie

RI = 0; //Borrar el indicador de aceptación de serie.

buf = SBUF//Obtener datos del buffer serie

Cambiar (buffer)

{

caso 0x 61: out = 1; break; //Se recibe el carácter A, lo que hace que P2.0 sea alto (0x61 es la forma hexadecimal del código ASCII de "A")

//case 0x 32:out = 0; //Se recibe el carácter 2, lo que hace que P2.0 tenga un nivel bajo (para pruebas)

Valor predeterminado: interrupción//Se reciben otros datos, no se realiza ninguna acción.

}

ES = 1; //Permitir interrupciones del puerto serie

}