Texas Instruments MSP50C614 User Manual

Page 341

Advertising
background image

C– – Compiler

5-41

Code Development Tools

5.9.2

Variable Types

Type Name

Mnemonic

Range

Size in Bytes

Example

Integer

int

[–32768,32767]

2

int i,j;

Character

char

[0,255]

1

char c,d;

Array of integer

int

Not Applicable

Not Applicable

int array[12];

Array of characters

char

Not Applicable

forced to even

char text[20]

Pointer to integer

int *

Not Applicable

2

int *j;

Pointer to character

char *

Not Applicable

2

char *string;

Notes:

1) There is a major difference between an MSP50P614/MSP50C614 integer string and an

array of integers: an array of integers is an ordered set of

n 16 bit integers, whereas an

integer string of length

n represents a single integer with 16*n bits. In C– –,

MSP50P614/MSP50C614 strings are declared as arrays of integers, but must be
operated upon using the special purpose string arithmetic functions described below.

2) As in regular C, the above types can be qualified with the word unsigned.

3) There is another important qualifier that is special to C– – :

constant. We made the

mnemonic purposely different from the usual C

const qualifier, because it is not exactly

equivalent. It is used to initialize arrays in program ROM. A good use of it would be for
a sine table, for example. The syntax is simple, for example:
constant int array[10]={1,2,3,4,5,6,7,8,9,10},dummy;

4) will create a series of DATA statements in the assembly language output file.

Uninitialized constants (like

dummy above) generate a warning and are initialized to

zero. Constants are to be handled with care. Since they cannot be accessed the same
way as RAM variables, special purpose functions have to be used to utilize constants
in a program. The most general of these functions is xfer_const, which transfers values
from the program ROM to the RAM. Also, constants MUST BE GLOBAL. BEWARE OF
PASSING A CONSTANT AS AN ARGUMENT = DON’T DO IT !!!!!

5) The common C types float, struct, union and long are not implemented. (Note that

long

is a subset of

string of integer).

5.9.3

External References

The fact that all RAM allocations in the assembler are global has the following
implications for C– – variables:

-

Only the file containing the main routine can contain global variable
definitions.

-

Global variables referenced in other files must have been declared as ex-
ternal (keyword extern) at the beginning of the file.

-

A function referenced in a file but not defined in that same file must be
introduced with a function prototype in the file where it is referenced (no
need for the extern keyword).

Advertising