HomeTOOLSEXAMPLESEXPLORE EMBEDDEDE CSERVICESECU SAMPLESRegistration
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
4.ASC0-GPT1-MACROS
5.ASC0-FIFO-PEC
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
19. BITFIELDS
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.
39. CRC CHECK
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.
45. CANBUS C CODE EXAMPLE.
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
((nibbles*)(&x))->n2

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. 

 

Home|TOOLS|EXAMPLES|EXPLORE EMBEDDEDE C|SERVICES|ECU SAMPLES|Registration