práctica nº 11

Anuncio
Pedro Guerrero Amado.Marzo 2002
PRACTICA 11
TEMPORIZADOR Y CONTADOR
DESCRIPCIÓN.
En esta práctica vamos a contar los impulsos de entrada de la patilla 4 del puerto A
y cuando lleguemos a un determinado valor activamos una salida y un temporizador.
Cuando pasa el tiempo de temporización, se desactiva esa salida y se activa la primera
reseteando el contador y volviendo al principio.
PROGAMA FUENTE
;
TEMPORIZADOR Y CONTADOR
LIST P=PIC16F84
LIST C=132
#define banco1 bsf 0x03,5
#define banco0 bcf 0x03,5
;DECLARACION REGISTROS Y VARIABLES
include <registr.h>
cont1 EQU 0xc
cont2 EQU 0xd
cuenta EQU 0xe
ORG 0
GOTO reset ;salvamos el vector de interrupción
ORG 5
reset banco1
CLRF trisb
MOVLW 0x1f
MOVWF trisa
MOVLW 0xef
MOVWF opcion
banco0
CLRF portb
; seleccionamos banco 1 de registros
; ponemos trisb a 0, puerta B como salidas
;ponemos a como entradas
;asignamos el valor del temporizador al
;contador externo cargando el registro OPTION
; seleccionamos banco 0
Hasta aquí las instrucciones que conocemos con alguna declaración de variables.
Pedro Guerrero Amado.Marzo 2002
En el cuerpo del programa que sigue a continuación hacemos lo que ya hemos
descrito, en primer lugar borramos el temporizador y activamos la salida 0 del la puerta B.
A continuación comparamos el valor del temporizador (contador en este caso) para
ver si hemos llegado al valor de cuenta (5 en nuestro caso). Si no hemos llegado, estamos
en el bucle hasta que alcancemos el valor de conteo. Una vez ocurra esto, borramos la
salida 0 y activamos la 1 y llamamos a la rutina de retardo. Una vez transcurrido el tiempo
de retardo, borramos la salida 1 y volvemos a princi.
princi CLRF tm0
BSF portb,0
;Borramos el valor del temporizador
;Ponemos a 1 la salida 0
inicio MOVLW 0x5
XORWF tm0, w
BTFSS status, 2
GOTO inicio
BCF portb, 0
BSF portb, 1
MOVLW 0x15
MOVWF cuenta
CALL retardo
BCF portb, 1
GOTO princi
;Cargamos 5 en el registro W
;Comparamos W con el contador del temporizador
;Saltamos si hemos llegado a 5
;Volvemos a inicio si no hemos llegado a 5
;Si llegamos a 5 desactivamos la salida 0
;y activamos la salida 1
;Cargamos el valor
;de cuenta para el retardo
;Llamamos a la rutina de retardo
;Borramos la salida 1
;Volvemos a princi y repetimos
retardo
MOVLW 0xff
MOVWF cont1
MOVWF cont2
bucles
DECFSZ cont1,f
GOTO bucles
DECFSZ cont2,f
GOTO bucles
DECFSZ cuenta,f
GOTO bucles
RETURN
END
;MOVEMOS FF A W Y cargamos
;cont1 y cont2 con ff
;
;decrementamos cont1, si es 0 saltamos una instrucción,
;sino volvemos a bucles
;igual pero con cont2
;
Descargar