Red de conocimientos sobre prescripción popular - Como perder peso - Explicación detallada del análisis de oraciones del microcontrolador.

Explicación detallada del análisis de oraciones del microcontrolador.

# include ltreg52.h gt//El archivo de encabezado incluye

#Define SYSCLK 12000000 //Definición de macro: use SYSCLK para representar el número 12000000.

#Define c_TMR 1-(sysclk/12.0)/1000 * 50 //Definición de macro: use //c_tmr1.

//-(SYSCLK/12.0)/1000 * 50

//Esta declaración

#define TIMES_50MS 10 //Definición de macro: use TIMES_50MS para representar 10 .

Datos flotantes float//Declaración de variable: variable de punto flotante FREQ

Datos de caracteres sin firmar TMR0_COUNTER//Declaración de variable: variable de caracteres sin firmar TMR0_COUNTER.

Datos de caracteres sin firmar TMR 1_COUNTER; //Declaración de variable: variable de caracteres sin firmar TMR1_COUNTER.

Bit START_EN //Declaración de variable de bit:

Datos int sin signo TMR 1; //Declaración de variable: variable entera sin signo tmr1

Inicio vacío (no válido) ); //Declaración de función

Void main(void) //Cuerpo de la función principal

{

TMOD = 0x 15 //Cambiar TMOD El registro Los ajustes son: Modo de temporizador de 16 bits Modo de contador de 16 bits.

ET0 = 1; //Activa el contador 0

et 1 = 1; //Inicia el temporizador 1

TMR 1 = c _ TMR 1;/ /Asignar valor inicial a tmr1

START _ EN = 1; /bit variable = 1 (debe usarse como bit de bandera 1)

While(1)//Bucle grande

{

If(START_EN) //Si el bit de bandera es 1

{

START _ EN = 0; bit de bandera primero

start(); // Luego ejecute este programa de función.

}

}

}

Inicio vacío(void)//Cuerpo de función

{

TM r0 _ COUNTER = 0; //Valor inicial de la asignación de variable

TMR 1 _ COUNTER = TIMES _ 50m s; //Valor inicial de la variable = 10

TH0 = 0; //Borra los 8 bits superiores de la calculadora 0.

TL0 = 0; //Borra los 8 bits inferiores de la calculadora 0.

th 1 = TMR 1 gt; //La asignación alta de 8 bits del temporizador 1 (el cálculo de la definición de macro es problemático)

tr 1 = TMR 1; 1 Asignación de los 8 bits inferiores (debe ser TL1 = tmr1)

TR0 = 1; //Activar temporizador 0

tr 1 = 1 //Activar contador 1

TF0 = 0; //TF0 se configura automáticamente por hardware y no es necesario eliminarlo.

TF 1 = 0; //TF1 lo configura automáticamente el hardware y no es necesario eliminarlo.

EA = 1; enciende el interruptor de interrupción principal

}

Voidtmr0 _ ISR (void) interrupción 1 // Función de servicio de interrupción del contador 0 (16- contador de bits)

{

TM r0 _ contador; // TMR0_COUNTER variable automática (0~255)

}

Voidtmr1 _ ISR (void) Interrupción 3//Función de servicio de interrupción del temporizador 1 (temporizador de 16 bits)

{

Datos enteros sin signo I;

Si (-TMR 1 _ contador ==0) //Si la variable disminuye == 0 (inicialmente asignada a 10)

{

TR0 = 0 //Cerrar contador 0

tr 1 = 0; //Apaga el temporizador 1

EA = 0; //Apaga las interrupciones generales (generalmente no uso esta oración)

FREQ =( TM r0 _ COUNTER * 65536 TH0 256 TL0)* 20;

//Calcular FREQ (No entiendo lo que está calculando)

FREQ = FREQ/TIMES _ 50m s ;

//Calcular FREQ (No entiendo lo que está calculando)

START_EN = 1; //Marcar posición 1

}

De lo contrario // De lo contrario

{

tr 1 = 0 //Apagar el temporizador 1

I = TMR 1 TL 1 16 ; //Uso Las siguientes tres oraciones establecen el valor inicial del temporizador 1.

TL 1 = I;

th 1 = I gt8

tr 1 = 1; >}

}

Conclusión: Este programa es realmente muy simple, así de complicado es. ¡No es que el autor sea de alto nivel, sino que no está dispuesto a enseñar a otros ni a competir con él! ! !