Autor Tema: contador up/down 0-9999 con 16f628a en assembler  (Leído 833 veces)

johenrod

  • PIC16F
  • ***
  • Mensajes: 535
  • El que paga lo que debe .....a pedir se enseña.
contador up/down 0-9999 con 16f628a en assembler
« en: Noviembre 01, 2015, 02:50:59 pm »
Cordial saludo,

Complementando el contador ascendente que muy amablemente me han dejado publicar, dejo este que es up/down - ascendente / descendente // salida directamente al display sin BCD.
Nota: no olviden colocar las resistencias a cada segmento porque se fríe el display ;D ;D

dejo, codigo, imagenes y archivo adjunto...



Código: [Seleccionar]
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

; contador 0 - 9999 up/down

; diseño jorge henao 20/08-2015
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

LIST P=16F628A
    INCLUDE P16F628A.INC
    ;ERRORLEVEL -302

; hay que cacharrear  

 __CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
;__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
 
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES, CENTENAS, UMIL
    ENDC
 


 ORG 00
 GOTO CONFIGURA


RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .120      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 cycle delay
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done
    
TABLA
ADDWF PCL,F ; agrego el valor del registro  0-9 y salto donde corresponde( ver anotacion al final)
RETLW B'00111111' ;0 binarios para el display
RETLW B'00000110' ;1
RETLW B'01011011' ;2
RETLW B'01001111' ;3
RETLW B'01100110' ;4
RETLW B'01101101' ;5
RETLW B'01111101' ;6
RETLW B'00000111' ;7
RETLW B'01111111' ;8
RETLW B'01101111' ;9
 
MOSTRAR
CLRF PORTB
MOVF UNIDADES,W ;cargo el valor de las unidades y lo agrego al pcl
CALL TABLA
BSF PORTA,3 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTA,3

MOVF DECENAS,W
CALL TABLA
BSF PORTA,2
MOVWF PORTB
CALL RET_10MS
BCF PORTA,2

MOVF CENTENAS,W
CALL TABLA
BSF PORTA,1
MOVWF PORTB
CALL RET_10MS
BCF PORTA,1

MOVF UMIL,W
CALL TABLA
BSF PORTA,0
MOVWF PORTB
CALL RET_10MS
BCF PORTA,0

RETURN

VER
CALL MOSTRAR
  CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms para el rebote
RETURN
 
CONFIGURA    
MOVLW B'10000000' ; entrada pulsador como  i/o digital anulo el TOCKI
OPTION
BANKSEL   CMCON
MOVLW B'00000111' ; desactiva el comparador analogico
MOVWF CMCON

BANKSEL   TRISB

MOVLW     B'00000000'
MOVWF     TRISB
MOVLW     B'11000000'
MOVWF     TRISA
;MOVLW     B'00000000'
;MOVWF     TRISC
BANKSEL    PORTB    ;paso al banco 0
 
;CLRF     PORTB
CLRF     UMIL
CLRF     CENTENAS
CLRF     DECENAS
CLRF     UNIDADES

INICIO
CALL MOSTRAR
BTFSC PORTA,6
GOTO UP
BTFSC PORTA,7
GOTO DOWN
GOTO INICIO


UP
CALL MOSTRAR
BTFSC   PORTA,6
GOTO UP

 
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
    BTFSS STATUS,Z
GOTO INICIO
 
 
 
CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
 
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
 
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
DOWN
CALL MOSTRAR
BTFSC   PORTA,7
GOTO DOWN
 
DECF UNIDADES,F
MOVLW .255
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO


MOVLW .9
MOVWF UNIDADES

DECF DECENAS,F
MOVLW .255
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO

MOVLW .9
MOVWF DECENAS
DECF CENTENAS,F
MOVLW .255
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO

MOVLW .9
MOVWF CENTENAS
DECF UMIL,F
MOVLW .255
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UMIL
GOTO INICIO

 
 END




« Última modificación: Noviembre 01, 2015, 04:08:30 pm por johenrod »

Leon Pic

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5713
  • Cumulonimbus
    • Foro de meteorología
Re: contador up/down 0-9999 con 16f628a en assembler
« Respuesta #1 en: Noviembre 01, 2015, 05:40:14 pm »
Muchas gracias :bang:
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

johenrod

  • PIC16F
  • ***
  • Mensajes: 535
  • El que paga lo que debe .....a pedir se enseña.
Re: contador up/down 0-9999 con 16f628a en assembler
« Respuesta #2 en: Noviembre 01, 2015, 05:46:40 pm »
con gusto........