Vous êtes sur la page 1sur 3

Organisation d’un fichier .

ASM :
exemple de structure du fichier:
LIST p=16F84 ; Définition de processeur
#include <p16F84.inc> ; Définitions de variables

__CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC

; emplacement des assignations


; emplacement des define
; emplacement des macros
; emplacement de la zone de déclaration des variables
;Démarrage sur reset :
ORG 0X000
goto start

;programme principal :
start
; notre programme {………}
END

1. Les commentaires
Un commentaire commence toujours par un « ; ».
Prenez l’habitude de toujours commenter vos programmes. Les commentaires sont très utiles si
vous décidez de modifier votre programme.
2. Les directives
La ligne :
LIST p=16F84 ; Définition de processeur
Représente une DIRECTIVE destinée à MPASM® pour lui indiquer quel type de processeur est
utilisé dans ce programme.
Les DIRECTIVES ne font pas partie du programme, elles ne sont pas traduites en OPCODE,
elles servent à indiquer à l’assembleur de quelle manière il doit travailler. Ce sont donc des
COMMANDES destinées à l’assembleur en lui-même.
Au contraire, les INSTRUCTIONS seront traduites en OPCODE et chargées dans le PIC. Il est
donc impératif de bien faire la distinction.
3. Les fichiers « include »
La ligne :
#include <p16F84.inc> ; Définitions de variables
signale à l’assembleur que les ASSIGNATIONS sont dans le fichier P16F84.inc. Ce fichier
contient la valeur de toutes les CONSTANTES que nous allons utiliser.
Il se trouve dans « C:\Program Files\Microchip\MPASM Suite ».
Ouvrez ce fichier, une fois dépassée la zone de commentaires, vous verrez des lignes du style:
FSR EQU H'04'
Cette ligne signifie tout simplement que FSR est EGAL à 0x04. Autrement dit, lorsque vous
utiliserez FSR dans une instruction, MPASM® interprétera FSR comme étant 0x04 (0x04 étant
tout simplement l’adresse de FSR dans la mémoire du PIC®. H’04’ est une autre méthode
autorisée pour exprimer un nombre hexadécimal, tout comme 04h.).
Remarque: Si vous ne mettez rien devant le nombre (04 par exemple), le compilateur le prend
comme étant un nombre en décimal, mais il faut vérifier la configuration (pour modifier la
configuration choisissez EDIT puis PROPERTIES et ensuite Tooltips et choisissez le type de
format par défaut.).
4. La directive CONFIG
La directive de configuration commence par « __CONFIG ». Cette partie contient les fameux «
fusibles » qui fixent le fonctionnement du PIC.
Les valeurs écrites dans cette zone seront intégrées dans le fichier «led.hex » pour signaler au
programmateur les valeurs à encoder aux adresses spécifiques du PIC.
Si le programme contient les informations relatives à ces fusibles de configuration, aucun
problème ne va se poser car lors du chargement du fichier dans votre programme de pilotage du
programmateur, ces informations seront automatiquement prises en compte et le programmateur
se configurera correctement.
Lorsque ces informations sont absentes du fichier « .hex », il faut alors définir « à la main » l’état
de ces fusibles au niveau de votre logiciel de pilotage du programmateur.
Voici les valeurs et leurs définitions :
Code protection ON : protection de la
CP_ON mémoire de programme contre une lecture
non autorisée
CP_OFF Code protection OFF
PWRTE_ON Timer reset sur power on en service (72 ms)
PWRTE_OFF Timer reset hors-service
WDT_ON Watch-dog en service
WDT_OFF Watch-dog hors service
LP_OSC Oscillateur quartz basse vitesse
XT_OSC Oscillateur quartz moyenne vitesse
HS_OSC Oscillateur quartz grande vitesse
RC_OSC Oscillateur à réseau RC

5. Les assignations
INTERMASK EQU H'0090' ; Masque d'interruption
; Interruptions sur RB0 (exemple)
Les assignations se comportent comme une simple substitution. Au moment de l’assemblage,
chaque fois que l’assembleur va trouver une assignation, il la remplacera automatiquement par sa
valeur.
Un autre avantage est que si vous remplacez la valeur d’une assignation, le changement sera
effectif pour tout le programme.
6. Les définitions
Les « DEFINE » fonctionnent comme les assignations mais ces derniers sont réservés pour les
valeurs et les « DEFINE » » pour remplacer un texte plus complexe.
Une définition est construite de la manière suivante : La directive #DEFINE, suivie par le nom
que l’on désire utiliser, puis la chaîne à substituer.
Exemple :
#DEFINE monbit PORTA,1

7. Les macros
La macro se compose d’un nom écrit en première colonne, suivi par la directive «macro» et
commence à la ligne suivant la portion de code qui constitue la macro. La fin de la macro est
définie par la directive « endm») (end of macro).
8. La zone des variables
Toute zone définie par l’utilisateur commence avec la DIRECTIVE CBLOCK, suivie par
l’adresse du début de la zone.
La zone RAM librement utilisée commence à l’adresse 0X0C.
CBLOCK 0x00C ; début de la zone variables
On peut utiliser 68 emplacements mémoire en suivant la syntaxe suivante :
Nom de la variable suivi du signe « : » suivi de la taille utilisée
9. Les étiquettes
Ce sont des noms qu’on choisit et qui sont des REPERES pour le programme. L’assembleur les
remplacera par l’adresse du programme à l’endroit où elles sont positionnées.

10. La directive ORG


La directive ORG, suivie de l’adresse, précise à quelle adresse les instructions qui suivent seront
placées dans le PIC.
Il est important de savoir qu’après un reset ou une mise sous tension, le PIC démarre toujours à
l’adresse 0X00 : Le début du programme doit se situer à partir de cette adresse.
Remarque: L’adresse 0X04 est réservée pour les interruptions donc il nous reste pas beaucoup
de place pour mettre notre programme. La solution est de faire un saut vers l’emplacement qui va
contenir le programme principal.
Exemple :
org 0x000 ; Adresse de départ après reset
goto init ; Adresse 0: initialiser

Vous aimerez peut-être aussi