Sustituir PIC16F84 por PIC16A628A

Buenas amigos necesito ayuda para sustituir un pic 16F84 el cual trabajaba controlando una matriz de led pero ahora no consigo este pic el cual se daño y solo consigo el pic 16F628A que cosas debo cambiar en el programa para que sea compatible con el anterior adjunto archivos del programa y circuito.
 

Adjuntos

  • panel_mensajes_515.asm
    9 KB · Visitas: 36
  • panel_123.gif
    panel_123.gif
    91.7 KB · Visitas: 59
  • retardos_188.asm
    9.8 KB · Visitas: 21
en el de panel mensajes . asm
cambia
Código:
LIST			P=16f84A
			INCLUDE			<P16F84A.INC>
por:
Código:
LIST			P=16f628a
			INCLUDE			<P16F628a.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BOREN_OFF & _PWRTE_OFF & _MCLRE_OFF & _LVP_OFF & _XT_OSC

ademas, antes de configurar los puertos, deshabilita los comparadores, de esta forma
Código:
movlw	0x07				;Turn comparators off and
	movwf	CMCON				;enable pins for I/O functions

ademas fijate que en el editor MPlab tengas la configuracion del cristal externo XTAL, NO PROTEC

Postea tu avance!
 
Donde pone CBLOCK 0x0C deves de poner CBLOC 0x20 ya que es en esa posicion donde comienza la memoria de datos.
Como en ese programa no utilizas la eeprom, ya no necesitas ningun cambio mas.
 
disculpen mi ignorancia otra pregunta en la directiva ORG 0x00 debo cambiarla Tambien? y en donde inicio el programa la cofiguracion de puertos queda igual en los mismos bancos o hay que cambiar algo mas a parte de desabilitar los comparadores?. Esto lo pregunto porque aunque hice los cambios me sigue sin funcionar bien la matriz unicamente me trabaja la mitad de la matriz la otra mitad no trabaja y el problema esta en software ya que todo el hardware esta operativo 100.
 
disculpen mi ignorancia otra pregunta en la directiva ORG 0x00 debo cambiarla Tambien?
no es necesario, pero quiza te convenga poner la tabla hasta el fondo del programa

la cofiguracion de puertos queda igual en los mismos bancos o hay que cambiar algo mas a parte de desabilitar los comparadores?
está correcta no es necesario cambiarla

intenta conectandole una resistencia pull-up de 10k al pin RA4 (entre RA4 y +5V)a , ya que este es de colector abierto

postea tus resultados
 
ok hermano eres un sabio no sabia que era salida de colector abierto ok ya resolvi colocando la R de 10 K ahora me trabaja toda la matriz pero no aparecen los caracteres como antes aparecen que no c lee nada sera posible que por las caracteristicas de este pic no quede bien programado con mi programador jdm.
 
no he utilizado el JDM, (haciendo el procedimiento normal con el f628a) no creo que sea ahi el problema, pero lo que podrias hacer es un programa de prueba sencillo con leds.

te marca errores o warnings el mplab?

recheca las conexiones.
eu capacitores y cristal estas utilizando?

postea el programa actualizado.
 
todos los componentes estan nuevos el cristal es de 4 Mhz.Ese procedimiento que llamas normal es el de levantar la pata 10 del pic cuando se programa cierto? ok el programa poniendole los cambios queda asi
 

Adjuntos

  • panel_188.asm
    9.3 KB · Visitas: 20
cambia _MCLRE_OFF a _MCLRE_ON

ademas el programa MPLab me marca

Código:
Error[113]   D:\MIS DOCUMENTOS\PANEL.ASM 449 : Symbol not previously defined (Retardo_1ms)
Error[113]   D:\MIS DOCUMENTOS\PANEL.ASM 450 : Symbol not previously defined (Retardo_500micros)
Error[105]   D:\MIS DOCUMENTOS\PANEL.ASM 459 : Cannot open file (Include File "RETARDOS.INC" not found)

te lo marca a ti tambien? o que mas indica el MPLab?
 
Ok esos errores son porque te falta agregar en la misma carpeta la fila RETARDOS.ASM que puse en la primera pagina de este tema y cambiarle la extension a .INC solo la extension lo que pasa es que la subi como .asm porque el foro no deja subir archivos .inc. Dejame probar a ver con eso de cambiar a on eso que me dices aver y te posteo gracias por acompañarme en esta batalla jajaja.
 
hola amigos tengo un circuito que quiero hacer pero el problema es que no puedo conseguir el pic...
se trata de un 12F629...se lo puede reemplazar por algun 12C... o por algun 16F....?
 
hola amigos ya la matriz esta comenzando a tomar forma ya se me ven los caracteres solo que no se porque se me ve solo las tres primeras columnas de cada caracter y las dos ultimas no se ven adjunto como me a quedado el programa despues de los cambios que he hecho, a y otra cosa las 10 primeras columnas de la matriz no aparecen cuando coloco la resistencia de colector abierto en el pin Ra4 y cuando la quito no se me ven la parte de la matriz que controla el integrado V3 y V4. ayuda por favor con este programa.
 

Adjuntos

  • matriz_178.rar
    95.6 KB · Visitas: 21
dayan : no has mencionado que errores/warnings te marca el MPLab ;sería bueno que postearas un dibujo muy sencillo de que es lo que te debe aparecer y como te está apareciendo en este momento (si pudieras postear una foto sería mejor) ; estas utilizando el mismo cristal que para el f84?
 
ok aqui te mando un dibujo de como se ve por ejemplo la H y la T en la matriz y como se deberia ver cuando corro el programa en el mplab veo que me carga los 5 valores completos, el registros que me lleva esta cuenta es el que se llama CONTA_INTERNO el cual se carga con el literal 5 para que cargue los 5 valores de cada caracter pero cuando grabo el programa al pic siguen sin aparecer estas dos ultimas columnas del caracter. si uso el mismo cristal de 4 Mhz.
 

Adjuntos

  • dibujo_307.rar
    2.1 KB · Visitas: 17
ya logro ver los caracteres completos en toda la matriz coloque las etiquetas del programa a partir de la direccion 0x60 en vez de 0x20 ya que cuando hacia el barrido se me solapaba con los el contador llamado CONTA, pero ahora cualquier caracter que coloco me aparece entre dos lineas verticales a que se debera adjunto el programa con los cambios que le hice ahora.
 

Adjuntos

  • nueva_carpeta_166.rar
    3.8 KB · Visitas: 20
has intentado probando, al reducir a la mitad la tabla de caracteres? o ubicandola hasta el final en una memoria que termine en 0?

- EMPIEZA POR ESTO : te falto agregarle las directivas de configuracion
Código:
LIST         P=16f628a
         INCLUDE         <P16F628a.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BOREN_OFF & _PWRTE_ON & _MCLRE_OFF & _LVP_OFF & _XT_OSC

- si bien no creo que afecte, tienes duplicado movlw 0x07,movwf CMCON y no veo que utilices CONTA_LETRAS

Por si algun otro usuario pudiera interesarse, aqui esta el codigo

Código:
;=================================================================================================================
;--DIRECTIVAS DEL PROGRAMA--
;=================================================================================================================
			LIST			P=16f628A
			INCLUDE			<P16F628A.INC>
			
;=================================================================================================================
;--ETIQUETAS DEL PROGRAMA --
;=================================================================================================================
			CBLOCK			0x60
			CONTA
			CONTA_1
			CONTA_2
			CONTA_LETRAS
			LETRA
			NUMERO_LETRAS
			CONTA_INTERNO
			R_ContA				; Contadores para los retardos.
			R_ContB
			R_ContC
			ENDC
;=================================================================================================================
;--CONFIGURAION DE PUERTOS--
;=================================================================================================================
			ORG				0X00
			goto			INICIO
			
TABLA_CARACTERES	
			addwf			PCL,F
			
			RETLW   		3EH ;0
			RETLW   		45H
			RETLW   		49H
			RETLW   		51H
			RETLW   		3EH
		
			RETLW   		11H ;1
			RETLW   		21H
			RETLW   		7FH
			RETLW   		01H
			RETLW   		01H
			
			RETLW   		27H ; 2
			RETLW   		49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		31H
					
			RETLW   		22H ; 3
			RETLW   		49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		36H
					
			RETLW   		78H ; 4
			RETLW   		08H
			RETLW   		08H
			RETLW			08H
			RETLW			7FH
			
			RETLW   		7AH ; 5
			RETLW  			49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		46H 
				
			RETLW   		3EH ; 6
			RETLW   		49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		26H 
			
			RETLW   		40H ; 7
			RETLW   		40H
			RETLW   		4FH
			RETLW   		50H
			RETLW   		60H 
			
			RETLW   		36H ; 8
			RETLW   		49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		36H
			
			RETLW   		32H ; 9
			RETLW   		49H
			RETLW   		49H
			RETLW   		49H
			RETLW   		3EH
			
			RETLW   		00H ; :
			RETLW   		12H
			RETLW   		00H
			RETLW   		00H
			RETLW   		00H
			
			RETLW   		01H ; ;
			RETLW  			0AH
			RETLW   		00H
			RETLW   		00H
			RETLW   		00H
			
			RETLW			0H	; < EQUIVALE A "
			RETLW			70H	
			RETLW			0H
			RETLW			70H
			RETLW			0H	
			
			RETLW   		0AH ; =
			RETLW   		0AH
			RETLW   		0AH
			RETLW   		0AH
			RETLW   		00H
			
			RETLW			0H	; > EQUIVALE A .
			RETLW			1H	
			RETLW			0H
			RETLW			0H
			RETLW			0H
			
			RETLW   		01H ; ? EQUIVALE A ,
			RETLW   		02H
			RETLW   		00H
			RETLW   		00H
			RETLW   		00H	
			
			RETLW			0H	; @ EQUIVALE A ESPACIO
			RETLW			0H	
			RETLW			0H
			RETLW			0H
			RETLW			0H	
			
			RETLW			3FH	; A
			RETLW			48H	
			RETLW			48H
			RETLW			48H
			RETLW			3FH	
			
			RETLW			7FH	; B
			RETLW			49H	
			RETLW			49H
			RETLW			49H
			RETLW			36H	
			
			RETLW			3EH	; C
			RETLW			41H
			RETLW			41H
			RETLW			41H
			RETLW			22H
			
			RETLW			7FH	; D
			RETLW			41H
			RETLW			41H
			RETLW			41H
			RETLW			3EH	
			
			RETLW			7FH	; E
			RETLW			49H
			RETLW			49H
			RETLW			49H
			RETLW			41H	
			
			RETLW			7FH	; F
			RETLW			48H
			RETLW			48H
			RETLW			48H
			RETLW			40H	
			
			RETLW			3EH	; G
			RETLW			41H
			RETLW			49H
			RETLW			49H
			RETLW			26H	
			
			RETLW			7FH	; H
			RETLW			8H
			RETLW			8H
			RETLW			8H
			RETLW			7FH	
			
			RETLW			41H	; I
			RETLW			41H
			RETLW			7FH
			RETLW			41H
			RETLW			41H	
			
			RETLW   		42H ; J
			RETLW   		41H
			RETLW   		7EH
			RETLW   		40H
			RETLW   		40H	
			
			RETLW   		7FH ; K
			RETLW  			08H
			RETLW   		14H
			RETLW   		22H
			RETLW   		41H	
			
			RETLW			7FH	; L
			RETLW			1H
			RETLW			1H
			RETLW			1H
			RETLW			1H	
			
			RETLW			7FH	; M
			RETLW			20H
			RETLW			10H
			RETLW			20H
			RETLW			7FH	
			
			RETLW			7FH	; N
			RETLW			30H
			RETLW			08H
			RETLW			06H
			RETLW			7FH	
			
			RETLW			3EH	; O
			RETLW			41H
			RETLW			41H
			RETLW			41H
			RETLW			3EH	
			
			RETLW			7FH	; P
			RETLW			48H
			RETLW			48H
			RETLW			48H
			RETLW			30H	
			
			RETLW			3EH	; Q
			RETLW			41H
			RETLW			45H
			RETLW			43H
			RETLW			3EH	
			
			RETLW			7FH	; R
			RETLW			48H
			RETLW			4CH
			RETLW			4AH
			RETLW			31H	
			
			RETLW			32H	; S
			RETLW			49H
			RETLW			49H
			RETLW			49H
			RETLW			26H	
			
			RETLW			40H	; T
			RETLW			40H
			RETLW			7FH
			RETLW			40H
			RETLW			40H	
			
			RETLW			7EH	; U
			RETLW			01H
			RETLW			01H
			RETLW			01H
			RETLW			7EH	
			
			RETLW			7CH	; V
			RETLW			02H
			RETLW			01H
			RETLW			02H
			RETLW			7CH	
			
			RETLW			7FH	; W
			RETLW			2H
			RETLW			4H
			RETLW			2H
			RETLW			7FH	
			
			RETLW			63H	; X
			RETLW			14H
			RETLW			8H
			RETLW			14H
			RETLW			63H	
			
			RETLW			60H	; Y
			RETLW			10H
			RETLW			0FH
			RETLW			10H
			RETLW			60H	
			
			RETLW			43H	; Z	
			RETLW			45H
			RETLW			49H
			RETLW			51H
			RETLW			61H	
			
INICIO			;movlw   		0x07            				;Turn comparators off and 
   			;movwf   		CMCON            				;enable pins for I/O function
			bsf			STATUS,RP0					; Seleccion del banco 1
			clrf			PORTA						; Puerto B como salidas
			clrf			PORTB
			bcf			STATUS,RP0					; Banco 0
			clrf			PORTA						; Inicializacion de los
			clrf			PORTB
			
RUTINA			movlw			"A"
			call			CONVERTIR
			movlw			"B"
			call			CONVERTIR
			movlw			"C"
			call			CONVERTIR
			movlw			"D"
			call			CONVERTIR
			movlw			"E"
			call			CONVERTIR
			movlw			"F"
			call			CONVERTIR
			movlw			"G"
			call			CONVERTIR
			movlw			"H"
			call			CONVERTIR
			movlw			"I"
			call			CONVERTIR
			movlw			"J"
			call			CONVERTIR
			movlw			"K"
			call			CONVERTIR
			movlw			"L"
			call			CONVERTIR
			movlw			"M"
			call			CONVERTIR
			movlw			"N"
			call			CONVERTIR
			movlw			"O"
			call			CONVERTIR
			movlw			"P"
			call			CONVERTIR
			movlw			"Q"
			call			CONVERTIR
			movlw			"R"
			call			CONVERTIR
			movlw			"S"
			call			CONVERTIR
			movlw			"T"
			call			CONVERTIR
			movlw			"U"
			call			CONVERTIR
			movlw			"V"
			call			CONVERTIR
			movlw			"W"
			call			CONVERTIR
			movlw			"X"
			call			CONVERTIR
			movlw			"Y"
			call			CONVERTIR
			movlw			"Z"
			call			CONVERTIR
			movlw			"1"
			call			CONVERTIR
			movlw			"2"
			call			CONVERTIR
			movlw			"3"
			call			CONVERTIR
			movlw			"4"
			call			CONVERTIR
			movlw			"5"
			call			CONVERTIR
			movlw			"6"
			call			CONVERTIR
			movlw			"7"
			call			CONVERTIR
			movlw			"8"
			call			CONVERTIR
			movlw			"9"
			call			CONVERTIR
			movlw			"0"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			movlw			"@"
			call			CONVERTIR
			
			goto			RUTINA

CONVERTIR		incf			CONTA_LETRAS,F
			movwf			LETRA					;Letra contiene el codigo ascci del caracter a grabar
			movlw			d'48'					;Se resta para obtener la posicion del caracter
			subwf			LETRA,F
			movf			LETRA,W
			clrf			CONTA_2					;Este contador direcciona el inicio de barrido en la tabla de datos
			movwf			CONTA_1					;Ayuda a direccionar a CONTA_2 

PREGUNTAR		movf			CONTA_1,F	
			btfss			STATUS,Z
			goto			NO_CERO
			goto			SI_CERO
NO_CERO			decf			CONTA_1,F
			movlw			d'5'
			addwf			CONTA_2,F
			goto			PREGUNTAR

SI_CERO			movlw			0x40					;Da la direccion de la memoria no visble en el panel,
			movwf			FSR					;desde la cual se grabaran los datos del caracter
			movlw			d'5'
			movwf			CONTA_INTERNO
LLAMAR			movf			CONTA_2,W
			call			TABLA_CARACTERES		;Rutina que accesa los datos de los caracteres

CARGAR_DATOS		movwf			INDF					;Carga datos en direccion 0x40 y de ahi en adelante
			incf			FSR,F					;En total carga todos los datos de un caracter
			incf			CONTA_2,F			
			decfsz			CONTA_INTERNO,F
			goto			LLAMAR
			;call			DEZPLAZAR_32			;Si terminó, Llama a rutina dezplazar para la visualizacion de los datos dezplazandose
			;return

DEZPLAZAR_32		movlw			d'6'
			movwf			CONTA
DEZPLAZAR		movlw			0x20					;Esta rutina en general dezplaza una posicion todas
			movwf			FSR						;las columnas existentes en el panel, hacia la izquierda.
OTRA_VEZ		movf			INDF,W					; y luego llama a rutina barrido hasta que se barra los 
			decf			FSR,F					; 6 datos de cada caracterm, ahi es cuando retorna a
			movwf			INDF					; buscar el siguiente dato para almacenarlo
			incf			FSR,F
			incf			FSR,F
			movlw			0x46
			xorwf			FSR,W
			btfss			STATUS,Z
			goto			OTRA_VEZ
			call			BARRIDO
			decfsz			CONTA,F
			goto			DEZPLAZAR
			return

BARRIDO			movlw   0x07            					;Turn comparators off and 
   			movwf   CMCON            					;enable pins for I/O function
			clrf			PORTA
			movlw			0x20				;Barre el Panel,hasta llegar a la ultima columna								
			movwf			FSR
INCREMENTAR		movf			INDF,W
			movwf			PORTB
			call			Retardo_2ms				;VELOCIDAD DE DESPLAZAMIENTO
			call			Retardo_5micros			;PARPADEO
			clrf			PORTB
			incf			PORTA,F
			;call			Retardo_2s
			incf			FSR,F
			btfss			FSR,6
			goto			INCREMENTAR
			return
			
			INCLUDE			<RETARDOS.INC>

			END
 
Atrás
Arriba