holas, el problema que tengo con el codigo es que no hace lo que se supone que debe hacer. Lo simule en proteus y debugeando vi que cuando llegaba a la parte del salto indexado se devolvia al inicio y nose que podria ser. Soy nuevo en esto del assembler, ocupe el buscador y revise los otros hilos y todabia no e podido solucionar el problema.
quizas tiene que ver con el registro del pcl, ocupando el debugger del maplab y sin poner ningun estimulo me salta donde no deberia. Creo que es algo que ver con el PCL ya que viendo los ejemplos del libro "microcontrolador PIC 16f84" de Palacios salia que cuando pasaba eso era culpa de esto, pero no entendi que era lo malo del codigo. saludos pd, ocupe la libreria de tiempos que trae el libro
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
INCLUDE<P16F84.INC>
LIST P=16F84A
CBLOCK 0x0c
ti
ENDC
org 0x0
inicio
bsf STATUS,RP0
clrf TRISB
movf b'00011111',TRISA
bcf STATUS,RP0
principal
movf b'00000001',PORTB
p2
tiempo
movf PORTA,ti
movlw PORTA
andlw b'00011100'
bcf STATUS,C
rrf W
rrf W
addwf PCL,F
goto a1 ;000 0 seg
goto a2 ;001 1 seg
goto a3 ;010 2 seg
goto a4 ;011 3 seg
goto a4 ;100 3 seg
goto a5 ;101 4 seg
goto a6 ;110 5 seg
goto a7 ;111 6 seg
a1
movf b'00000000',PORTB
goto p2
a2
call Retardo_1s
goto direccion
a3
call Retardo_2s
goto direccion
a4
call Retardo_1s
call Retardo_2s
goto direccion
a5
call Retardo_2s
call Retardo_2s
goto direccion
a6
call Retardo_5s
goto direccion
a7
call Retardo_1s
call Retardo_5s
goto direccion
direccion
bcf STATUS,C
movlw ti
andwf b'00000011',0
addwf PCL,F
goto d1 ;0
goto d2 ;derecha
goto d3 ;izquierda
goto d1 ;0
d1
movwf b'00000000'
goto p2
d2
rrf PORTB
goto p2
d3
rlf PORTB
goto p2
include<RETARDOS.inc>
end