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.