Presentation is loading. Please wait.

Presentation is loading. Please wait.

Bitwise Operators Pointers Functions Structs Interrupts (in C)

Similar presentations


Presentation on theme: "Bitwise Operators Pointers Functions Structs Interrupts (in C)"— Presentation transcript:

1 Bitwise Operators Pointers Functions Structs Interrupts (in C)

2 table_07_00 Bitwise operators: useful for dealing with signals of different widths; NOTE: these are LOGICAL operators and variables are declared UNSIGNED— why? (example: homework 1, problem 1) Additional useful reference: http://www.cs.cf.ac.uk/Dave/C/node13.html

3 fig_07_00 Examples of c operations at the byte level

4 fig_07_01 Example of c program—”portShadow” mirrors what is on port; Note use of parentheses to guarantee order of bitlevel operations (even if we are using default order)

5 fig_07_02 Using shift operators (remember these are logical):

6 fig_07_03 Redoing the previous problem with shifts:

7 fig_07_04 Getting data from the port:

8 fig_07_05 Using bitlevel operations for arithmetic; Are there any problems with this approach? C: on signed data, left shift undefined if overflow occurs, right shift is implementation-dependent; Java: all integers are signed

9 fig_07_06 Can use shifts for slightly more complex multiplies and divides; More complex operations (e.g., with 3 1’s in multiplier or divider) are probably not efficient

10 fig_07_07 Pointers: example data

11 fig_07_09 Example instruction:

12 fig_07_10 Example 2 of Instruction execution

13 fig_07_11 Example: what is output?

14 fig_07_12a Pointer arithmetic—not for beginners!

15 fig_07_12b Pointer arithmetic: additional examples

16 fig_07_13 Constant pointers:

17 fig_07_14 Using constants and constant pointers:

18 fig_07_14 Note: pointers can be “generic” or NULL: Generic: Type void: pointer can point to a variable of any type example: 7.3, p. 265 NULL: Pointer needs to be assigned a valid address before dereferencing, otherwise hard-to-find bugs can occur Address 0 is not acceptable Solution: use null pointer address, (void*) 0

19 fig_07_15 C functions:

20 fig_07_16 Example:

21 fig_07_17 Function call: note order of parameters on stack

22 fig_07_18 Using stack to return result: Function body in memory:

23 fig_07_20 Pass by value (default in c):

24 fig_07_21 Pass by reference:

25 fig_07_22 Information hiding: static qualifier prevents visibility outside this file (even to linker):

26 fig_07_23 Function documentation: template for header

27 fig_07_24 We can also define pointers to functions: Dereferencing methods:

28 fig_07_26 Example:

29 fig_07_27 Example 2:

30 fig_07_28 Pointing to add:

31 fig_07_29 Pointing to subtract: pointer does not know functionality, only address

32 fig_07_31 User-defined data structure: struct

33 fig_07_30 User-defined data structure: struct Example:

34 fig_07_34 Can also define a type and use it repeatedly:

35 fig_07_35 Syntax for using struct:

36 fig_07_36 Example: define a rectangle

37 fig_07_37 One struct using another:

38 fig_07_38 C code for this example:

39 fig_07_39 Definign the rectangle type:

40 fig_07_40 Using point and rectangle definitions:

41 fig_07_41 Rectangle functions:

42 fig_07_42 Example program:

43 fig_07_43 Example: passing a struct to a function:

44 fig_07_44 Interrupt service routines: ISR—needs to be SHORT and SIMPLE

45 fig_07_45 How an interrupt occurs: Interrupt may be disabled under certain conditions

46 fig_07_46 Enable / disable control mechanisms: Global Masking method 1: use priorities method 2: use mask register (bitwise masks) Note: interrupts are transient, if we choose to ignore one we may not be able to service it later


Download ppt "Bitwise Operators Pointers Functions Structs Interrupts (in C)"

Similar presentations


Ads by Google