Autor Tema: Función Shift  (Leído 4160 veces)

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

Desconectado Gabriel22

  • PIC12
  • **
  • Mensajes: 62
Función Shift
« en: 27 de Junio de 2009, 12:01:37 »
Mi programa sería este:

Citar
Trisb = 0
PORTB = %0000001

Iralaizquierda:
Pause 500
PORTB = SHIFTLEFT(PORTB, 1)
If PORTB = %1000000 then goto iraladerecha
Goto Iralaizquierda

Iraladerecha:
Pause 500
portb = ShiftRight (portb, 1)
If portb = %0000001 then goto iralaizquierda
Goto Iraladerecha

End

El problema es que me da "Bad expression" en los Shift . Las 2 formas de las que lo escribí me dan error.

No se qué hago mal, a ver si me podéis ayudar.


Gracias y su erte en todo!!!!!!
« Última modificación: 27 de Junio de 2009, 18:16:54 por Gabriel22 »

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: Función Shift
« Respuesta #1 en: 29 de Junio de 2009, 18:24:11 »
Que compilador estás ocupando?. Si es PicBasic Pro el operador para hacer desplazamiento según el manual es:

The '<<' and '>>' operators shift a value left or right, respectively, 0 to 15 times. The newly shifted-in bits are set to 0.

   B0 = B0 << 3   ' Shifts B0 left 3 places
   W1 = W0 >> 1   ' Shifts W0 right 1 position and places result in W1

Desconectado Gabriel22

  • PIC12
  • **
  • Mensajes: 62
Re: Función Shift
« Respuesta #2 en: 01 de Julio de 2009, 08:09:53 »
Hola, gracias por responder :)


Entonces, ¿cómo sería?:

iralaizquierda:
Pause 500
PORTB = PORTB << 6

If PORTB = %1000000 then goto iraladerecha

goto iralaizquierda


¿Sería alo así?



Si me corrigiesen se lo agradecería.

Gracias y suerte!

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: Función Shift
« Respuesta #3 en: 01 de Julio de 2009, 13:04:37 »
Hola, gracias por responder :)


Entonces, ¿cómo sería?:

iralaizquierda:
Pause 500
PORTB = PORTB << 6

If PORTB = %1000000 then goto iraladerecha

goto iralaizquierda


¿Sería alo así?



Si me corrigiesen se lo agradecería.

Gracias y suerte!

Si esa sería la sintaxis. Aunque en tu primer ejemplo desplazabas 1 bit, en éste estarías desplazando 6:
PORTB = PORTB << 6

Saludos

Desconectado Gabriel22

  • PIC12
  • **
  • Mensajes: 62
Re: Función Shift
« Respuesta #4 en: 01 de Julio de 2009, 17:39:52 »
Y si quiero que vaya de 1 en 1 sería:


iralaizquierda:

Pause 500

PORTB = PORTB << 1

If PORTB = %1000000 then goto iraladerecha

goto iralaizquierda


Con eso iría de uno en uno hasta cumplir el IF , ¿no?


Gracias por responder y suerte en todo!


------

P.D: Al compilar me da estos errores;


Error processing COD file

Error[173]........Source file path exceeds 62 characters


¿A qué se debe este error?

Gracias de nuevo!!!!!!
« Última modificación: 01 de Julio de 2009, 17:45:20 por Gabriel22 »

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: Función Shift
« Respuesta #5 en: 01 de Julio de 2009, 18:54:25 »
Y si quiero que vaya de 1 en 1 sería:


iralaizquierda:

Pause 500

PORTB = PORTB << 1

If PORTB = %1000000 then goto iraladerecha

goto iralaizquierda


Con eso iría de uno en uno hasta cumplir el IF , ¿no?

Así es.

Citar
P.D: Al compilar me da estos errores;


Error processing COD file

Error[173]........Source file path exceeds 62 characters


¿A qué se debe este error?

Ese error es porque seguramente la ruta completa para acceder al archivo es muy larga. Lo que deberías hacer es guardar tu archivo en una carpeta lo más próxima al directorio raíz, puede ser C:\PruebasPBP\ o la unidad D:\.., etc. Siempre y cuando la ruta completa no exceda los 62 caracteres.

Saludos

Desconectado Gabriel22

  • PIC12
  • **
  • Mensajes: 62
Re: Función Shift
« Respuesta #6 en: 02 de Julio de 2009, 11:12:28 »
Muchísimas gracias Nichita.


Va como la seda  :lol: Gracias

Un saludo