30.07.2015 Views

La programmation des PICs - Seconde partie

La programmation des PICs - Seconde partie

La programmation des PICs - Seconde partie

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Donc, avant la ligne de saut, nous devrons ajouter la mise à 1 de ce bit. Notez quel’analyse du tableau <strong>des</strong> registres du datasheet nous montre que PCLATH est présent danstoutes les banques. Donc, inutile de positionner correctement RP0 et RP1. Et oui, j’en vois quiavaient déjà purement ignoré ce détail (rappelez-vous, plus de la moitié <strong>des</strong> erreurs de<strong>programmation</strong>)…bsf PCLATH , 3 ; préparer saut en page 1goto saut2 ; sauterMaintenant, occupons-nous de notre second saut. En effet, l’adresse de <strong>des</strong>tination vadépendre également, COMME TOUS LES SAUTS, du contenu de PCLATH. Si nous laissonsPCLATH dans cet état, le saut2 s’effectuera en réalité vers l’adresse 0x800. Aussi, avant lesaut, devrons-nous remettre PCLATH en configuration « page 0 ».bcf PCLATH , 3 ; préparer saut en page 0goto saut1 ; sauterCompilons le programme : toujours les 2 warnings d’avertissement de franchissement depages. Exécutons le programme : il tourne maintenant parfaitement. Vous voyez, rien <strong>des</strong>orcier, juste de la réflexion.4.6 Evitons les warnings inutilesNous avons vu que les warnings sont bien pratiques dans ce cas précis pour nous indiquerles sauts inter-page. Le problème, c’est qu’une fois la solution trouvée, le warning persiste.Or, dans le cas d’un tout gros programme, puisqu’il s’agit ici de programmes dépassant2Kmots, vous risquez de vous retrouver avec <strong>des</strong> dizaines de warnings de ce type.Une fois que vous aurez réglé chaque cas séparément, si vous modifiez votre programme,et que cette modification, par exemple une insertion, provoque <strong>des</strong> modifications dans lesemplacements de sauts de pages, vous serez dans l’incapacité de le vérifier sans tout reprendredepuis le début.Autre inconvénient, si votre correction est mauvaise, vous n’aurez pour le vérifier aucunautre choix que de tout contrôler depuis le début. J’ai rencontré également ce problème, et j’aitrouvé une astuce qui me met à l’abri de ce type d’inconvénient, car je transfère alors lecontrôle <strong>des</strong> sauts de page directement à MPASM.Je vais vous montrer quelle a été ma démarche et quelle solution pratique j’ai trouvée (denouveau, certaines macros intégrées à MPLAB effectuent le même style d’opérations).MPASM génère un warning de saut de page quand la page de <strong>des</strong>tination est différente dela page dans laquelle l’instruction de saut est exécutée. L’astuce consiste à faire croire àMPASM qu’il se trouve dans la même page. Comment ? Tout simplement en modifiant lesadresses de <strong>des</strong>tination. Je commence par expliquer directement dans le source duprogramme.Voyons notre premier saut : nous nous trouvons en page0 et nous désirons sauter àl’adresse « saut2 » située en page1. MPASM remplace « saut2 » par sa valeur et voit que cettevaleur n’est pas en page0. Nous allons donc le bluffer.33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!