Está en la página 1de 2

;Contador UP/DOWN decimal de un dgito ; ;Sobre el display 7 segmentos conectado a la puerta B se visualizar el nmero de pulsos ;aplicados por la entrada

RA0. RA1 determina si la cuenta es ascendente (a "1") ;o descendente

List

p=16F84

;Tipo de procesador ;Definiciones de registros internos

include

"P16F84.INC"

Contador

equ

0x0c

;Variable del contador

__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC org goto 0x00 Inicio ;Vector de Reset

org

0x05

;Salva el vector de interrupcin

;********************************************************************************** ;Tabla_7_seg: Esta rutina convierte el cdigo BCD presente en los 4 bits de menos peso ;del reg. W en su equivalente a 7 segmentos. El cdigo 7 segmentos retorna tambin ;en el reg. W

Tabla_7_seg

addwf

PCL,F

;Desplaza al PC tantas posiciones como indique el valor

;del registro W retlw b'10111111' ; cdigo del 0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9

retlw retlw retlw retlw retlw retlw retlw retlw retlw

b'10000110' b'11011011' b'11001111' b'11100110' b'11101101' b'11111101' b'10000111' b'11111111' b'11100111'

Inicio bsf clrf

clrf

PORTB

;Borra los latch de salida

STATUS,RP0 TRISB

;Selecciona banco 1

;Puerta B se configura como salida

movlw

b'00011111'

movwf movlw movwf bcf clrf

TRISA

;Puerta A se configura como entrada

b'00000110' OPTION_REG ;Preescaler de 128 para el TMR0

STATUS,RP0 Contador

;Selecciona banco 0

;Puesta a 0 del contador

Loop call

movf

Contador,W ;Convierte BCD a 7 segmentos ;Visualiza el valor del contador

Tabla_7_seg PORTB

movwf

Wait_0 btfss goto sleep

clrwdt PORTA,0 Wait_0

;Refrescar el WDT ;Subida de la seal RA0 ? ;No

;Modo standby en espara de 18mS. Elimina rebotes

Wait_1 btfsc goto sleep

clrwdt PORTA,0 Wait_1

;Refrescar el WDT ;Bajada de RA0 (pulso) ?? ;No

;Modo standby en espara de 18mS. Elimina rebotes

btfss goto

PORTA,1 Down

;RA1 = 1 ?? ;No, cuenta descendente

Up

incf movlw subwf btfss goto clrf goto

Contador,F .10 Contador,W STATUS,Z Loop

;Incrementa contador

;Es mayor de 9 ??

;No ;Si, puesta a 0 del contador

Contador Loop

Down

decf

Contador,F

;Decrementa el contador

movlw subwf btfss goto

0xff Contador,W STATUS,Z Loop ;Es menor de 0 ??

;No

También podría gustarte