Está en la página 1de 23

TEMPORIZADORES

TEMPORIZADOR
SALTO INDEXADO

addwf PCL,F
SALTO INDEXADO ;Tabla de verdad para una funcion de 3 entradas y 6 salidas
goto Configuracion1
;FLH goto Configuracion2
goto Configuracion3
;Asignación de los fusibles para el PIC16F84A goto Configuracion4
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; Configuración para el goto Configuracion5
quemador goto Configuracion6
goto Configuracion7
;Tipo de micro Configuracion0
LIST P=16F84 ; Procesador utilizado. movlw b'01000000' ; (Configuración 0).
#INCLUDE <P16F84.INC> ; Etiquetas del micro goto ActivaSalida
; Configuracion1
; Descripciónión de Memoria del codigo movlw b'00000000' ; (Configuración 1).
goto ActivaSalida
ORG 0x000 ; Vector reset Configuracion2
movlw b'00100000' ; (Configuración 2).
Inicio goto ActivaSalida
bsf STATUS,RP0 ; Acceso al Banco 1. Configuracion3
clrf TRISB ; Las líneas del Puerto B se configuran como salida. movlw b'01000000' ; (Configuración 3).
movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada. goto ActivaSalida
movwf TRISA Configuracion4
bcf STATUS,RP0 ; Acceso al Banco 0. movlw b'00000001' ; (Configuración 4).
Principal goto ActivaSalida
movf PORTA,W ; Lee el valor de las variables de entrada. Configuracion5
andlw b'00000111' ; Se queda con los tres bits de entrada. movlw b'10000000' ; (Configuración 5).
addwf PCL,F ; Salta a la configuración adecuada. goto ActivaSalida
Tabla Configuracion6
goto Configuracion0 movlw b'11100000' ; (Configuración 6).
goto ActivaSalida
Configuracion7
movlw b'11110000' ; (Configuración 7).
ActivaSalida
movwf PORTB ; Visualiza por el puerto de salida.
goto Principal

END
SALTO INDEXADO
addwf PCL,F

la instrucción addwf PCL,F no funciona correctamente cuando el valor de


PCL se desborda sin que el registro PCLATH se incremente
convenientemente
MANEJO DE TABLAS
Tabla de verdad para una funcion de 3 entradas y 6 salidas
;FLH

;Asignación de los fusibles para el PIC16F84A


__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; Configuración para el
quemador

;Tipo de micro
LIST P=16F84A ; Procesador utilizado.
#INCLUDE <P16F84A.INC> ; Etiquetas del micro
;
; Descripciónión de Memoria del codigo

ORG 0x000 ; Vector reset

Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf TRISB ; Las líneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como
entrada.
movwf PORTA
bcf STATUS,RP0 ; Acceso al Banco 0.
Principal
movf PORTA,W ; Lee el valor de las variables de entrada.
andlw b'00000111' ; Se queda con los tres bits de entrada.

call Tabla ;Llama a la tabla


movwf PORTB ;Visualizacion swl portB
goto Principal ; bucle

Tabla
addwf PCL,F ; Salta a la configuracin
DT 0x0A,0x09,0x23,0x0F,0x20,0x07,0x17,0x03F ;
END ; Fin del script
DISPLAY DE 7 SEGMENTOS
SCRIPT
; Script para visualizar un número en hexadecimal en un display de 7 segmentos
;
;; Datos de los fusibles de programación

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


;
;Datos del micro
LIST P=16F84 ; Micro
#INCLUDE <16F84.INC> ; Libreria del micro

;zona de memoria
ORG 0x000 ; Vector de reset
;;
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1
clrf TRISB ; Las líneas del Puerto B se configuran como salida
movlw b'00011111' ; El puerto A esta habilitado como entrada
movlw PORTA ; PortA
bcf STATUS,RP0 ; Acceso al Banco 0.

Principal
movf PORTA,W ; Checa el valor de la entrada
andlw b'00011111' ; valor de las entradas para el nibble bajo
call Tabla ; Llamado a la tabla para el BCD
movwf PORTB ; Mueve el valor al puerto B
goto Principal ; Ciclo

; Subrutina para el BCD

Tabla
addwf PCL,F ; Salta a la configuracin
;;

DT 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71 ; valor para el BCD

END
REBOTES
TEMPORIZACIONES
REGISTRO INTCON
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
BIT's LóE Reset Descripción
Bit 7: GIE 1 = Todas las Interrupciones activadas
L/E 0
Habilitación General. 0 = Todas las Interrupciones desactivadas
Bit 6: EEIE 1 = Activada
L/E 0
Int. de Periféricos 0 = Desactivada
Bit 5: T0IE 1 = Activada
L/E 0
Int. del TMR0 0 = Desactivada
Bit 4: INTE 1 = Activada
L/E 0
Int. Externa 0 = Desactivada
Bit 3: RBIE 1 = Activada
L/E 0
Int. por PORTB 0 = Desactivada
Bit 2: T0IF 1 = TMR0 desbordado.
L/E 0
Bandera del TMR0. 0 = No se ha desbordado
Bit 1: INTF 1 = Ocurrió una interrupción externa
L/E 0
Bandera - RB0/INT 0 = No ha ocurrido interrupción externa
Bit 0: RBIF 1 = Al menos un pin cambio de estado
L/E x
Bandera - RB4:RB7 0 = Ningún pin ha cambiado de estado
TEMPORIZACIONES
REGISTRO OPTION
RBPU INTDEG T0CS T0SE PSA PS2 PS1 PS0

Bit 5: T0CS: Selecciona la fuente de Reloj para TMR0


1 = Pulsos por el pin RA4/T0CKI (contador)
0 = Ciclo de instrucción interno (temporizador)
Bit 4: T0SE: Flanco de incremento para RA4/T0CKI
1 = Incrementa TMR0 en flanco descendente
0 = Incremento en flanco ascendente
Bit 3: PSA: Bit de asignación del Prescaler
1 = Divisor asignado al WDT
0 = Divisor asignado al TMR0
Bit 2-0: PS2, PS1, PS0: Selección del prescaler (divisor de frecuencia)
TEMPORIZACIONES
Temporización = Ciclo de instrucción * (255-TMR0) * Divisor de Frecuencia
Despejando la ecuación anterior:

255-TMR0 = 10000 us/(1 ciclo/us * 256)


255-TMR0 = 10000 /(256 ciclos)
255-TMR0 = 39,0625 ciclos
255-TMR0 = 39 ciclos aproximadamente
TMR0= 255-39 ese el ¡VALOR DEL TEMPORIZADOR!

El valor de 255 se toma al toma los bits 111 PS2 al PS0


TEMPORIZADORES
retardo
movlw b’10000111’
movwf constante1
cuenta
decfsz constante1
goto cuenta
retlw
TEMPORIZADORES
retardo
movlw b’11111111’
movwf constante1
cuenta
decfsz constante1
goto cuenta
retlw
TEMPORIZADORES SIMPLE
Retardo_FFus
;Carga el valor 11111111
movlw 0xFF
;Iniciamos Contador
movwf Contador Etiqueta “Repetir”
Repetir ;Decrementa Contador, si es cero sale
Decfsz Contador del ciclo
goto Repetir ;No es 0, repetir
return
CICLO MÁQUINA= 1 micro Segundo
TEMPORIZADORES SIMPLE
Retardo_FFus
;Carga el valor 11111111
1 movlw 0xFF
;Iniciamos Contador
1 movwf Contador
Etiqueta “Repetir”
Repetir ;Decrementa Contador, si es cero sale del ciclo
1,2 Decfsz Contador;No es 0, repetir
2 goto Repetir
2 return
CICLO MÁQUINA= 1 micro Segundo
RETARDO=2(CALL)+1+1+(254)(1+2)+2+2=762+8=770uS
 Analizar el tiempo de retardo de la siguiente
dispositiva
TEMPORIZADORES ANIDADO

Retardo_FF
movlw 0xCF ; (1)
movwf Contador1 ; (1)
Repeticion1
movlw 0xF8 ; (1)
movwf Contador2 ; (1)
Repeticion2
decfsz Contador2; (1 si no sale, 2 si sale)
goto Repeticion2 ; (2)
decfsz Contador1; (1 si no sale, 2 si sale)
goto Repeticion1 ; (2)
return ; (2)
TEMPORIZADORES ANIDADO

Retardo_FF
movlw 0xCF ; (1) 207
movwf Contador1 ; (1)
Repeticion1
movlw 0xF8 ; (1) 248
movwf Contador2 ; (1)
Repeticion2
decfsz Contador2; (1 si no sale, 2 si sale)
goto Repeticion2 ; (2)
decfsz Contador1; (1 si no sale, 2 si sale)
goto Repeticion1 ; (2)
return ; (2)
 Realizar un temporizador que tenga un segundo de
duración para un microcontrolador conectado a un
cristal de 4MHz
movlw b'00001010‘
movwf T_Enc_Led
Retardo movlw b'01010000'
movwf T_Conta2
movlw b'11111010'
movwf T_Conta1
nop
nop
decfsz T_Conta1
goto $-3
decfsz T_Conta2
goto $-7
decfsz T_Enc_Led
goto Retardo
Return
movlw b'00001010‘ 1
movwf T_Enc_Led 1
Retardo movlw b'01010000' 1
movwf T_Conta2 1
movlw b'11111010' 1
movwf T_Conta1 1
nop 1 1
nop 1 1
decfsz T_Conta1 1 1
goto $-3 2 2 1
decfsz T_Conta2 1
goto $-7 2
decfsz T_Enc_Led 1
goto Retardo 2
Return
movlw b'00001010‘ 1
movwf T_Enc_Led 1
Retardo movlw b'01010000' 1
movwf T_Conta2 1
movlw b'11111010' 1
movwf T_Conta1 1
nop 1 1
nop 1 1
decfsz T_Conta1 1 1
goto $-3 2 2 1
decfsz T_Conta2 1
goto $-7 2
decfsz T_Enc_Led 1
goto Retardo 2
Return

5(250)=a 80(a+1+2+1+1)=b 10(b+1+2+1+1)=c

También podría gustarte