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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Page 2 : de 0x1000 à 0x17FFPage 3 : de 0x1800 à 0x1FFFModifions donc notre petit programme de la façon suivante (n’oubliez pas la directive« END », je ne l’indiquerai plus) :org 0x000 ; Adresse de départ après resetnop; ne rien fairesaut1nop; ne rien fairenop; ne rien fairegoto saut2 ; sauterorg 0x800 ; adresse de la suite du programmesaut2nop; ne rien fairenop; ne rien fairegoto saut1 ; sauter<strong>La</strong>ncez la compilation avec . Dans la fenêtre <strong>des</strong> résultats, vous voyez apparaître 2« warnings ». Les numéros de lignes peuvent être différents en fonction <strong>des</strong> espaces entre leslignes :Message[306] D:\DOCUME~1\LESSONS\PICS-P~2\FICHIERS\PCLATH.ASM 214 : Crossingpage boundary -- ensure page bits are set.Message[306] D:\DOCUME~1\LESSONS\PICS-P~2\FICHIERS\PCLATH.ASM 221 : Crossingpage boundary -- ensure page bits are set.Si vous vous reportez aux lignes incriminées (dans mon cas 214 et 221), vous constaterezque ces lignes correspondent aux deux instructions de saut.En fait MPASM attire votre attention sur le point suivant : les sauts incriminés traversentune limite de page, il vous demande de vérifier si les bits correspondants de PCLATH sontbien positionnés. Ceci est logique, car la directive « org0x800 » place le « saut2 » en page 1,alors que le saut 1 est situé en page 0.Ne tenons pas compte de ces avertissements dans un premier temps. Tapez donc ensuite puis une succession de pour voir le déroulement du programme.Que se passe-t-il ? Au lieu que l’instruction « goto saut2 » nous envoie vers « saut2 », nousnous retrouvons en fait à la première ligne du programme.Examinons ce qui s’est passé :- L’instruction « goto saut2 » est traduite par l’assembleur en « goto 0x800 »- Or, 0x800 comporte 12 bits, donc est tronquée à 11 bits, ce qui donne « goto 0x00 ». Eneffet 0x800 = B’100000000000’. Si vous enlevez le bit de poids fort, il resteB’00000000000’- <strong>La</strong> gestion interne du PIC ajoute à l’adresse les bits 3 et 4 de PCLATH, qui sont à « 0 ».L’adresse finale est donc 0x00. En effet, l’étude <strong>des</strong> 2 dernières colonnes du tableau 2-129

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

Saved successfully!

Ooh no, something went wrong!