Autor Tema: duda con c18 y declaracion de variables.  (Leído 2025 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
duda con c18 y declaracion de variables.
« en: 28 de Julio de 2007, 08:59:28 »
hola estoy tratando de entender el codigo en c18, para ello me baso en un programa que he bajado de la red y hay cosas que no entiendo bien. Por ejemplo:

en este codigo la linea subrayada se define como unsigned char rom *. ¿en qué se diferencia del resto de los unsigned char que hay en el bloque?

un saludo.

#pragma udata
BUFDESC USB_buffer_desc;
unsigned char USB_buffer_data[8];
unsigned char USB_error_flags;
unsigned char USB_curr_config;
unsigned char USB_device_status;
unsigned char USB_dev_req;
unsigned char USB_address_pending;
unsigned char rom *USB_desc_ptr;
unsigned char USB_bytes_left;
unsigned char USB_packet_length;
unsigned char USB_USTAT;
unsigned char USB_USWSTAT;
unsigned char COUNTER_L;
unsigned char COUNTER_H;

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: duda con c18 y declaracion de variables.
« Respuesta #1 en: 28 de Julio de 2007, 15:57:32 »
el parámetro ROM implica que esa variable está ubicada en la memoria ROM o más conocida como memoria de programa.
el resto esta sobreentendido que se ubican en la RAM o memoria de datos volatil.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: duda con c18 y declaracion de variables.
« Respuesta #2 en: 28 de Julio de 2007, 19:32:10 »
entonces por qué se declara en la sección udata, y no en la sección romdata? (pongo un trozo de codigo en el que se definen las dos secciones):

#pragma udata
BUFDESC USB_buffer_desc;
unsigned char USB_buffer_data[8];
unsigned char USB_error_flags;
unsigned char USB_curr_config;
unsigned char USB_device_status;
unsigned char USB_dev_req;
unsigned char USB_address_pending;
unsigned char rom *USB_desc_ptr;
unsigned char USB_bytes_left;
unsigned char USB_packet_length;
unsigned char USB_USTAT;
unsigned char USB_USWSTAT;
unsigned char COUNTER_L;
unsigned char COUNTER_H;

#pragma romdata
rom const unsigned char Device[] = {
   0x12,   // bLength
   DEVICE,   // bDescriptorType
   0x10,   // bcdUSB (low byte)
   0x01,   // bcdUSB (high byte)
   0x00,   // bDeviceClass
   0x00,   // bDeviceSubClass
   0x00,   // bDeviceProtocol
   MAX_PACKET_SIZE,   // bMaxPacketSize
   0xD8,   // idVendor (low byte)
   0x04,   // idVendor (high byte)
   0x01,   // idProduct (low byte)
   0x00,   // idProduct (high byte)
   0x00,   // bcdDevice (low byte)
   0x00,   // bcdDevice (high byte)
   0x01,   // iManufacturer
   0x02,   // iProduct
   0x00,   // iSerialNumber (none)
   NUM_CONFIGURATIONS   // bNumConfigurations
};



UN SALUDO!   :-)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: duda con c18 y declaracion de variables.
« Respuesta #3 en: 29 de Julio de 2007, 13:13:42 »
segun lo que dice el manual la seccion udata es para registros o variables sin valores inicializados
ejm:
unsigned char todopic;

la seccion idata es para registros o variables con valores inicializados
ejm:
unsigned char foropic=16;

la seccion rom data no la he estudiado aun, pero supongo que son valores escritos en la ROM del pic osea en la memoria de programa.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: duda con c18 y declaracion de variables.
« Respuesta #4 en: 30 de Julio de 2007, 06:42:22 »
Es un puntero en RAM que apunta a una dirección de ROM.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: duda con c18 y declaracion de variables.
« Respuesta #5 en: 03 de Agosto de 2007, 17:24:14 »
claro, eso es más lógico. Gracias Maunix, (bueno y gracias a to2 los demás tambien por supuesto)   :mrgreen: