Problema con Dado electrónico con PIC

Buenos días!
Veréis, tengo un pequeño problema con un proyecto de clase con el pic 16F886, he probado 1001 formas y no hay manera de hacerlo funcionar.
La idea es que al pulsar un pulsador, giren números en un 7 segmentos, y al soltar el pulsador, se quede el ultimo número.

Lo he intentado con tablas, y me ha resultado imposible, así que al final lo he hecho a lo bestia, y sigue dándome el mismo problema:
Los números giran, pero al soltar el pulsador aparece el 7 segmentos apagado.
Es curioso, porque en el Proteus funciona a la perfección.
Sospecho que sea alguna configuración del PIC o algo similar, que no deja que al soltar el pulsador se siga mostrando un numero.
Os proporciono el programa en cuestión:

Código:
		INCLUDE  	<P16F886.INC>
		
		CBLOCK		0x20
			PDel0
			PDel1
			PDel2
		ENDC

		ORG 0
		
		;configuro puertos
		
		BANKSEL		ANSEL
		clrf		ANSEL
		clrf		ANSELH
		;PORTA y PORTB son digitales
		
		BANKSEL		TRISC
		
		clrf		TRISC	;PORTC es out
		movlw		0xFF	
		movwf		TRISB	;PORTB es in
		
		BANKSEL		PORTA
		;fin de configuracion de puertos
		clrf		PORTC
		;movwf		PORTC

num1
		movlw		b'00000110'		
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num1
		
num2
		movlw		b'01011011'	
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num2
		
num3
		movlw		b'01001111'	
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num3

num4
		movlw		b'01100110'
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num4

num5
		movlw		b'01101101'	
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num5

num6
		movlw		b'01111101'	
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num6

num7				
		movlw		b'01111101'		;en realitatm num7 es el 6, per augmentar la probabilitat de que surti aquest
		movwf		PORTC
		call		DEMORA		
		btfsc		PORTB,4
		goto		num7
		goto		num1



		
;-------------------------------------------------------------
; Generado con PDEL ver SP  r 1.0  el 26/04/2008 Hs 22:30:53
; Descripcion: Delay 12000 ciclos
;-------------------------------------------------------------
DEMORA  movlw     .67       ; 1 set numero de repeticion  (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .35       ; 1 set numero de repeticion  (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 ciclo delay
        decfsz    PDel1, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  
        return              ; 2+2 Fin.
;-------------------------------------------------------------	

			END

Aqui el circuito:

Sabéis que puede pasar?
Muchas gracias por adelantado!:)
 

Adjuntos

  • circuito.JPG
    circuito.JPG
    83.7 KB · Visitas: 25
Última edición:
Porqué utilizar semejante PIC???

Con un 16F84 ya te sirve...ahi te sobran puertos para todos lados jajajaja
 
Es el que nos proporcionan en clase, así que no le vamos a hacer un feo al profesor... jaja



Por cierto, como debería de estar configurado el OPTION REG?
Puede ser este el problema?
 
Última edición:
Atrás
Arriba