TÉLÉCHARGER BIGONOFF PDF

en temps un œil sur mon site: rowspedacuse.cf pour voir si Une bonne méthode consiste donc, pour celui qui le désire, à télécharger le. PAR BIGONOFF. PREMIERE PARTIE Tout d'abord, vous devez télécharger le datasheet du 16F84, car c'est un document que nous allons utiliser dans le. La Programmation des PIC par Bigonoff Première partie révision 34 Démarrer Tout d abord, vous devez télécharger le datasheet du PIC16F84, car c est un.

Nom: bigonoff pdf
Format:Fichier D’archive
Version:Nouvelle
Licence:Libre (*Pour usage personnel)
Système d’exploitation: Android. iOS. MacOS. Windows XP/7/10.
Taille:58.73 Megabytes


Il ny a pas de rponse passe-partout, il sagit dune question de bon sens. Donc, dans ce cas, les vnements prcdents nont pas t les dclencheurs de linterruption. La procédure qui suit est valable Plus en détail. Comme cette photo est sur mes cours et que je peux prouver que je suis propriétaire de la moto, je sais prouver au besoin que je suis le véritable auteur de mes cours. Je vais maintenant vous montrer comment fonctionne le tableau de la figure page Pour la petite histoire, on a utilis un systme base 10 car nos anctres ont commenc compter sur leurs 10 doigts, pas besoin daller chercher plus loin. Reprenons, par exemple notre nombre En effet, les ports sont tous placs en entre lors dun reset, inutile donc de les y forcer, dautant que seul le PORTA est utilis.

Si vous voulez la télécharger, utilisez JDownloader 2. . n'oubliez pas l' expression américaine " RTFM" (Read The Fucking Manual) francisé en: " Relisez votre. remarque dans l'introduction, création d'un document pdf avec table des matières interactives. Je n'ai pas réussi à télécharger la deuxième archive de la part 4. Edité par Bigonoff: je viens de vérifier, et ça fonctionne. La Programmation Des PIC - BIGONOFF Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd. Signaler comme contenu inapproprié. Télécharger.

Donc, ne vous mlangez pas les pinceaux. Le tableau , colonne 5 vous indique les instructions qui modifient Z. Dans les 2 cas il est modifi. Ces remarques sont valables pour les autres flags, donc je ny reviendrai pas.

Cest lindicateur pour Carry report. Si le rsultat dune opration entrane un dbordement, le bit C sera positionn. Il sagit en fait du 9me bit de lopration. Nous verrons les autres bits du registre dtat dans la suite de cet ouvrage, au moment o la ncessit se fera sentir. Nous allons maintenant dmarrer la grande aventure avec notre tout premier et modeste programme.

Jexpliquerai les instructions et les registres au fur et mesure de leur utilisation. Vous pouvez galement utiliser une version 7. Dcompactez le fichier et procdez son installation. Lors de linstallation, vous aurez plusieurs fentres explicatives concernant diffrents outils de Microchip, comme le debugger et le simulateur. Comme je prsume que vous navez pas encore ces outils, fermez toutes ces fentres en fin dinstallation. Personnellement, je naime pas laisser les donnes avec mes programmes dans la partition principale.

Si vous tes comme moi, crez un rpertoire dans un endroit o vous rangez vos data et appelez-le, par exemple DataPic. Copiez y le fichier m16F Cest un fichier que jai cr afin de pouvoir dmarrer instantanment un nouveau programme.

Je lai appel m16f Aprs quelques instants, vous vous retrouvez avec un cran vide avec menu et barres doutils. Sil y a des fentres ouvertes dans le bureau de MPLAB 6, fermez-les toutes, ainsi vous saurez comment les rouvrir, et tout le monde dbutera avec la mme configuration. MPLAB est un logiciel qui est construit sur la notion de projets.

PDF TÉLÉCHARGER BIGONOFF

Un projet permet de mmoriser tout lenvironnement de travail ncessaire la construction dun. Il vous permettra de rtablir tout votre environnement de travail lorsque vous le slectionnerez. Cependant, afin de vous permettre de localiser les principales options des projets, je ne men servirai pas dans ce petit tutorial. Allez dans le menu Project et slectionnez new.

La fentre qui souvre vous permet dintroduire le nom du projet et le rpertoire de travail du dit projet. Pour le rpertoire, vous disposez du bouton browser qui vous permet de pointer sur le bon rpertoire sans risque de vous tromper. Entrez essai1 comme nom de votre nouveau projet, et slectionnez le rpertoire dans lequel vous avez plac votre fichier maquette et votre fichier essai1. Jai nomm le fichier asm de faon identique au projet, mais ce nest nullement obligatoire.

Dans cette fentre, vous voyez le nom de votre projet essai1. Pour linstant, vous nen avez aucun, cest normal. Notez que par dfaut, Microchip vous propose un pic de la famille 18F, promotion de nouveau produit oblige Slectionnez le 16F La fentre vous montre alors, laide de leds vertes ou rouges quels outils sont supports par le pic slectionn.

PDF TÉLÉCHARGER BIGONOFF

Nous allons maintenant prciser quel langage nous allons utiliser, sachant que nous travaillons en assembleur, mais que diffrents compilateurs sont proposs par Microchip et dautres socits.

Ceci seffectue dans la fentre essai1. Pour ajouter un fichier source, cest trs simple : cliquez avec le bouton droit sur source files , puis slectionnez Add. Une fois slectionn le fichier, le nom de celui-ci apparat dans larborescence. Ici, il est important de bien comprendre que le fichier source choisi sera celui qui sera assembl ou compil. Autrement dit, si dans ce fichier se trouve une instruction include qui inclut un autre fichier, vous ne devez pas le slectionner en supplment, il sera joint au projet au moment de lassemblage.

Par contre, si vous dsirez assembler simultanment deux fichiers, et que votre premier fichier ne fait pas rfrence au second, alors vous devez ajouter ce fichier larborescence. Si votre projet ncessite un ou plusieurs fichier s supplmentaire s , la directive include sera ajoute au fichier source afin que lassembleur intgre automatiquement ce ou ces autre s fichier s. Vous navez besoin de rien dautre, les autres lments de larborescence ne sont pas ncessaires pour un projet assembleur du type dont nous allons parler.

Il nous reste un lment important prciser, celui du systme de numrotation utilis par dfaut. Une fentre souvre. Comme nous avons dcid de numroter lhexadcimal sous la forme 0x, et le binaire sous la forme B. Tout nombre sans prfixe sera considr comme dcimal. Cochez donc la case Decimal. Ne touchez pas aux autres options, vous les utiliserez peut-tre lorsque vous serez devenus un pro et que vous voudrez adapter certains paramtres. A ce moment, leur rle vous semblera clair.

Utilisez par exemple les syntaxes suivantes :. Un nombre crit sous la forme sans prfixe sera interprt selon le paramtre prcdemment dcrit, et donc risque de poser problme si vous intgrez votre fichier dans un autre projet, ou, simplement, si vous communiquez autrui votre fichier source sans prciser la notation par dfaut.

Mais, allez-vous me dire, il ny a toujours rien lcran! Effectivement, MPASM ne se proccupe pas des fichiers affichs lcran, seuls comptent le fichier inscrit dans larborescence et les fichiers inclus partir de ce fichier. Vous pouvez avoir autant de fichiers que vous voulez sur lcran, ou ne pas en avoir du tout. MPLAB sen moque. Par contre, tous les fichiers ouverts lors de la sauvegarde de votre projet seront automatiquement rouverts lors de la prochaine ouverture du projet, mme sils ne servent rien.

Bien entendu, nous allons afficher notre fichier source, pour voir ce quil contient. La mthode la plus simple est de double-cliquer sur son nom dans larborescence de la fentre essai1. Voici votre fichier de dpart ouvert. Mettez-le la taille approprie en lui faisant occuper la moiti gauche de lcran si vous manquez de place vous naurez plus besoin de fentre du projet, vous pouvez la masquer ou la rduire. Si vous voulez que vos crans ressemblent au mien, changez la fonte de lditeur. Ensuite, un clic sur le bouton Select font vous permettra de choisir la fonte : Courier New de style Standard et dimposer une taille de 9.

Pour ceux que a intresse, je travaille sur un moniteur 22 pouces, et ma rsolution est de X , a vous indique les proportions. Au besoin, modifiez-la. Votre fichier asm est maintenant affich lcran. Jai donc modifi tous les fichiers en consquence.

Ceux qui disposent de la version prcdente ont intrt utiliser les nouveaux fichiers. Tout dabord, cliquez nimporte o lintrieur de ce fichier. Vous tes lintrieur dun simple traitement de texte. Dans le coin infrieur gauche, vous verrez un numro de ligne et de colonne. Cest la position actuelle de votre curseur. Je me servirai de cette position pour vous guider au travers du fichier.

Najoutez donc pas de lignes pour linstant, pour garder la correspondance correcte avec ce texte. Si vous narrivez pas effectuer des modifications dans vote fichier, et que votre clavier semble inactif rencontr avec MPLAB 5.

De la ligne 1 la ligne 31 vous voyez un grand cadre. Si vous regardez attentivement le premier caractre de chaque ligne, vous verrez le symbole ;. Tout ce qui suit tant considr comme zone de commentaire, vous pouvez y mettre tout ce que vous voudrez.

Prenez lhabitude de toujours commenter vos programmes. Soyez sr que dans 6 mois, vous ne vous rappellerez plus ce que vous avez voulu faire, les commentaires vous seront alors dune grande utilit si vous dcidez de modifier votre programme. Remplissons donc le cadre en indiquant les diffrentes rfrences. Je joins avec cette leon le fichier essai1. Il est donc impratif de bien faire la distinction.

Que contient ce fichier? Si vous prenez votre tableau page 13, vous constaterez que cest bien le cas. Ce fichier est donc principalement destin vous viter davoir mmoriser toutes les adresses, un nom est bien plus simple utiliser et retenir. Fermez le fichier p16F Cette ligne contient les fameux fusibles qui fixent le fonctionnement du PIC. Les valeurs crites ici seront intgres dans le fichier. Nous y reviendrons. Sachez donc que si un fichier. Le logiciel du programmateur ira normalement chercher ces valeurs dans le fichier lui-mme.

Malheureusement, on trouve nombre de personnes qui pensent que cette directive, commentaires, et autres facilits sont rserver aux dbutants et ne les utilisent pas. Grossire erreur. Je reois rgulirement du courrier de personnes qui ont estim cette procdure inutile, et qui se sont trompes par la suite. Jai plac dans le fichier toutes les valeurs possibles de ces paramtres, avec les explications correspondantes. Il suffit de remplacer une des valeurs par celle souhaite. Par exemple, activons le Code Protect protection en lecture :.

Ils fonctionnent donc en plaant des. Donc, attention de toujours bien prciser tous les paramtres, mme ceux que vous nutilisez pas. Les valeurs correspondantes sont de nouveau dans le fichier P16F Donc, pas de magie, tout sexplique en rflchissant un peu. A quoi cela sert-il? Les assignations se comportent comme une simple substitution. Au moment de lassemblage, chaque fois que lassembleur va trouver une assignation, il la remplacera automatiquement par sa valeur.

Un autre avantage est que si vous remplacez la valeur dune assignation, le changement sera effectif pour tout le programme. Vous ne risquez donc pas doublier des valeurs en chemin. La syntaxe est simple puisquil sagit de EQU gal.

Bigonoff pic 16f84 pdf télécharger

Descendons encore un peu. A ceci prs que nous rserverons les assignations pour les valeurs, et les dfinitions pour remplacer un texte plus complexe. Par exemple nous pourrons utiliser un PORT suivi dun numro de bit, ou bien carrment une instruction avec ses paramtres. Une dfinition est construite de la manire suivante : La directive DEFINE, suivie par le nom que lon dsire utiliser, puis la chane substituer. Par exemple :. Lutilisation de cette macro seffectue tout simplement en utilisant son nom dans le programme.

La macro se compose dun nom crit en premire colonne, suivi par la directive macro. Commence alors la ligne suivant la portion de code qui constitue la macro. La fin de la macro est dfinie par la directive endm end of macro.

Une macro remplace donc un morceau de code que nous utilisons souvent. La macro fonctionne galement uniquement comme un simple traitement de texte. Dans notre exemple, chaque fois que la macro LIREIN sera rencontre, elle sera remplace au moment de lassemblage par les 2 lignes :. La macro simplifie donc lcriture, mais ne raccourcit pas la taille du fichier.

Notez que lon peut utiliser des macros plus complexes, avec passage de paramtres, mais nous nentrerons pas dans ces fonctions particulires pour linstant.

Pour placer nos variables, qui sont des emplacements mmoires auxquels on a donn un nom, nous consultons de nouveau le tableau Nous voyons que la zone RAM librement utilisable commence l'adresse 0x0C. Notre zone de variable contiendra donc la directive. CBLOCK 0x00C ; dbut de la zone variables Ensuite, vous pouvez utiliser 68 emplacements mmoire, qui rpondront la syntaxe suivante : nom de la variable suivi du signe : suivi de la taille utilise.

Lassembleur les remplacera par ladresse du programme lendroit o elles sont positionnes. Ceci vous vite de devoir calculer les emplacements programme. Nous en verrons plus loin le principe. Il est important de savoir 2 choses :. Aprs un reset ou une mise sous tension, le PIC dmarre toujours ladresse 0x Le dbut de votre programme doit donc se situer l.

Ladresse 0x04 est ladresse utilise par les interruptions nous verrons le principe plus tard. Il ne vous reste donc pas grand place pour placer votre programme. Nous commencerons donc par un saut vers lemplacement du programme principal o nous aurons plus de place. Allons donc voir ligne comment tout ceci fonctionne :. Aprs le reset, le PIC excute donc linstruction goto init qui se trouve ladresse 0x00, suivie par linstruction qui se trouve ladresse init plus bas dans le programme donc juste en dessous de ltiquette init.

Cette directive prcise lendroit o doit cesser lassemblage de votre programme. Elle est obligatoire dans tout programme, sous peine dune erreur qui vous signalera que la fin de fichier End Of File a t atteinte avant de rencontrer la directive END.

Ralisation dun programme. Avant de lancer notre premier programme, nous allons procder quelques modifications du fichier essai1. Premirement, allez ligne le numro peut tre diffrent chez vous et remplacez la ligne goto init par goto start. Ne faites pas de faute dorthographe. Descendez ensuite en ligne , vous trouverez l notre tiquette start, cest donc l que notre programme va sauter. Effacez ensuite la ligne.

Le datasheet, page 62, nous apprend que linstruction goto est suivie dune valeur IMMEDIATE cest dire une valeur sous forme dun nombre , code sur 11 bits rappelez- vous, le programme peut faire 1KMOTS, donc, avec 11 bits, on peut sauter nimporte o dans la mmoire programme.

La valeur peut bien sr tre remplace par une tiquette, MPASM se chargeant pour vous de calculer son emplacement. Il est rappel quun saut prend 2 cycles. Faisons de la place sous ltiquette start, et ajoutons la ligne suivante attention, pas en premire colonne :. CLRF est une instruction dtaille dans le chapitre ddicac aux instructions.

Il y est dit que lemplacement mmoire prcis derrire linstruction ou une variable est effac. Le bit Z est positionn selon le rsultat de lopration. Comme le but de lopration est de mettre la variable 0, le bit Z vaudra toujours 1 aprs cette instruction. Notez que lemplacement mmoire peut se situer de 0 0x7F. Cest logique : si vous consultez le tableau , vous voyez que la RAM sarrte au me emplacements pour chacune des 2 banques.

Placez ensuite une tiquette colonne1 que vous appellerez boucle. Sous cette tiquette, ajoutez linstruction : boucle. Cette instruction est explique galement dans le chapitre relatif aux instructions. Pour toutes les instructions, d peut valoir soit f , dans ce cas le rsultat est stock dans la variable en question, soit w , dans ce cas le rsultat est plac dans le registre de travail, et la variable nest pas modifie.

Je rappelle une dernire fois : si le rsultat de lincrmentation donne 0, Z sera mis 1. Il sera mis 0 dans tous les autres cas. Lassemblage dun projet peut seffectuer de 2 faons.

Nous allons maintenant tenter dassembler ce programme pour en faire un fichier. Lassemblage s arrte en chemin, une barre rouge apparat et nous nous retrouvons une nouvelle fentre output qui contient les rsultats de sortie de la commande.

Si vous rencontrez un problme non prvu erreur par exemple jetez un oeil un fin de cours, dans les annexes. Deleting intermediary files ASM : Register in operand not in bank 0. Ensure that bank bits are correct.

ASM : Symbol not previously defined mavariable Halting build on first failure as requested. Et bien, examinons le rapport construit. Vous voyez dabord des messages warning. Ce sont des messages destins attirer votre attention, mais qui ne gnrent pas dimpossibilit dassemblage.

Noubliez pas quil y a toute une partie du programme qui ne sert rien dans notre exemple, mais qui est tout de mme crite au dessus de ltiquette start. Nous mettrons cette partie en pratique dans les chapitres suivants. Le problme vient videmment des lignes error. Il y est dit que le symbole mavariable na pas t dfini par lutilisateur. Cette erreur se retrouve dans les 2 lignes o nous avons utilis notre variable.

Pour remdier cela, fermons la fentre des messages derreurs, et retournons dans notre diteur. Cette fois, tout sest bien pass, lindicateur est rest vert, et, aprs les warnings, nous obtenons la phrase :. Nous venons de construire notre premier programme, et nous avons dj appris 3 des 35 instructions que comporte le PIC.

Qui a dit que ctait compliqu? Vous pouvez laisser la fentre de sortie ouverte, la fermer ou la minimiser. Sortons de notre programme, et confirmez les demandes de sauvegarde.

Allez voir maintenant dans votre rpertoire de travail, et vous devriez y trouver 7 fichiers gnrs par votre application du type essai1. Remarquez surtout lexistence de votre premier fichier. Le fichier tel quil devrait tre la fin de ce chapitre, est disponible dans les fichiers dexemples, comme tous les autres crs par la suite. Nous avons cr, dans le chapitre prcdent, notre premier petit programme en 16F Bien sr, ce programme ne sert strictement rien.

Une fois ce chapitre vu, vous serez en mesure de :. Ce dernier connat le nom de votre dernier projet essai1. Vous vous retrouvez avec la fentre de votre dernire leon. Rappelez-vous que si vous avez un problme, le fichier essai1.

Lintrt dun simulateur est de visualiser le fonctionnement du programme, nous allons donc signaler MPLAB ce que nous dsirons observer. Cest tout. De nouveaux outils apparaissent dans la barre doutils. Notez aussi lapparition de nouveaux items dans le menu debugger Les connaisseurs de MPLAB5 constaterons que la procdure est une nouvelle fois beaucoup plus simple.

Si ce nest dj fait, placez la fentre du source fond vers la gauche. Nous allons donc faire apparatre lcran les informations surveiller. Une nouvelle fentre souvre. Agrandissez-la et placez la droite de la fentre du fichier source ou ailleurs si vous manquez de place. Vous voyez dans cette fentre le contenu de tous les registres que vous avez dcouverts dans le tableau de la page Dans les chapitres suivants, nous les utiliserons progressivement tous. Dans notre petit programme, nous utilisons une variable.

Nous allons donc la faire apparatre. Une nouvelle fentre apparat. Vous disposez de 4 onglets pour y placer 4 sries de variables, cest trs pratique pour debugger. Si la variable nexiste pas, la mention not found apparat dans la colonne value , dans le cas contraire, cest la valeur actuelle qui apparat. Une fois au-dessus, relchez le bouton de la souris Drag and drop. Notez quau dmarrage, MPLAB suppose que la valeur de votre variable vaut 0 , ce qui nest pas forcment le cas rellement dans le pic, puisque la RAM prend une valeur alatoire lors dune procdure de mise sous tension.

Cliquez avec le bouton droit de la souris, puis properties pour indiquer le style daffichage des valeurs, soit 8 bits et format hexadcimal, mais ceci doit tre fait par dfaut. Vous voici prt lancer une simulation.

Mais quoi cela pourrait-il vous servir si vous ne comprenez pas les changements qui vont soprer dans les registres spciaux? Je vais donc commencer par vous expliquer les registres de base ncessaires la comprhension du processus. Ce squenceur est appel suivant les processeurs compteur ordinal , Pointeur de programme etc.

Le PC nest pas accessible directement par lutilisateur. Le principe de base est toujours le mme. Dans les PICs, les registres ne font que 8 bits, on ne peut donc stocker quune adresse maximale de Il faudra donc 2 registres pour accder une adresse. Les PICs ont un fonctionnement un peu particulier ce sujet. Nous trouvons tout dabord un registre qui contient ladresse basse du PC, cest dire les 8 bits de poids faibles. Ce registre est accessible en lecture et en criture.

Il est accessible en lecture et en criture par lutilisateur. Il existe deux cas possibles :. Les bits 3 et 4, qui doivent tre positionns par lutilisateur, sont placs directement dans les bits 11 et 12 du PC afin de complter ladresse de destination. Comme le 16F84 ne gre que 1K de mmoire programme, nous naurons pas besoin de ce registre dans le cas des sauts. Rappelez-vous que le 16F84 ne gre que 10 des 13 bits du PC. Remarquez que la limite du PC est de 13 bits, ce qui implique que les PICs de la famille mid-range auront une capacit de mmoire programme de 8K mots maximum soit Il est trs important de se rappeler que le PC pointe toujours sur linstruction suivante, donc linstruction qui nest pas encore excute.

Cest indispensable de bien comprendre ceci pour analyser les programmes en cours de debuggage. Ce registre est un registre utilis par les pics pour raliser toutes sortes de calculs. Souvenez-vous que la destination dun rsultat d peut en gnral tre un emplacement RAM f ou le registre de travail w.

Cest un donc un registre fondamental. Cest un registre dont chaque bit a une signification particulire. Il est principalement utilis pour tout ce qui concerne les tests. Il est donc galement dune importance fondamentale. Il est dcrit dans le tableau de la page Voici les diffrents bits qui le composent, en commenant par le bit0 b0 , donc le bit le plus droite, ou encore le moins significatif. Remarquez quon utilise le terme LSB, parfois comme byte le moins significatif, parfois comme bit le moins significatif.

Cest galement un abus de langage, mais le contexte permet trs bien de les distinguer. Pour info, un nombre BCD est un nombre dont chaque quartet reprsente un chiffre dcimal. Nous naborderons pas ce principe ici. Rappelez-vous cependant que ces flags ne sont positionns que pour les instructions qui le prcisent Status bit affected.

Nous y reviendrons plus tard. En ralit, vous verrez que PD est surmont dune petite barre qui signifie : actif ltat bas. Comme je narrive pas avec ce traitement de textes crire ces petites barres, jcrirai les inversions en italique. Dans ce cas, PD effectue la distinction. Inutilis pour le 16F84, doit tre laiss 0 pour garantir la compatibilit ascendante portabilit du programme. Et voil, vous connaissez maintenant 4 des registres.

Nous allons pouvoir commencer simuler notre programme. Contrairement MPLAB5, il ny a pas besoin de slectionner la fentre source pour les commandes de simulateur, elles sont toujours actives quelle que soit la fentre slectionne lintrieur de MPLAB.

Est maintenant indique par une flche verte. La flche verte indique la prochaine ligne qui sera excute par le simulateur. Vous avez en fait provoqu un Reset de votre programme. Au lieu dutiliser les touches clavier plus pratiques , vous pouvez galement utiliser les nouveaux outils de la barre doutils ou les nouveaux items du menu debugger.

La correspondance est la suivante :. Cest tout bon. Examinons la ligne en question. Elle nous dit que la prochaine instruction, aprs son excution, sera celle situe ladresse start. Votre programme est maintenant positionn sur la ligne qui suit ltiquette start. Il a donc effectu un SAUT, ou encore, rupture de squence.

Rappelez-vous qu ce stade, linstruction nest pas encore excute. Le PCL vaut maintenant :. MPASM a donc calcul tout seul quel emplacement se situe ltiquette start.

Si vous aviez voulu indiquer ladresse vous-mme, vous auriez d compter toutes les lignes prcdentes pour voir o vous en tiez. De plus, chaque modification du programme, vous devriez recalculer toutes les adresses. Comme mavariable vaut dj 0, il ne se passe rien au niveau de celle-ci. Il met donc par dfaut 0. Profitons-en pour jeter un il sur la fentre Watch. Vous voyez votre variable mavariable. Sa valeur est 0x00 ou H00 , et son adresse est 0x0E.

Examinons la zone de dclaration des variables :. La zone commence en 0x0C. Cest tout simple. La variable mavariable vaut maintenant 0x01 , car lopration dincrmentation a t excute. Vous lavez dj compris, lexcution suivante va vous renvoyer la ligne qui suit ltiquette boucle. A ce stade, vous vous demandez ce qui va se passer lorsque votre variable atteindra la valeur 0xFF?

On va donc acclrer le processus. Nous allons donc modifier la valeur de mavariable. Pour ceci, rien de plus simple, il suffit de double-cliquer sur la case value situe face au nom de mavariable et dinscrire une nouvelle valeur en hexadcimal, puisque nous avons choisi ce format. Double-cliquez, et indiquez ff. Ensuite cliquez nimporte o ailleurs pour valider la valeur.

La variable mavariable est passe 0. Or, 0x ncessite 9 bits On obtient donc 00 et on reporte le bit 8. Les bits 2, 3 et 4 sont 1, les autres sont 0. Les bits 3 et 4 sont actifs ltat bas 0. Comme ils sont 1, ils sont donc inactifs. Reste le bit2. Un coup dil sur le tableau nous informe quil sagit du bit Z pour 0.

PDF TÉLÉCHARGER BIGONOFF

Logique, car le rsultat de lopration est 0. Mais alors, chapeau pour ceux qui ont pens vrifier le fonctionnement de linstruction incf page 62 du datasheet. En effet, vous constaterez en vrifiant que le seul bit affect modifi par cette instruction est le bit Z, lexclusion du bit C : Status affected : Z. Nous allons clturer par les autres mthodes dexcution du programme par le simulateur.

Encore une autre mthode : Allez sur la ligne. Positionnez votre souris en dbut de ligne et cliquez avec le bouton de droite. Un menu apparat.

Vous pouvez mettre des points darrt dans votre programme. Vous pouvez galement demander votre programme de dmarrer jusquau point spcifi run to cursor , ainsi que dautres options.

Le menu debugger vous permet dautres configurations. Lisez laide concernant le simulateur pour des informations dtailles. Un double-clic sur une ligne place galement un point darrt, que vous remarquerez grce au symbole B qui apparat gauche de la ligne.

Un autre double-clic lannule. Placez un point darrt dans votre programme. Voil encore une nouvelle mthode pratique pour debugger les longs programmes. Il existe cependant une nouvelle procdure encore plus rapide : la trace de votre programme.

Une nouvelle fentre souvre, avec un message no items to display. Dans la fentre trace , vous obtenez le compte-rendu de toutes les instructions excutes par votre programme depuis le lancement jusque larrt. Ceci se rvle trs pratique en cas de plantage inexpliqu par exemple. Vous les dcouvrirez petit petit lors de vos exprimentations, nhsitez pas examiner tous les menus. Cependant, je pense que cest d la jeunesse du produit.

Microchip a dj ajout des fonctions qui existaient sur la version 5, et qui nexistaient pas sur la version 6. Les instructions sont dtailles partir de la page 57 du datasheet. Il peut donc sembler inutile de les reprendre dans ce cours. Mais jai finalement opt pour une explication pratique de ces instructions. Jai choisi en effet de les expliquer avec des petits exemples concrets, plutt que de simplement traduire le datasheet.

Bien entendu, vous pouvez exprimenter ces instructions avec MPLAB et son simulateur, en insrant ces instructions aprs ltiquette start de votre programme. Je vais donc expliquer ces instructions dans un ordre qui me facilite les explications, en commenant par celles dj vues, dans le but final dobtenir toutes les rfrences aux instructions dans le mme document.

TÉLÉCHARGER BIGONOFF PDF

Cette instruction effectue ce quon appelle un saut inconditionnel, encore appel rupture de squence synchrone inconditionnelle.

Rappelez-vous que linstruction goto contient les 11 bits de lemplacement de destination. Rappelez-vous en effet la manire dont est construit le PC dans le cas des sauts.

Ceci na aucune espce dimportance pour le 16F84, qui ne dispose que de 1Kmots de mmoire programme, mais devra tre considr pour les pics de plus grande capacit 16F Nous en reparlerons dans la seconde partie.

Vous ne devez donc vous proccuper de rien. Start goto plusloin ; le programme saute linstruction qui suit ltiquette ; plusloin xxxxxxxx plusloin. Remarquez que vous pouvez sauter en avant ou en arrire. Cette instruction provoque lincrmentation de lemplacement spcifi encore appel File. Comme pour toutes les instructions, f reprsente File , cest dire lemplacement mmoire concern pour cette opration, d , quant lui: reprsente la Destination.

Sauf spcification contraire, d vaut toujours, au choix : - f la lettre f : dans ce cas le rsultat est stock dans lemplacement mmoire. Ce registre de travail est appel galement accumulateur. Soit, en franais : Le contenu de lemplacement spcifi est incrment de 1, le rsultat est plac dans lemplacement dsign par d. Emplacement qui pourra tre soit lemplacement spcifi par f , soit laccumulateur, f restant dans ce cas inchang. Etant donn que la seule manire, en incrmentant un octet, dobtenir 0, est de passer de 0xFF 0x Le report nest pas ncessaire, puisquil va de soi.

Z vaudra donc 1 si f avant lexcution valait 0xFF. Decrmente lemplacement spcifi. Le fonctionnement est strictement identique linstruction prcdente. Le seul bit affect par cette opration est le bit Z. Cette instruction charge la valeur spcifie valeur littrale, ou encore valeur immdiate , dans le registre de travail W. Vous allez comprendre pourquoi. Si nous nous rappelons, dans la leon prcdente que mavariable reprsentait ladresse 0x0E de notre zone de RAM.

Supposons maintenant que mavariable contienne 0x Attention, la valeur, ce nest pas le contenu. Lassembleur va donc raliser la substitution suivante :. Aprs linstruction, nous aurons 0x0E dans le registre W. Lassembleur va traduire galement en remplaant mavariable par sa valeur. Nous obtenons donc :. Je rappelle quil est primordial de ne pas confondre, sinon, vous ne comprendrez plus rien lors de la ralisation des programmes.

Aprs cette instruction, W contient donc 0x Que fait cette instruction? Dire que cela ne sert rien est tentant mais prmatur. En effet, si le contenu de mavariable reste bien inchang, par contre le bit Z est positionn. Permet de sauvegarder le contenu du registre de travail W dans un emplacement mmoire. Cette opration permet dajouter une valeur littrale adressage immdiat au contenu du registre de travail W.

Ne vous inquitez pas trop pour DC, il nest utilis que pour les oprations sur les quartets, par exemple, les nombres Binary Coded Decimal. Ne pas confondre avec linstruction prcdente. Attention, ici il y a un pige. En effet, on soustrait W de la valeur littrale, et pas linverse. Notez ici que le bit C fonctionne de manire inverse que pour laddition.

Ceci est commun la plupart des microprocesseurs du march. Les autres utilisent parfois un bit spcifique pour la soustraction, bit le plus souvent appel borrow emprunt. S il y a dbordement, C est forc 0.

Ceci est logique, et sexplique en faisant une soustraction manuelle. Le bit C reprsente le me 9 bit ajout doffice la valeur initiale. Comment procder?

Et bien, comme pour une soustraction dcimale. On commence par les bits de droite : , a ne passe pas, donc on emprunte 10 not en exposant vert , et on soustraira videmment une unit supplmentaire au bit b1.

Rsultat 1. On continue de droite gauche jusquau 9me bit qui est le carry. Rsultat final : B et carry 1, C. Procdons de la mme manire, et nous obtenons B, avec le bit C 0. Et l, me dites-vous, B, cest FF, pas 1. Or, comment savoir la valeur absolue dun nombre ngatif? En prenant son complment 2. Vous matrisez maintenant les soustractions. Certains auront sans doute pens que jexpliquais trop en dtail, mais mon exprience ma appris que les soustractions reprsentaient souvent un cueil dans la ralisation de trop de programmes.

Encore un dernier dtail : Pour effectuer une soustraction de 1, vous pouvez bien entendu effectuer une addition de 1. Le rsultat sera strictement le mme, votre charge dinterprter les bits Z et C. Je vous laisse le faire vous-mme pour vous convaincre. Rappelez-vous quon effectue un AND entre chaque bit de mme rang.

Seuls restent donc positionns 1 les bits dont les 2 oprandes valent 1. Tant que vous ne jonglerez pas avec lhexadcimal, je vous conseille de toujours traduire les nombres en binaires pour toutes les instructions concernant les bits. Maintenant, vous devriez avoir bien compris.

Je vais donc acclrer les explications. Et oui, les mmes instructions, mais pour le OU inclusif. Effectue un OR entre w et lemplacement spcifi. Je ne donnerai pas dexemple, vous devriez avoir compris. Sa table de vrit est la mme que le ou inclusif, except que lorsque les 2 bits sont 1, le rsultat est 0.

En effet, si vous effectuez 1 xor 0 , vous obtenez 1, si vous effectuez 0 xor 0 , vous obtenez 0. Donc, si vous appliquez xor 0, la valeur de dpart est inchange. Si par contre vous appliquez 0 xor 1 , vous obtenez 1, et avec 1 xor 1 , vous obtenez 0.

En appliquant xor 1, vous inversez le bit, quelque soit son tat initial. Remarquez que tous les bits de loctet initial ont t inverss par chaque bit du second oprande qui tait 1.

Cest une instruction qui permet tout simplement de forcer directement un bit dun emplacement mmoire 1. Cest une instruction qui permet tout simplement de forcer directement un bit dun emplacement mmoire 0.

PDF TÉLÉCHARGER BIGONOFF

Les oprations de dcalage sont des oprations trs souvent utilises. Vous allez voir quavec ces instructions, on peut trs facilement raliser des dcalages. Lopration de rotation effectue lopration suivante : Le bit de carry C est mmoris. Ensuite chaque bit de loctet est dplac vers la gauche. Lancien bit 7 sort de loctet par la gauche, et devient le nouveau carry. Le nouveau bit 0 devient lancien carry. Il sagit donc dune rotation sur 9 bits.

Vous voyez que tous les bits ont t dcals vers la gauche. C a t rintroduit dans b0. Le rsultat reste sur 9 bits. Si vous avez compris, le rsultat sera B, avec le carry 0. Si le carry tait 0 au dpart, on effectue un simple dcalage vers la gauche. Que se passe-t-il si, en dcimal, on effectue ce type dopration? Prenons le nombre et dcalons-le vers la gauche en dcimal, nous obtenons Et bien cest la mme chose en binaire une fois de plus. Prenons B , soit 23 en dcimal. Dcalons-le, nous obtenons B, soit Nous avons donc effectu une multiplication par 2.

Retenez ceci, cela vous sera trs utile par la suite. Lopration de rotation vers la droite effectue lopration suivante : Le bit de carry C est mmoris. Ensuite chaque bit de loctet est dplac vers la droite.

Lancien bit 0 sort de loctet par la droite, et devient le nouveau carry. Lancien carry devient le nouveau bit7. Il sagit donc galement dune rotation sur 9 bits. Vous voyez que tous les bits ont t dcals vers la droite. C a t rintroduit dans b7. Si vous avez compris, le rsultat sera B, avec le carry 1.

Si le carry est 0 au dpart, on effectue un simple dcalage vers la droite. Que sest-il pass? Et bien notre nombre de dpart, soit 23 en dcimal est devenu Le carry reprsente le bit -1 , donc, la moiti du bit 0, donc.

En binaire ce sera donc. Si nous regardons alors les 9 bits, nous obtenons Retenez ceci, cela vous sera galement trs utile par la suite. Traduit littralement, cela donne : Teste le bit de lemplacement mmoire et saute sil vaut 0. Notez que dans ce cas linstruction prendra 2 cycles, sinon, elle nutilisera quun cycle. En effet, la syntaxe ne contient pas dadresse de saut, comme nous allons le voir. Instruction excute si faux ; si le bit vaut 0, ne sera pas excute skip Poursuite du programme ; le programme continue ici.

Que faire si les traitements ncessitent plusieurs instructions? Et bien, on combine les sauts conditionnels avec les saut inconditionnels par exemple goto.

Ces procdures sont les mmes pour tous les sauts inconditionnels, je ne les dtaillerai donc pas avec autant dexplications. Traduit littralement, cela donne : Teste le bit de lemplacement mmoire et saute sil vaut 1.

Nous poursuivons les sauts conditionnels avec une instruction trs utilise pour crer des boucles. Cette instruction dcrmente un emplacement mmoire et saute linstruction suivante si le rsultat de la dcrmentation donne une valeur nulle.

Comment crit-on ce type de programme? Et bien tout simplement de la manire suivante :. Si vous ne dsirez pas quelle soit excute dans cette circonstance, vous devez ajouter un test AVANT lexcution de la premire boucle, comme dans lexemple suivant :. Je ne vais pas dtailler cette instruction, car elle est strictement identique la prcdente, hormis le fait quon incrmente la variable au lieu de la dcrmenter.

Nous pouvons traduire cette instruction par inverser les quartets dans F. Cette opration inverse simplement le quartet demi-octet de poids faible avec celui de poids fort. Cette opration effectue un saut inconditionnel vers un sous-programme. Voyons ce quest un sous-programme. Et bien, il sagit tout simplement dune partie de programme qui peut tre appel depuis plusieurs endroits du programme dit principal. Le point de dpart est mmoris automatiquement, de sorte quaprs lexcution du sous-programme, le programme continue depuis lendroit o il tait arriv.

Cela parat un peu ardu, mais cest extrmement simple. Lors de lexcution de linstruction, ladresse de linstruction suivante est sauvegarde sur le sommet dune pile exactement comme une pile dassiettes. Lorsque la sous-routine est termine, ladresse sauvegarde est retire de la pile et place dans le PC. Le programme poursuit alors depuis lendroit do il tait parti. Notez que si le sous-programme ou sous-routine appelle lui-mme un autre sous programme, ladresse sera galement sauve au dessus de la pile.

Attention, cette pile a une taille limite 8 emplacements. Il nexiste aucun moyen de tester la pile, vous devez donc grer vos sous-programmes pour ne pas dpasser 8 emplacements, sinon, votre programme se plantera. Notez que lorsque vous sortez dun sous-programme, lemplacement est videmment libr. La limite nest donc pas dans le nombre de fois que vous appelez votre sous- programme, mais dans le nombre dimbrications sous-programme qui en appelle un autre qui en appelle un autre etc.

Retour de sous-routine. Va toujours de pair avec une instruction call. Cette instruction indique la fin de la portion de programme considre comme sous-routine SR. Rappelez- vous que pour chaque instruction call rencontre, votre programme devra rencontrer une instruction return. Le PC est recharg depuis la pile, le ; programme poursuit ladresse qui suit la ligne call. Ecrivons-la :. Imaginons maintenant que cette petite temporisation soit appele rgulirement par notre programme principal.

Ecrivons quoi ressemble le programme principal :. On obtient donc un programme comme ceci :. De plus, a prend beaucoup de place.

La Programmation Des PIC - BIGONOFF

On peut galement se dire : utilisons une macro , qui, rappelez-vous, effectue une substitution au moment de lassemblage. Cest vrai, qualors, il ny a plus quun endroit modifier, mais, dans notre PIC, le code se retrouvera cependant autant de fois quon a utilis la temporisation. Que de place perdue, surtout si la portion de code est grande et utilise plusieurs fois. Pour remdier ceci, nous utiliserons la technique des sous-programmes.

Premire tape, modifions notre temporisation pour en faire une sous-routine :. Deuxime tape, nous modifions notre programme principal pour que chaque fois que nous avons besoin dune tempo, il appelle le sous-programme. Nous obtenons :. On peut amliorer : supposons que nous dsirons une temporisation dure variable. On modifie la sous-routine en supprimant la valeur dinitialisation, et on place celle-ci dans le programme principal. Cela sappelle un sous-programme avec passage de paramtre s.

Retour de sous-routine avec valeur littrale dans W. Cest une instruction trs simple : elle quivaut linstruction return, mais permet de sortir dune sous-routine avec une valeur spcifie dans W. Cette instruction indique un retour dinterruption nous verrons ultrieurement ce que sont les interruptions. Cette instruction agit dune manire identique RETURN, except que les interruptions sont remises automatiquement en service au moment du retour au programme principal.

Cest une instruction qui nest pas vraiment indispensable, car on pourrait utiliser linstruction movlw 0. La diffrence est que dans ce cas, le bit Z nest pas affect. Remet 0 le chien de garde watchdog de votre programme. Nous aborderons la mise en uvre du watchdog ultrieurement. Sachez cependant que cest un mcanisme trs pratique qui permet de provoquer un reset automatique de votre PIC en cas de plantage du programme parasite par exemple. Si la commande nest pas reue dans le dlai imparti, le PIC redmarre ladresse 0x Cest exactement le mcanisme utilis par les conducteurs de train qui doivent presser un bouton intervalle rgulier.

Si le bouton nest pas press, le train sarrte. On dtecte ainsi si le conducteur est toujours dans ltat dattention requis. Effectue le complment 1 de lemplacement mmoire spcifi. Donc, inverse tous les bits de loctet dsign. Astuce : en utilisant cette instruction, on peut galement tester si mavariable vaut 0xFF. En effet, si cest le cas, W vaudra 0 et Z vaudra donc 1. Place le PIC en mode de sommeil. Il ne se rveillera que sous certaines conditions que nous verrons plus tard.

Comme vous devez tre fatigu, et moi aussi, je vous prsente linstruction qui ne fait rien, qui ne positionne rien, et qui ne modifie rien. On pourrait croire quelle ne sert rien. En fait elle est surtout utilise pour perdre du temps, par exemple pour attendre une ou deux instructions, le temps quune acquisition ai pu se faire, par exemple.

Nous lutiliserons donc loccasion. Organiser son écran Avec le cours de Bigonoff, il est nécessaire de se reporter à d'autres documents. Voici ma méthode. Dans Acrobat Reader, j'ouvre le cours à gauche et la doc Microchip à droite Quand j'ai besoin d'un autre logiciel, je réduis la fenêtre Acrobat et j'ouvre un autre logiciel qui peut être MPLAB ou un bien traitement de texte pour noter mes remarques.

Si vous voulez mes notes, vous pouvez les télécharger. Elles étaient destinées à mon usage personnel mais peuvent servir de base pour les vôtres. Dans la même archive autoextractible, vous trouverez un. Passons aux choses sérieuses Vous avez maintenant besoin de 2 logiciels gratuits : a le cours de Bigonoff, à télécharger depuis son site. Vous aurez aussi besoin de la doc du 16F84 mais Bigonoff vous la fournit dans la même archive.

Vous pouvez aussi acheter ou commander un 16F84 et un programmateur de chip. Mais n'attendez pas de les avoir reçus pour commencer : ils serviront à vérifier votre travail quand vous aurez étudié quelques chapîtres. Le lot que j'ai acheté comprend des résonnateurs céramiques en bleu sur la photo. Ces composants remplacent à la fois 1 quartz et 2 capas mais sont moins précis.

Voici 2 programmateurs de marques différentes. Le PIC ne se place pas au même endroit sur les 2. J'ai repéré la patte 1 par une marque de peinture jaune à la fois sur les PIC et sur les programmateurs. Il peut y avoir des différences avec votre version du simulateur, mais vous vous y retrouverez facilement. Votre premier programme Vous le construirez en suivant les chapitres 7 et 8.

Contrairement à l'habitude, la double flèche correspond au déroulement lent animation et la simple au déroulement rapide. La suite Maintenant, vous continuez à votre rythme. Si vous avez le 16F84 et le programmateur, alors vous testez chaque programme "en vrai" à partir du chapître Sinon, ça ne doit pas vous empêcher de continuer.

Je n'ai pas l'intention de vous faire une séance de lecture expliquée du cours de Bigonoff. Suivez le jusqu'au chapître 13 Timer 0. Je vous donne un organigramme pour l'exercice de ce chapître.