Almost all executable programs are written in higher-level languages, and translated to executable machine code by a compiler and linker.
The microcontroller does not understand high-level programming languages(C language in your case) as this and therefore it is necessary to compile the program into machine language. A single click on the appropriate icon within the compiler IDE results in creating a new document with the .hex extension. It is actually the same program, just compiled into machine language which the microcontroller understands perfectly. This program is called a HEX code and forms a seemingly meaningless sequence of hexadecimal numbers. When compiled, the program should be loaded into the microcontroller by means of appropriate hardware, i.e. programmer.
---------- Post added at 02:04 ---------- Previous post was at 01:57 ----------
Keil Quick Start Tutorial **broken link removed**