PIC : COURS ASSEMBLEUR I) Fonctions de base dune machine informatique Contenir de faon permanente les tches excuter (mmoire programme) en ROM ou sur support magntique. Contenir de faon temporaire des donnes (mmoire de travail) en RAM. Permettre un dialogue avec lextrieur (circuit dinterface entre/sortie) : PIA- ACIA- TIMER PIO- USART SIO- UART. Effectuer des oprations arithmtiques et logiques lmentaires (UAL, en anglais ALU). Organiser des transits dinformations (unit de contrle : U.C.) Cadencer les diffrentes informations (Horloge) Pointer ltape du programme en cours (P.C. : compteur programme, en anglais Program Counter). II) Schma fonctionnel dune machine informatique U.A.L. Mmoires Unit de contrle Horloge Interface de sortie Interface d entre P1 Pn P 1 P n DMA DMA
A) Pn : Priphriques dentres Clavier Souris Joystick Ecran tactile Lecteur de bande magntique Lecteur de cartes Chanes dacquisition de donnes Crayon optique B) Registres mmoires A accs dit alatoire cest dire, temps daccs indpendant de lemplacement de la donne stocke. Lecture seule : ROM PROM REPROM RAM (lecture & criture) : Statique Dynamique Page n1/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
C) Mmoires de masse Accs squentiel : Bandes magntiques Accs alatoire : Disquettes Disques durs Cdroms D) Pn : Priphriques de sortie Dispositifs de visualisation : DELs Affichage alphanumrique Ecran vido Imprimante Table traante Synthtiseur vocal Lecteur disquette III) Architecture dun systme microprocesseur A) Structure : P 6809 MOTOROLA Mmoires Circuits d interface entre/sortie Bus de donnes bidirectionnel Bus d adresses unidirectionnel 8 16 Bus de contrle Extrieur (UCT) CPU Central Processing Unit
B) Notion de programme source et programme objet Programme source : Traduction de lalgorithme dans un langage comprhensible par la machine informatique (BASIC, PASCAL, C, FORTRAN, COBOL, ALGOL, PL1, ADA, LOGO, LSE, DELPHI, etc ...). Programme objet : Traduction du programme source en instructions codes en binaire, seul langage excutable par le microprocesseur. Page n2/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
Passage du programme source au programme objet : Binaire Programme objet en Matriel Mode de traduction Programme source crit en Binaire Hxadcimal Mnmonique Langage volu: * Basic * Pascal * C Conversion Hxadcimal/binaire Assembleur (logiciel) Dsassembleur (logiciel) Interprteur (logiciel) Ligne ligne chaque excution Compilateur (logiciel) Globalement une seule fois P
C) Plan mmoire du PIC16F648A
Page n3/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
Mapping mmoire du PIC16F648A. Le pic16F648A est un microcontrleur. Cest un microprocesseur qui possde de la RAM, ROM et divers priphriques dentres/sorties. Un microcontrleur peut donc tre utilis seul, car il est lui seul une machine informatique. Un microprocesseur, PENTIUM, 6809, Z80, etc..., ne peut fonctionner seul, il a ncessairement besoin de ROM et de RAM externes. Le pic16F648A fait partie de la famille Mid-Range de chez Microchip qui utilise des mots de 14 bits. Les PICs sont des processeurs de la famille RISC (Reduce Instructions Set Construction), cest dire ce sont des processeurs jeu dinstruction rduit mais trs rapide en excution (en gnral 1 cycle machine par instruction traite). La plage mmoire adressable est de 4096 mots de 14 bits et donc ne gre que 12 des 13 bits dadresses (A11 A0). Page n4/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
Page n5/12
Architecture dun microcontrleur de la famille pic16F648A. Nous pouvons identifier de la mmoire RAM, EEPROM, de la mmoire Flash pour le programme. Il y a 3 TIMERS pour concevoir des monostables ou astables de prcision. Il y a un USART, qui permet de concevoir des liaisons sries (tel quune RS232 par exemple) et utilisant RB1 et RB2 pour lmission-transmission. Il y a 8 level-stack (cest dire une pile systme limite 8 sauts). Il y a 2 ports bidirectionnels. Il y a deux comparateurs de tensions analogiques. Cours pic16F648A S.T.I. Gnie Electrique option Electronique
D) Registre fonction spciale (Special Function Register : SFR) : Les registres fonction spciales sont utiliss par le microprocesseur et les priphriques internes. Ils sont stocks dans la RAM statique, ce qui limite 8 bits (et non 14 bits) ces registres. Les SFRs sont toujours stocks dans les 32 premiers octets de chaque page (bank). Registre W : Le registre W est le registre de travail sur 8 bits pour raliser des oprations arithmtiques ou logiques. Pointeur de pile S : Le pointeur de pile S est un ensemble de registre sur 13 bits. Sur les PICs, il y a 8 mots de 13 bits, ce qui limite le nombre maximal dinterruption ou dappel des sous-programmes. Le pointeur de pile S mmorise une adresse, cest dire le contenu du compteur programme. Attention, elle nest pas manipulable, exclusivement rserve au microprocesseur. Compteur programme ou PC : Le compteur programme, PC, indique ladresse du prochain code binaire 14 bits traiter. Le registre PC est constitu de deux registres, un registre PCL constitu de 8 bits et un registre PCLATH constitu de 5 bits. Le registre PC fait donc 13 bits qui correspond 8192 mots de 14 bits mais dans notre cas limit 4096 mots de 14 bits (voir doc du pic16F648A). Registre dtat (Status Register) : Le registre dtat est un registre sur 8 bits. Chaque bit une signification particulire :
Le bit C (Carry) : C est mis 1 lorsquune opration arithmtique gnre une retenue. Il est galement utilis comme indicateur derreur lors dune multiplication ou dune division, et sert lors de certaines oprations de dcalage ou rotation qui peuvent passer par son intermdiaire ou non. Le bit Z (Zro) : Z est mis 1 lorsque le rsultat de linstruction excut est nul. Les bits RP1 et RP0 : Bits indiquants sur quelle page (bank), le microprocesseur travail en adressage direct (seul 7 bits dadresses sont ncessaires). RP1 RP0 Description 0 0 bank 0 (adresse 00h-7Fh) ou page 0 0 1 bank 1 (adresse 80h-FFh) ou page 1 1 0 bank 2 (adresse 100h-17Fh) ou page 2 1 1 bank 3 (adresse 180h-1FFh) ou page 3 Le bit IRP : Bit indiquant sur quelle page (bank), le microprocesseur travail en adressage indirect (8 bits dadresses sont ncessaires). 0 : bank 0, 1 (adresse 00h-FFh) ou page 0 et 1 1 : bank 2,3 (adresse 100h-1FFh) ou page 2 et 3 E) Ports Port A : RA0 RA7 sont des entres du port parallle A. Ces lignes sont bidirectionnelles (sauf pour RA5 en entre seulement). De plus elles sont partages avec certains priphriques du pic (voir doc constructeur en fonction des besoins). Nous considrons que sur notre systme dapprentissage, elles sont en entre car il y a 4 interrupteurs de connects (RA0 pour SW1 RA3 pour SW4). Page n6/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
Port B : PB0 PB7 sont des sorties du port parallle B. Ces lignes sont bidirectionnelles. De plus elles sont partages avec certains priphriques du pic (voir doc constructeurs en fonction des besoins). Nous considrons que sur notre systme dapprentissage, elles sont en sortie car il y a 6 LEDs rouges de connectes (RB0 pour LD1 RB5 pour LD6) IV) Editeur assembleur : A) Fentre dun diteur standard pour raliser un programme en assembleur : ; programme qui permet d'allumer une LED ; sur la sortie RB0 #include <p16F84.inc> ; initialisation des noms de variables
ORG 0x00 ; dbut de programme goto main ; saut au programme principal goto irq ; saut au programme interruption main nop ; TRIS est le registre de direction des ports bsf STATUS,5 ; banque 1 pour accder au registre TRIS movlw B'00000000 ; 0 = sortie movwf TRISB ; le port b est entirement en sortie
bcf STATUS,5 ; retour la banque 0 bsf PORTB,0 ; met le bit 0 du port B 1 (allume la LED)
end ; fin de programme
Champ commentaire Champ tiquette Commentaire car symbole ; en dbut de ligne Champ oprande Champ oprateur On remarque que l'cran se dcoupe en 4 champs : Champ tiquette Champ oprateur (code mnmonique) ou directive d'assemblage Champ oprande Champ commentaire Pour passer d'un champ un autre, il suffit de mettre un espace avec la touche espace ou TAB. Plusieurs espaces accols correspondent un seul et mme espace. Attention on ne peut sauter des champs, c'est dire passer du champ tiquette au champ oprande. Seul le champ commentaire est un peu particulier. Si un champ quelconque est rempli, on peut aller directement au champ commentaire. Il y a une exception, lorsqu'aucun champ n'est rempli, l'diteur considre que toute la ligne est un champ commentaire, d'o la condition de mettre ; en dbut de ligne. On n'utilisera pas d'tiquette comportant plus de 8 caractres du code ASCII standard. B) Directives d'assemblage : END Fin du fichier contenant le programme. EQU Permet de donner des quivalences (pour des valeurs). Ex: FSR EQU H04. Et dans le programme cela donnera : MOVF FSR ; Ecriture de W dans FSR #DEFINE Permet de donner des quivalences (pour des chanes de caractres). Ex: #DEFINE MONBIT PORTA,1. Et dans le programme cela donnera : Page n7/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
BCF MONBIT ; Met le bit 1 du port A 0 (quivalent BCF PORTA,1) ORG Dtermine o le compilateur doit mettre les codes qui suivent cette commande. Ex: ORG 0x00. _CONFIG Dtermine les fusibles qui fixeront le fonctionnement du PIC. Ex: _CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_ON. _CP_OFF : Aucune protection en lecture du pic (choix par dfaut). _WDT_ON : WatchDog en service par dfaut (le mettre OFF sur nos Kits). _PWRTE_ON : Dlai de dmarrage du pic la mise sous tension (OFF par dfaut). _HS_ON : Oscillateur quartz grande vitesse (_XT_OSC sur nos kits : quartz lent) (_RS_OSC par dfaut). _BODEN_ON : Reset du pic si chute de tension (choix par dfaut). _LVP_ON : Utilisation de RB3 comme broche de programmation sous 5V(choix par dfaut). _CPD_OFF : Non protection en criture de la zone EEPROM (choix par dfaut). _DATA_CP_OFF : Non protection en criture de la zone RAM (choix par dfaut). _WRT_ON : Non protection de la mmoire FLASH (li _CP_) (choix par dfaut). _DEBUG_OFF : Non utilisation dun dbuggeur (avec RB6 et RB7) (choix par dfaut). #INCLUDE Dtermine pour le compilateur toutes les quivalences lis la structure du pic (pour lassembleur). Aussi utilis en programmation en langage C. Cela permet alors dinclure des fonctions ou procdures en C dj ralises. Ex: #INCLUDE <pic16F648A>. CBLOCK Dtermine un bloc mmoire pour rserver des octets pour diffrentes variables. ENDC Fin de la dclaration pour le bloc mmoire. Ex : CBLOCK 0x20 ; Dclaration dun bloc mmoire ladresse 0x20 TEMP : 1 ; Rservation dun octet ladresse 0x20 TABLE : 8 ; Rservation de 8 octets partir de ladresse 0x21 ENDC ; Fin de la dclaration du bloc mmoire V) Modes dadressage A) Adressage inhrent : Ce mode nest pas proprement parler un mode dadressage, mais tous les fabricants le dcomptent comme tel. Les instructions agissent sur les registres internes du microprocesseur. Les instructions comportent donc un code oprateur seul sans oprande. CLRW Met le registre de travail W 0 et met le bit Z 1. B) Adressage immdiat ou littral : Dans ce mode dadressage, le code oprateur est suivi par la donne manipuler, code oprande. Linstruction est donc compos dun code oprateur et dun code oprande seul. Une instruction littral se reconnat facilement car elle se termine toujours par LW. MOVLW 53 Stocke la valeur 53 en dcimale dans le registre W. MOVLW B00110101 Stocke la valeur 53 en dcimale dans le registre W. SUBLW 5Ah Soustraction 5A hxadcimal -W rsultat dans W. Remarque : les chiffres hexadcimaux peuvent tre crit aussi de la manire suivant : 0x5A ou H5A. Page n8/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
C) Adressage direct : Par dfaut, le microcontrleur travail en adressage direct. Le code oprateur est suivi dun octet non sign qui est ladresse effective pour une page prcise (bank 0 3) de la donne, ou oprande, manipuler. Il peut tre suivi dune valeur prcde par une virgule. Ne codant ladresse que sur un octet, mais seul les 7 premiers bits (A6 A0) de poids faible sont pris en compte. Il nest donc possible que dadresser les 128 premiers octets dune page donne. Le choix de la page se faisant par RP1 et RP0 qui sont respectivement les bits 8 et 7 dadressage. Ladresse 00h ladresse 7Fh, de lespace adressable du microcontrleur sera accessible pour la page 0 (voir page 3 pour les diffrentes pages). ANDWF 0x20,0 ET logique entre W et le contenu de ladresse 0x20, rsultat dans W. ANDWF 0x20,1 ET logique entre W et le contenu ladresse 0x20, rsultat ladresse 0x20 (autre criture possible ANDWF 0x20 car par dfaut la valeur vaut 1 si absente). MOVF 0x7F,0 Lecture du registre 0x7F (RAM), rsultat dans W. MOVF 0x7F Lecture du registre 0x7F (RAM), rsultat dans 0x7F. Permet de tester le bit Z. D) Adressage indirect : Dans ce mode dadressage, loprande est constitue par INDF. Il suffit de spcifier la valeur dadresse sur 8 bits dans le registre FSR (Attention, les adresses sont sur 8 bits et non sur 7 bits comme pour ladressage direct). Pour complter ladresse, il faut spcifier le neuvime bit (bit IRP du registre STATUS). MOVF INDF,0 Lecture du registre point par la valeur contenu dans INDF, rsultat dans W. VI) Jeux dinstructions :
Page n9/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
Page n10/12
Rsum en franais des mnmoniques addlw k : Additionne une constante k W. Rsultat dans W. addwf f,d : Additionne une variable ladresse f avec W. Rsultat dans f si d=1 ou dans W si d=0. andlw k : ET logique entre une constante k et W. Rsultat dans W. andwf f,d : ET logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans W si d=0. bcf f,b : Met le bit b de f 0. bsf f,b : Met le bit b de f 1. btfsc f,b : Teste le bit b de f. Si ce bit vaut 0 alors linstruction suivante est ignore (instruction NOP excut la place). Cours pic16F648A S.T.I. Gnie Electrique option Electronique
btfss f,b : Teste le bit b de f. Si ce bit vaut 1 alors linstruction suivante est ignore (instruction NOP excut la place). call k : Appel a un sous/programme (PC mmoris dans la pile systme). clrf f : Met 0 dans f. clrw : Met 0 dans W. clrwdt : Fait un reset du chien de garde (registre WDT counter mis 0). comf f,d : Complment 1 de f. Rsultat dans f si d=1 ou dans W si d=0. decf f,d : Dcrmente de 1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. decfsz f,d : Dcrmente de 1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. Si le rsultat de lopration vaut 0, alors linstruction suivante est ignore (instruction NOP excut la place). goto k : Branchement inconditionnel ladresse k. incf f,d : Incrmente de +1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. incfsz f,d : Incrmente de +1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. Si le rsultat de lopration vaut 0, alors linstruction suivante est ignore (instruction NOP excut la place). iorlw k : OU logique entre une constante k et W. Rsultat dans W. iorwf f,d : OU logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans W si d=0. movf f,d : Met la variable contenu ladresse f dans W si d=0 ou dans f si d=1. movlw k : Met la variable k dans W movwf f : Met la variable contenu dans W ladresse f. nop : Aucune opration effectu (1 cycle machine excut). retfie : Fin du programme interruption (dpile la pile systme). retlw k : Fin dun sous/programme (associe call). Met la variable k dans W. return : Fin dun sous/programme (associe call). rlf f,d : Rotation logique gauche de la variable stocke ladresse f. Rsultat dans f si d=1 ou dans W si d=0. rrf f,d : Rotation logique droite de la variable stocke ladresse f. Rsultat dans f si d=1 ou dans W si d=0. sleep : Met le microprocesseur en mode sommeil. sublw k : Soustraction : k-W, rsultat dans W. subwf f,d : Soustraction : une variable ladresse f-W, rsultat dans f si d=1 ou dans W si d=0. swapf f,d : Permute les deux quartets de f. Rsultat dans f si d=1 ou dans W si d=0. xorlw k : OU Exclusif entre une constante k et W. Rsultat dans W. xorwf f,d : OU Exclusif entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans W si d=0. VII) Structures algorithmiques fondamentales A) Dfinitions : Organigramme : (en anglais flowchart, se dit aussi ordinogramme) cest un schma synoptique qui analyse dans le dtail les diffrentes phases du problme traiter. Algorithgramme : Cest la transposition dun organigramme en tches simplifies. Page n11/12 Cours pic16F648A S.T.I. Gnie Electrique option Electronique
B) Structure linaire ou squentielle : DEBUT FIN Saisir la valeur de u et la mmoriser Saisir la valeur de I et la mmoriser Afficher le rsultat P = U x I Ex: P = U x I
C) Structure itrative : 1) Structure itrative : boucle tant que : Tant que < condition ralise > Faire quelque chose Rpter Condition ralise? Faire quelque chose Sortie Oui
Remarque : Le travail peut ne jamais tre effectu. 2) Structure itrative : boucle jusqu : Faire quelque chose Jusqu ce que < condition ralise > Condition ralise? Faire quelque chose Sortie Non
Remarque : Le travail effectuer lest au moins une fois. D) Structure alternative : ? FIN Candidat dclar Reu Candidat refus Candidat admis au 2 e groupe dpreuves Ex: Un candidat est reu au bac si 10 M 10 M ? 8 M FIN