TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: groundman en 15 de Enero de 2014, 19:57:26

Título: jugando con define#
Publicado por: groundman en 15 de Enero de 2014, 19:57:26
hola.estoy haciendo unas pruebas con las definiciones y hay algo que no entiendo.

si pongo:  #define      TABLA_CRCs   0x5000   

y luego pongo:  movlw          TABLA_CRCs    el valor que carga en W es 0x00   pero lo que yo quiero es obtener el byte alto. 0x50

hay alguna forma de hacerlo?
Título: Re: jugando con define#
Publicado por: sander en 15 de Enero de 2014, 20:06:55
Hola,

para obtener el byte alto puede usar la directiva HIGH, es decir, quedaria

movlw              HIGH  TABLA_CRCs,


Saludos
Título: Re: jugando con define#
Publicado por: groundman en 15 de Enero de 2014, 20:12:23
muchisimas gracias.me has salvado de volverme loco. :D
Título: Re: jugando con define#
Publicado por: groundman en 06 de Febrero de 2014, 19:27:32
hola sander.he estado haciendo pruebas con la directiva HIGH.y se me ha ocurrido hacer esto:

#define      MENSG1      0X2000
         #define      MENSG2       MENSG1 + .36
         #define      MENSG3       MENSG2 + .34
         #define      MENSG4       MENSG3 + .34
         #define      MENSG5       MENSG4 + .34
         #define      MENSG6       MENSG5 + .34

resulta que si dispongo:

org       MENSG1

org       MENSG2

org       MENSG3...   etc

todo el codigo debajo de estas etiquetas se coloca correctamente.

pero si quiero usar la directiva como:

movlw    HIGH MENSG1   se carga en W el valor 0x20.      pero si pongo   movlw    HIGH MENSG2  da 0x44. cuando deberia de dar 0x20