An Embedded C Program
An Embedded C Program
An Embedded C Program
1
Variable Types and Sizes
Type Size(Bits) Range
bit 1 0,1
char 8 -128 to 127
unsigned char 8 0 to 255
int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32
unsigned long int 32
signed long int 32
float 32 +-1.175e-38 to +-
3.4e38
double 32 +-1.175e-38 to +-
3.4e38
2
Constants
Numerical Constants
decimal 1234
binary 0b10101011
hexadecimal 0xff
octal 0777
Character Constants
character representation Equivalent Hex Value
Bitwise Operators
Ones complement ~
Left Shift <<
Right Shift >>
AND &
Exclusive OR ^
OR |
4
Bitwise Operations
Given an unsigned char y = 0xC9
operation result
x = ~y x = 0x36
x = y <<3 x = 0x48
x = y>>4 x = 0x0C
x = y&0x3F x = 0x09
x = y^1 x = 0xC8
x = y | 0x10 x = 0xD9
other examples:
unsigned char z
z = PINA & 0x06;
PORTB = PORTB | 0x60;
PORTB = PORTB & 0xfe;
5
Logical Operators
Logical operator
AND &&
OR ||
x =5 and y =2
(x && y) is true, because both are non-zero
(x & y) is false, because 00000101 bitwise AND 00000010 equal to zero
6
Division
Beware division:
• If second argument is integer, the
result will be integer (rounded):
5 / 10 0 whereas 5 / 10.0 0.5
• Division by 0 will cause a problem
7
Relational Operators
Relational Operators
Is Equal to ==
Is Not equal to !=
Less Than <
Less Than or Equal to <=
Greater than >
Greater Than or equal to >=
x = 3 and y =5
(x == y) FALSE
(x != y) TRUE
(x < y) TRUE
(x<=y) TRUE
(x>y) FALSE
(x >= y) FALSE 8
Data format
Conversion specifier Description
9
Assignment Operators
x = y assign y to x x += y assign (x+y) to x
x++ post-increment x x -= y assign (x-y) to x
++x pre-increment x x *= y assign (x*y) to x
x-- post-decrement x x /= y assign (x/y) to x
--x pre-decrement x x %= y assign (x%y) to x
10