PDA

Ver la versión completa : Puntero con siemenes



alkarajo
27/05/2010, 11:16
Hola compañer@s,necesito crear un puntero que vaya moviendome un bit cada 200ms y se vaya incrementando y guardando en una posición diferente dentro de un DB,la verdad que me cuesta muchisimo entender como va todo esto y os agradeceria a ver si me podeis echar una mano.

Muchas gracias!!

alkarajo
27/05/2010, 17:21
Que alguien me ayude porfavor,estoy al final del módulo!!

Txispo
27/05/2010, 19:16
Hola!
¿Qué es lo que quieres guardar? No es lo mismo un bit que un byte o un real....
Supón que quieres guardar una palabra (WORD).

Para generar un puntero a esa palabra sólo tienes que escribir la dirección de la palabra en una WORD y rotarla 3 bits a la izquierda.

A continuación te paso alguna idea. Tendrás que "masticarla" un poco para adaptarla a tu programa.

Supon que a la función que hace esto le pasas el número de DB en la entrada #BLOQUE (tipo BLOCK_DB). El dato a escribir está en #ENTRADA, y el bit que ordena escribir es #ESCRIBE.
La palabra a la que quieres acceder está en #N_WORD tipo INT.
Necesitarás además una doble word auxiliar #AUX_DWORD.
En la variable #MAXIMO tienes guardado el tamaño del DB (palabras que puedes escribir)

// Creación del puntero a la palabra

A #ESCRIBE
FP "Flanco"
JC M001
BEU

M001: NOP 0
// ----- Si llego aquí, es porque hay flanco ----
L #N_WORD
SLD 3
T #AUX_DWORD

OPN #BLOQUE
// Escribir entrada en la dirección apuntada
L #ENTRADA
T DBW[#AUX_DWORD]

// Ahora incrementar el puntero
L #N_WORD
L 1
+I
T #N_WORD

// Comprobar si el puntero es mayor que MAXIMO
L #N_WORD
L #MAXIMO
<=I
BEC

// Si el puntero es mayor que máximo, lo pongo a 0
L 0
T #N_WORD

----------------------------------------------------------------

alkarajo
27/05/2010, 23:10
Muchas gracias compañero por tu respuesta,al final era algo parecido peor no lo he conseguido sacar ya que el professor no se explicó mucho pero bueno ya soy técnico superior en sistemas de regulación y control de automatismos. estoy intentado modificarlo con lo que me has puesto aqui, a ver si veo el fallo porque no me incrementa el puntero en el DB con formato real.

Gracias!