Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCTION TO EMBEDDED C
WHAT IS EMBEDDED C?
• C for Microcontrollers
Whenever the conventional “C” language and its extensions are used for programming embedded
systems, it is referred to as “Embedded C” programming.
There are certain words that are reserved for doing specific tasks. These words are known as
keywords. They are standard and predefined in the Embedded C.
Keywords are always written in lowercase. These keywords must be defined before writing the
main program. The basic keywords of an embedded software are given below:
1. sbit: This data type is used in case of accessing a single bit of SFR register.
Syntax: sbit variable name = SFR bit ;
Ex: sbit a=P2^1;
Explanation: If we assign p2.1 as ‘a’ variable, then we can use ‘a’ instead of p2.1
anywhere in the program, which reduces the complexity of the program.
2. Bit: This data type is used for accessing the bit addressable memory of RAM (20h-2fh).
Syntax: bit variable name;
Ex: bit c;
Explanation: It is a bit sequence setting in a small data area that is used by a program to
remember something.
3. SFR: This data type is used for accessing a SFR register by another name. All the SFR
registers must be declared with capital letters.
Syntax: SFR variable name = SFR address of SFR register;
Ex: SFR port0=0x80;
Explanation: If we assign 0x80 as ‘port0’, then we can use 0x80 instead of port0
anywhere in the program, which reduces the complexity of the program.
4. SFR Register: The SFR stands for ‘Special Function Register’. Microcontroller 8051
has 256 bytes of RAM memory. This RAM is divided into two parts: the first part of
128 bytes is used for data storage, and the other of 128 bytes is used for SFR
registers. All peripheral devices like I/O ports, timers and counters are stored in the
SFR register, and each element has a unique address.
Program variables
A variable is an addressable storage location to information to be used by the program – Each
variable must be declared to indicate size and type of information to be stored, plus name to be used to
reference the information
int x,y,z; //declares 3 variables of type “int”
char a,b; //declares 2 variables of type “char” – Space for variables may be allocated in registers,
RAM, or ROM/Flash (for constants) – Variables can be automatic or static.
Automatic variables
• Declare within a function/procedure
• Variable is visible (has scope) only within that function
– Space for the variable is allocated on the system stack when the procedure is entered
• Deallocated, to be re-used, when the procedure is exited
– If only 1 or 2 variables, the compiler may allocate them to registers within that
procedure, instead of allocating memory.
– Values are not retained between procedure calls
Static Variables
Retained for use throughout the program in RAM locations that are not reallocated during
program execution.
Declare either within or outside of a function
– If declared outside a function, the variable is global in scope, i.e. known to all functions of the
program
• Use “normal” declarations. Example: int count;
– If declared within a function, insert key word static before the variable definition. The variable
is local in scope, i.e. known only within this function.
static unsigned char bob;
static int pressure[10];
comments
preprocessor directives
global variables
main() function
{
local variables
statements
…………..
…………..
}
fun(1)
{
local variables
statements
…………..
…………..
}
Comments: In embedded C programming language, we can place comments in our code which helps the
reader to understand the code easily.
C=a+b; /* add two variables whose value is stored in another variable C*/
Preprocessor directives: All the functions of the embedded C software are included in the
preprocessor library like “#includes<reg51.h>, #defines”. These functions are executed at the time of
running the program.
Global variable
A global variable is a variable that is declared before the main function, and can be accessed on
any function in the program.
Local variable
A local variable is a variable declared within a function, and it is valid only to be used within that
function.
Main () function
The execution of a program starts with the main function. Every program uses only one main ()
function.
OPERATORS
1. Arithmetic operations
Bit set/reset/complement/test
• Use a “mask” to select bit(s) to be altered
3. Shift operators
x >> y (right shift operand x by y bit positions)
x << y (left shift operand x by y bit positions)
Vacated bits are filled with 0’s. Shift right/left fast way to multiply/divide by power of 2
4. Relational Operators
5. Boolean operators
Boolean operators && (AND) and || (OR) produce TRUE/FALSE results when testing multiple
TRUE/FALSE conditions
if ((n > 1) && (n < 5)) //test for n between 1 and 5
if ((c = ‘q’) || (c = ‘Q’)) //test c = lower or upper case Q
Note the difference between Boolean operators &&, || and bitwise logical operators &, ||
and bitwise logical operators &, |
if ( k && m) //test if k and m both TRUE (non-zero values)
if ( k & m) //compute bitwise AND between m and n, //then test whether the result is non-zero
(TRUE)
Examples of a few Embedded C Programs
.E
Available C Compilers
• Kiel – integrated with the IDE we have been using for labs.
• Reads51 – available on web site (http://www.rigelcorp.com/reads51.htm)
• Freeware: SDCC - Small Device C Compiler (http://sdcc.sourceforge.net/)
• Other freeware versions …