Allez, je vais tenter de faire une version non résumée...
Comme l'a dit Pzaf, entre ton programme en C et ce qui est dans le robot, il y a une petite différence. Le processeur du robot... en fait on parle de microcontroleur, parce que la puce utilisée pour le robot ne contient pas QUE le processeur - le bidule qui fait les calculs/opérations élémentaires, mais aussi des périphériques utiles, comme de la mémoire flash (comme les clé usb), de la mémoire vive (comme les barettes de RAM de ton pc), des modules pour diverses fonctionnalités (par exemple pour faire un port série, ou bien un timer, ou compteur, qui sert à mesurer des intervalles de temps... super utile pour tout un tas de programems).
Bref, ce microcontroleur n'utilise pas directement ton programme en C, tout simplement parce qu'il ne peut pas le 'comprendre' en l'état. Un processeur ne 'comprend' qu'un ensemble réduit d'instructions élémentaires... et il faut que tous les programmes qu'on lui donne soient écrits à l'aide de ces instructions élémentaires. Le langage correspondant s'appelle l'assembleur.
On peut écrire directement en assembleur, mais c'est fastidieux... parce qu'il faut décrire toutes les opérations en détail, et que les instructions connues du proc sont parfois tres basiques... On peut aussi utiliser un autre langage de programmation un peu plus pratique pour le programmeur, comme le C, mais il faut le 'traduire' en un programme équivalent dans le langage que 'comprend' le microcontroleur'. Cette étape de 'traduction' s'apelle la compilation... et se fait à l'aide d'un compilateur
Une fois que tu as compilé ton programme en C sur ton ordinateur, il faut que le microcontroleur l'ait à disposition pour l'exécuter. Comme je l'ai dit plus haut, un microcontroleur comporte tout un tas de périphériques, dont de la mémoire flash, qui lui sert de mémoire de masse (oui... bon... quelques ko, mais de masse quand meme

). Il faut donc un moyen d'écrire dans cette mémoire depuis ton ordinateur !
Par le passé, on accédait à cette flash comme à une mémoire flash 'classique': on mettait le uC sur un programmateur de flash/eeprom, et on pouvait écrire dans sa mémoire... un peu pénible de devoir sortir ton uC du circuit chaque fois que tu voulais changer le programme !
Heureusement, les fabricants de microcontroleurs proposent désormais un moyen beaucoup plus simple ; tous les uC (pratiquement) disposent d'une sorte de port série, par lequel ils peuvent recevoir quelques ordres, en particulier des ordres d'acces à leur mémoire interne. Et c'est gagné ! Avec une liaison de type série plutot simple, ton pc peut accéder à la mémoire du uC, et ce, sans que tu n'aies besoin de l'enlever de son circuit, à condition d'avoir un port série adapté sur ta carte...
Du coup... ce qu'on appelle 'programmateur' de uC est bien souvent plus un cable de communication qu'autre chose... et là, toutes les solutions sont possibles: passer par le port série, parallele, infrarouge, usb, et d'autres encore...
Le plus simple des cables de programmation est celui qui passe par le port parallele ; pour un uC classique, tu as besoin dans la version minimaliste (pas parfaite, mais qui fonctionne tout de meme) de ... 3 résistances, du fil et deux connecteurs (un pour ta carte et l'autre pour le port parallele). Les 3 résistances ne sont pas absolument nécessaires, d'ailleurs... (enfin... ca devient de plus en plus risqué pour ton port parallele si quelque chose se passe mal.....)
Voila... heu, je crois que si tu veux d'autres infos, il va falloir que tu m'expliques un peu mieux pourquoi tu te poses cette question...

A bientot !