Está en la página 1de 3

PROCESSOR P16F887

INCLUDE <P16F887.INC>
__CONFIG _CONFIG1,(_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF &
_MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF &
_DEBUG_OFF)
__CONFIG _CONFIG2,(_WRT_OFF & _BOR40V)

NB EQU 0x23
CX EQU 0x24
CX2 EQU 0x25
UN EQU 0x26
DEC EQU 0x27
CE EQU 0x28
MI EQU 0x29
CON EQU 0x30
CON_RET EQU 0x31
XN EQU 0x32

ORG 0x00

BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH

BANKSEL TRISA
;1 ENTRADA, 0 SALIDA
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW 0xD3
MOVWF OPTION_REG

BANKSEL PORTA

R_M CLRF MI
R_C CLRF CE
R_D CLRF DEC
R_U CLRF UN

C_40 MOVLW 0x05 ;0x28 LE PASO 40, QUE ES EL NUMERO DE


VECES QUE VOY A REPETIR
MOVWF CON

C_P GOTO E_XN


C_PX MOVF UN, W
CALL T7S
MOVWF PORTB
MOVLW 0x01 ;B'0000 0001'
MOVWF PORTC
CALL RET_625
;-------------------------------
MOVF DEC, W
CALL T7S
MOVWF PORTB
MOVLW 0x02 ;B'0000 0010'
MOVWF PORTC
CALL RET_625
;-------------------------------
MOVF CE, W
CALL T7S
MOVWF PORTB
MOVLW 0x04 ;B'0000 0100'
MOVWF PORTC
CALL RET_625
;---------------------------------
MOVF MI, W
CALL T7S
MOVWF PORTB
MOVLW 0x08 ;CON 0x08 ACTIVO EL
TRANSISTOR DE MI
MOVWF PORTC
CALL RET_625
;-----------------------------------
DECFSZ CON, F
GOTO C_P
;----------------------------------
INCF UN, F
MOVLW 0x0A
SUBWF UN, W
BTFSS STATUS, Z ;BRINCA SI UNIDADES YA
LLEGO A 10
GOTO C_40 ;SI NO HA LLEGADO A 10
VUELVO A CARGAR 40 PARA QUE EJECUTE 1 SEG
;--------------------------------
INCF DEC, F ;INCREMENTO
DECENAS
MOVLW 0x0A
SUBWF DEC, W
BTFSS STATUS, Z ;BRINCA SI LA RESTA ES
0. SI LAS DECENAS YA ESTAN EN 10, INCREMENTO CENTENAS Y LIMPIO DECENAS
GOTO R_U ;REINICIO UNIDADES
;------------------------------
INCF CE, F
MOVLW 0x0A
SUBWF CE, W
BTFSS STATUS, Z
GOTO R_D
;-----------------------------
INCF MI, F
MOVLW 0X0A
SUBWF MI, W
BTFSS STATUS, Z ;BRINCA SI MI YA ESTA EN
10
GOTO R_C
GOTO R_M ;REINICIA EL
CONTADOR

;-------------------------------

E_XN MOVLW 0x09


SUBWF MI, W
BTFSS STATUS, Z
GOTO C_PX

MOVLW 0x09
SUBWF CE, W
BTFSS STATUS, Z
GOTO C_PX

MOVLW 0x09
SUBWF DEC, W
BTFSS STATUS, Z
GOTO C_PX

MOVLW 0x09
SUBWF UN, W
BTFSS STATUS, Z
GOTO C_PX

BSF XN, 0
GOTO C_PX

;------------------------------

T7S ADDWF PCL,F


RETLW 0x3F ;B'0011 1111' RB7---RB0, DP G
F E D C B A
RETLW 0x06 ;B'0000 0110'
RETLW 0x5B
RETLW 0x4F
RETLW 0x66
RETLW 0x6D
RETLW 0x7D
RETLW 0x07
RETLW 0x7F ;B'0111 1111'
RETLW 0x67 ;B'0110 0111'

;----------- RETARDO CON TMR0 ------------------------

RET_625 MOVLW 0x3E ;PARA 1ms 0xC3, PARA 0xC0, PARA


6.25ms 0x3E
MOVWF TMR0
E_D BTFSS INTCON,T0IF
GOTO E_D
BCF INTCON,T0IF
RETURN

END

También podría gustarte