1 Introduction
C is a high-level language that is often used in place of assembly to make writing programs
easier. The C language is standardized, so the same C program should work on every
microcontroller, as long as it is compiled (translated into assembly) correctly.
The main elements of a C program are the pre-processor command, followed by the main
function. Within the main function, subroutines may be called.
Credit: Bolton, Mechatronics: Electronic control systems in mechanical and electrical engineering
2 Features
2.1 Statements
These are the individual entries which make up a program. Each statement is terminated
with a semicolon. Individual statements can be grouped together into blocks with braces.
{
statement 1;
statement 2;
}
2.2 Functions
A function is used for a self-contained block of statements which perform a specific set of
actions. A function has a specific name by which it is referred, like a subroutine in assembly.
It’s written like name(arg). The brackets enclose any arguments, which are values passed
onto and inputted into the function. For example:
printf(”Mechatronics”);
1
Indicates that the string ’Mechatronics’ is passed to the function printf(), and is printed
onto the screen. printf is a keyword, and a pre-written function defined in the pre-processor
phase.
2.3 Return
A function may return a value to the calling routine. The type of value that is returned
is specified in front of the function name. For exaple, int main() indicates that the main
function will return an integer. The return type can be specified as void if the function does
not return a value. To actually return a value, the keyword return is used in a statement
such as return result.
2.6 Pre-processor
This is a porgram identified by pre-processor commands so that it is executed prior to
compilation. All such commands are identified by having # at the beginning of the line.
thus we might have # include < stdio.h > to include the stdio library.
You can use these for other purposes too, such as # define pi 3.14.
2.7 Comments
Like Assembly, C allows for notes to be made that are ignored by the compiler. They are
indicated by /* comments */.
2.8 Variables
A variable is a named memory location that can hold various values. These are usually
identified as carrying a specific type of data such as char (1 byte), int (4 bytes), float (4
bytes), or double (8 bytes).
Each number is formatted differently depending on its type. floats, for instance, include a
single sign bit, 8 exponent bits, and 32 mantissa (the actual digits) bits, and can be directly
expressed in scientific notation. The number = (sign -1:1)(2e xp)*1.(mantissa bits)
2
2.9 Keywords
In C, certain words are reserved for specific meanings. For example, int indicates when an
integer is being declared, and if indicates when a program can change direction.
2.10 Assignments
An assignment statement gives a value to a variable. a = 2 indicates that the variable is
now assigned the value 2. a = b means that variable a now has the same value as b.
3
2.16 Arrays
Credit: Bolton, Mechatronics: Electronic control systems in mechanical and electrical engineering
An array is a collection of data storage collections each having the same data type, and can
be used to collect multiple values together.
float Temperature[7] = {10, 12, 15, 11, 10, 14, 12};
Indicates an array of size 7, with preassigned values. Temperature[0] = 10, and Temper-
ature[6] = 12. Arrays can be multidimensional, array[x][y].
2.17 Pointers
Each memory location has a unique address. A pointer is a special variable which can
store the address of another variable. Thus, if a variable p contains the address of another
variable x, then p is said to point to x. If x is at address 100, then p has value 100. A pointer
declaration takes the form
type *name
in *pnumber
with the asterisk indicating that it is a pointer. We can initialize or assign a pointer with
an address using the & sign
pointer = &variable
3 Simple examples
# include <stdio.h>
void main(void)
{
int a, b, c, d; /*a, b, c, d are integers*/
a = 4; /*a is assigned value of 4*/
b = 3; /*a is assigned value of 3*/
c = 5; /*a is assigned value of 5*/
d = a*b*c;/*d is assigned value of multiplication*/
printf(”a*b*c = %d\n”, d)
} In this program, %d indicates that d is to be presented in decimal form, and n indicates
a line break.
4
# include <stdio.h>
void main(void)
{
int *p, x; x = 12;
p = & x;
printf(”%d”, *p);
return 0;
}
4.1 If
Credit: Bolton, Mechatronics: Electronic control systems in mechanical and electrical engineering
5
printf()”OK”);
4.2 For
The term loop refers to the execution of a set of statements repeatedly. One way to do this
is with a for loop. A for loop includes an initializing expression, a test expression, and an
increment expression.
main() {
for(count=0;count < 7; count ++)
printf(”%d”,count);
}
Credit: Bolton, Mechatronics: Electronic control systems in mechanical and electrical engineering
4.3 While
A while loop is continuously repeated as long as the expression is true.
int main() {
count = 1;
while(count < 7)
{
printf(”%d”, count);
6
count++;
}
return 0;
}
4.4 Switch
Credit: Bolton, Mechatronics: Electronic control systems in mechanical and electrical engineering
For multiple branching statements you can also use the switch statement. This takes an
expression, and will execute whichever statement matches the expression.
int main() {
int x;
7
printf(”Enter a number,0, 1, 2, or 3”);
scanf(”%d”, &x);
switch(x)
{
case 1:
printf(”One”);
break;
case 2:
printf(”Two”);
break;
case 3:
printf(”Three”);
break;
default:
printf(”Not 1, 2, or 3”);
}
return 0;
}