Red de conocimiento informático - Aprendizaje de programación - El oscilador de cristal Keil c51 es de 11,0592 mhz. Lo que escribí es retraso (uchi ri) { while (-I);} ¿Cuánto tiempo durará este retraso?

El oscilador de cristal Keil c51 es de 11,0592 mhz. Lo que escribí es retraso (uchi ri) { while (-I);} ¿Cuánto tiempo durará este retraso?

¿Quién sabe cuál es tu yo? Por desgracia, nadie lo sabe. Puede utilizar la simulación de Keil para obtener la respuesta directamente o puede consultar la autocorrección a continuación.

El siguiente es el programa de retardo del microcontrolador (incluidos los programas asm y C, que utilicé en el proceso de aprendizaje del microcontrolador). En el programa de retardo del microcontrolador se debe considerar la frecuencia del oscilador de cristal utilizado. En los microcontroladores de la serie 51 utilizamos habitualmente osciladores de cristal de 11,0592 MHz y 12,0000 MHz, y en los microcontroladores AVR.

Retraso del software: (asm)

Oscilador de cristal 12MHZ, retraso 1 segundo.

El proceso es el siguiente:

Retraso: MOV 72H, #100

Tercer bucle: MOV 71H, #100

bucle 1: MOV 70H # 47

LOOP0: DJNZ 70H, LOOP0

no se proporciona lo contrario a menos que se especifique lo contrario

DJNZ 71H, LOOP1

MOV 70H, No. 46

Loop 2: DJNZ 70H, Loop 2

no se proporciona lo contrario a menos que se especifique lo contrario

DJNZ 72H, LOOP3

MOV 70H, No. 48

LOOP4: DJNZ 70H, LOOP4

Retardo del temporizador:

El oscilador de cristal es de 12 MHZ y el retraso es 1 s, el modo de funcionamiento del temporizador 0 es 1.

DELAY1: MOV R7, # 0AH; oscilador de cristal 12MHZ, retraso 0,5 segundos.

Retraso AJMP

Retraso 2: MOV R7, #14H; Oscilador de cristal 12MHZ, retraso 1 segundo.

Retraso: CLR EX0

MOV TMOD, # 01H; Establece el modo de funcionamiento del temporizador en modo 1.

MOV TL0,#0B0H establece el valor de conteo inicial del temporizador.

MOV TH0, #3CH

SETB TR0; iniciar temporizador

Aquí: JBC TF0, NEXT1

Soy SJMP

p>

NEXT1: MOV TL0, #0B0H

MOV TH0, #3CH

DJNZ R7, aquí

El temporizador CLR TR0 debe borrarse software cero.

SETB EX0

Remojarlo en agua lo suaviza

Programa de retardo en lenguaje C:

Subrutina de retardo de 10 milisegundos (12 MHZ)

Retraso no válido 10 milisegundos (no válido)

{

Caracteres sin firmar I, j, k;

for(I = 5; i gt0 ; i-)

for(j = 4; j gt0; j -)

for(k = 248; k gt0; k-);

}

Subrutina de retardo de 1 s (12 MHZ)

Retraso de 1 s no válido (no válido)

{

Caracteres sin signo h, I, j, k;

for(h = 5; h gt0; h -)

for(I = 4; i gt0; i -)

for( j = 116; j gt0; j -)

for(k = 214; k gt0; k-);

}

Subrutina de retardo de 200 milisegundos (12MHZ) )

Retraso no válido 200 milisegundos (no válido)

{

Caracteres sin signo I, j, k;

for( I = 5 ;i gt0;i-)

for(j = 132;j gt0;j -)

for(k = 150;k gt0;k-);

}

Subrutina de retardo de 500 ms: (12 MHZ)

Retraso no válido 500 milisegundos (no válido)

{

Caracteres sin firmar I , j, k;

for(I = 15;i gt0;i-)

for(j = 202;j gt0;j -)

for(k = 81; k gt0; k-);

}

Los siguientes son los resultados usando un oscilador de cristal de 8.0000MHZ (usando el modo de trabajo de temporización 0 1) Programa de retardo:

(1) Retraso 0,9 milisegundos

Retraso no válido_ 0 _ 9 milisegundos (no válido)

{

TMOD = 0x 01; *El temporizador 0 funciona en modo 1 (contador de 16 bits)*/

TH0 = 0xfd

TL0 = 0xa8

TR0 = 1 /*Iniciar temporizador; */

while(TF0 = = 0);

TR0 = 0;

}

(2) Retraso de 1 milisegundo

Retraso no válido_1 milisegundo (no válido)

{

TMOD = 0x 01 /*El temporizador 0 funciona en modo 1 (contador de 16 bits)*/

TH0 = 0xfd

TL0 = 0x65

TR0 = 1; /*Iniciar temporizador*/

mientras(TF0 = = 0) ;

TR0 = 0;

}

(3) Retraso 4,5 milisegundos

Retraso no válido_4_5 ms (no válido)

{

TMOD = 0x 01; /*El temporizador 0 funciona en modo 1 (contador de 16 bits)*/

TH0 = 0xf4

TL0 = 0x48

TR0 = 1; /*Iniciar temporizador*/

mientras(TF0 = = 0);

p>

TR0 = 0;

}