Sie sind auf Seite 1von 6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Avant de faire ce T.P. vous devez : Etre initi lutilisation dISIS (avoir fait le T.P. 1) Connatre les outils de simulation anime (avoir fait le T.P. 2)

Objectifs de ce T.P. : Savoir placer des bus Simuler un circuit base de microcontrleur. Installer un nouvel outil de compilation.

Matriel ncessaire : 1 Ordinateur quip du logiciel Proteus Mini guides ISIS & ARES Fichiers TL.ASM et TL2.C Fichiers du compilateur CC5X

1. Simulation dun PIC en assembleur


Le circuit que nous utiliserons pour la simulation est issu de la documentation ISIS VSM. Il est compos de deux feux de contrle du trafic connects un microcontrleur PIC16F84A. Dmarrez ISIS et saisissez le schma ci-contre (Les feux tricolores sont dans la bibliothque, ils se TRAFFIC nomment LIGHTS ).
U1
16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR RA0 RA1 RA2 RA3 RA4/T 0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 17 18 1 2 3 6 7 8 9 10 11 12 13 D0 D1 D2 D3 D4 D5 D6 D7 D0

D1

D2

D[0..7] D4

Pour placer un bus: D5 1. Appuyez sur le bouton PIC16F84A Bus . D6 2. Pointez sur l'endroit de dpart du bus. Il peut s'agir d'une patte de bus, d'un bus existant, ou d'un espace libre sur le schma. 3. Clic gauche pour commencer le bus, puis cliquez chaque angle souhait pour dfinir le chemin du bus. 4. Pour finir le bus sur un point de connexion de bus (une patte de bus ou un bus existant), mettez le pointeur dessus et clic gauche. Pour finir un bus sur un espace vide, clic droit. Labels des bus : On peut donner un label un bus, tout comme un fil. Cependant ISIS dfinit une syntaxe spciale pour les bus. Ce sera quelque chose comme D[0..7] ou A[8..15].
Page 1/6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Associer le programme au processeur : Le programme est prsent dans le fichier TL.ASM. Copiez le fichier TL.ASM vers votre rpertoire.
TL.ASM
LIST p=16F84 #include "P16F84.INC" CBLOCK 0x10 state l1,l2 ENDC org goto halt setports org goto clrw movwf movwf bsf clrw movwf bcf 0 setports 4 halt PORTA PORTB STATUS,RP0 TRISB STATUS,RP0 state getmask PORTB state,W 0x04 state wait loop ; PIC16F844 est le processeur cible ; inclure fichier entete ; zone tampon

; Vecteur de debut ; Aller au code de lancement ; Vecteur d'interruption. ; Stopper en cas de boucle sans fin et ne rien faire ; ; ; ; ; ; ; Zero dans W. S'assurer que PORTA vaut zero avant validation. S'assurer que PORTB vaut zero avant validation. Selectionner la Bank 1 Masquer tous les bits comme sorties Valider registre TRISB Reselectionner Bank 0.

initialise clrw movwf loop call movwf incf andlw movwf call goto

; Etat initial. ; Valider. ; ; ; ; ; ; ; Convertir etat. Ecrire vers port. Incrementer etat dans W. Mettre en memoire Attendre :-) et boucler :-)

sortie. vert. getmask

; Fonction qui renvoie un masque de bits pour l'etat courant du port de ; Le nibble superieur contient les bits pour un groupe de feux et celui ; inferieur pour l'autre groupe. Bit 1 pour rouge, 2 pour orange, 3 pour ; Le bit 4 n'est pas utilise. movf addwf retlw retlw retlw retlw state,W PCL,F 0x41 0x23 0x14 0x32 ; ; ; ; ; ; Obtenir etat dans W. Ajoute offset dans W de PCL pour calc. goto. state==0 est Vert et Rouge state==1 est Orange et Rouge state==3 est Rouge et Vert state==4 est Rouge/Orange et Orange

wait w1

; Fonction qui utilise deux boucles pour definir un retard. movlw 5 movwf l1 call decfsz goto return wait2 l1 w1

wait2 w2

clrf decfsz goto return END

l2 l2 w2

Dans le menu Source Slectionnez la commande Ajout/suppression fichiers source . Cliquez sur le bouton Nouveau , slectionnez le fichier TL.ASM. Choissez l'outil de gnration de code . Pour les microcontrleurs PIC, l'outil est MPASM (Pour un microcontrleur 68HC11, il faudrait utiliser le ASM11). Cest ce compilateur qui sera lanc par Proteus lors du lancement de lanimation. Le rsultat de la compilation produira entre autres le fichier TL.HEX .
Page 2/6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Simulation du circuit : Editez le PIC16F84A et ajoutez TL.HEX dans le champ Program File . Sauvegardez votre fichier dans votre rpertoire (le mme que celui ou se trouve TL.ASM). Appuyez sur le bouton Jouer du magntoscope . La barre de message doit indiquer le temps coul depuis le lancement de l'animation. Vous noterez qu'un des feux est vert alors que l'autre est rouge mais que les feux ne changent pas d'tat. Ceci provient d'une erreur volontairement introduite dans le programme. A ce stade, il convient de mettre au point le programme pour rsoudre le problme. Mise au point : Lancez le mode Debug en utilisant le menu debug / start/restart debugging (ou la combinaison des touches CTRL+F12). Vous pouvez choisir dafficher les fentres de mise au point par l'intermdiaire du menu debug . Activez les fentres Registers , Source Code et Data Memory .

Position courante du compteur de programme (PC) Boutons de mise au point

Boutons de mise au point de la fentre Source Code


Relance lanimation Pas pas qui nentre pas dans les sous fonctions Pas pas Pas pas avec sortie force de la sous fonction courante Excution jusqu la ligne slectionne Ajouter / enlever des points darrt

Page 3/6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Analyse du droulement du programme : Pour lancer le programme en mode pas pas, appuyez sur le bouton de la fentre Source Code (ou sur F11) autant de fois que ncessaire pour que le programme se trouve dans la boucle w2. Linstruction decfsz l2 dcrmente la variable l2 qui est en mmoire de donnes. REMARQUE : Pour connatre ladresse dune donne, placez le Compteur de Programme sur linstruction qui modifie cette donne. Linstruction et ladresse sont affiches en vert dans la fentre Registers . Quelle est ladresse de l2 ?

La boucle w2 est une boucle dattente. Pour viter davoir appuyer 256 fois sur F11, il est possible de forcer la sortie de cette boucle en cliquant sur le bouton A quelle adresse se trouve le Compteur de Programme la sortie de la boucle w2 ?

Il est possible dexcuter la boucle w1 sans excuter lappel vers le sous-programme wait 2. Pour cela, cliquez sur le bouton Combien de fois sexcute la boucle w1 ?

Il est galement possible dexcuter le programme jusqu un point donn : Slectionnez la ligne jusqu laquelle vous souhaitez que le programme sexcute, puis cliquez sur . Attention ! le programme tourne jusqu la ligne slectionne mais celle-ci nest pas excute. Quelle est la valeur du registre W lorsque le programme a excut la ligne dadresse 001B ?

Une investigation plus pousse rvle que le problme est caus par un ET logique avec 4 au lieu de 3. La solution est de modifier l'instruction andlw par 3 au lieu de 4. A partir du menu Source , affichez TL.ASM. Corrigez le programme, enregistrez-le et simulez-le de nouveau.

Le trafic semble un peu rapide ! Editez le processeur et modifiez sa vitesse dhorloge (10kHz).

Page 4/6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Il peut tre intressant de placer un point d'arrt. Pour ce faire, dans la fentre Source Code , slectionnez la ligne souhaite (par exemple sur linstruction andlw ladresse 0011), puis cliquez sur le bouton (ou appuyez sur F9). A chaque fois que ou F12), le programme se stoppera sur vous relancerez lanimation (bouton linstruction prcdent le point darrt.

Quelle est la valeur de la variable state (adresse 0010 de la mmoire de donnes) lorsque les signaux D1, D4 et D5 sont ltat haut ?

Il est possible de visualiser ltat des variables alors que le programme est en cours danimation : o Enlevez le point darrt o Relancez lanimation. o Dans le menu Mise au point , cochez laffichage de la fentre Watch window . o Cliquez droite sur la fentre Watch window et slectionnez Ajout items (par noms) . Ajoutez PORTB (double clic). Notez que la valeur de PORTB volue en mme temps que la couleur des feux. o Cliquez droite sur la fentre Watch window et slectionnez Ajout items (par adresses) . Ajoutez ladresse 0x0011 que vous nommerez L1.

Quelle est la valeur de PORTB lorsque les signaux D1 et D6 sont ltat haut ?

Selon le niveau de licence de Proteus, il nest possible de simuler que certains processeurs. Par exemple, la licence 2+ permet de simuler les PIC16, HC11 et 8051. Il est impossible de simuler un PIC18 ou un PIC12 !

2. Installation dun compilateur C


Il est possible de rajouter des compilateurs externes en plus de ceux existants. Nous allons dans lexemple suivant intgrer un compilateur C pour les PIC 16. Le compilateur choisi est le CC5X dont une version limite 1024 instructions est disponible gratuitement sur le site http://www.bknd.com/ Installation du compilateur : Procurez vous CC5X. Copiez le dossier CC5X contenant le programme CC5X.EXE ainsi que les fichiers .H dans le sous-dossier TOOLS de linstallation de Proteus. Dans Isis, allez dans Source / Dfinir outil de gnration de code
Page 5/6

TRAVAUX PRATIQUES DE CAO

T.P.4 PROTEUS

Cliquez sur le bouton Nouveau Slectionnez le programme CC5X.EXE (il y a des chances quil soit dans le dossier
C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools\cc5x\)

%1 -L -CC -A1+6+10 -AuJm -I"C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools\cc5x"

Compltez la fentre comme ci-dessous : o Le fichier source a comme extension .C o Le fichier compil a comme extension .HEX o La ligne de commande :

%1 correspond au nom du fichier source -L -CC -A1+6+10 AuJm correspond des options de CC5X -I"C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools\cc5x"

est le chemin o sont placs les fichiers .H Pour plus dinformations, voir la documentation de CC5X o Le fichier listing a comme extension .LST o Cliquez sur le bouton Parcourir associ aux donnes de debug et donnez le chemin du programme de dbuggage de MPASM : MPASMDDX.EXE En gnral, le chemin est :
C:\Program Files\Labcenter Electronics\Proteus 6 Professional\Tools\MPASM\ mpasmddx.EXE

Cliquez sur OK

Simulation dun programme en C : Rutilisez le schma prcdent avec les feux de croisement. Modifiez les informations relatives au programme : o Le fichier source est TL2.C o Loutil de gnration de code est CC5X o Le fichier compil est TL2.HEX Simulez ce programme

Page 6/6