CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

struct within a struct

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
ljb



Joined: 19 Nov 2003
Posts: 30

View user's profile Send private message

struct within a struct
PostPosted: Wed Jul 28, 2004 9:31 am     Reply with quote

The first struct maintains the running date and time. The second struct is a record with a time stamp. How do I include the datetime format within the record structure?

struct datetime{
int8 Yrs;
int8 Mth;
int8 Day;
int8 Hrs;
int8 Min;
int8 Sec;
}dtm, *dp=&dtm;

struct rec{
long rc;
//datetime format here ****************
long ChData[MaxChans];
int8 St;
}drec, *rp=&drec;

Many thanks in advance
Les
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Jul 28, 2004 1:20 pm     Reply with quote

Quote:
How do I include the datetime format within the record structure?

See the code below for an example of how I did it in one program.

For more examples, search Google for this string:
"structures within structures" int char

Code:
#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#use rs232(baud = 9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

typedef struct
{
char c_month;                // 1-12 month
char c_date;                 // 1-31 date
char c_year;                 // 00-99 year (based on year 2000)
char c_hours;                // 0-23 hours
char c_minutes;              // 0-59 minutes
}T_DATE_TIME;

// In this structure, bit fields are used to store tenths (ie., .0 to .9) of
// a minute, for latitude and longitude.  The compiler stores them in 1 byte.
typedef struct
{
char c_latitude_degrees;     // 0 to 90 degrees
char c_latitude_minutes;     // 0 to 59 minutes,  N/S in bit 7, 1 = South.
char c_longitude_degrees;    // 0 to 180 degrees
char c_longitude_minutes;    // 0 to 59 minutes,  E/W in bit 7, 1 = West.
char nib_longitude_tenths:4; // 0 to 9 tenths of a minute (Long. in low nibble)
char nib_latitude_tenths:4;  // 0 to 0 tenths of a minute (Lat. in high nibble)
}T_LAT_LONG;

// Next, combine the above types into the trip record structure.
typedef struct
{                                         // Size in bytes must be = 16
char c_duration;                          // 1
T_DATE_TIME starting_date_time;           // 5
T_LAT_LONG  starting_position;            // 5
T_LAT_LONG  ending_position;              // 5
}T_TRIP_RECORD;

// Create one instance of the trip record.  We'll temporarily
// store data here before we read or write to FRAM.
T_TRIP_RECORD gt_trip_record;


//====================================
main()
{
gt_trip_record.starting_date_time.c_month = 6;

while(1);
}
ljb



Joined: 19 Nov 2003
Posts: 30

View user's profile Send private message

structures eating rom space
PostPosted: Thu Jul 29, 2004 3:06 am     Reply with quote

Using a 16f876, when I grouped associated vars into a structure as below.

typedef struct{
int8 Yrs;
int8 Mth;
int8 Day;
int8 Hrs;
int8 Min;
int8 Sec;
}datetime;
datetime *dp;

the available rom space reduced by 5%. After adding another struct the rom space reduced again by a similar amount.
The prog works fine, but I can't figure out why the rom space should be reduced so dramaticaly when its only memory locations that are being pointed to.
please help, as I'm going to end up with a prog full of structures and very little code. Am I doing something wrong?
Cheers
Les
Gerrit



Joined: 15 Sep 2003
Posts: 58

View user's profile Send private message

PostPosted: Thu Jul 29, 2004 3:12 am     Reply with quote

How mutch ram is availible in *.lst file

ram used / 0.percentage

ex. RAM used: 247 (67%) at main() level
total ram ~ 247 / 0.67 => 368 bytes


I'm not sure but did you use

#device *=16


Gerrit
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group