Autor Tema: simular registro en MPLAB X  (Leído 3680 veces)

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

Desconectado albertoie1

  • PIC10
  • *
  • Mensajes: 10
simular registro en MPLAB X
« en: 24 de Diciembre de 2013, 14:23:15 »
Buenas tardes a todos

espero me puedan ayudar con algo que parece sencillo pero que me tiene desesperado, estoy intentando simular un registro en MPLAB X pero no encuentro como decirle al MPLAB que me deje ver el registro, al hacer la simulacion solo me da unas opciones con memoria de programa, SFRS y file rtegistros pero no aparece el registro que necesito, es un registro que yo cree dentro del programa, el programa esta en asembler.

en la opcion donde muestra las variables, el registro no aparece

gracias por su ayuda

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: simular registro en MPLAB X
« Respuesta #1 en: 24 de Diciembre de 2013, 15:50:08 »
si escribes el nombre no te aparece?? Yo lo que hago es poner el nombre de la variable y ya aparece. Tambien tienes que tener en cuenta que sea global y sea estatico.

Desconectado albertoie1

  • PIC10
  • *
  • Mensajes: 10
Re: simular registro en MPLAB X
« Respuesta #2 en: 25 de Diciembre de 2013, 22:35:55 »
si escribes el nombre no te aparece?? Yo lo que hago es poner el nombre de la variable y ya aparece. Tambien tienes que tener en cuenta que sea global y sea estatico.

gracias por la respuesta, cuando escribo de la variable, no aparece, no se como convertirla en global y estatico, no se como hacer eso en asembler

gracias por la ayuda espero sus comentarios

Desconectado Vayadespiste

  • PIC12
  • **
  • Mensajes: 53
Re: simular registro en MPLAB X
« Respuesta #3 en: 27 de Diciembre de 2013, 06:00:12 »
A mi dentro de la ventana Watches y haciendo doble click encima de Name, al lado del icono de una hoja que hay, escribo el nombre de la variable y en esa línea me muestra valor, dirección, tipo, valor, etc.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: simular registro en MPLAB X
« Respuesta #4 en: 27 de Diciembre de 2013, 07:44:38 »
Te pongo una imagen con el menu Watch, se abre desde el menu "view".

Le vas poniendo las direcciones que tienen en el programa y el ya te pone los nombres. En esa imagen hay algun SFR como PORTC y ADCON0 que tambie se pueden poner si se quiere.

Vaya era para el MPLABX yo lo puse para el normal  :lol: :lol:

Desconectado Gusfavio

  • PIC12
  • **
  • Mensajes: 56
Re: simular registro en MPLAB X
« Respuesta #5 en: 27 de Mayo de 2015, 13:35:12 »
Hola a todos, revivo este tema por que yo igual estoy con la misma duda, como puedo observar las variables en mplab x? si en la ventana variables o watch yo pongo las variables al momento de simular simplemente desaparecen, alguien sabe como arreglar esto?, las variables ya sea declarandolas con EQU o CBLOCK ,me pasa lo mismo

saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: simular registro en MPLAB X
« Respuesta #6 en: 27 de Mayo de 2015, 14:06:18 »
Si Gusfavio, normalmente las variables que nosotros definiamos eran a traves de CBLOCK y EQU, pero eso no es definir una variable, sino que es definir constantes. Obviamente en el programa funcionaba ya que luego el compilador reemplaza esas Constantes con su valores. Lo que realmente debe hacerse es definir una variable, es decir definir en el lugar que va a estar y tamaño asi el compilador reserva ese espacio de memoria.

Si te sirve para no volver a repetir todo aca hay un tema tratandolo:
http://www.todopic.com.ar/foros/index.php?topic=44514.0

Luego que los agregas asi, las variables te aparecen como simbolos globales.
Tenes que tener en cuenta la memoria, si es compartida o no entre varios bancos. Ahi puse las partes de los archivos del linker para que veas cuales son las secciones.

Desconectado Gusfavio

  • PIC12
  • **
  • Mensajes: 56
Re: simular registro en MPLAB X
« Respuesta #7 en: 27 de Mayo de 2015, 15:43:22 »
Muchas gracias por la respuesta, ahora lo tengo todo claro, ya estoy acostumbrado a trabajar con los tipicos CBLOCK y EQU , pero bueno que se va hacer, tendre que adaptarme haha, tengo una duda mas, al usar la directiva UDATA hay que utilizar CODE como lo decis, en vez de ORG no? entonces al final del codigo ya no se pone END?

EDIT:

estoy haciendo un programa de multiplicacion con el pic16f84A, este es el codigo

Código: ASM
  1. __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF
  2.  
  3.                  
  4.         #include "p16F84A.inc"
  5.         LIST    P=16F84A
  6.  
  7.         Variables                       UDATA   0x0C
  8.         Multiplicando           RES             1       ;0x0C
  9.         Multiplicador           RES             1       ;0x0D
  10.         ByteSuperior            RES             1       ;0x0E
  11.         ByteInferior            RES             1       ;0x0F
  12.         Contador                        RES             1       ;0x10
  13. ;-------------------------------------------------------------------------------
  14.         CODE 0x00
  15. Inicio
  16.         bsf     STATUS,RP0          ;Configurando puertos A y B como entradas
  17.         movlw   b'11111111'
  18.         movwf   TRISA
  19.         movwf   TRISB
  20.         bcf     STATUS,RP0
  21. Principal
  22.         movlw   .8                  ;Cargando Contador
  23.         movwf   Contador
  24.         movf    PORTA,W             ;Guardando datos del puerto A en Multiplicando
  25.         movwf   Multiplicando
  26.         movf    PORTB,W
  27.         movwf   Multiplicador       ;Guardando datos del puerto B en Multiplicador
  28. Multiplicacion
  29.         rrf     Multiplicador
  30.         btfsc   STATUS,C
  31.         goto    SI
  32. NO
  33.         rrf     ByteSuperior        ;Rota a la derecha el Producto
  34.         rrf     ByteInferior
  35.         decf    Contador,F          ;Decrementando contador}
  36.         movf    Contador,W          ;Comprobando si Contador=0
  37.         btfss   STATUS,Z
  38.         goto    Multiplicacion
  39.         goto    Fin
  40. SI
  41.         movf    Multiplicando,W     ;Suma Multiplicando con ByteSuperior
  42.         addwf   ByteSuperior,F
  43.         goto    NO
  44. Fin
  45.         goto    Fin
  46.                 END

EL problema es que al compilar me sale el siguiente error:

Error - section 'Variables' can not fit the absolute section. Section 'Variables' start=0x0000000c, length=0x00000005

no entiendo por que pasa eso
« Última modificación: 27 de Mayo de 2015, 16:19:03 por Gusfavio »

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: simular registro en MPLAB X
« Respuesta #8 en: 27 de Mayo de 2015, 17:52:13 »
Hola Gusfavio prueba a cambiar
Código: ASM
  1. Variables UDATA 0x0C
por
Código: ASM
  1. VARIABLES UDATA_SHR

Saludos!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Gusfavio

  • PIC12
  • **
  • Mensajes: 56
Re: simular registro en MPLAB X
« Respuesta #9 en: 27 de Mayo de 2015, 18:18:06 »
Eso hice, y funciono.... pero por que? por que no se puede utilizar UDATA en este pic?

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: simular registro en MPLAB X
« Respuesta #10 en: 27 de Mayo de 2015, 18:41:35 »
Si Gusfavio, normalmente las variables que nosotros definiamos eran a traves de CBLOCK y EQU, pero eso no es definir una variable, sino que es definir constantes. Obviamente en el programa funcionaba ya que luego el compilador reemplaza esas Constantes con su valores. Lo que realmente debe hacerse es definir una variable, es decir definir en el lugar que va a estar y tamaño asi el compilador reserva ese espacio de memoria.

Si te sirve para no volver a repetir todo aca hay un tema tratandolo:
http://www.todopic.com.ar/foros/index.php?topic=44514.0

Luego que los agregas asi, las variables te aparecen como simbolos globales.
Tenes que tener en cuenta la memoria, si es compartida o no entre varios bancos. Ahi puse las partes de los archivos del linker para que veas cuales son las secciones.
Hola Gusfavio si lees el link que el compañero KILLERJC que ha puesto mas arriba el mismo explica el porque.

Saludos.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: simular registro en MPLAB X
« Respuesta #11 en: 27 de Mayo de 2015, 18:51:28 »
Justo eso esta explicado en el ultimo post de ese tema xD

Version resumida:

Udata para reservar lugar a registros que se pueden ser accedidos desde 1 solo banco.
Udata_shr para reservar lugar a registros que pueden ser accedidos desde varios bancos. Es decir su direccion.

Para saber si es posible solo basta ver el datasheet, por ejemplo el PIC16f84a tenes que tu memoria SFR es de 0x0C a 0x4F en el bank 0, y si estas en el bank1 tenes de 0x8C a 0xCF pero el bank 1 si accedes a 0x8C es lo mismo que acceder a 0x0C del bank0.
Por eso mismo el registro 0x0C se puede acceder desde ambos lados, tanto de 0x0C como 0x8C por eso estan catalogados como "SHARED" en el archivo del linker y por eso el _shr del udata

Desconectado Gusfavio

  • PIC12
  • **
  • Mensajes: 56
Re: simular registro en MPLAB X
« Respuesta #12 en: 27 de Mayo de 2015, 20:37:40 »
Gracias por las respuestas muchachos, ahora lo tengo todo clarisimo, y siii vi el post completo pero no habia entendido muy bien,... mmmm donde puedo encontrar el archivo linker de ese pic?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: simular registro en MPLAB X
« Respuesta #13 en: 27 de Mayo de 2015, 22:24:21 »
Cito del tema que ya se te linkeo:


Citar
MPLAB X deberia incluir el archivo de linker al proyecto... pero no lo hace. teniendo que navegar por las carpetas para encontrarlo
 .../Microchip/MPLABX/mpasmx/LKR
Normalmente en Program Files (x86) o Archivos de programas como quieras llamarle. Ahi buscas tu archivo 16f84a_g.lkr
Abrilo con el bloc de notas y podes ver el contenido.