Programación de retardos
Enviado por MATIAS RIVERA (Docente) • 24 de Noviembre de 2020 • Tutorial • 1.208 Palabras (5 Páginas) • 104 Visitas
[pic 1]
PROGRAMACION DE RETARDOS
El poder programar el tiempo que se activará o desactivará un evento controlado por el PIC es una tarea recurrente en la programación con microcontroladores.
En esta guía de ejercicio veremos cómo programar un retado simple mediante la siguiente lógica:
- Se define en la memoria del PIC una posición a la que se le da un nombre por ejemplo CONT (contador). El contenido de esta celda de memoria será una variable del programa.
Por ejemplo:
CONT EQU H’10’ ; indica que la posición hexadecimal H10 (“16” en decimal) contendrá el
; valor de la variable denominada CONT.
- Se podrá cargar esta la variable creada con un número cualquiera, este número puede ser desde 0 a 255 en decimal ( el número binario 00000000 al 1111 1111 ). Este será el valor inicial de la variable CONT en este caso
- Luego se procede a decrementar el valor de CONT en pasos de a 1 hasta, repitiendo la decrementación hasta que llegue a 0. Esto hace que el programa no avance hasta que se alcance el valor final 0 para la variable decrementada. Así se introduce un tiempo antes de la ejecución del siguiente paso de programa.
- El programa de decrementación o retardo generalmente se establece como una subrutina que se puede invocar cuantas veces se desee en el programa usando el comando CALL.
- Las subrutinas son trozos de programa, se escriben con algún nombre (Ej. DELAY) y pinalizan siempre con la instrucción RETURN. Al ejecutarse RETURN desde una subrutina el programa salta a la instrucción siguiente a la instrucción CALL que llamó a esa subrutina.
A continuación se muestra un programa que permite el parpadeo de un Led conectado por el ánodo al pin de PORTB,0:
; programa, inicio
; *****************************************************************
LIST P=16F628A, R=DEC ; Usar el PIC16F628 y sistema decimal INCLUDE P16f628a.inc ; Incluye archivo cabecera PIC16F628A
CONFIG _CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF
;*******************************************************************
; CONFIGURACION
;*******************************************************************
CONT EQU H'10' ; establece que la posición H10 de memoria será la variable CONTl ORG 0x000 ; El programa empieza en 0x000[pic 2]
;*******************************************************************
; Se inhiben entradas de comparadores deñl pic
;******************************************************************* movlw 7
movwf CMCON ; CMCON=7 inhibir los comparadores
;*******************************************************************
; Inicializa Puertos A y B - configuras cuales pin son entradas y cuales son salidas
;*******************************************************************
bsf | STATUS,RP0 | ; Direcciona a Pág 1 RAM, donde se configuran |
; los registros especiales y , los puertos del PIC | ||
movlw | b'11111111' | |
movwf | TRISA | ; PortAA,0 hasta PORTA,7 serán entradas |
movlw | b'00000000' | |
movwf | TRISB | ; ; RB0 a RB7 serán salidas |
bcf STATUS,RP0 ; direcciona para volver a a pag 0 de RAM (donde está
; el programa principal)
; ******************************************************************
; lazo principal -, enciende y apaga en forma cíclica el Led de PORTB,0
;******************************************************************* INICIO:
clrf PORTB ;Limpia PORTB
ledon bsf PORTB,0 ; Led_0 ON, activa Led conectado con el ánodo B0 call delay ; llama a subrutina de retardo
ledoff bcf PORTB,0 ; Led_0 OFF
call delay ; llama a subrutina de retardo
goto ledon ; vuelve para encender el LED
delay:
movlw b'11111111' ; carga w=255 (en decimal)
movwf CONT ; se carga contenido de w (255) en la variable CONT
bucle decfsz CONT,1 ; decrement CONT_1,
goto bucle ; repite el bucle ( mientras CONT_1 no sea cero return ; Sale de surutina cuando CONT_! llega a cero)
end
Actividad 1.- Led n/Off con el siguiente circuito:
[pic 3]
- Diseñe en Proteus el siguiente circuito para verificar el parpadeo del Led mediante program del controlador.
- Realice en MPLAB el programa propuesto anterior (Defina su nombre como led_1) y compile para obtener su correspondiente archive objeto led_1.hex
- Cargue el microcontrolador,en el simulador Proteus, con el archive led_1.hex
- Verifique que el microcontrolador opera produciendo un tren de pulsos on/off sobre el led en PORTB,0
Observaciones
Pregunta Respuesta | |
1 ¿El circuito funciona de acuerdo a lo esperado? | |
2 Cual de o oscil | es la duración de on y ff según el oscopio? |
3 Que tene de o oscil | explicación podría r la duración de on y ff observada en el oscopio? |
Cálculo de la duración de l ejecución de un programa
Si consideramos que la frecuencia del reloj del PIC es de 4 Mhz y que un ciclo de trabajo (un ciclo de funcionamiento de máquina) ocupa 4 ciclos de reloj, entonces un ciclo de máquina es de 1 microsegundo.
...