Sie sind auf Seite 1von 22

Architecture et programmation des Microcontrleurs Architecture interne dun microprocesseur

BTS ELT(LTMBBO)

Les differents constituants dun microprocesseur (p) peuvent tre regroupes dans deux blocs principaux, l'unit de calcul et l'unit de control.

RI : registre dinstruction PC : compteur de programme RE : registre dtat Lunit de calcul Elle est constitue de lUnit Arithmtique et logique UAL et dun certain nombre de registre ALU : unit arithmtique et logique Les registres : Ce sont des mmoires lmentaires pouvant contenir chacun un oprande. Les registres peuvent tre de 8, 16 ou 32 bits. Lunit de contrle C'est l'unit de control qui supervise le droulement de toutes les oprations au sein du p. Elle est constitue principalement de : Horloge : C'est l'horloge qui gnre les signaux qui permettent le cadencement et la synchronisation de toutes les oprations. Le compteur programme PC : (Program Counter) contient l'adresse de la case mmoire ou est stocke la prochaine instruction charger. Au debut de l'excution d'un programme, le PC est initialise a l'adresse mmoire ou est stocke la premire instruction du programme. Le compteur programme est incrmente chaque fois qu'une instruction est charge dans le p. Le registre d'instruction RI : C'est la ou le p stocke l'instruction en cours d'excution. Le dcodeur : C'est lui qui va "dcoder" l'instruction contenue dans RI et gnrer les signaux logiques correspondant et les communiquer au squenceur. Le squenceur : Il gre le squencrent des oprations et gnre : les signaux du bus de commande ( RD,WR , etc.), les signaux internes aux P (gestion des registres, de lA.L.U., aiguillages des bus internes, etc.). Prof : M.Rahal RHAROUSS Page 1 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Le squenceur est ralis avec une structure qui comprend une mmoire ROM intgre. Celle-ci contient des micro-instructions ( ne pas confondre avec les instructions contenues dans la mmoire programme). La mmoire des micro-instructions nest pas accessible lutilisateur. Chacune des instructions du p ncessite plusieurs micro instructions et donc plusieurs cycles dhorloge. Le registre d'tat : Le registre d'tat est forme de plusieurs bits appels drapeaux ou indicateur (Flags) qui sont positionnes par l'ALU pres chaque opration. On dispose d'un jeu d'instructions conditionnes par l'tat de differents drapeaux. Par exemple lindicateur Z indique quand il est positionne que le rsultat de l'opration est gal a Zro. Lindicateur C indique que l'opration a gnre une retenue. Le bit N indique que le rsultat est ngatif

Structure dun systme minimum p


On appelle systme minimum P lensemble comprenant le P et les composants indispensables son fonctionnement. Un systme minimum a P est constitue de : une unit centrale de traitement (CPU - Central Processing Unit) : le P. une unit de stockage du programme et des donnes : les mmoires. une unite dchanges : les interfaces dE/S, Lunite dchange est vue par lunit centrale comme un ensemble de registres accessibles. Les informations vers lextrieur transitent par certains de ces registres. Les diffrentes untes sont runies par des canaux dchanges : les bus. Pour lorganisation des diffrentes untes, il existe deux architectures : larchitecture Von Neumann larchitecture Harvard Larchitecture Von Neumann

Le P utilise le mme canal dchange pour lire les instructions et manipuler des donnes : le bus de donnes. Les tailles les plus courantes des bus de donnes sont : 8 bits pour les petites applications embarques 16 bits pour les applications embarques de moyenne complexit 32 bits, 64 bits pour les gros calculateurs, les ordinateurs et consoles de jeux Prof : M.Rahal RHAROUSS Page 2 sur 22

Architecture et programmation des Microcontrleurs


Les adresses dlivres par le P sont vhicules par le bus dadresses Larchitecture Harvard

BTS ELT(LTMBBO)

La CPU utilise 2 canaux d'change pour lire les instructions et manipuler les donnes : le bus instruction (ou bus programme) et le bus de donne. Les tailles de ces bus sont en gnral diffrentes. La taille la plus courante du bus de donnes est de 8 bits. Les deux bus distincts programme et donne permettent de raliser simultanment une recherche d'une instruction et l'excution de l'instruction prcdente.

Type darchitecture dun microprocesseur


Architecture CISC (Complex Instruction Set Computer) Cest une architecture avec un grand nombre dinstructions. Le processeur doit excuter des taches complexes par instruction unique. Donc, pour une tache donne, une machine CISC excute un petit nombre dinstructions mais chacun ncessite un pus grand nombre de cycles dhorloge (Intel 8086, Pentium, Motorola 68000, PowerPC). Actuellement les deux technologies convergent : les processeurs CISC (Pentium par exemple) utilisent des instructions de plus en plus simples et excutent parfois plusieurs instructions en un cycle dhorloge. Architecture RISC (Reduced Instruction Set Computer) Architecture dans la quelle les instructions sont en nombre rduit (chargement, branchement, appel sous-programme) et elles sont frquemment utilises. Le but est dliminer les instructions rarement employes et de consacrer les ressources matrielles excuter les instructions relativement simples en un cycle dhorloge et muler les autres instructions laide des squences bases sur les instructions lmentaires. On trouve donc une meilleure performance une vitesse donne (le gain en performance envisageable est important mais dpend de la qualit du compilateur). Processeurs RISC : PowerRISC (IBM/Motorola), SPARC (SUN), PA-RISC (HP).

Prof : M.Rahal RHAROUSS

Page 3 sur 22

Architecture et programmation des Microcontrleurs Les processeurs Spcialises

BTS ELT(LTMBBO)

Microcontrleurs (C) Ils contiennent un CPU, de la RAM, de la ROM, quelques ports dE/S parallles, des ports sries, des compteurs programmables (timers), des CAN/CNA, des interfaces pour rseaux de terrain ... Ils sont en gnral utilises pour contrler des simples machines (appareils lectromnagers, lecteurs de carte puce...). Exemple de circuits : 80C186XX (80186, 16 bits, Intel) 68HC11, 68HC12 (6809, 8 bits, Motorola) 68HC16 (68000, 16 bits, Motorola) PIC 16F84, 16F877 (Microchip) Digital Signal Processor (DSP) Ce sont des processeurs ddies aux traitements des signaux numriques. Une architecture particulire leur permet un traitement efficace des fonctions complexes telles que FFT, convolution, filtrage numrique ... Exp. : TMS320 (Texas Instrument) 2100 et 21000 (Analog Device) 56000 (Motorola) PIC30F4011 (Microchip)

Prof : M.Rahal RHAROUSS

Page 4 sur 22

Architecture et programmation des Microcontrleurs Prsentation du microcontrleur PIC 16F877

BTS ELT(LTMBBO)

Introduction Les PICs sont des microcontrleurs architecture RISC (Reduce Instructions Construction Set), ou encore composant jeu dinstructions rduit. L'avantage est que plus on rduit le nombre dinstructions, plus leur dcodage sera rapide ce qui augmente la vitesse de fonctionnement du microcontrleur. La famille des PICs est subdivise en 3 grandes familles : La famille Base-Line, qui utilise des mots dinstructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (et dont font partie les 16F8xx), et la famille High-End, qui utilise des mots de 16 bits (les PIC 18Fxxx). On trouve aussi des familles de dsPIC pour le traitement du signal et dautres microcontrleurs spcialiss !! Dans ce cours, on va tudier les microcontrleurs de la catgorie 16F87x (x=3, 4, 6, 7) qui sont les PIC les plus performants de la famille mid-range de Microchip Les lments essentiels du PIC 16F877 sont : Une mmoire programme de type EEPROM flash de 8K mots de 14 bits, Une RAM donne de 368 octets, Une mmoire EEPROM de 256 octets, 05 ports d'entre sortie, A (6 bits), B (8 bits), C (8 bits), D (8 bits) et E (3 bits) Convertisseur Analogiques numriques 10 bits 8 entres slectionnables, USART, Port srie universel, mode asynchrone (RS232) et mode synchrone SSP, Port srie synchrone supportant I2C Trois TIMERS avec leurs Prescalers, TMR0, TMR1, TMR2 Deux modules de comparaison et Capture CCP1 et CCP2 15 sources d'interruption, Gnrateur d'horloge, quartz (jusqu 20 MHz) Protection de code, Tension de fonctionnement de 2 5V, Jeux de 35 instructions

Prof : M.Rahal RHAROUSS

Page 5 sur 22

Architecture et programmation des Microcontrleurs Description et structure interne

BTS ELT(LTMBBO)

Prof : M.Rahal RHAROUSS

Page 6 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Prof : M.Rahal RHAROUSS

Page 7 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Structure Interne
Les lments constitutifs du PIC 16f877

Architecture matriel de Harvard Architecture RISC des instructions

Minimum pour dmarrer


Lhorloge Le rle de lhorloge est de cadencer le rythme dexcution des instructions. Il y a 4 modes possibles pour raliser lhorloge : LP Low-Power Crystal XT Crystal/Resonator HS High-Speed Crystal/Resonator RC Rsistor/Capacitor On utilise plus souvent un quartz (de 1MHZ jusqu 20MHZ) reli avec deux condensateurs de filtrage Circuit de RESET On utilise un circuit de reset externe qui permet la mise la masse de lentre MCLR qui permet linitialisation du PIC (Master clear) laide dun bouton poussoir. Un niveau bas sur lentre MCLR entrane une rinitialisation complte du microcontrleur. Dune faon gnrale ce signal est activ la mise sous tension. Un bouton poussoir est souvent rajout afin quune rinitialisation manuelle soit possible. Lorsque le signal de RESET est activ, tous les registres sont initialis et le compteur programme se place une adresse spcifique appele Vecteur de RESET.

Prof : M.Rahal RHAROUSS

Page 8 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Les mmoires internes


Il existe trois types de mmoire : RAM pour les registres internes et les donnes ; EEPROM de donnes ; EEPROM FLASH programme (donnes aussi) Organisation de la mmoire RAM Lespace mmoire RAM adressable est de 512 positions de 1 octet chacune : 96 positions sont rserves au SFR (Spcial Function Registers) qui sont les registres de configuration du PIC. Les 416 positions restantes constituent les registres GPR (General Propose Registers) ou RAM utilisateur. Sur le 16F877, 3 blocs de 16 octets chacun ne sont pas implants physiquement do une capacit de RAM utilisateur de 368 octets.

Prof : M.Rahal RHAROUSS

Page 9 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Prof : M.Rahal RHAROUSS

Page 10 sur 22

Architecture et programmation des Microcontrleurs Accs la mmoire RAM

BTS ELT(LTMBBO)

Pour accder la RAM, on dispose de deux modes dadressage : Adressage DIRECT Avec ce mode dadressage, on prcise dans linstruction la valeur de ladresse laquelle on veut accder. Le jeu dinstruction du c ne permet ladressage des registres de la RAM que sur 7 bits (128 registres), lespace mmoire est alors dcompos en 4 bancs de 128 registres. Il faut 9 bits dadresse pour 512 octets. Le PIC complte les 7 bits par deux bits situs dans le registre STATUS. Ces bits sont appels RP0 et RP1 et doivent tre positionns correctement avant toute instruction qui accde la RAM par ladressage direct. RP1 RP0 : 00 Bank 0 RP1 RP0 : 01 Bank 1 RP1 RP0 : 10 Bank 2 RP1 RP0 : 11 Bank 3

Ladressage INDIRECT Ladressage indirect est possible en passant par un registre virtuel (INDF) dont ladresse est contenue dans le registre FSR (File Select Register) et le bit IRP du registre STATUS. Les deux types dadressage sont prsents par la figure suivante :

Mmoire programme Le PIC 16F877 possde un compteur de programme de 13 bits ce qui permet ladressage de 8K mots (instructions). Il y a deux adresses rserves : - Vecteur du RESET : 0000h adresse de dbut du programme - Vecteur dinterruption : 0004h adresse de dbut du sous programme dinterruption (sil y a !!) Le PIC possde une pile de 8 niveaux pour la sauvegarde des adresses de retours suite aux appels de S-P.

Prof : M.Rahal RHAROUSS

Page 11 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Les Registres spciaux


L'accumulateur W (registre W) LALU est une Unit Arithmtique et logique 8 Bits. Laccumulateur W est un registre de travail 8 bits, toutes les oprations deux oprandes passent par lui.

Prof : M.Rahal RHAROUSS

Page 12 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Le registre STATUS Cest le registre dtat du c, qui permet : - De lire les drapeaux (Flags) de lALU - Choix du Bank de la RAM soit en adressage directe (RP1 , RP0) ou indirecte (IRP) Les indicateurs dtat Ce sont des indicateurs qui permettent de savoir comment une instruction sest termine. Toutes les instructions nagissent pas sur les indicateurs, Z : passe 1 quand le rsultat dune instruction est nul (ZERO) C : passe 1 quand lopration a gnr une retenue (CARY) DC : passe 1 quand les 4 bits poids faibles gnrent une retenue (DIGIT CARY) Laccs ce registre par adressage directe son adresse est toujours 03h quelque soit la Bank (0,1,2 ou 3)

Les Ports dentre/sortie Le PIC 16F877 comporte 5 ports dentre/sortie : PortA : 6 lignes I/O digital ou entrs analogiques ; PortB : 8 lignes I/O digital PortC : 8 lignes I/O digital avec dautre fonctionnalits ; PortD : 8 lignes I/O digital PortE : 3 lignes I/O digital ou entrs analogiques ; Ces ports sont bidirectionnels, leur configuration se fait par des registres spcifiques (TRISx) ; par exemple TRISB configure le PortB : Bit i de TRISB = 0 bit i de PORTB configur en sortie Prof : M.Rahal RHAROUSS Page 13 sur 22

Architecture et programmation des Microcontrleurs


Bit i de TRISB = 1 bit i de PORTB configur en entre Courant max en sortie : 20mA/pin ; 200mA/port

BTS ELT(LTMBBO)

Les priphriques internes


Le 16F877 possde 3 compteurs indpendants (Timer : T0, T1, T2) 1 convertisseur analogique/numrique 10 bits pour 8 entres analogiques multiplexes 1 port srie (USART) 1 port IC 1 port SPI (pour connecter des PICs entre eux) Mmoire EEPROM de 256 octets

Le jeu dinstructions
1. Oprations sur des registres W accumulateur W ; F un registre de la RAM d = 0 W est donc la destination , d = 1 F est donc la destination Mnmonique Description Indicateurs

2. Oprations sur des bits (registres) F un registre de la RAM ; b position ( 7 0) du bit dans le registre F ;

Prof : M.Rahal RHAROUSS

Page 14 sur 22

Architecture et programmation des Microcontrleurs


3. Oprations immdiates (W) K une donne immdiate (valeur) ;

BTS ELT(LTMBBO)

3. Instructions de contrle (W) K une donne immdiate (valeur) ; L adresse (ou une tiquette)

Prof : M.Rahal RHAROUSS

Page 15 sur 22

Architecture et programmation des Microcontrleurs Programmation du microcontrleur PIC 16F877

BTS ELT(LTMBBO)

Assembleur & MPLAB MPLAB est un environnement de programmation pour les PIC conu par Microchip. MPLAB regroupe un diteur de texte, un assembleur et un outil de simulation.

Une fois quon a cr un projet et choisi un PIC (en loccurrence 16F877) en suivant les tapes du Wizard (le magicien en franais) On aura la fentre suivante :

Prof : M.Rahal RHAROUSS

Page 16 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Il faut maintenant ouvrir un fichier source (.asm) dans le quel on crira le programme en langage assembleur. NB : il faut ajouter ce fichier dans la liste des fichiers comme ceci :

Prof : M.Rahal RHAROUSS

Page 17 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Un programme en Assembleur ; Aprs un ; on peut mettre des commentaires !! list p=16f877A #include "p16f877A.inc" __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF &_BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC ;------------ Dfinition des constantes --------------;** RBPU EQU h'07' #define inter0 1 ; bouton marche ;------------ Programme principal --------------ORG 0x0000 ; l'adresse du dbut du programme est toujours '0' bsf STATUS,5 ; on met 1 le 5eme bit du registre status pour accder la Bank1 CLRF TRISC ; on met 00 dans le registre TRISC le portC est programm en sortie bcf STATUS,5 ; revenir Bank0 MOVLW 0xFF ; on met FF dans le registre W MOVWF PORTC ; allumer toutes les LED Boucle GOTO END Commentaires : Aprs un ; tout texte est ignor, c--d quon peut crire des commentaires !! boucle ; retour au dbut de la boucle

Prof : M.Rahal RHAROUSS

Page 18 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

Les directives de MPLAB : LIST permet de dfinir un certain nombre de paramtres comme le processeur utilis (p), la base par dfaut pour les nombres (r), le format du fichier hex produire (f) ainsi que d'autres paramtres. Exemple : LIST p=16F877A, r=dec, f=inhx8m INCLUDE permet d'insrer un fichier source. Par exemple le fichier p16f877A.inc contient la dfinition d'un certain nombre de constante comme les noms des registres ainsi que les noms de certain bits; exemple : INCLUDE p16f877A.inc EQU permet de dfinir une constante ou une variable : var EQU 0x20 ORG dfinit la position dans la mmoire programme partir de laquelle seront inscrites les instructions suivantes. DE pour dclarer des donns qui seront stocke dans l'EEPROM de donne au moment de l'implantation du programme sur le PIC, exemple : ORG 0x2100 DE "Programmer un PIC, rien de plus simple", 70, 'Z' END : indique la fin du programme __CONFIG permet de dfinir les 14 fusibles de configuration qui seront copis dans l'EEPROM de configuration lors de l'implantation du programme dans le PIC

CP1/CP0 1 1 : Aucune protection (_CP_OFF) 1 0 : Protection de la zone 0x1F00 0x1FFF (_CP_UPPER_256) 0 1 : Protection de la zone 0x1000 0x1FFF (_CP_HALF) 0 0 : Protection de lintgralit de la mmoire (_CP_ALL) DEBUG 1 : RB6 et RB7 sont des I/O ordinaires (_DEBUG_OFF) 0 : RB6 et RB7 sont utiliss pour le debuggage sur circuit (_DEBUG_ON) WRT 1 : Le programme peut crire dans les zones non protges par les bits CP1/CP0 (_WRT_ENABLE_ON) 0 : Le programme ne peut pas crire en mmoire flash (_WRT_ENABLE_OFF) CPD 1 : mmoire EEPROM non protge (_CPD_OFF) 0 : mmoire EEPROM protge contre la lecture externe via ICSP (_CPD_ON) LVP 1 : La pin RB3 permet la programmation du circuit sous tension de 5V (_LVP_ON) 0 : La pin RB3 est utilise comme I/O standard (_LVP_OFF) BODEN : provoque le reset du PIC en cas de chute de tension 1 : En service (_BODEN_ON) 0 : hors service (_BODEN_OFF) PWRTE : bit 3 : Dlai de dmarrage la mise en service. Attention, est automatiquement mis en service si le bit BODEN est positionn. 1 : dlai hors service (sauf si BODEN = 1) (_PWRTE_OFF) 0 : dlai en service (_PWRTE_ON) Prof : M.Rahal RHAROUSS Page 19 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

WDTE : bit 2 : Validation du Watchdog timer 1 : WDT en service (_WDT_ON) 0 : WDT hors service (_WDT_OFF) FOSC1/FOSC0 : bits 1/0 : slection du type doscillateur 11 : Oscillateur de type RC (_RC_OSC) (3K < R < 100k, C > 20 pF) 10 : Oscillateur haute vitesse (_HS_OSC) (4 Mhz 20 Mhz) 01 : Oscillateur basse vitesse (_XT_OSC) (200 kHz 4 Mhz) 00 : Oscillateur faible consommation (_LP_OSC) (32 k 200 kHz) Exemples dutilisation : __CONFIG B'11111100111001' __CONFIG H'3F39' __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC Exemples de programmation des Ports Raliser un clignotant pour une LED une certaine frquence avec la possibilit darrter le clignotement tout moment laide dun interrupteur a- Le schma

Prof : M.Rahal RHAROUSS

Page 20 sur 22

Architecture et programmation des Microcontrleurs


b- Lorganigramme

BTS ELT(LTMBBO)

C- Le programme list p=16f877A #include P16f877A.inc __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC ;------------ Dfinition des constantes --------------#define inter 0 ; bouton marche ;------------ Dfinition des registres --------------memo EQU 0x30 ; le registre temporaire memo se trouve ladresse 30h retard1 EQU 0x31 retard2 EQU 0x32 ;------------ Programme principal --------------ORG 0x00 ; l'adresse du dbut du programme est toujours '0' Bsf STATUS,5 ; on met 1 le 5eme bit du registre status pour accder ; ; la 2eme page mmoire ( pour trisa et trisb ) MOVLW 0x00 ; on met 00 dans le registre W MOVWF TRISC ; on met 00 dans le port C il est programm en sortie MOVLW 0xFF ; on met FF dans le registre W MOVWF TRISE ; on met FF dans le port il est programm en entre MOVLW h'06' ; le convertisseur AD dsactiv !!! MOVWF ADCON1 bcf STATUS,5 ; on remet 0 le 5eme bit du registre status pour accder ;la 1eme page mmoire CLRF PORTC ; on met 0 sur le port C ( leds ) CLRF memo ; on met 0 dans le registre memo

Prof : M.Rahal RHAROUSS

Page 21 sur 22

Architecture et programmation des Microcontrleurs

BTS ELT(LTMBBO)

;-------------------- Boucle principale ---------------------debut ; etiquette (Label) btfss PORTE,inter ; interrupteur ( marche ) appuy ? si oui on continu sinon goto Marche ;va debut clrf PORTC ; etteindre la led goto debut Marche COMF memo,W movwf PORTC movwf memo call tempo GOTO debut ; retour au dbut de la boucle ;------------ Sous Programme de temporisation longue --------------tempo MOVLW 0xff ; on met ff dans le registre W MOVWF retard1 ; on met W dans le registre retard1 MOVWF retard2 ; on met W dans le registre retard2 attente DECFSZ retard1,F ; on dcrmente retard1 et on saute la prochaine instruction si GOTO attente ; le registre retard1 = 0 sinon retour tempo movlw 0xFF ; on recharge retard1 movwf retard1 DECFSZ retard2,F ; on dcrmente retard2 et on saute la prochaine instruction si GOTO attente ; le registre retard2 = 0 sinon retour tempo RETURN END ; fin programme

Prof : M.Rahal RHAROUSS

Page 22 sur 22