Ir al contenido

Bucles de retardo

Un retardo por software es un bucle que decrementa contadores hasta cero. Para tiempos de milisegundos o segundos necesitas anidar bucles (uno dentro de otro).

RETARDO
MOVLW .N
MOVWF CONTADOR
BUCLE
DECFSZ CONTADOR,F
BRA BUCLE
RETURN

Si se llama con CALL RETARDO, el CALL suma 2 ciclos antes de entrar.

LineaInstruccionCiclos × vecesSubtotal
(CALL)CALL RETARDO2 × 12
1MOVLW .N1 × 11
2MOVWF CONTADOR1 × 11
3DECFSZ CONTADOR,F1×(N−1) + 2×1N + 1
4BRA BUCLE2 × (N−1)2N − 2
5RETURN2 × 12

Σ CI (con CALL) = 2 + 1 + 1 + (N+1) + (2N−2) + 2 = 3N + 4

Sin CALL (solo cuerpo de subrutina): Σ CI ≈ 3N + 2

PasoValor
CM4/20 MHz = 0,2 µs
Σ CI2+1+1+201+398+2 = 605
Retardo0,2 × 605 = 121 µs

Desglose DECFSZ: 199 veces × 1 ciclo + 1 vez × 2 ciclos = 201.
Desglose BRA: 199 veces × 2 = 398.

Estructura del PDF (recarga N en cada vuelta del bucle externo):

Diapositiva del PDF: retardo de dos y tres bucles anidados con conteo de ciclos y formulas
Diapositiva 8 del PDF: codigo, conteo linea por linea y formulas Σ CI = 3NM + 4M + 5 (dos bucles) y 3NMP + 4MP + 4P + 5 (tres bucles). — Clase Tema 4 y 5 — Retardos · UNEXPO · Prof. Ing. Yoel Pire
RETARDO
MOVLW .M
MOVWF CONTADOR_2
BUCLE_2
MOVLW .N
MOVWF CONTADOR_1
BUCLE_1
DECFSZ CONTADOR_1,F
BRA BUCLE_1
DECFSZ CONTADOR_2,F
BRA BUCLE_2
RETURN

Formula del curso (sin CALL):

Σ CI = 3NM + 4M + 5

Donde N = contador interno, M = contador externo.

Cada vuelta del bucle externo paga:

  • MOVLW .N + MOVWF CONTADOR_1 → 2 ciclos
  • Bucle interno completo → ≈ 3N ciclos
  • DECFSZ CONTADOR_2 + BRA BUCLE_2 → ≈ 4 ciclos por vuelta externa (promediado)

El PDF resume todo en 3NM + 4M + 5; usala para estimar y luego verifica linea por linea en el examen.

RETARDO
MOVLW .P
MOVWF CONTADOR_3
BUCLE_3
MOVLW .M
MOVWF CONTADOR_2
BUCLE_2
MOVLW .N
MOVWF CONTADOR_1
BUCLE_1
DECFSZ CONTADOR_1,F
BRA BUCLE_1
DECFSZ CONTADOR_2,F
BRA BUCLE_2
DECFSZ CONTADOR_3,F
BRA BUCLE_3
RETURN

Formula del curso:

Σ CI = 3NMP + 4MP + 4P + 5

Este cuadro no es del examen parcial: es el ejercicio de clase del PDF («Realice un cuadro comparativo con la duracion maxima de retardos de 1, 2 y 3 bucles con un cristal de 20 MHz»). La fila de 2 bucles (Σ CI = 196 100, retardo 39,22 ms) sale de ahi.

Ejercicio del PDF: tabla comparativa de retardos maximos con 1, 2 y 3 bucles a 20 MHz
Diapositiva 9 del PDF — ejercicio de clase: N=M=P=255 y tabla con 770 / 196 100 / 50 005 250 ciclos. — Clase Tema 4 y 5 — Retardos · UNEXPO · Prof. Ing. Yoel Pire

Con contadores al maximo (N = M = P = 255):

BuclesΣ CIRetardo
17700,154 ms
2196 10039,22 ms
350 005 250~10 s

Conclusion practica: con software puro y 20 MHz, para segundos necesitas 3 bucles o repetir subrutinas (p. ej. llamar RETARDO_50MS muchas veces). El problema de la bomba del parcial (10 s por digito) encaja con retardos largos o bucles de 3 niveles.

Ejercicio · Parcial

Cuadro comparativo (ejercicio del PDF)

Verifica la fila de 1 bucle: N=255, Σ CI=770, Retardo = 770 × 0,2 µs = 154 µs = 0,154 ms.

Ejercicio · Parcial

¿Cuanto con 2 bucles? (misma diapositiva)

Con N=M=255, Σ CI = 3×255×255 + 4×255 + 5 = 196 100. Retardo = 196 100 × 0,2 µs = 39,22 ms.

Declara contadores en GPR (estilo sandwich del curso):

CONTADOR RES 1
CONTADOR_1 RES 1
CONTADOR_2 RES 1
CONTADOR_3 RES 1

Cada RES 1 reserva 1 byte (0–255). Por eso el maximo de un contador en un bucle simple es 255 (.255 o valor menor).

Siguiente: Calculo y aplicaciones — retardo 3 ms del examen, señal 10 Hz, NOP y BRA vs GOTO.

Examen interactivo

Bucles de retardo

Basado en: Clase Tema 4 y 5.pdf

0 de 0 respondidas

En un bucle simple, DECFSZ sobre N iteraciones suma en ciclos...
La formula Σ CI para dos bucles anidados (sin CALL) es...
Con N=M=P=255 y 20 MHz, el retardo maximo con 3 bucles es aprox...
El valor maximo de un contador de 8 bits en un bucle es...
Ejemplo PDF: N=200 @ 20 MHz da Σ CI=605 y retardo de...
Para tiempos de segundos @ 20 MHz con software puro sueles usar...