Vous êtes sur la page 1sur 3

8/10 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG

II. Microcontrôleurs aspect logiciel :


1. Langages de programmation de PIC :
Les microcontrôleurs sont des composants programmables. Ils font ce que leur dit de faire le
programme et rien d'autre. Le programme est une suite d'instructions. Elles sont codées en binaire
(code machine) pour pouvoir être exécutées par le microcontrôleur.

Pour écrire un programme, il existe plusieurs solutions ( langages) mais chacune nécessite une forme
de traduction :
 Langage de programmation de haut niveau (C , BASIC , PASCAL…) : pour le traduire en
code machine il faut utiliser plusieurs programmes ( des compilateurs et des interpreteurs).

 Langage de programmation de bas niveau appelé aussi assembleur :c’est un langage proche du
code machine. Il est alors facile de le traduire mais il faut connaître l’architecture interne du
microcontrôleur.

 Langage de programmation graphique (FLOWCODE,ALGOPIC…) grâce auquel le


programme à implanter dans le PIC est directement représenté sous forme d'algorigramme.Pour
le traduire en code machine il faut utiliser des compilateurs.

2. Programmation en langage assembleur :


Avant la construction d’un programme, il est recommandé de réaliser un algorigramme qui représente le
cheminement du programme à écrire. Cela va faciliter la programmation.

2.1 Procédure à suivre pour programmer en assembleur :

Les étapes nécessaires permettant de voir un programme s'exécuter sur un PIC sont :
 Ecrire un programme en langage assembleur (avec le jeu d’instructions du PIC) dans un
fichier texte et le sauvegarder avec l'extension .asm (fichier source) en utilisant un éditeur texte ;
 Compiler ce programme avec l'assembleur MPASM fourni par Microchip. Le résultat est un
fichier exécutable avec l’extension. hex (code machine) ;
 Transférer le fichier .hex dans la mémoire programme du PIC (mémoire flash) à l'aide d'un
kit programmateur et son logiciel de transfert ;
 Mettre le PIC dans son montage final, mettre sous tension.

2.2 Les directives de MPASM les plus utilisées :


Les directives de l'assembleur sont des instructions qu'on ajoute dans le programme et qui seront
interprétées par l'assembleur MPASM. Ce ne sont pas des instructions destinées au PIC.

 LIST : permet de définir un certain nombre de paramètres comme le type de PIC utilisé….
Exemple : LIST p=16F84A,

 INCLUDE : permet d'insérer un fichier source. Par exemple le fichier p16f84A.inc qui contient la
définition d'un certain nombre de constante comme les noms des registres ainsi que les noms de
certains bits.
Exemple: # INCLUDE< p16f84A.inc>
INCLUDEp16f84A.inc

1
9/10 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG

 __CONFIG : permet de définir les 14bits de configuration qui seront copié dans l'EEPROM de
configuration lors de l'implantation du programme dans le PIC (protection de code, type
d'oscillateur, chien de garde et temporisation du départ)
Exemple : __CONFIG B'11111111111001'
__CONFIG H'3FF9'

 EQU : permet de définir une constante ou une variable :

Exemple : XX EQU 0x20


Chaque fois que le compilateur rencontrera XX, il la remplacera par la constante 0x20.

 #DEFINE : définit un texte de substitution

Exemples : #DEFINE led1 PORTA,0 ;led1est remplacé par PORTA,0


#DEFINE Bp2 PORTA,3 ; Bp2est remplacé par PORTA,3

 ORG : permet de choisir l’adresse de début, dans laquelle sera logée la première instruction de
votre programme.

Exemple : ORG H'0000' ;


le programme commencera à l’adresse 0000H de la mémoire programme du PIC.

Si on utilise un sous-programme d’interruption, il faut éviter d’utiliser dans le programme principal


l’adresse 0004H. Dans ce cas il faut loger le programme principal à une autre adresse que 0000H. La
fonction GOTO permet de renvoyer vers une étiquette ou une adresse.

Exemple : ORG H'0000' ; initialisation du PIC


GOTO start ; va à l’étiquette start

La syntaxe ORG, peut être utilisée plusieurs fois, ce qui permet de loger des sous programmes à des
emplacements mémoire définie.
 ; : le compilateur ignore tout ce qui suit un point-virgule (; ).
Exemple : ; je peux écrire des commentaires après le point-virgule

 END : indique la fin du programme

2.3 Les étiquettes (Labels) : permettent de remplacer une adresse en format numérique.
Exemple : GOTO tempo
2.4 Format des nombres :
L'assembleur reconnaît les nombres en décimal, hexadécimal, binaire ou octal. Pour préciser la base il
faut utiliser les préfixes précisés dans le tableau ci-dessous :

Base Préfixe Exemple

Décimal D'nnn' D'39'


.nnn .39
Hexadécimal H'nn' H'2F'
0xnn 0x2F
Binaire B'….' B'01100101'

2
10/10 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG

EXERCICES : Programmation en assembleur d’un PIC


Exercice 1 :
1- Mettre 0 dans W
2- Charger la valeur 20H dans W
3- Charger la valeur de W à l’adresse 020H
4- Charger la valeur à l’adresse 020H dans W
5- Mettre à 1 le bit 5 de la valeur à l’adresse 003H
6- décrémenter la valeur à l’adresse 020H, et stoker le résultat à la même adresse
7- décrémenter la valeur à l’adresse 020H, et stoker le résultat dans W
8- décrémenter la valeur à l’adresse 020H, et stoker le résultat à l’adresse 021H
9 - Charger la valeur 20 dans W

Exercice 2:
1 - A quoi sert le programme suivant :
MOVLW B’00000001’
MOVWF TRISA

2 - Soit le programme suivant :


MOVLW 0x15
MOVWF 0x19
MOVLW 0x90
ADDWF 0x19, 0
MOVWF 0x20
A quoi sert-il ? Où est stocké le résultat final ? Que vaut-il ?

Exercice 3 : Configurer le PORTB en entrée. Lire le contenu du PORTB. Mettre le résultat dans la
case mémoire d’adresse 1CH.
Exercice 4 : Configurer le PORTB en sortie. Initialiser le PORTB à 4FH.

Exercice 5 : Configurer les broches RB0, RB3, RB6, RB7 du PORTB en entrée et les broches RB1, RB2,
RB4, RB5 du PORTB en sortie.

Exercice 6 : Configurer les broches RA0, RA1, RA2 du PORTA en entrée et les broches RA3, RA4
du PORTA en sortie.

Exercice 7 :
Écrire un programme qui additionne deux valeurs en RAM ("donnee1" et "donnee2") et met le résultat
dans une variable 8 bits "somme".

Exercice 8 :
Réaliser un programme qui vient chercher six fois des valeurs (8 bits) sur le PORTB et les additionne
dans une variable "Somme" (8 bits). On vous demande de gérer la somme sur 8 bits seulement sans
gérer la retenue.

Exercice 9 : Ecrire un programme qui permet d’allumer successivement une led rouge, orange puis
verte (l’allumage de la led suivante éteint la précédente, chaque led sera allumée pendant 0,5 s). Le
programme tournera indéfiniment.
Nota : Pour simplifier l’étude utiliser un algorigramme avant d’écrire le programme.

Vous aimerez peut-être aussi