Embedded C programming Tutorial , Keil C ide , microsoftware.gr
Keil CRC and CAN BUS codes.
1. Shift led left
2.It's time for DAVE! <7/6/13>
3.Capture/Compare unit 6
6.Analog converter
7.Memory manipulation routines
8. Recursion
9.Understanding interrupt priorities using CAPCOM2 module
10. POINTERS TO FUNCTION <4/7/13>,<4/28/13>
11.Memory models, memory types
12. The heap , part 1
13. The heap , part 2
14. The heap , part 3
15. Structure example
16. Nested structures, Array of structures.
17. Passing array of structures to function using pointers.<1/5/13>
18. Self Referential Structures
20. Linked list example
21. Circular linked list
22. Union example
23. Enumeration example
24. Watchdog timer example
25. Void pointer example <7/4/13>
26. The sieve of Eratosthenes
27. The stack
28. Union and bitfields as flags example. <6/23/13>
29. Look up table example. <8/11/13>
30. Seven segment display multiplexing -four digits with dot- example
31. LCD character display example - JHD162A
32. Hash table introduction example <8/27/14>
33. Array of Linked Lists example
34. Array of Linked lists-more functions included.
35. Hash table construction,searching and printing.
36. Fininte state machines- a first approach.
37. Finite state machines- two events example.
38. SPI port and an AT25128 serial eeprom hardware.
40. Definite Integral Calculator for Scientists, Engineers...
41 .Hamming distance of a CRC polynomial
42. Linux play starting.
43. Galois GF(2^4) Finite Field
44. Construct your own time triggered real time operating system.
29. Look up table example. <8/11/13>

This article is a look up table example.

The example program receives a signed integer and presents at Hyperterminal its hexadecimal equivalent.
Casting the address of the integer to point to a new type like:

typedef struct s {
 unsigned int n0 :4;
 unsigned int n1 :4 ;  
 unsigned int n2 :4 ;
 unsigned int n3 :4;
    } nibbles;

we can take each one of the four nibbles of the 16 bit integer writing for example

After it we have to find strings that present the nibbles (the integers n0...n3)  as "the nibbles are".

To do it we have to look in a look up table like:

char* table [16]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; // the look up table

And finaly we can print the four nibbles as strings writing:

printf ("Your integer in hexadecimal is :%s%s%s%s \n",table[((nibbles*)(&x))->n3], table[((nibbles*)(&x))->n2] , table[((nibbles*)(&x))->n1], table[((nibbles*)(&x))->n0] );

The c code                                       The result

Exercise1  : Replace each one of the sixteen hexadecimal digits of the look up table with its binary equivalent and find the binary equivalent of the recieved integer.

Exercice2  : Rewrite the above program sending now a float number and presenting its hexadecimal equivalent at hyperterminal.
Help: You have  to define a new type as the structure s above, but now you have to include in it 8 bitfields of unsigned indegers, each one of them must be 4 bit long , because a float is 4 bytes long.
Remember: The low byte is saved always first in the memory space! Our machine is a little endian machine.

Important : If you are not sure "how the things are defined" then have a look inside of the main.h file.