Translate, Traductor

martes, 29 de mayo de 2012

Contador de 0 a 99 con pulsadores

El contador es de 0 a 99 usando la tecnica de la multiplexion, tiene un pulsador para la cuenta ascendente y otro para la cuenta descendente.

IMPORTANTE      recomiendo comparar este codigo con el que no tiene pulsadores.

Video de la implementacion


el circuito esquematico


y el codigo fuente

    LIST P=16F886
    INCLUDE P16F886.INC
    ERRORLEVEL -302
    
    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF
    
    CBLOCK    0X20
    PDel0, PDel1, DECENAS, UNIDADES
    ENDC
    


    ORG    00
    GOTO    CONFIGURA


RET_10MS  movlw     .8        ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .249      ; 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
    RETLW    B'00111111'
    RETLW    B'00000110'
    RETLW    B'01011011'
    RETLW    B'01001111'
    RETLW    B'01100110'
    RETLW    B'01101101'
    RETLW    B'01111100'
    RETLW    B'00000111'
    RETLW    B'01111111'
    RETLW    B'01101111'
    
MOSTRAR    MOVF    UNIDADES,W    ;cargo el valor de las unidades
    CALL    TABLA
    BSF    PORTC,5    ;activo el display unidad
    BCF    PORTC,4    ;desactivo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    MOVF    DECENAS,W    ;cargo el valor de las decenas
    CALL    TABLA
    BCF    PORTC,5    ;desactivo el display unidad
    BSF    PORTC,4    ;activo el display decena
    MOVWF    PORTB
    CALL    RET_10MS
    RETURN
    
VER    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR
    CALL    MOSTRAR    ;LOGRO UN RETARDO DE 160ms
    RETURN
    
CONFIGURA     NOP
BANKSEL    ANSEL    ;paso al banco 3
CLRF    ANSEL
CLRF    ANSELH
BANKSEL TRISB
MOVLW    B'01101100'
MOVWF    OSCCON
MOVLW    B'00000011'
MOVWF    TRISA
MOVLW    B'00000000'
MOVWF    TRISB
MOVLW    B'00000000'
MOVWF    TRISC
BANKSEL    PORTB    ;paso al banco 0
CLRF    PORTB
CLRF    DECENAS
CLRF    UNIDADES

INICIO   CALL MOSTRAR
BTFSC PORTA,0
GOTO UP
BTFSC PORTA,1
GOTO DOWN
GOTO INICIO 



UP CALL     VER    
INCF     UNIDADES,F
MOVLW     .10
XORWF     UNIDADES,W
BTFSC     STATUS,Z
GOTO     INC_DECENAS
CALL     MOSTRAR
GOTO     INICIO
    
INC_DECENAS     CLRF     UNIDADES
    INCF     DECENAS,F
    MOVLW     .10
    XORWF     DECENAS,W
    BTFSC     STATUS,Z
    CLRF     DECENAS
    CALL     MOSTRAR
    GOTO     INICIO
   
DOWN CALL     VER    
DECF     UNIDADES,F
MOVLW     .255
XORWF     UNIDADES,W
BTFSC     STATUS,Z
GOTO     DEC_DECENAS
CALL MOSTRAR
GOTO     INICIO
    
DEC_DECENAS     MOVLW .9
MOVWF UNIDADES
    DECF     DECENAS,F
    MOVLW     .255
    XORWF     DECENAS,W
    BTFSS     STATUS,Z
    GOTO INICIO
    MOVLW .9
    MOVWF DECENAS
    CALL MOSTRAR
    GOTO     INICIO
        
    END



Copyright 2012 edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

5 comentarios:

  1. vieja por favor pone el archivo(el programa del PIC) de assembler para poder descargarlo, por que así como esta no lo podemos utilizar me ayudarías mucho a terminar un proyecto gracias.

    ResponderEliminar
    Respuestas
    1. Listo socio, ya puedes descargar el codigo, al final esta el enlace. mucha suerte!!

      Eliminar
  2. Que grande Edwtron sos mi Heroe loco muchas gracias por tu aporte!

    ResponderEliminar
  3. DISCULPA CON QUE PROGRAMA ESTA HECHA LA CODIFICACION???

    ResponderEliminar
    Respuestas
    1. El programa es el MPLAB X, lo puedes descargar gratis de la pagina de Microchip, http://www.microchip.com/mplab/mplab-x-ide y el lenguaje es Assembler para PICs

      Eliminar