desktop

Problema con reloj y PIC16F84A en asm

Buenas tardes, soy un novato en la electrónica y ocupo ayuda con un proyecto que tengo :cry: mi codigo es el siguiente
Código:
	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC 
	LIST P=16F84A
	INCLUDE <P16F84A.INC>

	org 0

 	CBLOCK 0x0c
	LOOPS
	LOOPS2
	LOOPS3
	CONTAS1
	CONTAS2
	CONTAM1
	CONTAM2
	CONTAH1
	CONTAH2
	DISP
	ENDC

SETUP
	bsf 03h,5
	clrf 85h
	clrf 86h
	bcf 03h,5
	clrf 05h
	
INICIO
	clrf 06h
	clrf 05h

H2
	clrf CONTAH2
H1
	clrf CONTAH1
M2
	clrf CONTAM2
M1
	clrf CONTAM1
S2
	clrf CONTAS2
S1
	clrf CONTAS1
CICLO
	
	call RETRASO

	incf CONTAS1
	movlw d'10'
	xorwf CONTAS1, 0
	btfss 03h, 2
	goto CICLO

	incf CONTAS2
	movlw d'7'
	xorwf CONTAS2, 0
	btfss 03h, 2
	goto S1

	incf CONTAM1
	movlw d'10'
	xorwf CONTAM1, 0
	btfss 03h, 2
	goto S2

	incf CONTAM2
	movlw d'7'
	xorwf CONTAM2, 0
	btfss 03h, 2
	goto M1

	incf CONTAH1
	movlw d'5'
	xorwf CONTAH1, 0
	btfss 03h, 2
	goto M2
	
	incf CONTAH2
	movlw d'3'
	xorwf CONTAH2, 0
	btfss 03h, 2
	goto H1
	goto INICIO

RETRASO
	movlw d'10'
	movwf LOOPS3
TOP3
	movlw d'100'
	movwf LOOPS
	call ROTA
TOP2
	movlw d'110'
	movwf LOOPS2
TOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	decfsz LOOPS2, 1
	goto TOP
	decfsz LOOPS, 1
	goto TOP2
	decfsz LOOPS3, 1
	goto TOP3
	retlw 0

ROTA
	movf CONTAS1, w
	movwf 05h
	bsf 06h,0

	bcf 06h,0
	movf CONTAS2, w
	movwf 05h
	bsf 06h,1	

	bcf 06h,1
	movf CONTAM1, w
	movwf 05h
	bsf 06h,2	

	bcf 06h,2
	movf CONTAM2, w
	movwf 05h
	bsf 06h,3

	bcf 06h,3
	movf CONTAH1, w
	movwf 05h
	bsf 06h,4

	bcf 06h,4
	movf CONTAH2, w
	movwf 05h
	bsf 06h,5
	bcf 06h,5
	retlw 0
	end

Les anexo la imagen del diagrama en proteus..

bueno básicamente es un reloj de horas, minutos y segundos... cuando lo corro en el proteus funciona bien, bueno se prenden y apagan los displays (tengo entendido que esto suele pasar por la baja memoria RAM de mi computadora pero al conectarlo fisicamente no deberia ser perceptible este encendido y apagado de LEDS por la rapidez en la que va) pero hace el cambio en los segundos debidos... pero cuando lo conecto fisicamente en el proto se queda solamente el display de la izquierda encendido y siempre mostrando 0, no logro solucionar este problema, queria ver si me podrian asesorar a solucionarlo o como mejorarlo,
gracias de antemano!
 

Adjuntos

  • relojasm.jpg
    relojasm.jpg
    56.1 KB · Visitas: 23
Última edición:
Pues si te funciono en el proteus deberia funcionar en la realidad, verifica que se haya grabado bien el pic, que el watchdog este desactivado y en general que todos los bits de configuración esten bien, luego verifica con calma las conexiones, si tienes osciloscopio mira que haya señal en las patas OSC 1 y 2 del pic. Por ultimo, elige las resistencias adecuadas en las bases de los bjt's para no exceder el limite de salida del pic.

PD: con un osciloscopio seria facil diagnosticar, ya que puedes ir viendo las bases los transistores y verificando si esta corriendo el fw del pic como debe ser o no. ;)
 
Última edición:
Deberías subir el archivo del Proteus y sus adjuntos .hex, .asm,
nunca comentas líneas en tu código, ni das un vistaso del algoritmo, como que no da ganas de mirarlo así, a simple vista puede ser el código de un secuenciador, de un contador, de un reloj, o tal vez uno ajeno al que le quitaste todo comentario....
 
Atrás
Arriba