Introduction au langage C pourquoi un langage évolué? pourquoi le langage C? la chaîne logicielle. les règles de syntaxe de bases. les opérateurs. les types de données. les structures de contrôle de flux. les pointeurs. les fonctions. adaptation aux µcontrôleurs. présentation de la chaîne MPLAB. le TP. Introduction au langage C
Pourquoi un langage « évolué »: L'assembleur est spécifique à chaque µprocesseur: Il est très efficace mais ... Il faut réapprendre et récrire à chaque changement de µ. Structurer un programme demande beaucoup d'autodiscipline! L'intelligibilité du source est difficile. Le langage évolué va donc chercher à structurer facilement un source intelligible et portable en restant efficace.
Pourquoi le langage C. Inventé dans les années 1970s comme outil pour écrire « facilement » UNIX, le C est un langage simple, performant, des plus connus et utilisés. Il est bien adapté à la commande tant des microprocesseurs que des divers circuits intégrés: il est pour la programmation du matériel un outil de base en électronique. Les chaînes logicielles afférentes sont correctement maîtrisées. Bien utilisé, il permet toutes les audaces. Brian W. Kernighan et Dennis M. Ritchie, ses inventeurs.
La chaîne logicielle: Le(s) fichier(s) source: c'est le programme en langage C. Le pré-processeur: interprète les directives C contenues dans le source. Le compilateur: transforme le source C en assembleur puis en fichier objet pour un micro spécifique. Le linker: réunit les différents fichiers objets, affecte des adresses physiques aux variables, et produit un fichier exécutable. Le codeur: encode le fichier .exe en fichier de transfert .hex pour le micro cible. Le programmateur: transfert à travers un programmateur, le programme exécutable encodé dans le micro cible.
Les règles de syntaxes de base: // tout ce qui suit sur la ligne est un commentaire. /* */ tout ce qui est entre est un commentaire. # annonce une directive. ; doit terminer une instruction C. { } tout ce qui est entre est un seul et même bloc. main() il doit y avoir une fonction nommée main qui définit un bloc. /* Exemple de syntaxes ... */ #include « io.h » main() { int li; // variable locale li=0xf52c; }
Les opérateurs: Opérateurs. Rappel: = est une affectation donc i=i+1; au final incrémente i, i+=1; fait de même. a= i--; et a= --i; décrémentent au final i; mais si i valait 7, le premier charge 7 dans a, le deuxième 6. Les bases: 0x5a hexa, 0b10010001 binaire.
Les types de données (simples): Le C traite des bits, octets, mots, double mots, virgule flottante. Les noms sont bit, char, short, long et float. Un type spécial int est souvent synonyme de short. Par défaut toutes les nombres sont signées (signed), les entiers peuvent-être non-signés (unsigned). On peut passer d'un type à un autre par un cast, si cela à un sens... unsigned int i; unsigned char c=0xa5; i = (unsigned int) c; // c est converti en unsigned int --> i=0x00a5
Les types de données (complexes): Les tableaux : données de même type, accès par indexation . Les structures: permet de grouper des variables de types différents. Les unions : permet plusieurs interprétations d'une même zone mémoire. Bien définir les variables décrivant la fonction tout en collant au matériel est la base de la programmation ... la moitie du travail est là!