Autor Tema: Contador pic 16f873 de 2 digitos multiplexado  (Leído 3432 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Contador pic 16f873 de 2 digitos multiplexado
« en: 01 de Diciembre de 2012, 22:29:52 »
Estoy haciendo una claqueta electronica, que consta de dos contadores independientes de dos digitos cada uno, uno para las secuencias y otro para las tomas. El caso es que el dia que decidi hacerlo no sabia donde me estaba metiendo jaja.
Me he puesto a ello, estoy programandolo en ensamblador y la verdad es que me he quedado atascado, bastante. La distribucion de los pins es la siguiente: el puerto A dos pulsadores ascendentes, dos descendentes y otro pulsador para el punto digital. El puerto B va destinado a los pins de los displays y el puerto C a traves de unos transistores a los catodos de los displays (4). (Usando la libreria retardos.inc)
Si alguien tiene un contador de pulsos de 2 cifras ascendente/descendente y me lo puede facilitar para que me haga una idea se lo agradeceria un monton. Adjunto el esquema echo por proteus y en cuanto me pase al pc en el que tengo el programa (o intento de ello, lo posteo), gracias! saludos!

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Contador pic 16f873 de 2 digitos multiplexado
« Respuesta #1 en: 02 de Diciembre de 2012, 06:47:49 »
Bienvenido al foro.

Aqui tienes uno ascendente para 3 segmentos, bien comentado y optimizado, solo tienes que adaptarlo a tus necesiadades:

http://www.todopic.com.ar/foros/index.php?topic=24720.0

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Re: Contador pic 16f873 de 2 digitos multiplexado
« Respuesta #2 en: 04 de Diciembre de 2012, 18:44:59 »
Muchas gracias! Antes de nada, ruego paciencia, esto lo estudie hace 3 años, pero lo tengo completamente olvidado.
He empezado por algo sencillo con la intención de ir avanzando. He hecho un programa que se trata de un contador ascendente/descendente de un solo digito, la cosa es que solo asciende...

        LIST    P=16F84
        #include P16F84A.inc

                __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

      
      CON1    EQU     0C
      CON2    EQU     0D
      CON3    EQU     0E
      CONTA   EQU     0F
      

           ORG     0
           GOTO    INICIO

              ORG     5

   INICIO 
      BSF     STATUS,5
             CLRF    TRISB
             MOVLW    B'00011111'
           MOVWF   TRISA
           BCF     STATUS,5
       

   COMI 
      CLRF    CONTA

   VOLVER 
      MOVF    CONTA,0
           CALL    TABLA
           MOVWF   PORTB

   SUBIR1 
      BTFSS   PORTA,0
           GOTO    SUBIR1
           CALL    RETAR

   SUBIR2   
      BTFSC   PORTA,0
           GOTO    SUBIR2
              CALL    RETAR
              INCF    CONTA,1
           MOVF    CONTA,0
           XORLW   0X0A
           BTFSC   STATUS,2
      GOTO    COMI   
      GOTO   VOLVER   

        BAJAR1
      BTFSS   PORTA,1
           GOTO    BAJAR1
           CALL    RETAR

   BAJAR2       
                BTFSC   PORTA,1
           GOTO    BAJAR2
              CALL    RETAR
              DECF    CONTA,1
           MOVF    CONTA,0
           XORLW   0X0A
           BTFSC   STATUS,2
                 GOTO    VOLVER
             

   RETAR   
      MOVLW   0X10
           MOVWF   CON1
   SAL3   
      MOVWF   CON2
   SAL2   
      MOVWF   CON3
   SAL1   
      DECFSZ  CON3,1
           GOTO    SAL1
              DECFSZ  CON2,1
           GOTO    SAL2
           DECFSZ  CON1,1
           GOTO    SAL3
           RETURN

   TABLA   
      ADDWF  PCL,F
           RETLW   0X3F
           RETLW   0X06
           RETLW   0X5B
           RETLW   0X4F
           RETLW   0X66
           RETLW   0X6D
           RETLW   0X7D
           RETLW   0X07
           RETLW   0X7F
           RETLW   0X6F


                 END


       
   

 



Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Contador pic 16f873 de 2 digitos multiplexado
« Respuesta #3 en: 05 de Diciembre de 2012, 07:14:02 »
Creo que no desciende porque no va aqui:


  BAJAR1
      BTFSS   PORTA,1
           GOTO    BAJAR1
           CALL    RETAR


Debes hacer una rutina donde chequees los dos pulsadores, al principio del programa, depende cual este pulsado ira a SUBIR1 o BAJAR1