Está en la página 1de 2

TRISA EQU 0x85

PORTA EQU 0x05


TRISB EQU 0x86
PORTB EQU 0x06
STATUS EQU 0x03
UNIDADES EQU 0x0C
PDel0 EQU 0x0D
PDel1 EQU 0x0E
PDel2 EQU 0x0F
DECENA EQU 0x10

BSF STATUS,5 ; Acceso al Banco 1.


MOVLW b'00010000'
MOVWF TRISA
CLRF TRISB ; Las l�neas del Puerto B se configuran como salida.
BCF STATUS,5;
CLRF UNIDADES
CLRF DECENA
CLRF PORTB

BOTON
BTFSC PORTA,4
GOTO INCREMENTO
GOTO DECREMENTO

INCREMENTO ;RUTINA PARA EL INCREMENTO


CALL MOSTRAR
MOVF UNIDADES,0
INCF UNIDADES
XORLW b'00001001'
BTFSC STATUS,2
GOTO REINICIA_UP
GOTO BOTON
REINICIA_UP
CLRF UNIDADES
INCF DECENA
MOVF DECENA,0
XORLW b'00001010'
BTFSC STATUS,2
GOTO REINICIAD_UP
GOTO BOTON
REINICIAD_UP
CLRF DECENA
GOTO BOTON

DECREMENTO ;RUTINA PARA EL DECREMENTO


CALL MOSTRAR
MOVF UNIDADES,0
DECF UNIDADES
XORLW 0x00
BTFSC STATUS,2
GOTO REINICIAU_DOWN
GOTO BOTON
REINICIAU_DOWN
MOVLW b'00001001'
MOVWF UNIDADES
DECF DECENA
MOVF DECENA,0
XORLW 0xFF
BTFSC STATUS,2
GOTO REINICIAD_DOWN
GOTO BOTON
REINICIAD_DOWN
MOVLW b'00001001'
MOVWF DECENA
GOTO BOTON
MOSTRAR
CALL PDelay
MOVF DECENA,0
MOVWF PORTA
MOVF UNIDADES,0
MOVWF PORTB
RETRUN
;-------------------------------------------------------------
PDelay movlw .14 ; 1 set number of repetitions (C)
movwf PDel0 ; 1 |
PLoop0 movlw .72 ; 1 set number of repetitions (B)
movwf PDel1 ; 1 |
PLoop1 movlw .247 ; 1 set number of repetitions (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------

END

También podría gustarte