TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: eneko166 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!
-
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
-
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
-
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