Presentation Du Pic 16f877 PDF
Presentation Du Pic 16f877 PDF
Presentation Du Pic 16f877 PDF
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
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
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
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.
Page 3 sur 22
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)
Page 4 sur 22
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
Page 5 sur 22
BTS ELT(LTMBBO)
Page 6 sur 22
BTS ELT(LTMBBO)
Page 7 sur 22
BTS ELT(LTMBBO)
Structure Interne
Les lments constitutifs du PIC 16f877
Page 8 sur 22
BTS ELT(LTMBBO)
Page 9 sur 22
BTS ELT(LTMBBO)
Page 10 sur 22
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.
Page 11 sur 22
BTS ELT(LTMBBO)
Page 12 sur 22
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
BTS ELT(LTMBBO)
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 ;
Page 14 sur 22
BTS ELT(LTMBBO)
3. Instructions de contrle (W) K une donne immdiate (valeur) ; L adresse (ou une tiquette)
Page 15 sur 22
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 :
Page 16 sur 22
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 :
Page 17 sur 22
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
Page 18 sur 22
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
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
Page 20 sur 22
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
Page 21 sur 22
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
Page 22 sur 22