Vous êtes sur la page 1sur 4

TP2 : Programmation en Assembleur Module Enseignant Classes Architecture des microcontrleurs H.

JEDIDI 3Tel B1 & 3 Tel A1

TP 2:Programmation en Assembleur
I. Objectifs :
Lobjectif de cette manipulation est dcrire des programmes en assembleur, les compiler avec MPLAB et les tester sur le simulateur ISIS. Dans ce TP on va manipuler seulement les ports dentre/ Sortie. Les interruptions et les Timers seront traits dans les TP suivants.

II. Environnement logiciel

On utilise lIDE MPLAB pour faire la compilation des programmes et la gnration des fichiers binaires. La simulation des circuits sera faite sur ISIS.

III. Mise en marche du microcontrleur


Le microcontrleur a besoin dun circuit dhorloge pour le faire fonctionner. Ce circuit peut tre un circuit base dun quartz, un circuit RC ou mme un gnrateur externe de signal dhorloge. Dans cette manipulation on va utiliser un circuit base dun quartz. Le circuit dhorloge sera branch comme le montre la figure suivante.

TP2 : Programmation en Assembleur

Le choix des valeurs des capacits C1 et C2 doit tre fait en se basant sur le tableau suivant

Partie A: Commander une LED


Dans cette parie on va commander une LED via un interrupteur. 1. Ouvrir MPLAB et crer un nouveau projet. 2. Ajouter le fichier LED.ASM donn par lenseignant. 3. Lire ce programme et rpondre aux questions suivantes : Expliquer le rle de la directive de config. Quel est le rle de linstruction suivante : bsf STATUS,RP0. Quel est le rle du registre TRISB ? 2

TP2 : Programmation en Assembleur Pourquoi on a mis dans ce registre la valeur binaire 00000001 ? Expliquer le rle de la commande bsf PORTB, 1. Faite un organigramme pour expliquer le fonctionnement de ce programme.

4. Compiler le programme et corriger les erreurs. 5. Ouvrir ISIS et crer un nouveau design. 6. Insrer un PIC 16F84 et ajouter le circuit dhorloge. 7. Raliser le montage suivant

C1 U1
15 16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A 17 18 1 2 3 6 7 8 9 10 11 12 13

SW1
SW-SPST

X1
CRYSTAL

R1
0R1

D1
LED-RED

C2
15

8. 9. 10. 11.

Lancer la simulation et modifier la position de linterrupteur. Que remarquer vous ? Comparer le resultat de la simulation avec lorganigramme que vous avez ralis dans la question 3. Moifier le circuit pour avoir 3 LEDs de RB1 jusqu' RB7. La commende des LEDs se fait par linterrupteur connect RB0. 12. Faire les modifications necessaires au programme pour pouvoir commender les 7 LEDs ( utiliser 2 methodes diffrentes). 13. Ecrire une Macro LedON qui permet dallumer les LEDs et une deuxime Macro LedOFF qui permet de les eteindre.

Partie B: Temporisation
On utilise un signal dhorloge avec une frquence de 10 MHZ, donc la periode est eegal 0,1s et le cycle Machine est egal 0,4s ( 4 * Periodes). Donc par seconde on peut executer 2500000 instructions. On veut raliser un programme qui permet dallumer une lampe (connecte une entre du port B) pendant une seconde et leteindre pendant 2 secondes. On vous donne la fonction wait0 qui permet dattendre 0.25 seconde.

TP2 : Programmation en Assembleur

wait0 movlw 0x0A movwf cmpt3 movlw 0xFF movwf cmpt1 d1 movlw 0xFF movwf cmpt2 d2 decfsz cmpt2,1 goto d2 ; si diffrent de zero decfsz cmpt1,1 goto d1 d3 decfsz cmpt3,1 goto d1 1. Expliquer le rle des variables cmpt1, cmpt2 et cmpt3. 2. Expliquer commet la fonction wait0 peut raliser une attente de 0.25 seconde. 3. Ecrire un programme qui permet de commander une LED pour lallumer pendant une seconde et leteindre pendant 2 secondes. 4. Tester le programme et le compiler avec MPLAB. 5. Raliser le circtuit avec ISIS et simuler sonc fonctionnement. 6. Ajouter une deuxime LED et modifier votre programme pour avoir le cycle suivant : LED1 allume et LED2 eteinte pendant une minute. LED2 allume et LED1 eteinte pendant une minute. LED1 et LED2 sont les deux eteintes puis allumes pendant une minute.

Vous aimerez peut-être aussi