Compilateurs pour Pic
C'est quoi un compilateur pour microcontroleurs
?Un militaire reçoit un ordre oral ou écrit, d'un supérieur et ensuite, il exécute cet ordre.
Donnez un ordre oral à un microcontrôleur Pic et regardez, s'il l'exécute, pour l'instant, je ne connais pas encore de microcontrôleur qui obéissent à un ordre donné par la voie humaine, notez, ça viendra probablement un jour. On peu déjà dicté un texte sur son PC, mais c'est l'oint d'être parfais. Ce qui démontre tous de même que la parole est quelque chose de complexe. Qu'un humain, c'est vraiment une splendide créature de Dieu.
Notre microcontrôleur ne connaît que le langage binaire à 2 états. Il ne connaît donc que des 0 et des 1.
1) le binaire
.Le langage binaire pour programmer un microcontrôleur Pic ou autres, demande la connaissance parfaite du microcontrôleur.
Je connais que quelques individus rares sur la terre qui y arrivent encore, on peut affirmer que cela reste et est réservé au domaine de la recherche ou de la conception des microcontrôleurs et parfois dans l'enseignement.
Rassurez-vous toute suite, ce n'est pas ce langage que vous allez apprendre sur ce site, c'est trop casse tête et surtout trop long.2) L'assembleur
Par la suite est venu le langage assembleur moins binaire, mais il est encore trop casse tête pour nous.
L'assembleur est un logiciel pour PC.
Compiler avec un logiciel assembleur, consistait à traduire à l'aide de son PC le code dit assembleur inscrit dans un fichier "*.asm" en un fichier binaire de forme "*.bin" ou *.hex, puis, on transférait ce fichier binaire du PC vers le microcontrôleur à l'aide d'un programmateur qui soit en disant existe sur notre site.
3) Langages évolués
Ensuite, sont donc venus d'autres langages, tel que le basic, le c++, le java, ils sont appelés langages évolués.
Ces langages, ne demandent plus la connaissance aussi parfaite du microcontrôleur, mais une connaissance plus générale et plus grossière du type schéma blocs proche du datasheet.
Compiler avec un logiciel de langage évolué, consiste à traduire à l'aide du PC le code évolué tel que le basic en langage assembleur puis, il faut compiler le code assembleur en binaire afin d'obtenir le fichier binaire à transférer du PC vers le microcontrôleur.
Nous avons trouvé deux compilateurs intéressant pour les novices.
4)
Le premier s'appelle FLOWCODE de la firme Matrix.Il devient ainsi assez facile de programmer un Pic, uniquement avec des organigrammes.

A l'ouverture du logiciel flowcode, vous devez choisir le PIC avec lequel vous allez travailler et puis vous obtenez cet organigramme de départ. Le premier rectangle nous indique le début du programme et le second la fin du programme.
Supposons que le PIC choisi est le 16f84 ou 16f84A et que je veux faire clignoter une diode led à la borne
RB4 avec une période éteinte de 1 s et une période allumé de 1 s et ainsi de suite. Le Pic possède 2 registres d'entrées et de sorties, le registre A de 5 bits et le registre B de 8 bits. De plus, la même pinne de l'IC peut être programmée aussi bien en entrée quand sortie. Nous choisirons pour notre exemple la pinne RB4 en sortie pour alimenter notre diode led.
Voici des outils dont le logiciel dispose !
|
|
1 |
Pour les entrées du Pic |
|
2 |
Pour les sorties du Pic |
|
|
3 |
Délais ou temporisation. |
|
|
4 |
Boucle de Condition, oui ou non |
|
|
5 |
Label de nom A ou étiquette, pour les re-bouclages |
|
|
6 |
Envoi le programme au label nommé A |
Vous prenez l'outil n°2 pour créer la sortie
RB4 avec un clic gauche de la souris et tout en maintenant le clic gauche de la souris enfoncé, vous amenez l'outil sur la ligne verticale entre le rectangle de début et celui de la fin du programme.Faite le même avec l'outil de délais n°3, en le plaçant juste en dessous du losange "sortie". Afin de maintenir éteinte votre led un certain temps en RB4.
Et faite encore la même chose pour maintenir allumé la led en
RB4 en certain temps comme dans l'organigramme ci-dessous.|
|
|
Puis pour re-boucler le programme, afin de faire continuer le clignotement de la led perpétuellement. Place l'outil
5
label (étiquette) au début de programme comme dans l'organigramme ci-dessus et enfin placez l'outil 6 juste avant la fin du programme pour lui renseigner qu'il doit recommencer à partir du label A:Tous vos outils sont maintenant placer sur la feuille organigramme de votre logiciel, reste plus qu'a précisé au programme que votre
RB4 doit être une sortie. Puis, la grandeur de la temporisation.Pour ce faire, il faut faire un double clic gauche sur le losange des sorties de l'organigramme et un nouvelle fenêtre apparaîtra. Voir, la figure ci-dessous.
|
|
|
Dans le menu choisissez le port B, puis le bit unique RB4 que vous voulez utiliser pour faire clignoter la led. La valeur 0 sera attribuée pour éteindre la led et la valeur 1 pour allumer cette diode led. Donc, dans le premier losange, on aura la valeur 0 pour éteindre la led et dans le second losange on aura la valeur 1 pour allumer cette diode led.
En ce qui concerne les temporisations, faite un double clic gauche sur votre rectangle pause organigramme et un menu apparaîtra,
|
|
|
sélectionnez la "seconde" dans ce menu pour programmer une pause de 1 sec. Faite le aussi, dans le second rectangle pause.
Votre organigramme est fini. Le voici !
|
|
|
Voilà votre led restera 1 sec éteinte et une 1 sec allumée, ça recommencera perpétuellement.
Maintenant, on va simuler le fonctionnement du Pic.
Ensuite, 1 clic gauche de la souris sur l'icon avec les 3 leds de couleurs.
|
|
|
Et apparaît, une bande de 8 leds vertes.
|
|
|
Nous avons besoin que d'1 seule led pour vérifier l'état de notre sortie
RB4. Alors faite, 1 clic gauche de la souris sur le bouton où le symbole flèche">" est indiqué, puis choisir propriété dans le menu déroulant.|
|
|
Sélectionnez le nombre 1 pour 1 seule led et choisissez la couleur que vous désirez, par défaut, vous aurez ainsi la couleur verte.
Lors de la simulation par logiciel, la led verte gardera le tond par défaut et elle deviendra de tond plus clair lorsqu'elle sera activée.
N'oubliez pas un clic gauche de la souris sur le bouton appliquer, pour valider votre donnée et refermer cette fenêtre.
Maintenant, il ne reste plus qu'a dire au programme que cette led verte sera connectée à la pinne
RB4 du Pic. Pour ce faire, un clic gauche de la souris sur le bouton où le symbole flèche">" est dessiné, puis choisir Connexion dans le menu déroulant.|
|
|
Sélectionnez le port
B et le bit 4 pour la pinne RB4, comme la figure ci-dessus. Puis 1 clic gauche sur le bouton terminer pour valider et fermer, cette fenêtre. Vous sauvegardez votre organigramme dans un fichier du disque dur en cliquant sur fichier du menu principal, puis sur sauvegarder sous et donnez lui un nom par exemple flow1.Maintenant, on est fin prêt pour lancer la simulation en cliquant sur la flèche bleue comme indiquer sur la figure ci-dessous en rose. Et voilà, vous avez un avertissement pour démarrez car vous n'avez pas raccordé toutes les leds vertes, mais ca fonctionnera quand même parfaitement bien et la led vert commencera donc à clignoter 1 sec toutes les secondes.
|
|
|
C'est vraiment un jeu de gamin de 10 ANS !
Reste plus, cas compiler votre fichier organigramme en fichier assembleur.
Si vous avez le programmateur de Pic approprié à ce logiciel, vous cliquez sur
Exécuter du menu principal de la feuille de l'organigramme puis Compiler vers Pic et voilà votre Pic est déjà programmé.Dans le cas ou vous ne le possédez pas ce programmateur, vous cliquez sur
Exécuter du menu principal de la feuille de l'organigramme puis Compiler vers Assembleur et un panneau avec une barre graphe horizontal de couleur vert clair apparaîtra quelques secondes, en fait, c'est le panneau de l'assembleur mpasmwin de Microchips. Et vous retrouvez votre fichier flow1.hex dans le même répertoire ou vous avez enregistré votre organigramme.Attention cependant
, n'enregistrez jamais vos fichiers dans des sous répertoires trop lointain car certains programmes n'arriverait plus à les récupérer ou les travailler. Max 3 sous répertoires, car c'est l'expérience qui nous l'apprend. ex) c:\documents\pic\1Vous remarquerez ! Peut être? que le logiciel compile l'organigramme du fichier "
flow1.fcf" en langage C dans le fichier "flow1.c ", puis, il compile le fichier écrit en C "flow1.c" en assembleur dans le fichier "flow1.asm" et ensuite, l'assembleur mpasmwin le compile en hexadécimal "flow1.hex", ce dernier fichier est à programmer avec Icprog dans le Pic placé sur votre programmateur.Attention
, Si vous utilisez ICPROG, ne pas oublier les paramètres comme mentionné sur la figure ci dessous.|
|
|
Du moins, si vous avez réalisé une platine d'essai avec un 16F84A et un quartz de 4 Mhz.
C'est vraiment du gâteau pour enfant, ce logiciel
. C'est amusant, n'est-ce pas !Comment faire un sleep, mode ralenti du cpu ?

Comment faire une macro ?
Comment faire un sleep, mode ralenti du cpu ?
Comment mettre de asm ?
J'aime, vous faire communiquer mon savoir avec goût, j'espère que vous l'utiliserez dans un but humain, de confrérie, ou d'entre aides, et sur tous jamais dans le but nuire à autrui. Tous les hommes de la terre sont nos frères, ne jamais l'oublier s-v-p, quelque soie notre religion. J'ai confiance aux bonnes âmes que sont nos lecteurs.
5)
Flashbasic pour les habitués du basic.|
|
|
Vous ouvrez votre logiciel, puis 1 clic gauche sur
Options du menu principal.|
|
|
|
|
|
Puis, 1 clique gauche sur
Options du menu principal.|
|
|
Pour choisir la fréquence de 4 Mhz.
|
|
|
Et voilà, on peut commencer à programmer !
|
|
|
En basic, comme en assembleur, il faut prévenir le Pic que l'on va utiliser le port A en entrées et le port B en sorties. En quelque sorte, il faut définir les ports. Le Moyen mémo technique est: les entrées = in = i = 1 et les sorties = out = o = 0
Pour ce faire.
Un clique sur le bouton I/O ports, puis, Set port
|
|
|
Et il faut définir le port A en entrées ainsi que le port B en sorties, comme les figures ci-dessous !
|
|
|
|
|
|
Ensuite, on place un Label que l'on nomme "er" ou n'importe quel autre nom, dans le but de pouvoir re-boucler notre programme a cet endroit à la fin de celui-ci, pour cela 1 clic gauche sur le bouton "Label "
Et une nouvelle fenêtre apparaît comme ci dessous.
|
|
|
Il n'y a pas besoin de mettre les ":" derrière le Label, le programme s'en occupe.
Maintenant, reste à laisser éteindre la diode led pendent 1 sec.
Alors, cliquez vite ! sur le bouton "I/O Ports" puis dans le menu déroulant "Port Out" et encore une fois de plus une nouvelle fenêtre apparaît, comme figure ci-dessous.
|
|
|
On choisi, évidemment le port B, et nous ne cochon aucun bit, ainsi tous seront à l'état 0 logique.
Pour la temporisation, il suffit de cliquer sur le bouton "Delay" et une nouvelle fenêtre apparaît, voir figure ci-dessous.
|
|
|
Pour 1 sec, on tape 1000 nsec, et ce pour un quartz de 4 Mhz. Puis, valider le nombre en cliquant sur le bouton "OK".
La prochaine temporisation pour la durée de la led allumée se fera de la même manière.
Maintenant, reste a allumer la led RB4, en cliquant sur le bouton "I/O Ports" puis dans le menu déroulant "Port Out" et la fenêtre que vous connaissez déjà réapparaîtera.
|
|
|
Le port B sera sélectionné a nouveau et on cochera le bit 4 pour allumer la led qui sera branchée sur se bit.
Ensuite, encore une temporisation de 1 sec sera rajoutée au programme, Puis on renvoyera le programme au label nommé "er" afin de clignoter notre diode led, on le fera en cliquant sur le bouton de renvoi nommé "Goto" et dans la fenêtre on tapera "er" pour envoyer le programme au Label nommé "er".
|
|
|
Votre premier programme est achevé, il n'est pas parfais, il y a facilement moyen de faire mieux, mais le but est de vous montrer comment on manipule ce logiciel qui est une aubaine pour les programmateurs en Basic.
Reste a le sauvegarder sous " c:\documents\pic\2\led_cli.bsc " et a le compiler en assembleur, donc en fichier "led_cli.asm".
Pour le compiler on clique sur le bouton "Compile et check" et répondre oui au programme, et l'on retrouvera le fichier led_cli.asm dans le même répertoire que "led_cli.bsc".
Ensuite, ouvrez le logiciel Mpasmwin v3.0 pas les versions trop récentes car elle ne comporte plus le Pic 16f84A et sélectionnez votre fichier dans le répertoire "c:\documents\pic\2\led_cli.asm"
|
|
|
Puis vous obtenez, s'il n'y a pas d'erreur la petite fenêtre présentée ci-dessous.
|
|
|
Si le barre graphe est vert, ok pas d'erreur dans le programme. S'il est rouge et qu'un nombre d'erreurs bien précis est indiquées, revoyez votre programme. S'il est rouge sans indiquer d'erreurs, c'est que mpasmwin a des difficultés pour soit allez chercher le fichier led_cli.asm, cas dans des répertoires trop lointains, bien sur ! ou qu'il ne sait pas aller chercher la librairie du type de Pic que vous voulez utiliser. Cette librairie se nomme "P16F84A.INC".
Voilà, bonne chance a tous, ne faite pas sauter les fusibles de chez vous, sachez que cela m'arrive une fois tous les 2 ans tout de même.