µC_partie3 (1)

Embed Size (px)

Citation preview

  • 7/23/2019 C_partie3 (1)

    1/3

    Sciences et technologies lectriques Niveau 2me Sciences de lingnieur Unit ATC 26

    LQTMY-Tanger M.SALMANI

    Le C PIC 16F84 : 3mepartie

    1. Introduction

    Les tapes ncessaires permettant de voir un programme s'excuter sur un C 16F84 sont :

    1. Ecrire un programme en langage assembleur dans un fichier texte et le sauvegarder avec l'extension asm.

    2. Compiler ce programme avec l'assembleur MPASMfourni par MicroChip. Le rsultat est un fichier avecl'extension hex contenant une suite d'instruction comprhensible par le C.

    3. Transfrer le fichier hex dans la mmoire programme du C (Flash ROM) l'aide d'un programmateuradquat. On peut utiliser les programmateurs de MicroChip ou tout autre programmateur achet ou ralispar soit mme.

    4. Mettre le C dans son montage final, mettre sous tension et vrifier le fonctionnement.MicroChip propose gratuitement l'outil de dveloppement MPLAB qui regroupe l'diteur de texte, lecompilateur MPASM, un outil de simulation et le logiciel de programmation.

    On utilisera MPLAB pour crire, compiler et ventuellement simuler les programmes, ensuite on lestransfrera laide du programmateur JDMpilot par le logiciel ICPROG, les deux sont disponiblesgratuitement sur le Web.

    2. Directives de MPASM

    Les directives de l'assembleur sont des instructions qu'on ajoute dans le programme et qui serontinterprtes par l'assembleur MPASM. Ce ne sont pas des instructions destines au C.

    21. Directives les plus utilises

    LIST : Permet de dfinir un certain nombre de paramtres comme le processeur utilis (p), la basepar dfaut pour les nombres (r) ainsi que d'autres paramtres.

    Exemple :LIST p=16F84, r=dec.

    #INCLUDE: Permet d'insrer un fichier source. Par exemple le fichier p16F84.inccontient la dfinitiond'un certain nombre de constantes comme les noms des registres ainsi que les noms de certains bits du C16F84.Exemple :#INCLUDE "p16f84.inc" ou #INCLUDE p16f84.inc.

    __CONFIG : Permet de dfinir les 14 fusibles de configuration qui seront copis dans le registre deconfiguration lors de l'implantation du programme dans le C.Exemple :__CONFIG B'11111111111001' ou __CONFIG H'3FF9'.Remarque :Si le fichier p16f84.inc a t insr, on peut utiliser les constantes prdfinies :

    __CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF

    EQU : Permet de dfinir une constante.Exemple :XX EQU 0x20.Chaque fois que le compilateur rencontrera la valeur XX, il la remplacera par la constante 0x20. a peuttre une constante s'il s'agit d'une instruction avec adressage immdiat, ou d'une adresse s'il s'agit d'uneinstruction avec adressage direct.

    #DEFINE : Dfinit un texte de substitution.Exemple :#DEFINE monbit PORTA,1Chaque fois que le compilateur rencontrera monbit, il le remplacera par PORTA,1.

    ORG : Dfinit la position dans la mmoire programme partir de laquelle seront inscrites les instructionsqui suivent cette directive ORG.

    Exemple : ORG0 ; adresse du dbut du programme principal.ORG4 ; adresse du dbut du sous-programme dinterruption.

  • 7/23/2019 C_partie3 (1)

    2/3

    Sciences et technologies lectriques Niveau 2me Sciences de lingnieur Unit ATC 27

    LQTMY-Tanger M.SALMANI

    Le C PIC 16F84 : 3mepartie

    CBLOCK ENDC : Dfinit un bloc de variables log dans la zone mmoire RAM accessible par lutilisateur.Exemple : CBLOCK 0x0C ; zone mmoire RAM accessible par lutilisateur dbute ladresse 0x0C

    Var1 : 1 ; zone de 1 octet

    Var2 : 8 ; zone de 8 octets

    ENDCEND : Indique la fin du programme.

    22. Format des nombres

    L'assembleur reconnat les nombres en dcimal, hexadcimal, binaire ou octal. Pour prciser la base il faututiliser les prfixes prciss dans le tableau de la figure 1. On peut l'aide de la directive LIST dfinir unformat par dfaut. Si par exemple on place linstruction LIST r=dec au dbut du programme, tousles nombres sans prfixe seront interprts en dcimal.

    23. Structure d'un programme crit en assembleur

    Un programme crit en assembleur doit respecter une certaine syntaxe et un certain nombre de rgles afinqu'il soit facile lire et dbuguer :

    1. Quelques lignes de commentaire prcisant la fonction du programme.

    2. Tout ce qui commence la premire colonne est considr comme une tiquette (Label) permettant defaire des sauts et des appels aux sous-programmes.

    3. Tout ce qui suit un point virgule est considr comme un commentaire non interprt par le compilateur.

    4. Un programme apparat donc comme un texte crit sur 3 colonnes :

    La colonne de gauche contient les tiquettes.La colonne du milieu contient les instructions.La colonne de droite contient les commentaires.

    5. Si le programme utilise des interruptions, mettre l'adresse 0, adresse du branchement du C lors dunReset ou dune mise sous tension, une instruction de branchement au dbut du programme principal.Exemple : ORG 0

    GOTO dbut

    6. Ecrire le sous-programme d'interruption l'adresse 4 ou mettre cette adresse un branchement aumme sous-programme.Exemple : ORG 4

    Ecrire le sous-programme d'interruption ici.

    RETFIERemarque :Si le programme ne gre pas les interruptions, on peut se passer des tapes 5 et 6.

    Figure 1

  • 7/23/2019 C_partie3 (1)

    3/3

    Sciences et technologies lectriques Niveau 2me Sciences de lingnieur Unit ATC 28

    LQTMY-Tanger M.SALMANI

    Le C PIC 16F84 : 3mepartie

    7. Ecrire les sous-programmes (s'il y en a). Chaque procdure commence par une tiquette qui reprsenteson nom, et se termine par l'instruction Return.

    8. Ecrire le programme principal (commenant par l'tiquette dbut : si les tapes 4 et 5 sont prsentes).

    9. Terminer avec la directive END.Exemple :La figure 2 montre un extrait du programme crit en assembleur.

    Figure 2