Autor Tema: problema con salto indexado  (Leído 3586 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado shini

  • PIC10
  • *
  • Mensajes: 4
problema con salto indexado
« en: 09 de Octubre de 2011, 00:16:50 »
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
« Última modificación: 09 de Octubre de 2011, 00:19:13 por shini »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: problema con salto indexado
« Respuesta #1 en: 09 de Octubre de 2011, 03:11:45 »
Hola!

Fijate en el set de instrucciones, estas utilizando a W de manera incorrecta al hacer:

 rrf      W
 rrf      W

Ya que W NO es un registro mapeado fisicamente en los PIC16F.
Tenes que trabajar sobre un registro FISICO las rotaciones...Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado shini

  • PIC10
  • *
  • Mensajes: 4
Re: problema con salto indexado
« Respuesta #2 en: 09 de Octubre de 2011, 10:47:34 »
o gracias.
cree una variable nueva, y paso del w a la variable nueva para hacerle la rotacion y despues regresando de nuevo a w. quedando haci

   movwf   t2
   rrf      t2,1
   rrf      t2,1
   movlw   t2

sigue sin funcionar el salto =(. Saludos

Desconectado Noelillo

  • PIC12
  • **
  • Mensajes: 94
Re: problema con salto indexado
« Respuesta #3 en: 09 de Octubre de 2011, 15:00:54 »
que es lo que quieres hacer???

Desconectado shini

  • PIC10
  • *
  • Mensajes: 4
Re: problema con salto indexado
« Respuesta #4 en: 09 de Octubre de 2011, 16:26:52 »
jajaja buena pregunta no lo habia puesto.
tengo 5 entradas y 8 salidas, en la salida estan conectados 8 leds la idea es que se prenda 1 y este se mueva a la derecha o izquierda dependiendo de la entrada
ocupar Ra0 y Ra1 para el movimiento de derecha e izquierda
y ocupar Ra2, Ra3 y Ra4 para los tiempos. con la siguiente tabla de verdad
Ra0 Ra1  salida
0     0       todo apagado
0     1       derecha
1     0      izquierda
1     1      todo apagado

Ra2 ra3 ra4 tiempo
0    0     0    todo apagado
0    0     1    1 seg
0    1     0     2 seg
0    1     1     3 seg
1    0     0     3seg
1    0     1     4 seg
1    1      0     5 seg
1    1     1     6 seg

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: problema con salto indexado
« Respuesta #5 en: 09 de Octubre de 2011, 19:30:12 »
Hola. Estás haciendolo mal:

tiempo
   rrf       PORTA,W
   movwf t2
   rrf       t2,W
   andlw  b'00000111'
   addwf  PCL,F

Por favor, revisa el set de instrucciones. Veo MUCHOS errores en el uso de las instrucciones. Revisá el Instruction Set Summary en el datasheet:

__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


Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado shini

  • PIC10
  • *
  • Mensajes: 4
Re: problema con salto indexado
« Respuesta #6 en: 11 de Octubre de 2011, 23:55:15 »
gracias, lo vere bien. ahunque realmente no te entiendo mucho, es mi primer programa que empese solo desde 0.
y en el set de instrucciones, si aparece el movf, quizas lo estoy utilizando mal. lo vere.
saludos


 

anything