Académique Documents
Professionnel Documents
Culture Documents
Base Terica.
Un ciclo de maquina es la unidad bsica de tiempo que utiliza el
microcontrolador y equivale a 4 ciclos de reloj.
Si tenemos un oscilador de 4 MHz, el ciclo de reloj sera de 250 ns (T= 1 / 4
Mhz) y el ciclo mquina de 1 s (T= 1 / 4 Mhz)*4. Como F=1/T, es lo mismo decir
que se divide la frecuencia del oscilador entre 4.
En el datasheet se establece que la velocidad de operacin mxima (frecuencia)
es de 20 Mhz equivalente a 200 ns de ciclo de instruccin (ciclo de mquina),
esto es:
F=1/T (1/20 Mhz = 5 exp -8 multiplicada por 4 ciclos de reloj = 200 ns).
Las instrucciones del microcontrolador necesitan 1 ciclo mquina excepto
algunas excepciones, como son las instrucciones que incluyen saltos (goto,
call, btfss, btfsc, return, etc) que necesitan dos ciclos mquina.
Regla de 3 s:
El formato del ciclo de retardo es el siguiente:
movlw d'n'
movwf contador
decfsz contador,F
goto $-1
La instruccin decfsz dura 1s y la instruccin goto dura 2 s, lo que da 3 s,
por lo tanto el retardo ser:
Retardo = 3 s * n
Despejando:
n = Retardo / 3 s
Ejemplo 1:
Si se quiere un retardo de 100 s: n = 100 s / 3 s = 33.33
movlw d'33'
movwf contador
decfsz contador,F
goto $-1
return
El valor mximo de un contador 'n' es de 255 debido a los registros son de 8 bits.
Regla de 4 us:
El Formato del ciclo de retardo es el siguiente:
movlw d'n'
movwf contador
nop
decfsz contador,F
goto $-2
return
1ms = 10 ms
movlw d'10'
movwf contador_2
movlw d'250'
movwf contador_1
nop
decfsz contador_1,f
goto $-2
decfsz contador_2,f
goto $-6
; si no es cero, regresa a cargar contador_1
return
Se puede hacer un retardo base de 1 ms y generar muchos retardos desde 1ms
a 255 ms sin necesidad de hacer 255 retardos diferentes.
movwf contador_2
movlw d'250'
movwf contador_1
nop
decfsz contador_1,f
goto $-2
decfsz contador_2,f
goto $-6
return
Ejercicio 1:
Elaborar un programa para un LED parpadeante que se encienda y se apague
cada 1s conectado a Rb0:
Ejercicio 2: