Secuencia de Relés

Jejeje, bueno de mis primeros mensajes, me presento...
Soy Carlomagno Solórzano Raygoza, tengo un poco de conocimiento de esto de pics y otro poco de electrónica.

remanecido, si necesitas algo de ayuda con eso de los pics, hazmelo saber y con gusto nos ponemos unas horas hasta sacar tu proyecto.

Yo me encuentro en México, igual y podemos ajustar los tiempos y nos pasamos un par de horas pegados aquí hasta sacar tu proyecto.
 
Saludos Carlomagno muchas gracias por tu ofrecimiento ,espero poder arreglarmelas solo ,fijandome un poco creo que me salgan las cosas estan muy bien explicadas en los enlaces puestos por Chyryes,las dudas que no pueda resolver despues de investigarlas las planteare aqui que con los maquinas que hay en un par de lineas me lo aclarais jeje asi se enteran futuros amateurs como yo de como resolver parte de las dudas que puedan surgir sobre este tipo de montajes.Gracias otra vez y hasta luego.
 
Hola amigos de la electronica,aqui estoy otra vez liado y el siguiente escollo que ha surgido para un amateur como yo tiene que ver con archivo de extension .asm ,despues de seguir todas las instrucciones del esquema de luces navideñas que me paso Chiryes , al poner la secuencia de ordenes para activar los reles , las ordenes de activacion y desactivacion de estos no las admite segun se requiere su funcionamiento, son las mismas ordenes que salen en la tabla de configuracion de ordenes pero el programa MPASM me da error y por lo visto no admite ciertas convinaciones de ordenes, he mirado paginas sobre programacion pero no encuentro nada simple o entendible para mi nivel que haga que funcione, seguro hay que añadir o variar el archivo .asm para que admita esas convinaciones o quiza es con otra plantilla de .asm ,aqui adjunto el archivo de prueva que pretendo hacer que funcione con las ordenes que se pueden poner y el archivo de error que me da el MPASM.

Plantilla Prueva.asm

Código:
;*******************************************************
;**                                                   **
;**          SECUENCIADOR PARA LUCES NAVIDEÑAS        **
;**                   POR CARLOS DIAZ                 **
;**                                                   **
;*******************************************************

CUENTA1	equ	0Ch
CUENTA2	EQU	0DH
CUENTA3	EQU	0EH
STATUS	EQU	03H
PORTA	EQU	05H
PORTB	EQU	06H
TRISA	EQU	05H
TRISB	EQU	06H
F	EQU	1
W	EQU	0

#DEFINE ON1	BSF	PORTB,0
#DEFINE ON2	BSF	PORTB,1
#DEFINE ON3	BSF	PORTB,2
#DEFINE ON4	BSF	PORTB,3
#DEFINE ON5	BSF	PORTB,4
#DEFINE ON6	BSF	PORTB,5
#DEFINE ON7	BSF	PORTB,6
#DEFINE ON8	BSF	PORTB,7
#DEFINE ON9	BSF	PORTA,0
#DEFINE ON10	BSF	PORTA,1
#DEFINE ON11	BSF	PORTA,2
#DEFINE ON12	BSF	PORTA,3
#DEFINE ON13	BSF	PORTA,4
#DEFINE ONTODO	CALL	ENCIE

#DEFINE OFF1	BCF	PORTB,0
#DEFINE OFF2	BCF	PORTB,1
#DEFINE OFF3	BCF	PORTB,2
#DEFINE OFF4	BCF	PORTB,3
#DEFINE OFF5	BCF	PORTB,4
#DEFINE OFF6	BCF	PORTB,5
#DEFINE OFF7	BCF	PORTB,6
#DEFINE OFF8	BCF	PORTB,7
#DEFINE OFF9	BCF	PORTA,0
#DEFINE OFF10	BCF	PORTA,1
#DEFINE OFF11	BCF	PORTA,2
#DEFINE OFF12	BCF	PORTA,3
#DEFINE OFF13	BCF	PORTA,4
#DEFINE OFFTODO	CALL	APAGA

#DEFINE	ESPERA	CALL	DELAY
#DEFINE	ESPERA1	CALL	DELAY1
#DEFINE	ESPERA2	CALL	DELAY2
#DEFINE	ESPERA3	CALL	DELAY4
#DEFINE	ESPERA4	CALL	DELAY3

#DEFINE	INVIERTE	CALL	INV

	ORG	00H
	CLRF	PORTA
	CLRF	PORTB
	BSF	STATUS,5
	CLRF	TRISA
	CLRF	TRISB
	BCF	STATUS,5
INICIO




;********************************************************************************************
;********A PARTIR DE AQUI ESCRIBE TU SECUENCIA***********************************************
;--------------------------------------------------------------------------------------------
ON1         
ESPERA
off1
ESPERA1
ON1         
ESPERA
off1
ESPERA1
ON1
ESPERA
off1
ESPERA1
ON2
ESPERA
off2
ESPERA1
ON2
ESPERA
off2
ESPERA2
ON3
ESPERA
off3
ESPERA1
ON4
ESPERA
off4
ESPERA1
ON3
ESPERA
off3
ESPERA1
ON3
ESPERA
off3
ESPERA1
ON3
ESPERA
off3
ESPERA1
ON3
ESPERA
off3
ESPERA1
ON3
ESPERA
off3
ESPERA3
OFFTODO             
           
            
          ;--------------------------------------------------------------------------------------------
;****************FIN DE LA SECUENCIA*********************************************************
;********************************************************************************************

	GOTO	INICIO

DELAY3	MOVLW	80H	;4SEG
	GOTO	DEL
DELAY4	MOVLW	60H	;3SEG
	GOTO	DEL	
DELAY2	MOVLW	40H	;2SEG
	GOTO	DEL
DELAY1	MOVLW	20H	;1SEG
	GOTO	DEL
DELAY	MOVLW	010H	;.5SEG
DEL	MOVWF	CUENTA1
ACA1	MOVLW	0FFH
	MOVWF	CUENTA2
ACA	DECFSZ	CUENTA2
	GOTO	ACA
	DECFSZ	CUENTA1
	GOTO	ACA1
	RETURN

APAGA	CLRF	PORTA
	CLRF	PORTB
	RETURN

ENCIE	MOVLW	0FFH
	MOVWF	PORTA
	MOVWF	PORTB
	RETURN

INV	MOVLW	0FFH
	XORWF	PORTA,F
	XORWF	PORTB,F
	RETURN
	END


Errores y advertencias MPSM con esta convinacion:

Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 72 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 73 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 75 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 76 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 77 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 78 : Address label duplicated or different in second pass (off1)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 79 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 80 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 81 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 82 : Address label duplicated or different in second pass (off1)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 83 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 84 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 85 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 87 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 88 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 89 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 90 : Address label duplicated or different in second pass (off2)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 91 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 92 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 93 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 95 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 96 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 97 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 99 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 100 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 101 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 102 : Address label duplicated or different in second pass (off3)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 103 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 104 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 105 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 106 : Address label duplicated or different in second pass (off3)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 107 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 108 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 109 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 110 : Address label duplicated or different in second pass (off3)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 111 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 112 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 113 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 114 : Address label duplicated or different in second pass (off3)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 115 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 116 : Found opcode in column 1. (BSF)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 117 : Found opcode in column 1. (CALL)
Error[116]   C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 118 : Address label duplicated or different in second pass (off3)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 119 : Found opcode in column 1. (CALL)
Warning[203] C:\DOCUME~1\MALDER\ESCRIT~1\PRUEVA.ASM 120 : Found opcode in column 1. (CALL)


Un saludo y gracias de antemano.
 
Saludos,aqui adjunto un archivo de prueva .asm nuevo que funciona pero no se lo que hay que cambiar para tener 4 opciones de pausa ya tengo el programador con el chip puesto listo para crear el archivo .hex y ensamblarle el programa con el icprog solo me queda esto que es la mayor barrera que en encontrado hasta el momento ¿algun programador que me eche un cable?creo que le puede servir a mucha gente principiante como yo esta plantilla un modo de usar las entradas y salidas temporizandolas en los pic16fxxx muchas gracias.


Plantilla Prueva.asm

Código:
list P=16F84A ; indicamos el modelo de PIC que tenemos

; registros

DDRB    equ 0x06 ; banco 1
PORTB   equ 0x06 ; banco 0
STATUS  equ 0x03 ; banco 0 y 1
TMR0    equ 0x01 ; banco 0
OPTIO   equ 0x01 ; banco 1
INTCON  equ 0x0b ; banco 0 y 1


; constantes del programa

TIEMPO  equ 0x30   ; posicion de memoria
TICKS   equ 20     ; Ticks entre parpadeo


	org 0


; Accedemos al segundo banco de RAM de Datos
	
	bsf	STATUS,5	

; Configuración puertos

	movlw	0
	movwf	DDRB  ; TRISB = 0  -> puerto B de salida

; configuracion del timer

	movlw	b'01010111'  ; divisor = 256, timer
	movwf	OPTIO

; Accedemos al primer banco de RAM

	bcf	STATUS,5

; Pongo a cero el puerto B
	clrf	PORTB 

; empieza el programa principal
 
inicio
	bsf	PORTB,0 ; enciende led
	call    pausa
	bcf     PORTB,0 ; apaga led
	call    pausa
	bsf	PORTB,0 ; enciende led
	call    pausa
	bcf     PORTB,0 ; apaga led
	call    pausa
        bsf	PORTB,0 ; enciende led
	call    pausa
	bcf     PORTB,0 ; apaga led
	call    pausa
       
        

; RUTINA DE ESPERA
pausa
	movlw	TICKS      ; tiempo_espera = TICKs * t_tic
	movwf	TIEMPO     ; guarda valor en memoria	
otro_tic
	movlw   0xB2
	movwf   TMR0       ; t_tic = 20 mseg 	
sigue	
	btfss	INTCON,2   ; ¿desbordamiento ?
	goto	sigue	   ; no
        bcf	INTCON,2   ; si -> repongo flag
	decfsz	TIEMPO,1
	goto    otro_tic	
	return     

	END
 
Última edición:
Hola Chyryes valla fallo que he tenido jajajaj cada vez me solucionas los problemas con menos palabras vas a batir un record guinnes conmigo jejeje casi me vuelvo loco pensando que era un problema de planteamiento de programacion ,acabo de probar y si funciona el mpasm solo da 2 suppressed.Muchas gracias.Aun no he podido probarlo dado que mi ordenador no dispone de salida db9 hoy he preguntado en una tienda por un adaptador usb-db9 y me dijo que no todos funcionaban dado que tenia que tener unas caracteristicas especiales que no me supo concretar alguien sabe que caracteristicas son esas? un saludo.
 
Nada, no te preocupes, no se lo diré a nadie, todo queda entre nosotros :rolleyes: jejeje

Lo del adaptador usb a db9 no sabría que decirte, quizás sería mejor que buscaras un programador de pics que funcione con conexión USB, son mas complicados de realizar, pero si no tienes DB9...
 
Hola Chyryes la verdad que con el nivel que tengo estoy al limite en cuanto a complicaciones,de echo he enchufado el invento a un conector db9 en un ordenador sobremesa en casa de un colega y se me cuelga el programa ICprog haber si averiguo por que,gracias otra vez y un saludo.
 
Seguramente será porque no tienes instalado el driver para que funcione en XP. Échale un vistazo a este tutorial: http://electronica.webcindario.com/circuitos/progpic.htm Especialmente al punto 5 en el que explica lo del driver. El punto 5 presupone que te has descargado el IC-Prog en el punto 4, el cual ya incluye el archivo para que funcione en windows XP, lo único que hay que hacer es activar el driver como indica en el punto 5.

Saludos,
Carlos
 
Hola Chyryes muchas gracias , bueno no se por donde empezar... he mirado muchas cosas y aunque parece que todo se programa bien sin ningun error a la hora de la verdad no funciona, empiezo con el icprog ...bien instalo el programa y despues de ignorar 2 o 3 advertencias entro en la consola asi que lo primero que hago es solucionar eso y consiste en:

1)Crear una nueva carpeta en este caso en archivos de programa en windows con el nombre de icprog y meter dentro el programa icprog.

2)Copiar el archivo icprog.sys que encontraras en la red dentro de las siguientes carpetas :la 1º carpeta es la misma se crea para alojar el icprog en este caso en archivos de programa pones este archivo icprog. sys junto al icprog al cual se le hace un acceso directo al escritorio para estar mas a mano,la 2º carpeta, copias el archivo dentro de system en windows y la 3º carpeta copias el archivo en system32 en windows.

Con estos pasos y por supuesto habilitando el driver dentro de la consola en (ajustes-opciones-miscelanea-habilitar driver NT/2000/XP) se deverian acabar todos esos errores al activar el programa(a mi me dava errores aunque habilitara el driver).

A partir de ahi lo primero que hago es ponerlo en español (settings-options-languaje-spanish-ok) despues por ser el XP (ajustes-tipo hardware-interfaz-windows API) lo demas todo de serie como bien explica el enlace de las luces navideñas que me paso chyryes sobre el que tengo la base.

Despues de no salirme ningun error con el programa mplam y crear un archivo hex sin errores para programar el PIC16f84a con el icprog que tampoco me da errores(por el momento) no soy capaz ha hacer funcionar el pic fisicamente asi que seguire investigando haber si punto por punto llego a localizar el problema fijandome mas en la protoboard aunque no descarto nada por el momento.

Un saludo y muchas gracias.
 
Hola de nuevo ya he solucionado el problema 0000h y eran los 2 transistores que tuve que comprobar con el polimetro dado que en su ficha tecnica los marcaba al reves,una vez solucionado el tema e ignorando los 2 avisos de icprog (el fichero no contiene informacion de programacion y el fichero no contiene la palabra ID)¿deveria?y compilar compila bien, pero el primer Led en la protboar no parpadea ni loco, solo se enciende y se queda fijo la protoboard la he revisado y el circuito esta perfecto mucho mas facil que el programador asi que aqui dejo un extracto de los dos archivos .asm de prueva que estoy intentando hacer funcionar haber si veis algun fallo,un saludo.

el primero:

list P=16F84A ; indicamos el modelo de PIC que tenemos

; registros

DDRB equ 0x06 ; banco 1
PORTB equ 0x06 ; banco 0
STATUS equ 0x03 ; banco 0 y 1
TMR0 equ 0x01 ; banco 0
OPTIO equ 0x01 ; banco 1
INTCON equ 0x0b ; banco 0 y 1


; constantes del programa

TIEMPO equ 0x30 ; posicion de memoria
TICKS equ 20 ; Ticks entre parpadeo


org 0


; Accedemos al segundo banco de RAM de Datos

bsf STATUS,5

; Configuración puertos

movlw 0
movwf DDRB ; TRISB = 0 -> puerto B de salida

; configuracion del timer

movlw b'01010111' ; divisor = 256, timer
movwf OPTIO

; Accedemos al primer banco de RAM

bcf STATUS,5

; Pongo a cero el puerto B
clrf PORTB

; empieza el programa principal

inicio
bsf PORTB,0 ; enciende led
call pausa
bcf PORTB,0 ; apaga led
call pausa
bsf PORTB,0 ; enciende led
call pausa
bcf PORTB,0 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa
bsf PORTB,2 ; enciende led
call pausa
bcf PORTB,2 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa3
call pausa3


; RUTINA DE ESPERA
pausa
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic
movlw 0xB2
movwf TMR0 ; t_tic = 20 mseg
sigue
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return
pausa1
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic1
movlw 0xB2
movwf TMR0 ; t_tic = 50 mseg
sigue1
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return

pausa2
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic2
movlw 0xB2
movwf TMR0 ; t_tic = 100 mseg
sigue2
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return

pausa3
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic3
movlw 0xB2
movwf TMR0 ; t_tic = 500 mseg
sigue3
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return


END


El segundo:


;*******************************************************
;** **
;** SECUENCIADOR PARA LUCES NAVIDEÑAS **
;** POR CARLOS DIAZ **
;** **
;*******************************************************

CUENTA1 equ 0Ch
CUENTA2 EQU 0DH
CUENTA3 EQU 0EH
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 05H
TRISB EQU 06H
F EQU 1
W EQU 0

#DEFINE ON1 BSF PORTB,0
#DEFINE ON2 BSF PORTB,1
#DEFINE ON3 BSF PORTB,2
#DEFINE ON4 BSF PORTB,3
#DEFINE ON5 BSF PORTB,4
#DEFINE ON6 BSF PORTB,5
#DEFINE ON7 BSF PORTB,6
#DEFINE ON8 BSF PORTB,7
#DEFINE ON9 BSF PORTA,0
#DEFINE ON10 BSF PORTA,1
#DEFINE ON11 BSF PORTA,2
#DEFINE ON12 BSF PORTA,3
#DEFINE ON13 BSF PORTA,4
#DEFINE ONTODO CALL ENCIE

#DEFINE OFF1 BCF PORTB,0
#DEFINE OFF2 BCF PORTB,1
#DEFINE OFF3 BCF PORTB,2
#DEFINE OFF4 BCF PORTB,3
#DEFINE OFF5 BCF PORTB,4
#DEFINE OFF6 BCF PORTB,5
#DEFINE OFF7 BCF PORTB,6
#DEFINE OFF8 BCF PORTB,7
#DEFINE OFF9 BCF PORTA,0
#DEFINE OFF10 BCF PORTA,1
#DEFINE OFF11 BCF PORTA,2
#DEFINE OFF12 BCF PORTA,3
#DEFINE OFF13 BCF PORTA,4
#DEFINE OFFTODO CALL APAGA

#DEFINE ESPERA CALL DELAY
#DEFINE ESPERA1 CALL DELAY1
#DEFINE ESPERA2 CALL DELAY2
#DEFINE ESPERA3 CALL DELAY4
#DEFINE ESPERA4 CALL DELAY3

#DEFINE INVIERTE CALL INV

ORG 00H
CLRF PORTA
CLRF PORTB
BSF STATUS,5
CLRF TRISA
CLRF TRISB
BCF STATUS,5
INICIO




;********************************************************************************************
;********A PARTIR DE AQUI ESCRIBE TU SECUENCIA***********************************************
;--------------------------------------------------------------------------------------------

ON1
ESPERA
OFF1
ESPERA
ON1
ESPERA
OFF1
ESPERA
ON2
ESPERA
OFF2
ESPERA
ON3
ESPERA
OFF3
ESPERA
ON2
ESPERA
OFF2
ESPERA
ON2
ESPERA
OFF2
ESPERA4
ESPERA4
OFFTODO



;--------------------------------------------------------------------------------------------
;****************FIN DE LA SECUENCIA*********************************************************
;********************************************************************************************

GOTO INICIO

DELAY3 MOVLW 80H ;4SEG
GOTO DEL
DELAY4 MOVLW 60H ;3SEG
GOTO DEL
DELAY2 MOVLW 40H ;2SEG
GOTO DEL
DELAY1 MOVLW 20H ;1SEG
GOTO DEL
DELAY MOVLW 010H ;.5SEG
DEL MOVWF CUENTA1
ACA1 MOVLW 0FFH
MOVWF CUENTA2
ACA DECFSZ CUENTA2
GOTO ACA
DECFSZ CUENTA1
GOTO ACA1
RETURN

APAGA CLRF PORTA
CLRF PORTB
RETURN

ENCIE MOVLW 0FFH
MOVWF PORTA
MOVWF PORTB
RETURN

INV MOVLW 0FFH
XORWF PORTA,F
XORWF PORTB,F
RETURN
END


He de señalar que los dos no dan un solo error con el mpasm y solo dan esos dos avisos en el icprog el circuito en la protoboard esta bien ¿alguien ve algun fallo de programacion? un saludo y gracias.
 
Hola de nuevo ya he solucionado el problema 0000h y eran los 2 transistores que tuve que comprobar con el polimetro dado que en su ficha tecnica los marcaba al reves,una vez solucionado el tema e ignorando los 2 avisos de icprog (el fichero no contiene informacion de programacion y el fichero no contiene la palabra ID)¿deveria?y compilar compila bien, pero el primer Led en la protboar no parpadea ni loco, solo se enciende y se queda fijo la protoboard la he revisado y el circuito esta perfecto mucho mas facil que el programador asi que aqui dejo un extracto de los dos archivos .asm de prueva que estoy intentando hacer funcionar haber si veis algun fallo,un saludo.

el primero:

list P=16F84A ; indicamos el modelo de PIC que tenemos

; registros

DDRB equ 0x06 ; banco 1
PORTB equ 0x06 ; banco 0
STATUS equ 0x03 ; banco 0 y 1
TMR0 equ 0x01 ; banco 0
OPTIO equ 0x01 ; banco 1
INTCON equ 0x0b ; banco 0 y 1


; constantes del programa

TIEMPO equ 0x30 ; posicion de memoria
TICKS equ 20 ; Ticks entre parpadeo


org 0


; Accedemos al segundo banco de RAM de Datos

bsf STATUS,5

; Configuración puertos

movlw 0
movwf DDRB ; TRISB = 0 -> puerto B de salida

; configuracion del timer

movlw b'01010111' ; divisor = 256, timer
movwf OPTIO

; Accedemos al primer banco de RAM

bcf STATUS,5

; Pongo a cero el puerto B
clrf PORTB

; empieza el programa principal

inicio
bsf PORTB,0 ; enciende led
call pausa
bcf PORTB,0 ; apaga led
call pausa
bsf PORTB,0 ; enciende led
call pausa
bcf PORTB,0 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa
bsf PORTB,2 ; enciende led
call pausa
bcf PORTB,2 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa
bsf PORTB,1 ; enciende led
call pausa
bcf PORTB,1 ; apaga led
call pausa3
call pausa3


; RUTINA DE ESPERA
pausa
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic
movlw 0xB2
movwf TMR0 ; t_tic = 20 mseg
sigue
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return
pausa1
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic1
movlw 0xB2
movwf TMR0 ; t_tic = 50 mseg
sigue1
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return

pausa2
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic2
movlw 0xB2
movwf TMR0 ; t_tic = 100 mseg
sigue2
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return

pausa3
movlw TICKS ; tiempo_espera = TICKs * t_tic
movwf TIEMPO ; guarda valor en memoria
otro_tic3
movlw 0xB2
movwf TMR0 ; t_tic = 500 mseg
sigue3
btfss INTCON,2 ; ¿desbordamiento ?
goto sigue ; no
bcf INTCON,2 ; si -> repongo flag
decfsz TIEMPO,1
goto otro_tic
return


END


El segundo:


;*******************************************************
;** **
;** SECUENCIADOR PARA LUCES NAVIDEÑAS **
;** POR CARLOS DIAZ **
;** **
;*******************************************************

CUENTA1 equ 0Ch
CUENTA2 EQU 0DH
CUENTA3 EQU 0EH
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 05H
TRISB EQU 06H
F EQU 1
W EQU 0

#DEFINE ON1 BSF PORTB,0
#DEFINE ON2 BSF PORTB,1
#DEFINE ON3 BSF PORTB,2
#DEFINE ON4 BSF PORTB,3
#DEFINE ON5 BSF PORTB,4
#DEFINE ON6 BSF PORTB,5
#DEFINE ON7 BSF PORTB,6
#DEFINE ON8 BSF PORTB,7
#DEFINE ON9 BSF PORTA,0
#DEFINE ON10 BSF PORTA,1
#DEFINE ON11 BSF PORTA,2
#DEFINE ON12 BSF PORTA,3
#DEFINE ON13 BSF PORTA,4
#DEFINE ONTODO CALL ENCIE

#DEFINE OFF1 BCF PORTB,0
#DEFINE OFF2 BCF PORTB,1
#DEFINE OFF3 BCF PORTB,2
#DEFINE OFF4 BCF PORTB,3
#DEFINE OFF5 BCF PORTB,4
#DEFINE OFF6 BCF PORTB,5
#DEFINE OFF7 BCF PORTB,6
#DEFINE OFF8 BCF PORTB,7
#DEFINE OFF9 BCF PORTA,0
#DEFINE OFF10 BCF PORTA,1
#DEFINE OFF11 BCF PORTA,2
#DEFINE OFF12 BCF PORTA,3
#DEFINE OFF13 BCF PORTA,4
#DEFINE OFFTODO CALL APAGA

#DEFINE ESPERA CALL DELAY
#DEFINE ESPERA1 CALL DELAY1
#DEFINE ESPERA2 CALL DELAY2
#DEFINE ESPERA3 CALL DELAY4
#DEFINE ESPERA4 CALL DELAY3

#DEFINE INVIERTE CALL INV

ORG 00H
CLRF PORTA
CLRF PORTB
BSF STATUS,5
CLRF TRISA
CLRF TRISB
BCF STATUS,5
INICIO




;********************************************************************************************
;********A PARTIR DE AQUI ESCRIBE TU SECUENCIA***********************************************
;--------------------------------------------------------------------------------------------

ON1
ESPERA
OFF1
ESPERA
ON1
ESPERA
OFF1
ESPERA
ON2
ESPERA
OFF2
ESPERA
ON3
ESPERA
OFF3
ESPERA
ON2
ESPERA
OFF2
ESPERA
ON2
ESPERA
OFF2
ESPERA4
ESPERA4
OFFTODO



;--------------------------------------------------------------------------------------------
;****************FIN DE LA SECUENCIA*********************************************************
;********************************************************************************************

GOTO INICIO

DELAY3 MOVLW 80H ;4SEG
GOTO DEL
DELAY4 MOVLW 60H ;3SEG
GOTO DEL
DELAY2 MOVLW 40H ;2SEG
GOTO DEL
DELAY1 MOVLW 20H ;1SEG
GOTO DEL
DELAY MOVLW 010H ;.5SEG
DEL MOVWF CUENTA1
ACA1 MOVLW 0FFH
MOVWF CUENTA2
ACA DECFSZ CUENTA2
GOTO ACA
DECFSZ CUENTA1
GOTO ACA1
RETURN

APAGA CLRF PORTA
CLRF PORTB
RETURN

ENCIE MOVLW 0FFH
MOVWF PORTA
MOVWF PORTB
RETURN

INV MOVLW 0FFH
XORWF PORTA,F
XORWF PORTB,F
RETURN
END


He de señalar que los dos no dan un solo error con el mpasm y solo dan esos dos avisos en el icprog el circuito en la protoboard esta bien ¿alguien ve algun fallo de programacion? un saludo y gracias.
El segundo Código Tiene errores de Compilación, adjunto imagen
 

Adjuntos

  • errores_de_compilacion__3_8.jpg
    errores_de_compilacion__3_8.jpg
    88.1 KB · Visitas: 6
Atrás
Arriba