Translate, Traductor

sábado, 2 de junio de 2012

Contador de 0 a 9999 con PIC 16f886

Contador ascendente hasta 9999, cuando la cuenta llega a 9999 pasa a 0.

Seria una buena practica que se le implementara un pulsador para contar, y despues de eso implementarlo con dos pulsadores para que cuente de forma ascendente y descendente.

Video de la implementacion


Enlace para la descarga del video http://www.youtube.com/watch?v=8qTBIZgpTLU

Diagrama esquemático

Codigo fuente para el PIC


   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, CENTENAS, UMIL
    ENDC

;hay que caharriar

ORG 00
GOTO CONFIGURA

;-------------------------------------------------------------
; Code generated by PDEL  ver 1.0  on 10/13/2010 at 10:24:44 PM
; Description: Waits 10000 cycles
;-------------------------------------------------------------
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'


;hay que caharriar


MOSTRAR CLRF PORTC
MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTC,5 ;activo el display unidad
MOVF DECENAS,W ;cargo el valor de las decenas
CALL TABLA
BSF PORTC,4
MOVWF PORTB
CALL RET_10MS
BCF PORTC,4
MOVF CENTENAS,W
CALL TABLA
BSF PORTC,3
MOVWF PORTB
CALL RET_10MS
BCF PORTC,3
MOVF UMIL,W
CALL TABLA
MOVWF PORTB
BSF PORTC,2
CALL RET_10MS
BCF PORTC,2

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
RETURN


;hay que caharriar

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    PORTC
CLRF    UMIL
CLRF    CENTENAS
CLRF    DECENAS
CLRF    UNIDADES

;hay que caharriar

INICIO CALL VER

INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar

CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO

;hay que caharriar

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".



3 comentarios:

  1. Respuestas
    1. Saludo, los display son de cátodo común, si quiere de ánodo común solo tiene que cambiar la tabla y la instrucción BSF que activa o desactiva el común de los display

      Eliminar
  2. Gracias edwtron tiene como ayudarme a colocarle memoria ? o sea quiero que hago lo mismo que esta haciendo ahora solo que al apagarlo y volver a encenderlo quede registrado el ultimo numero digitado , podra ser ? (rudafi@yahoo.com.ar).
    Mil gracias

    ResponderEliminar