Autre cours
27 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
27 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Présentation Introduction Depuis l 'arrivée du premier microprocesseur dans les années 70 ( déjà plus de 30 ans ), conçu tm par INTEL les progrès en intégration de composants n 'ont cessé d 'évoluer, faisant de ce fait augmenter la puissance de calcul et la rapidité des microprocesseurs. Ce premier microprocesseur le "4004" deviendra peut être célèbre, en effet la sonde pionner 10 lancée dans les années 70 a quitté le système solaire en emportant avec elle le fameux circuit. Un microprocesseur peut être assimilé à un circuit logique complexe exécutant une à une des ordres ( instructions ) enregistrés dans une mémoire de programme externe. Un microprocesseur ne fonctionne jamais seul on lui associe toujours des périphériques d 'entrées- sorties afin de pouvoir exécuter une fonction particulière et dialoguer avec "l 'extérieur" ( prise en compte de l 'état d 'un capteur , commande d 'un relais , mémoire programme de l 'application , etc.. .). Le grand avantage de cette logique programmable est que la modification d 'une fonction ou d'une tâche ne nécessite pas de câblage supplémentaire, mais uniquement un nouveau programme à loger en mémoire. L 'arrivée du micro contrôleur qui est un microprocesseur auquel on a intégré les périphériques d 'entrées sorties, va faire que les montages et applications deviennent encore plus simple à mettre en oeuvre, avec un gain de temps, de vitesse et un coût réduit ( le pic 16f84 est à environ 50 f ). Le ...

Informations

Publié par
Nombre de lectures 57
Langue Français

Extrait

 
 
Présentation  Introduction  Depuis l 'arrivée du premier microprocesseur dans les années 70 ( déjà plus de 30 ans ), conçu r INTELtmles progrès en intégration de composants n 'ont cessé d 'évoluer, faisant de ce pa fait augmenter la puissance de calcul et la rapidité des microprocesseurs. Ce premier microprocesseur le "4004" deviendra peut être célèbre, en effet la sonde pionner 10 lancée dans les années 70 a quitté le système solaire en emportant avec elle le fameux circuit. Un microprocesseur peut être assimilé à un circuit logique complexe exécutant une à une des ordres ( instructions ) enregistrés dans une mémoire de programme externe. Un microprocesseur ne fonctionne jamais seul on lui associe toujours des périphériques d 'entrées- sorties afin de pouvoir exécuter une fonction particulière et dialoguer avec "l 'extérieur" ( prise en compte de l 'état d 'un capteur , commande d 'un relais , mémoire programme de l 'application , etc.. .). Le grand avantage de cette logique programmable est que la modification d 'une fonction ou d'une tâche ne nécessite pas de câblage supplémentaire, mais uniquement un nouveau programme à loger en mémoire. L 'arrivée du micro contrôleur qui est un microprocesseur auquel on a intégré les périphériques d 'entrées sorties, va faire que les montages et applications deviennent encore plus simple à mettre en oeuvre, avec un gain de temps, de vitesse et un coût réduit ( le pic 16f84 est à environ 50 f ). Le PIC 16 F84 de la société Microchip est un micro contrôleur faisant partie de la famille RISC ( reduced instruction set computer ) dont les caractéristiques sont vitesse d 'exécution et   jeu d 'instruction réduit ( le pic 16f84 ne comporte que 35 instructions ). La mémoire de programme C ' est dans cette mémoire que vous allez "loger" votre programme une fois compilé, la caractéristique essentielle de cette mémoire est qu 'elle conserve ses données même hors tension ( heureusement sinon il faudrait recharger le programme assez souvent... ) Le pic 16f84 possède une mémoire de programme interne ( périphériques intégrés ... ) de 1024 emplacements mémoire comprenant chacun 14 bits ( taille d 'une instruction ). Cette mémoire est du type "flash" , c' est de là que vient le "f" de 16f84...
La RAM Lorsque un programme "tourne" il fait souvent des calculs intermédiaires par exemple un décomptage pour une temporisation, pour stocker ces calculs temporaires les micro contrôleurs possèdent de la mémoire RAM interne qui en cas de coupure secteur perdent bien évidemment leur contenu ( à ne pas confondre avec la mémoire de programme de type flash ). Le PIC 16F84 intègre 68 octets de RAM. On appel également ces emplacements mémoire des registres à usage général. L ' E²PROM Il arrive parfois que l 'on souhaite mémoriser des événements survenants au cours d 'un programme en exécution, par exemple une alarme. Certain micro contrôleur ont la possibilité de sauvegarder cet événement dans une mémoire non volatile c'est à dire une mémoire qui conserve les données même hors tension , un peu comme la mémoire de programme au détail près que l 'on ne peut pas écrire dans la mémoire de programme lors de l ' exécution du programme. Le PIC 16F84 met à votre disposition 64 octets de mémoire E²PROM.  Le Watchdog Sous ce nom étrange nous allons découvrir une fonction capable de surveiller le bon fonctionnement du programme que le micro contrôleur exécute. Le rôle du Watchdog ( ou chien de garde ) est de "réseter" le micro contrôleur si l 'on ne remet pas à zéro périodiquement ( à intervalle définissable ) un registre interne grâce à l 'instruction clrwdt ( clear watchdog ), si le programme tourne par exemple dans une boucle sans fin ( c'est un bug ! ) , il ne peut remettre à 0 le chien de garde et ainsi le micro contrôleur se reset afin de relancer le programme. Cette fonction est bien sûr désactivable au moment de la programmation du micro contrôleur, c' est la directive d 'assemblage __config qui définie cette fonction. Le TIMER Un timer est un registre interne au micro contrôleur , celui-ci s 'incrémente au grès d' un horloge, ce registre peut servir par exemple pour réaliser des temporisations, ou bien encore pour faire du comptage ( par l 'intermédiaire d 'une broche spécifique : RA4/TOKI ). Le PIC 16F84 possède un timer sur 8 bits ( il compte jusqu ' à 256 ) configurable par logiciel.  Les entrées - sorties Que serait un micron contrôleur ne possédant pas de broche d 'entrées- sorties ? ( difficile d 'y répondre ) . Lorsque vous envisagez de créer une application, en générale celle-ci commande un relais, une led ou bien tout autre actionneur, de même votre programme qui tourne peut évoluer selon des informations extérieures , l 'état d 'un contact par exemple ou bien d 'un interrupteur. Pour vous aidez à réaliser votre application le PIC 16F84 possède 13 entrées sorties configurables individuellement broches RA0 à RA4 et RB0 à RB7    Le brochage du PIC 16 F 84 RA0 à RA4 : broches d 'entrée-sortie configurables RB0 à RB7 : broches d 'entrée-sortie configurables
OSC1 - OSC2 : oscillateur ( quartz par exemple ) MCLR/VPP : broche de raz VSS : 0V VDD : +5V    
 
Pour résumer ...  Le PIC 16F84 est un micro contrôleur comportant un jeu d 'instructions réduit La mémoire de programme est du type mémoire flash elle peut loger un programme de 1024*14 bits La mémoire ram utilisateur est de 68 octets La mémoire E²prom est de 64 octets Le pic 16f84 possède un timer intégré 13 entrées - sorties configurables individuellement Un watchdog intégré   
 
  Présentation  Le timer du PIC 16 F84 est un registre 8 bits qui à la fonction d 'un compteur programmable. Ce compteur s 'incrémente soit au rhytme de l 'horloge du quartz divisée par 4 ou bien sur un front montant ou descendant appliqué sur la broche d 'entrée ( RA4), tout ceci est programmable à l 'aide de bits que l 'on écrira dans un registre nommé Registre OPTION. Dès que le compteur à atteint la valeur de 255 le bit TOIF du registre INT CON passe à 1 pour provoquer éventuellement une interruption, le registre TIMER ne s'arrête pas il recompte à partir de 0. Trois autres bits du registre OPTION vont nous permettent de diviser le signal issu du quartz par une valeur comprise entre 2 et 256 par multiple de 2 ( 2,4,8,16,32,64,128,256). Pour les lecteurs possédant le coffret cliquer sur simulations internes puis sur timer. Un exemple de programme téléchargeable réalise un clignotant à l 'aide du TIMER, on fait changer l 'état d' une led ( clignoter) à chaque fois que le TIMER passe par 0.
    Pour résumer ...  Le bitRTSdu registre OPTION permet soit de sélectionner l 'horloge interne ( issue du quartz ) ou bien le signal appliqué sur la broche RA4. Le bitRTEdu registre OPTION permet de définir le choix du front montant ou descendant du signal appliqué sur la broche RA4. Le bitPSAsi on utilise le diviseur programmabledu registre OPTION permet de définir Les bitsPS0,PS1,PS2du registre OPTION définissent le diviseur à appliquer ( 2,4,8,16,32,64,128) selon le tableau 1
 
  
   
Vue des bits PS2 PS1 et PS0 du registre OPTION  
Bit PS2 0 0 0 0 1 1 1 1 
Bit PS1 0 0 1 1 0 0 1 1 
Bit PS0 0 1 0 1 0 1 0 1 
Valeur de la division interne 2 4 8 16 32 64 128 256 
Tableau 1
 
 
Le jeu d 'instruction du PIC 16F84 
A 
ADDLW :W et une valeur immédiate , la somme est stockée en Additionner le registre W ( la série PIC 16C5x ne comprend pas cette instruction) ( W ) + v -> ( W )  Nombre de cycle d'horloge : 1    Indicateurs positionnés :    C si retenue ( C=1 ) DC si la somme des quatre bits de poids faible est > 15 ( DC=1 ) Z si la somme est nulle ( Z=1 ) Syntaxe : Addlw 0x0F W + Ox0F le résultat est stocké dans W ADDWF :somme est stockée en ( d ) Additionner le registre W et ( f ) , la ( W ) + ( f ) -> ( d ) f est l'emplacement mémoire d un registre ' Nombre de cycle d'horloge : 1    Indicateurs positionnés : C si retenue ( C=1 ) DC si la somme des quatre bits de poids faible est > 15 ( DC=1 ) Z si la somme est nulle ( Z=1 ) d est paramétrable si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f       Exemple : #define W 0 on affecte 0 à la variable W utilisée ci - après Movf valeur1, W on met la valeur 1 dans le registre W
Addwf valeur2, W valeur 1 + valeur 2 stocké dans W    ANDLW" entre le contenu du registre W et une constante c : Opération " ET ( W ) AND c -> ( W )    Nombre de cycle d'horloge : 1 Indicateurs positionnés : Z si le résultat stocké dans W est nul ( Z=1 ) Exemple : Port_A q on affec _ sée ci - après e u 05h te 05 à la variable Port A utili #define W 0 on affecte 0 à la variable W utilisée ci - après Movf Port A, W on met le contenu du port A dans le registre W _ Andlw 55h on masque un bit sur 2 ( 55 h = 0101 0101 ) ANDWF : Opération " ET " entre le contenu du registre W et f le résultat est en d ( W ) AND ( f ) -> ( d ) Nombre de cycle d'horloge : 1 Indicateurs positionnés : Z si le résultat stocké dans W ou f est nul ( Z=1 ) d est paramétrable si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f    Exemple : R_etat equ 03h on affecte 03 à la variable R etat utilisée ci - après _ Movlw 00000111b on met le contenu 00000111 dans le registre W Andwf R_etat, F on masque et on configure le registre d' état        
    BCF Efface le bit spécifié de f : 0 ( f{b} ) ->
B 
f est l'emplacement mémoire d 'un registre Nombre de cycle d'horloge : 1 Indicateurs positionnés : Aucun Exemple : Port_b equ 06h on affecte 06 à la variable Port B utilisée ci - après _ BCF Port_b, 2 on met à 0 le bit 2 du port B BSF : Positionne le bit "b" de f à 1 1 -> ( f{b} )       Nombre de cycle d'horloge : 1 Indicateurs positionnés : Aucun Exemple : Port_b equ 06h on affecte 06 à la variable Port_B utilisée ci - après _ , 3 met à 1 le bit 3 du port B BSF Port b on BTFSC : Vérifier l'état du bit b de f et sauter l'instruction suivante si b = 0 "Saute l' instruction si" ( f{b} ) = 0 Nombre de cycle d'horloge : 1 ou 2 Indicateurs positionnés : Aucun Exemple : Ex1 equ 0Ah on affecte le registre 0A à la variable ex1 utilisée ci - après #define flag_ lag Z à la variable flag_Z utilisée ci - après Z 02h on affecte le f R_etat equ _ - après 03h on affecte 03 à la variable R etat utilisée ci Incf Ex1 on incrémente la variable Ex1 ( registre 0A ) Btfsc R_etat,flag Z on vérifie si il y a un débordement ( Z=1 ) _ Movlw 54h si débordement ( Z=1 ) alors on met la valeur 54 dans le registre W BTFSSsauter l'instruction suivante si b = 1 Vérifier l'état du bit b de f et  :  "Saute l' instruction si" ( f{b} ) = 1 Nombre de cycle d'horloge : 1 ou 2 Indicateurs positionnés : Aucun    Exemple :
Ex1 equ 0Ah on affecte le registre 0A à la variable ex1 utilisée ci - après #define flag_Z 02h on affecte le flag Z à la variable flag_Z utilisée ci - après R etat equ 03h on affecte 03 à la variable R etat utilisée ci - après _ _ Incf Ex1 on incrémente la variable Ex1 ( registre 0A ) Btfss R_etat,flag_Z on vérifie qu ' il n' y a pas de débordement ( Z=0 ) Movlw 54h si aucun débordement ( Z=0 ) alors on met la valeur 54 dans W             
C 
    CALL Appel du sous programme s : ( PC ) + 1 -> Haut de la pile  s -> ( PC )   Nombre de cycle d'horloge : 2 Indicateurs à positionnés : PA0 à PA2 ( pour les PIC 16 C 5x ) Registre PCLATH pour les autres PIC Exemple : _ eq 3 à la variable R_etat utilisée ci - après R etat u 03h on affecte 0 #define f 1 on affecte la valeur 1 à la variable f #define Pa0 05h on affecte la valeur 05 à la variable Pa0 Movlw 00111111b on charge un masque pour modifier le registre d' etat bsf R_etat, Pa0 on met le bit 5 du registre d état ( PA0 ) à 1 Andwf R_etat, f on sélectionne la page 1 pour un PIC 16 C 56 ( 0200 - 03FF ) _ ppe sous programme sous_P à la 2 eme page de programme Call sous P A l du          CLRF Efface le contenu de ( f ) : 00 -> ( f ) Nombre de cycle d'horloge : 1 Indicateurs positionnés : Z=1 Syntaxe : CLRF registre
CLRW : Efface le contenu du registre W 00 -> W Nombre de cycle d'horloge : 1    Indicateurs positionnés : Z = 1 Syntaxe : CLRW
CLRWDT : Réinitialise le temporisateur du chien de garde 00 -> WDT 00 -> prédiviseur de WDT Nombre de cycle d'horloge : 1 Indicateurs positionnés : TO = 1 PD = 1 Syntaxe : CLRWDT COMF : Stocke en d le complément de f f/ -> (d) f est l'emplacement mémoire d 'un registre    Nombre de cycle d'horloge : 1 Indicateurs positionnés : Z si résultat stocké dans W ou f est nul ( Z=1 )
d est paramétrable si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f
Exemple : Dans cet exemple on charge une valeur dans un registre ici 55h puis on complémente cette valeur qui devient alors AAh.
Reg_temp equ 0Ah OA correspond à l'adresse d' un registre temporaire #define f 1 on affecte la valeur 1 à la variable f Movlw 01010101b on charge 55h dans le registre W Movwf Reg_temp on met W dans le registre temporaire Comf Reg_temp, f on complémente le contenu du registre temporaire       
 
D 
DECF Décrémente f et range le résultat dans d : (f) - 1 (d) -> f est l'emplacement mémoire d 'un registre
Nombre de cycle d'horloge : 1 Indicateurs positionnés : Z si résultat stocké dans le registre W ou f est nul ( Z=1 ) d est paramétrable si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f Exemple : Dans cet exemple on charge une valeur dans un registre ici 01h puis on décrémente cette valeur qui devient alors 00h ( flag Z = 1 dans cet exemple ) . R g_ emp equ 0Ah OA correspond à l'adresse d' un registre temporaire e t #define f 1 on affecte la valeur 1 à la variable f Movlw 01h on charge 01h dans le registre W Movwf Reg_temp on met W dans le registre temporaire Decf Reg_temp, f on décrémente le contenu du registre temporaire DECFSZ : Décrémente f et sauter l 'instruction suivante si f = 0
(f) - 1 -> ( d ) et sauter l' instruction suivante si f=0 f est l'emplacement mémoire d 'un registre Nombre de cycle d'horloge : 1 ou 2 Indicateurs positionnés : Aucun d est paramétrable si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f             
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents