C Language Quick Reference

May 11, 2017 | Author: cikgu_usin | Category: N/A
Share Embed Donate


Short Description

Download C Language Quick Reference...

Description

C Programming Language

Quick Reference V1.3

June 2009 Information contained in this publication regarding device applications and the like is intended through suggestion only and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. No representation or warranty is given and no liability is assumed by Cytron Technologies Incorporated with respect to the accuracy or use of such information or infringement of patents or other intellectual property rights arising from such use or otherwise. Use of Cytron Technologies’s products as critical components in life support systems is not authorized except with express written approval by Cytron Technologies. No licenses are conveyed, implicitly or otherwise, under any intellectual property rights.

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Index 1. Introduction

1

2. Standard Method to Start

1

a.

C Comments

1

b.

Include Header File

2

c.

Configuration Bits

2

d.

Include Libraries, Functions declaration and Global variables

2

e.

Function Name

2

f.

Function Body

2

3. Radix Format

3

4. Identifiers, Variables and Keywords

3

a.

Identifiers

3

b.

Variable

4

c.

Keywords

4

d.

Data Type

5

e.

Declaring Variable

6

f.

Array

6

g.

String

7

5. Operators

9

a.

Arithmetic Operators

9

b.

Assignment Operators

9

c.

Relational Operators

10

d.

Logical Operators

10

e.

Bitwise Operators

10

f.

Shift Operators

10

g.

Memory Addressing Operators

11

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

ROBOT . HEAD to TOE Quick Reference – C Programming Language

h.

Other Operators

11

i.

Operator Precedence

12

6. Statements

13

a.

Expression Statements

13

b.

Compound Statements

13

c.

Control Statements

14

i.

if Statement

15

ii.

switch Statement

16

iii.

for Statement

19

iv.

while Statement

20

v.

do-while Statement

21

vi.

break Statement

22

vii.

continue Statement

23

7. Function

24

8. Creating Project using MPLAB + HI-TECH C PRO Compiler

27

9. Starting a PIC Program

36

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

ROBOT . HEAD to TOE Quick Reference – C Programming Language

1. Introduction This reference guide is intended to quickly introduce user to C language syntax with the aim to easily start programming microcontroller (PIC) during code development. 1st question, Why C language? Because C offers unmatched power and flexibility in programming microcontrollers.

2. Standard Method to Start There is no 100% correct ways to write c program, anyway there are guide lines to follow. Let see what a C file contains.

a. Comments b. Include header file c. Configuration bits d. Include libraries, function declaration, global variable e. Function name Begin of Block f. Function body

Prepared by Cytron Technologies Sdn. Bhd. 19, Jalan Kebudayaan 1A, Taman Universiti, 81300 Skudai, Johor, Malaysia. Tel: Fax:

+607-521 3178 +607-521 1861

URL: www.cytron.com.my Email: [email protected] [email protected]

End of block

a. C Comments /* Put your comments here. This is actually the format of C comments. It may takes multiple lines, as long as it is end with */ OR // Put your comments after “//”, this only allow one line. // If you need multiple lines you will need “//” in front of each line. // This is C++ format of putting comments.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

1

ROBOT . HEAD to TOE Quick Reference – C Programming Language

b. Include Header File #include is to called the proper header file. It enables the compiler to include file which define standard keyword for PIC based on model. It also includes certain functions contained in the external file htc.h. As the file placed before the program proper, it is called a header file (with the file extension .h).

c. Configuration Bits A macro that writes a value into the special register that controls the core executing operations of the microcontroller. It start with two “_” and followed with CONFIG(configuration bits); If the configuration bits are not specified correctly, the PIC MCUs might not run the application code properly

d. Include Libraries, Functions declaration and Global variables This section can be leaved blank depend on program writer. However, if there is necessary to include other header file, libraries, to declare functions prototype and global variables, it should be placed here.

e. Function Name All C programs are written in terms of functions. It is the basic building block in C programming. C program must have at least the function main( ). The void means the main( ) function doesn't return any value when it exit (finish running)..

f. Function Body Every function, including main( ), must have a body enclosed in braces { }.The function body (also called block) can be of any size. The curly braces are to signify the block of codes belonging to main( ). Do take note that there MUST NOT be a semicolon after the closing brace.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

2

ROBOT . HEAD to TOE Quick Reference – C Programming Language

3. Radix Format Radix format is the way a value is being presented in C language There are four methods to present value: Radix

Format

Comments

Binary

0bnumber or 0Bnumber MPASM binary is in format B’number’.

Octal

0number or \number

Decimal

number

Hexadecimal

0xnumber or 0Xnumber MPASM also enables X’number’.

Inadvertently putting a 0 in front of a decimal number will convert it to octal for the compiler, potentially resulting in errors that are very hard to find. MPASM default is hexadecimal

4. Identifiers, Variables and Keywords a. Identifiers Identifiers are simply names or labels given to program elements such as variables, functions, arrays. A valid identifier has the rules of:

Identifier First Character ‘_’ (underscore) ‘A’ to ‘Z’ ‘a’ to ‘z’

Remaining Characters ‘_’ (underscore) ‘A’ to ‘Z’ ‘a’ to ‘z’ ‘0’ to ‘9’

Remember! Is case sensitive, Temp not the same as temp.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

3

ROBOT . HEAD to TOE Quick Reference – C Programming Language

b. Variable A variable is a valid identifier that represents one or more memory locations used to hold

program data. It must be declared before uses. Data type must be assigned to a variable.

c. Keywords Keywords also called reserved words, have standard, predefined meanings and must be used only for their intended purpose. asm class do far huge long protected sizeof typedef volatile

auto const double float if near public static union while

break continue else for inline new register struct unsigned

case default enum friend int operator return switch virtual

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

char delete extern goto interrupt private short this void

4

ROBOT . HEAD to TOE Quick Reference – C Programming Language

d. Data Type Data Type is type assigned to variable to determine the size and how the variable being interpreted. Fundamental Type Type Description char single character int integer float single precision floating point number double double precision floating point number Modified Integer Types Qualifiers: unsigned, signed, short and long Qualified Type unsigned char char, signed char unsigned short int short int, signed short int unsigned int int, signed int unsigned long int long int, signed long int unsigned long long int long long int, signed long long int

Bits 8 16 32 64

Min 0 -128 0 -32768 0 -32768 0 -231 0 -263

Max 255 127 65535 32767 65535 32767 232-1 231-1 264-1 263-1

Bits 8 8 16 16 16 16 32 32 64 64

Modified Floating Point Types Absolute Absolute Qualified Type Min Max Bits -44.85 38.53 float ±~10 ±~10 32 double1 ±~10-44.85 ±~1038.53 32 -323.3 308.3 long double ±~10 ±~10 64 1. HI-TECH C PRO is either using IEEE-754 Format or modified (Truncated) 24-bit Format

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

5

ROBOT . HEAD to TOE Quick Reference – C Programming Language

e. Declaring Variable Standard Syntax type identifier1, identifier2,….., identifiern; Other method One declaration on a line type identifier; One declaration on a line with an initial value type identifier InitialValue; Multiple declarations of same type of a line type identifier1, identifier2, identifier3; Multiple declarations of same type of a line with initial values type identifier1= Value1, identifier2 = Value2; Example: unsigned int x; unsigned y = 12; int a, b, c; long int myVar = 0x12345678; long z; char first = 'a', second, third = 'c'; float big_number = 6.02e+23;

f. Array Arrays are variables that can store many items of the same data type. The individual items known as elements, are stored sequentially and are uniquely identified by the array index (sometimes called a subscript). The index is zero based. Standard Syntax type arrayName[size]; size refer to the number of elements and it must be a constant integer. Declaration with initialization type arrayName[size] = {item1, …. , itemn}; The items must all match the type of the array. Example: int a[5] = {10, 20, 30, 40, 50};

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

6

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Using Array: Standard Syntax arrayName[index] index may be a variable or a constant The first element in the array has an index of 0 Example1: int i, a[10];

//An array that can hold 10 integers

for(i = 0; i < 10; i++) { a[i] = 0; //Initialize all array elements to 0 } a[4] = 42; //Set fifth element to 42 Example2: unsigned char count[5] = {1,2,3,4,5}; element count[0] count[1] count[2] count[3] count[4]

Value 1 2 3 4 5

g. String Strings are arrays of char whose last element is a null character ‘\0’ with an ASCII of 0. C has no native string data type, so strings must always be treated as character arrays. Strings: - Are enclosed in double quotes “string”. - Are terminated by a null character ‘\0’. - Must be manipulated as arrays of characters (treated element by element). - May be initialized with a string literal. Declaration with initialization char arrayName[] = “Cytron Technologies”; Element size is not required. Size automatically determined by length of string. NULL character ‘\0’ is automatically appended. Example: char str1[] = “Cytron"; // 7 chars “Cytron\0" //Alternative string declaration – size required char str3[4] = {'P', 'I', 'C', '\0'};

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

7

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Following show the ASCII table:

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

8

ROBOT . HEAD to TOE Quick Reference – C Programming Language

5. Operators Most C Compiler recognizes following operators: - Arithmetic Operators - Assignment Operators - Relational Operators - Logical Operators - Bitwise Operators - Shift Operators - Memory Addressing Operators - Other Operators a. Arithmetic Operators Operator Operation Example Product * Multiplication x * y Product of x and y / x / y division Quotient of x and y Remainder of x divided by % x % y Modulo y + x + y Addition Sum of x and y Subtraction x - y Difference of x and y + + x Positive Value of x - y Negative Negative value of y ++ ++ x Increment increase x by 1 -Decrement -- x decrease x by 1

b. Assignment Operators Operator Operation = Assignment += Compound Assignment -= Compound Assignment *= Compound Assignment /= Compound Assignment %= Compound Assignment &= Compound Assignment ^= Compound Assignment |= Compound Assignment = Compound Assignment

Example x = y x += y x -= y x *= y x /= y x %= y x &= y x ^= y x |= y x = y

Remarks Binary Binary Binary Binary Binary Unary Unary Unary Unary

Result Assign x the value of y x=x+y x=x-y x=x*y x=x/y x=x%y x=x&y x=x^y x=x|y x = x > y

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

9

ROBOT . HEAD to TOE Quick Reference – C Programming Language

c. Relational Operators Operator Operation < Less than Greater than Greater than or equal >= to == Equal to != Not equal to

d. Logical Operators Operator Operation && Logical AND || Logical OR ! Logical NOT

Example x < y x y

x == y x != y

Result (FASLE = 0, TRUE≠0) 1 if x less than y, else 0 1 if x less than or equal to y, else 0 1 if x greater than y, else 0 1 is x greater than or equal to y, else 0 1 is x equal to y, else 0 1 is x not equal to y, else 0

Example x && y x || y !x

Result (FASLE = 0, TRUE≠0) 1 if both x ≠ 0 and y ≠ 0, else 0 1 if both x = 0 and y = 0, else 1 1 if x = 0, else 0

x >= y

e. Bitwise Operators The operation is carried out on each bit of the first operand with each corresponding bit of the second operand. Operator Operation Example Result (for each bit position) 1 if 1 in both x and y & x & y Bitwise AND 0, if 0 is x or y or both 1, if 1 in x or y or both | x | y Bitwise OR 0, if 0 in both x and y 1, is 1 in x or y but not both ^ x ^ y Bitwise XOR 0, if 0 or 1 in both x and y 1, if 0 in x ~ ~x Bitwise NOT 0, if 1 in x

f. Shift Operators Operator Operation > Shift Right

Example x > y

Result Shift x by y bits to the left Shift x by y bits to the right

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

10

ROBOT . HEAD to TOE Quick Reference – C Programming Language

g. Memory Addressing Operators Operator Operation & Address of * Indirection [ ] Subscripting . ->

Example Result &x Pointer to x *p The object of function that p points to x[y] The yth element of array x The member named y in the structure Struct/Union Member x.y or union x Struct/Union Member p->y The member named y in the structure by Reference or union that p points to

h. Other Operators Operator

Operation

Example

Function call

foo(x)

sizeof

Size of an object or type in bytes

sizeof x

(type)

Explicit type cast

(short) x

( )

?: ,

Conditional expression Sequential evaluation

x ? y : z x, y

Result Passes control to the function with the specified arguments the number of bytes x occupies in memory Converts the value of c to the specified type The value of y if x is true, else value of z Evaluates x then y, else result is value of y

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

11

ROBOT . HEAD to TOE Quick Reference – C Programming Language

i. Operator Precedence Which operator will be evaluated first? Operator Description ( ) Parenthesized Expression [ ] Array Subscript . Structure Member -> Structure Pointer + Unary + and - (Positive and Negative Signs) ++ -- Increment and Decrement ! ~ Logical NOT and Bitwise Complement * Deference (Pointer) & Address of sizeof Size of Expression or Type (type) Explicit Typecast * / % Multiply, Divide, and Modulus + Add and Subtract > Shift Left and Shift Right < >= Greater Than and Greater Than or Equal To == != Equal To and Not Equal to & Bitwise AND ^ Bitwise XOR | Bitwise OR && Logical AND || Logical OR ? : Conditional Operator = Assignment += -= Addition and Subtraction Assignments /= *= Division and Multiplication Assignments %= Modules Assignment = Shift Left and Shift Right Assignments &= |= Bitwise AND and OR Assignments ^= Bitwise XOR Assignments , Comma Operator

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

Associativity Left-to-Right

Right-to-Left

Left-to-Right

Right-to-Left

Left-to-Right

12

ROBOT . HEAD to TOE Quick Reference – C Programming Language

6. Statements Statements can be roughly divided into: - Expression Statements - Compound Statements - Control Statements

a. Expression Statements An expression followed by a semi-colon. It caused the expression to be evaluated. Example: i = 0; i++; a = 5 + i; y = (m * x) + b; printf("Slope = %f", m); ;

b. Compound Statements A group of individual statements enclosed within a pair of curly braces { and }. It does not end with a semicolon after }. It is also called Block Statements. Example: { float start, finish; start = 0.0; finish = 400.0; distance = finish – start; time = 55.2; speed = distance / time; printf("Speed = %f m/s", speed); }

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

13

ROBOT . HEAD to TOE Quick Reference – C Programming Language

c. Control Statements Used for loops, branches and logical tests. Often require other statements embedded within them. Before exploring more in to Control Statements, we must understand Boolean expressions. Boolean expressions return integers: - 0 if expression evaluates as FALSE - Non-zero if expression evaluates as TRUE (usually returns 1, but this is not guaranteed) Example: int main(void) { int x = 5, y, z; y = (x > 4); z = (x > 6); while (1);

y = 1 (TRUE) z = 0 (FALSE)

}

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

14

ROBOT . HEAD to TOE Quick Reference – C Programming Language

i. if Statement Standard Syntax if (expression) statement expression is evaluated for Boolean TRUE (≠0) or FALSE (=0), if TRUE, then statement is executed. Flow diagram of if statement

START START expression ≠ 0

TRUE expression expression

statement statement

expression = 0 FALSE END END

Example: { int x = 5; if (x) { printf("x = %d\n", x); } while (1); } if statement may has several combination of: a. Nested if statement b. if-else statement c. if-else if statement

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

15

ROBOT . HEAD to TOE Quick Reference – C Programming Language

ii. switch Statement Standard Syntax switch (expression) { case const-expr1: statements1 . . . case const-exprn: statementsn default: statementsn+1 } expression is evaluated and tested for a match with the const-expr in each case clause. The statements in the matching case are executed.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

16

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Flow diagram of default switch statement START START

Const-expr Const-expr11== expression? expression?

statement statement11

Const-expr Const-expr22== expression? expression?

statement statement22

Const-expr Const-exprnn== expression? expression?

statement statementnn

Notice that each statement falls through to the next This is the default behavior of the switch statement

statement statementn+1 n+1

END END

Flow diagram of modified switch Statement START START

Const-expr Const-expr11== expression? expression?

statement statement11 break; break;

Const-expr Const-expr22== expression? expression?

statement statement22 break; break;

Const-expr Const-exprnn== expression? expression?

statement statementnn break; break;

Adding a break statement to each statement block will eliminate fall through, allowing only one case clause's statement block to be executed

statement statementn+1 n+1

END END

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

17

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Example: switch(channel) { case 2: printf("WBBM Chicago\n"); break; case 3: printf("DVD Player\n"); break; case 4: printf("WTMJ Milwaukee\n"); break; case 5: printf("WMAQ Chicago\n"); break; case 6: printf("WITI Milwaukee\n"); break; case 7: printf("WLS Chicago\n"); break; case 9: printf("WGN Chicago\n"); break; case 10: printf("WMVS Milwaukee\n"); break; case 11: printf("WTTW Chicago\n"); break; case 12: printf("WISN Milwaukee\n"); break; default: printf("No Signal Available\n"); }

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

18

ROBOT . HEAD to TOE Quick Reference – C Programming Language

iii. for Statement Also being called as for loop. Standard Syntax for (expression1; expression2; expression3) statement -

expression1 initializes a loop count variable once at start of loop (e.g. I = 0). expression2 is the test condition: the loop will continue while this is true (e.g. I = y) ? x : y; return z; } Standard Syntax of function calling a. No parameters and no return value: foo( ); b. No parameters, but with a return value: x = foo ( ); c. With parameters, but no return value: foo(a, b); d. With parameters and a return value: x = foo(a, b);

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

25

ROBOT . HEAD to TOE Quick Reference – C Programming Language

Function Prototypes - Like variables, a function must be declared before it may be used. - Declaration must occur before main( ) or other functions that use it. - Declaration may take two forms: o The entire function definition o Just a function prototype – the function definition itself may then be placed anywhere in the program Example: int a = 5, b = 10, c; int maximum(int x, int y);

Function is declared with prototype before use in main ( )

int main(void) { c = maximum(a, b) ; printf("The max is %d\n", c) } int maximum(int x, int y) { return ((x >= y) ? x : y); }

Function is defined after it is used in main ( )

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

26

ROBOT . HEAD to TOE Quick Reference – C Programming Language

8. Creating Project using MPLAB + HI-TECH C PRO Compiler To start MPLAB IDE and open project for PIC16F series, please follow the step below: 1. Double click on the icon installed on the desktop after installation or select Start>Programs>Microchip> MPLAB IDE v8.20a>MPLAB IDE. A screen will display the MPLAB IDE logo followed by the MPLAB IDE desktop as in diagram below.

2. The next step is to create a project using the Project Wizard. A project is the way the files are organized to be compiled and assembled. We Choose Project>Project Wizard.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

27

ROBOT . HEAD to TOE Quick Reference – C Programming Language

3. From the Welcome dialog, click on Next to proceed.

4. The next dialog (Step One) allows you to select the device. In this example, PIC16F877A was selected from the drop down menu. Click Next>.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

28

ROBOT . HEAD to TOE Quick Reference – C Programming Language

5. The next step of the Project Wizard is sets up the language tools that are used with this project. Select “HI-TECH Universal Toolsuite” in the Active Toolsuite list box. Then select “HI-TECH ANSI C Compiler” in the Toolsuite Contents box. When you are finished, click Next.

6. Step three of the project wizard allows user to create new project file.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

29

ROBOT . HEAD to TOE Quick Reference – C Programming Language

7. For an example, a folder named Project was first created at Desktop.

8. Then open the folder, project. Project named “project” can be created by typing the project name in the column for “File name”, and click Save.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

30

ROBOT . HEAD to TOE Quick Reference – C Programming Language

9. Diagram below shown the Project “project” had been created and the directory. Click Next>.

10. Step four of the project wizard allow user to add existing file to the project, however, for this example, no files will be added. Please click Next> to proceed.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

31

ROBOT . HEAD to TOE Quick Reference – C Programming Language

11. A summary will be shown at the end of project wizard, all the project parameters are shown. Please click Finish to exit from project wizard.

12. After pressing the Finish button, review the Project Window on the MPLAB IDE desktop. It should look like the diagram below. If the Project Window is not open, please select View>Project.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

32

ROBOT . HEAD to TOE Quick Reference – C Programming Language

13. In this example, sample source code for Cytron DIY project, PR23 will be added to this project. The sample source code can be downloaded at http://www.cytron.com.my/PR23.asp . Diagram below show the sample source code, PR23.c being copied and pasted in the folder, project.

14. To add file in Source Files, right click on the Source Files, then click on Add Files…, diagram below shown the example for add file to Source Files

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

33

ROBOT . HEAD to TOE Quick Reference – C Programming Language

15. After clicking on Add Files…, a window pop out, do make sure the Files of type is All Source Files(*.asm;*.c), then browse to the folder Project to add in “PR23.c”. User can select the file, “PR23.c”, and click open to add the file.

16. Diagram below shown PR23.c added to the project.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

34

ROBOT . HEAD to TOE Quick Reference – C Programming Language

17. After added the source file, user can open PR23.c file in this workspace and try to compile it. Diagram below shown opened PR23.c file. To compile, user can go Project>Build or the build icon (in red circle) on menu bar as shown in diagram below.

18. After build success, a message Build successful! will appear in output window like shown in diagram below.

Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

35

ROBOT . HEAD to TOE Quick Reference – C Programming Language

9. Starting a PIC Program There are basic steps to start a program for PIC microcontroller a. Create a project. b. Create a C file. c. Place some comments on top of C file. d. Include necessary header file. e. Write configuration bit. f. Function prototype declaration, global variables. g. Start main function, void main (). h. 1st thing after PIC reset, it will come to main function and look at first program line. Thus program write must initialize the PIC Input, Output, Analog input, UART, and also other peripherals which going to be used in later program. i. Also please ensure the initial stage of output is not activated after reset.

Prepared by Cytron Technologies Sdn. Bhd. 19, Jalan Kebudayaan 1A, Taman Universiti, 81300 Skudai, Johor, Malaysia. Tel: Fax:

+607-521 3178 +607-521 1861

URL: www.cytron.com.my Email: [email protected] [email protected] Created by Cytron Technologies Sdn. Bhd. – All Rights Reserved

36

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF