Vous êtes sur la page 1sur 131

ROYAUME DU MAROC

OFPPT
Office de la Formation Professionnelle et de la Promotion du Travail DIRECTION RECHERCHE ET INGNIERIE DE FORMATION

RSUM THORIQUE & GUIDE DE TRAVAUX PRATIQUES MODULE N:7 MICROCONTROLEUR

SECTEUR : GENIE ELECTRONIQUE SPCIALIT : MMOAMPA NIVEAU : T.S.

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Document ralis par : Nom et prnom PANTAZICA LUCRETIA EFP DR CDC- Electrotechnique DRIF

Rvision linguistique Validation

OFPPT / DRIF G.E. -2-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

MICROCONTROLEUR

OFPPT / DRIF G.E. -3-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

OBJECTIF OPRATIONNEL DE PREMIER NIVEAU


DE COMPORTEMENT

COMPORTEMENT ATTENDU

Pour dmontrer sa comptence le stagiaire doit savoir programmer en langage C ou langage orient objet un microcontrleur selon les conditions, les critres et les prcisions qui suivent.

CONDITIONS DVALUATION

Individuellement A partir de directives et de logiciels

laide : Dun micro-ordinateur Du Kit de programmation microcontrleur De la documentation des logiciels utiliss Dun microcontrleur.

CRITRES GNRAUX DE PERFORMANCE Utilisation scuritaire du poste de travail Utilisation adquate des principales instructions ou algorithmes Manipulation adquate des diffrents menus Utilisation mthodique de la documentation Choix appropri du type de microcontrleur Programmation conforme un cahier des charges Travail soign

( suivre)

OFPPT / DRIF G.E. -4-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

OBJECTIF OPRATIONNEL DE PREMIER NIVEAU DE COMPORTEMENT


PRCISIONS SUR LE COMPORTEMENT ATTENDU A. Utiliser correctement un ordinateur et ses priphriques, et connaitre les principaux langages informatiques. CRITRES PARTICULIERS DE PERFORMANCE - Prsentation optimale de la structure interne et externe dun ordinateur. - Description des langages informatiques. - Utilisation correcte des priphriques et des interfaces dentres / sorties. - Matrise la structure de base dun microprocesseur et dun microcontrleur. - Prsentation optimale du rle de chaque bloc composant dun microprocesseur et dun microcontrleur. - Utilisation adquate des instructions assembleur pour les microprocesseurs de la famille 8086 et pour les microcontrleurs 16F87X. - Ralisation des petits programmes pour les microcontrleurs 16F87X. - Utilisation correcte dun diteur de texte. - Utilisation correcte des compilateurs. - Ralisation des simulateurs ou des simulations pour tester le programme sur lordinateur. - Utilisation correcte de lassembleur en ligne. - Manipulation adquate de fonctions externes. - Utilisation correcte de lditeur de liens. - Lcriture correcte dune fonction de la bibliothque. - Utilisation adquate du logiciel. - Implantation dun algorigramme - Identification des entres sorties du microcontrleur et des variables internes utiles

B. Raliser un diagnostique prcis sur un systme microprocesseur et microcontrleurs.

C. Programmer un microcontrleur.

D. Utiliser un logiciel de programmation pour les microcontrleurs

OFPPT / DRIF G.E. -5-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

OBJECTIFS OPRATIONNELS DE SECOND NIVEAU


LE STAGIAIRE DOIT MATRISER LES SAVOIRS, SAVOIR FAIRE, SAVOIR PERCEVOIR OU SAVOIR TRE JUGS NECESSAIRES AUX APPRENTISSAGES DIRECTEMENT REQUIS POUR LATTEINTE DE LOBJECTIF DE PREMIER NIVEAU, TELS QUE :

Avant dapprendre utiliser correctement un ordinateur et ses priphriques, et connaitre les principaux langages informatiques (A) :
1. Identifier la structure interne et externe dun ordinateur.

2. Connaitre les langages informatiques. 3. Identifier et utiliser les priphriques et les interfaces dentres / sorties. Avant dapprendre raliser un diagnostique prcis sur un systme microprocesseur et microcontrleurs (B) : 4. Maitriser la structure de base dun microprocesseur et dun microcontrleur. 5. Prsenter le rle de chaque bloc composant dun microprocesseur et dun microcontrleur. 6. Utiliser les instructions assembleur pour les microprocesseurs de la famille 8086 et pour les microcontrleurs 16F87X. 7. Raliser des petits exemples de programmes en C. Avant dapprendre programmer des PIC (C) : 8. Savoir utiliser un diteur de texte, un assembleur, un compilateur et un simulateur. 9. Prsenter la composition dun programme en C intgr. 10. Utiliser les fonctions externes et les lditeur de liens. 11. crire une fonction de la bibliothque. Avant de comprendre lutilisation du logiciel de programmation pour les microcontrleurs. (D) : 12. Prsenter le logiciel de programmation. 13. Savoir raliser et Implanter un algorigramme. 14. Identifier les entres/sorties du microcontrleur et des variables internes utiles.

OFPPT / DRIF G.E. -6-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TABLE DES MATIRES

Chapitre 1. Lordinateur et son environnement .........8 1. Structure dun ordinateur ......8 2. Langages informatiques...15 Chapitre 2. Microprocesseur....17 A. Systme base du microprocesseur 6809.....19 B. Exemple : microprocesseur 80286 ...27 Chapitre 3. Microcontrleur....35 I. Considrations gnrales .........35 1. Architecture de microcontrleur35 2. Exemple : PIC 16F628..38 II. Les microcontrleurs 16F87X ........42 1. Caractristiques des microcontrleurs 16F87X ....41 2. Organisation interne42 3. Description des diffrentes broches44 4. Brochage des microprocesseurs 16F87X ...46 5. Lunit centrale................50 6. Jeu dinstruction..55 7. Les modes dadressage56 8. Les portes dentres/sorties.58 9. Le convertisseur analogique numrique..66 10. Les timers..72 11. La liaison srie USART ou SCI78 12. Les interruptions85 Chapitre 4. Programmation des PICs.89 1. Ecrire un programme PIC (16F87X)...89 2. Programmation en utilisant le logiciel EDITALGO....93 ANNEXE 1 ...110 ANNEXE 2....111 ANNEXE 3....113 Travaux Pratiques...114 T.P. 1. ...115 T.P.2. 116 T.P.3. 117 T.P.4. 119 T.P.5. 122 T.P.6. ....125 Bibliographie..129 Bibliographie 143 OFPPT / DRIF G.E. -7-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Chapitre 1

LORDINATEUR ET SON ENVIRONEMENT


1. STRUCTURE DUN ORDINATEUR
En 1935 1950 deux mathmaticiens ont jou un rle important dans l'invention de l'ordinateur. Il s'agit de l'anglais Alan TURING et de l'amricain John von NEUMANN. Ce dernier a donn son nom l'architecture des ordinateurs modernes. Elle fut dfinie dans un texte qu'il crivit en 1945. On insiste sur l'architecture de Von Neumann, par la suite, pour dcrire de faon simple le fonctionnement d'un ordinateur, d'un systme microprocesseur, ou d'un microcontrleur. Bien que cette architecture ne soit pas la seule mise en uvre de nos jours, elle permet d'avoir une vision simple des choses. Autre architecture : architecture de Harvard. Structure d'un ordinateur.

Un ordinateur est donc constitu : d' Une Unit Centrale (UC ou CPU en anglais) C'est l'unit centrale de traitement des informations. Son rle est d'aller chercher, automatiquement les instructions du programme en mmoire et de les excuter. d' Une Mmoire Centrale, qui sert au stockage des donnes et des programmes. de Priphriques : ou units d'Entres/Sorties qui servent communiquer avec l'extrieur (ex : clavier, cran, souris, ...).

Le systme ainsi constitu doit respecter les 4 rgles suivantes : 1. Les instructions et les donnes sont dans une mmoire unique, banalise, accessible en lecture/criture. 2. Les contenus de la mmoire sont accessibles par leurs adresses. 3. La commande de l'ensemble, l'excution des oprations se fait de manire squentielle (sauf indication expresse). L'excution d'une opration doit tre termine avant le lancement de la suivante. 4. L'unit de traitement contient un jeu complet des oprations de l'algbre de Boole. OFPPT / DRIF G.E. -8-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

REMARQUES : L'Unit Centrale est le coeur du systme. C'est un systme lectronique, mais, seule, l'Unit Centrale ne peut rien faire, il faut lui donner un programme excuter. Il faut donc de la mmoire pour contenir le programme excuter et les donnes sur lesquelles on dsire travailler. L'ensemble Unit Centrale et Mmoire peut dj fonctionner, mais cela ne servirait rien : il faut que l'on puisse donner des ordres au programme et rcuprer des rsultats. Il faut que le systme communique avec l'extrieur, d'o la prsence indispensable des priphriques.

A. Unit Centrale.
Elle peut tre dcompose en 2 sous ensembles : 1. L'Unit de Contrle (ou unit de commande, ou automate) : Son rle est d'aller chercher une instruction en mmoire centrale, d'analyser cette instruction (dcodage de l'instruction ), d'excuter cette instruction, de localiser l'instruction suivante ( opration souvent implicite : adresse immdiatement suprieure celle de l'instruction en cours d'excution, sauf pour les instructions de branchement ). L'Unit de Contrle contient donc : un dcodeur d'instruction. un squenceur et des circuits de commandes. 2. Un ensemble de circuits lectroniques, commands par l'unit de contrle et permettant : d'changer des informations avec la mmoire centrale et avec le monde extrieur (avec les priphriques). d'effectuer des oprations sur les donnes (Unit Arithmtique et logique : U.A.L. ou A.L.U. en anglais). de mmoriser l'adresse de la prochaine instruction dans un registre particulier PC (Compteur de programme (Program Counter)). de mmoriser le rsultat d'oprations dans des mmoires spciales : les Registres de travail. EXEMPLE : L'unit centrale lit l'instruction LD A,100 en mmoire centrale. Elle dcode l'instruction : il faut charger le registre A avec la valeur contenue dans la case mmoire n 100. L'unit centrale lance l'excution : demande de lecture de la mmoire l'adresse 100. Elle rcupre la valeur lue et enfin range cette valeur dans A. Elle met jour le compteur de programme PC, et l'on continue : lecture de l'instruction suivante ... Une horloge (un circuit oscillateur dlivrant des impulsions une certaine frquence) sera ncessaire pour excuter les oprations squentiellement. Plus la frquence sera grande, plus l'unit centrale travaillera vite ! (N.B.: Frquence = 8 MHz se lit 8 Mega Hertz et veut dire 8 millions d'impulsions par seconde.)

B. Mmoires.
Les programmes, les donnes, vont tre stocks en binaire, (suite de 0 et de 1). Les diffrents types de mmoires :

1.

Les mmoires mortes ( lecture seule) : Ces mmoires ont la caractristique importante de conserver l'information mme lorsqu'elles ne sont pas alimentes, et ceci pendant des annes et mme indfiniment pour certaines. OFPPT / DRIF G.E. -9-

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

R.O.M.: de Read Only Memory. On en peut que les lire. Ces mmoires sont crites et mises en place par le constructeur (BIOS des PCs, par ex.) P.R.O.M.: Programmable Read Only Memory. On les appelle aussi mmoires fusibles, ou encore OTP (One Time Programmable). On achte ces mmoires vierges (vides de tout programme) et on peut les programmer l'aide d'un programmateur (une simple carte lectronique) reli un PC via un port srie (COM1, COM2,...) ou via le port parallle. On les place ensuite sur le systme auquel elles sont destines. Si l'on a fait une erreur dans le programme, ou si l'on dsire le modifier, la mmoire est bonne pour la poubelle, on ne peut pas la programmer une deuxime fois ! Il faut en prendre une nouvelle. La programmation de ce type de composant consiste faire "claquer" des fusibles (qui sont en fait des jonctions semi-conductrices). On comprend que lorsque le fusible est dtruit il est impossible de faire machine arrire ! On les utilise donc lorsque l'on a un programme parfaitement au point, dfinitif. Elles ont l'avantage d'tre peu coteuses. E.P.R.O.M.: Erasable Programmable Read Only Memory. Comme les PROM, on peut crire dans ces mmoires (avec un dispositif similaire), mais, si le programme n'est pas correct, il est possible d'effacer le programme, puis de l'crire nouveau (ceci un trs grand nombre de fois) C'est bien sur trs intressant, et ce sont ces mmoires que l'on va utiliser pour faire du dveloppement. Ces mmoires ont une petite fentre transparente par laquelle on voit la puce. Cette fentre sert effacer la mmoire. On claire le composant avec des UV, dans une boite (effaceur UV), pendant une quinzaine de minutes environ. Il faut noter que l'effacement (environ 15 min) et l'criture (quelques minutes) sont des oprations relativement longues. (Principe utilis : utilisation de transistors FAMOS : Floating gate Avalanche injection Metal Oxide Silicium.) E.E.P.R.O.M. : Electrically Erasable PROM, ou aussi mmoires FLASH ces mmoires sont effaables par impulsions lectriques. L'effacement est plus rapide que lors d'une exposition aux UV, et il est possible d'effacer et de rcrire la mmoire in situ.

2. Les mmoires vives ( lecture et criture) : On les appelle, de faon impropre, R.A.M. (Random Access Memory : mmoire accs alatoire). Les PROMs, EPROMs, ... sont, elles aussi accs alatoires ! Ces mmoires perdent les informations contenues ds que l'on coupe leur alimentation. (sauf s'il s'agit de mmoires secourues (pile, accu)). On distingue : - les Mmoires Statiques (S.R.A.M.), - les Mmoires Dynamiques (D.R.A.M.). Les mmoires statiques sont ralises l'aide de circuits bistables (ou bascules RS). Les mmoires dynamiques conservent l'information, 0 ou 1, dans une petite capacit, qui se dcharge au cours du temps (courants de fuite). Ces mmoires ncessitent donc un dispositif de rafrachissement pour maintenir l'information. Ce sont les plus utilises car elles permettent une grande densit d'intgration. Caractristiques importantes des mmoires : - Leur CAPACITE : c'est la quantit d'information que le composant peut contenir. Cette capacit est souvent donne en bits. Exemple : Mmoire 8k = mmoire 8k bits = 1 k octets. - ORGANISATION, ADRESSAGE : comment on rcupre l'information. OFPPT / DRIF G.E. - 10 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

En parallle (tous les bits d'un coup) et en srie (bit a bit) L'adresse est donne en une fois, en 2 fois (adressage multiplex) - TEMPS D' ACCES : c'est le temps qui s'coule entre la demande d'une valeur en mmoire et linstant o cette valeur est disponible.

C. Les priphriques d'entres/sorties.


Les priphriques vont permettre la communication avec le systme Unit Centrale + Mmoires.

On distingue 3 types de priphriques : les priphriques d'Entres, les priphriques de Sorties, et ceux qui font les 2 (Entres/Sorties). 1. Les priphriques d'entres sont ceux qui apportent des informations au systme ; les priphriques de sorties envoient des informations l'extrieur du systme. Exemple des priphriques d'entres : le clavier ( indispensable ), la souris, un light pen, une table digitaliser, un scanner, un lecteur de cartes, un lecteur de codes barre,... N.B. Pour un petit systme microcontrleur, un interrupteur, un inverseur, un bouton poussoir, un rotacteur, sont des priphriques d'entres ! 2. Priphriques de sorties : les classiques : un cran (ou moniteur), une imprimante, une table traante, ... N.B. Pour un petit systme microcontrleur, un voyant, une LED, des afficheurs 7 segments, un HP ( haut Parleur ), sont des priphriques de sorties !

3. Priphriques d'entres / sorties ou mmoires de masse : car ils vont servir stocker des masses d'informations. On mettra dans cette catgorie les lecteurs de disquette, les disques durs, les lecteurs enregistreurs de bande magntique, ... N.B. Les priphriques ne sont pas relis directement l'ensemble Unit Centrale / Mmoires, il faut passer par une INTERFACE. (carte interface, circuit interface, coupleur de priphrique ). Il y a quelques annes, une interface tait une carte lectronique qui pouvait tre de taille importante, de nos jours, une interface se rduit souvent un seul circuit intgr, programmable. L'interface se charge de l'adaptation des signaux lectroniques, de grer le dialogue entre le systme et le priphrique (protocole d'changes). OFPPT / DRIF G.E. - 11 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

On peut donc dtailler un peu le diagramme de Von Neumann, de la faon suivante :

D. Les "Bus".
L'Unit Centrale doit pouvoir communiquer avec les mmoires et les priphriques. Par exemple, pour crire une donne en mmoire, l'U.C. doit d'abord spcifier l'adresse de la mmoire, puis envoyer la donne, et, en dernier lieu, envoyer un signal d'criture qui validera la mmorisation de la donne. Tous ces signaux seront vhiculs par les "Bus", ensembles de "conducteurs", sur lesquels viennent se brancher les mmoires, les interfaces des priphriques. On distingue 3 types de "bus" : Le bus d'adresses. Le bus de donnes. Le bus de contrle (pour les signaux de service).

E. Interface dentre / sortie


Le micro-ordinateur se transforme assez facilement en un automate programmable partir de linstant ou il dispose de cartes dentre / sorties. Des cartes peuvent tre de deux types diffrents : les cartes dentres / sorties numriques et les cartes dentres / sorties analogiques. a) Cartes dentres / sorties numriques Des interfaces sont charges de mmoriser ltat dun certain nombre dentres. Ces tats peuvent tre transfrer lunit centrale pour une exploitation quelconque. Lopration inverse est galement possible : lcriture dun certains nombre dtats de la CPU vers les sorties. OFPPT / DRIF G.E. - 12 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Le nombre dentres / sorties nest pas limit que par la conception de la carte dinterface. La conception dune carte 32 entres 32 sorties ne pose pas de problme majeur. Du point de vue lectrique, les entres / sorties peuvent tre : compatible TTL, boucles de courant 0-20 mA ou 4-20 mA, opto isoles, relais, etc.

Ces cartes relient le mode extrieur au micro-ordinateur. La conception de lautomate se rsume lcriture dun programme dacquisition des valeurs dentres, dun certain nombre de calculs et dcriture des valeurs de sortie. b) Cartes dentr / sortie analogiques La plupart des capteurs dlivrent des signaux analogiques : capteurs de temprature, force, pression, position,etc. Les grandeurs analogiques sont pralablement converties en numriques pour transiter sur le bus du PC et tre traits par la CPU. De la mme manire, il peut tre intressant de disposer en sortie dune information analogique destine par exemple un moteur ; pour les entres on dispose donc de convertisseurs analogiquesnumriques ; pour les sorties, les convertisseurs sont de type numriques-analogiques. Les caractristiques essentielles de ses cartes sont la rsolution : largeur du mot sur lequel le rsultat est exprim, en gnral compris entre 8 et 16 bits ; cadence dchantillonnage, variable en fonction du type de convertisseur mis en service.

F. Interface rseau
Les cartes dentre / sortie sont un premier exemple de connexion du microordinateur au monde extrieur. Un deuxime type de connexion est la connexion de micro-ordinateurs entre eux. On peut distinguer deus types de connexions, les connexions locales ou la distance. a) Rseau locaux LAN (Local Area Network) Un rseau local permet de connecter un groupe de micro-ordinateurs et ventuellement un certain nombre de priphriques comme les imprimantes et les traceurs. Le meilleurs exemple de rseau local est le rseau ETHERNET qui, sur un cble coaxial assez classique, autorise des transmissions 10 M bits / s. Le principal intrt de rseau local rside dans le partage de ressources : chaque station de travail peut tre quipe des ressources minimales mmoire de masse par exemple et une des stations peut tre ddie au stockage. Les traceurs, extrmement couteux, peuvent tre partags par plusieurs utilisateurs.

OFPPT / DRIF G.E. - 13 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Les utilisateurs connects en rseau local peuvent changer des fichiers ; si ces fichiers sont des simples messages entre les utilisateurs, on parle alors de courrier lectronique. b) Communication la distance Pour des communications plus long distance, le micro-ordinateur est quip dun modem modulateur dmodulateur . Une ligne tlphonique suffit alors pour interconnecter plusieurs machines. Les vitesses de transfert sont beaucoup plus faibles que celles des rseaux locaux, de lordre de quelque dizaine de K bits par seconde. Lintrt de ce type de connexion est vident : il peut permettre plusieurs entreprises de cooprer sur un mme projet. Il permet aussi tout utilisateur daccder des trs importantes bases de donnes, via linternet par exemple.

OFPPT / DRIF G.E. - 14 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

2. LES LANGAGES EN INFORMATIQUE.


Il y a une trs grande quantit de langages. On distingue : - Les langages de bas niveau : Langage Machine, Assembleur, Macro Assembleur. - Les langages volus : BASIC, FORTRAN, COBOL, ALGOL, PASCAL, C, ... Un langage est dfini par : Un lexique : ensemble des mots valides (mots clefs, identificateurs, ...) Une syntaxe : Rgles dcriture des instructions. Ensemble des rgles dcriture des phrases appartenant au langage (grammaire du langage). Une smantique : signification associe chaque construction syntaxique valide. Un langage permet de dfinir des objets manipulables (entiers, caractres, chanes, rels, adresses, ...) et dexprimer des oprations sur ces objets (par des ordres, des instructions qui vont constituer le PROGRAMME.) - Le Langage Machine : ou binaire, ou Hexa, ou BNPF ... C'est le seul langage compris par l'lectronique (Unit Centrale), mais il est trs fastidieux de travailler directement en langage machine, en binaire ou en hexadcimal. L'assembleur, les langages volus vont permettre une criture plus facile, plus cool, et eux vont se charger de la traduction du programme en langage machine, juste avant l'excution du programme. Le langage Machine est diffrent d'un circuit (dune UC) l'autre, sauf dans des familles de circuits issus d'un mme fabricant. - Le Langage Assembleur : C'est une transcription symbolique du langage machine (Mnmonique) La smantique est identique celle du langage machine et l'Assembleur sera aussi diffrent d'un circuit l'autre. Exemple : LDI A,10 en assembleur ST6 veut dire : charger le registre A avec la valeur 10 en dcimal. : LDI de LOAD Immediate (charger immdiatement). Cette instruction sera traduite en langage machine par: 00010111 00001010 en binaire, ou 17 0A en hexa. Un Macro-Assembleur autorise les macro-instructions (suite d'instructions que l'on peut insrer en plusieurs endroits d'un programme). - Les Langages volus : permettent une criture rapide des programmes, ils sont, en gnral, plus "lisibles" que les programmes en assembleur. Ils permettent de plus l'introduction dobjets nouveaux, d'oprations nouvelles. Ils sont adapts certains domaines. (Ex: on utilisera le COBOL pour un programme de gestion.) - Diffrence : Interprteur / Compilateur. - Programme ralis avec un interprteur : au moment de l'excution chaque instruction est "interprte" (traduite en langage machine) et excute. Ce processus est recommenc chaque excution. - Un compilateur, lui, interprte toutes les instructions du programme que l'on a crit (le programme source), et construit un programme en langage machine. Ce programme sera ensuite excut, autant de fois que l'on voudra, sans avoir repasser par la phase d'interprtation. OFPPT / DRIF G.E. - 15 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Les corrections, les modifications sont plus faciles sur un programme interprt, mais un programme compil sera plus rapide l'excution.

OFPPT / DRIF G.E. - 16 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Chapitre 2

MICROPROCESSEUR.
Dfinition Le microprocesseur, not aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central Processing Unit) est un circuit intgr complexe appartenant la famille des VLSI (Very large scale intgration) capable d'effectuer squentiellement et automatiquement des suites d'oprations lmentaires. Son rle : Ce circuit remplit deux fonctions essentielles : le traitement des donnes On parle d'unit de traitement. Cette fonction est ddie l'U.A.L. Elle concerne la manipulation des donnes sous formes de transfert, oprations arithmtiques, oprations logiques.... le contrle du systme Cette fonction se traduit par des oprations de dcodage et d'excution des ordres exprims sous forme d'instruction. Puissance d'un microprocesseur La notion de puissance est la capacit de traiter un grand nombre d'oprations par seconde sur de grands nombres et en grande quantit. Intrinsquement la puissance se joue donc sur les trois critres suivants: La longueur des mots : donnes et instructions (on parle de largeur du bus des donnes). Le nombre d'octets que le microprocesseur peut adresser (on parle de largeur du bus des adresses). La vitesse d'excution des instructions lie la frquence de fonctionnement de l'horloge de synchronisation exprime en MHZ. Laspect dimensionnel renseigne assez bien de la puissance du composant.

A. SYSTEME A BASE DU MICROPROCESSEUR 6809. 1. Schma fonctionnel d'un microprocesseur (8 bits)


On distingue 3 lments logiques principaux : 1. Une Unit Arithmtique et Logique (U.A.L.) 2. Un Accumulateur. 3. Des registres que l'on nomme couramment : Le Compteur d'Instructions (C.I.) Le Registre d'tat Le Registre d'Instructions (R.I.) Le Registre d'Adresses (R.A.) Le Registre temporaire des donnes De base, il existe 6 registres fondamentaux dans une architecture de microprocesseur 8 bits. (Des registres supplmentaires sont ajouts pour rendre la vie plus facile aux programmeurs Cet ensemble est interconnect au travers de diffrents bus. On trouve trois types de bus : Le bus des donnes (bidirectionnel) Le bus des adresses (unidirectionnel) OFPPT / DRIF G.E. - 17 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Le bus de contrle (bidirectionnel) Remarquer le bus interne de donnes qui relie tous les diffrents lments du microprocesseur.

1.1 L'Unit Arithmtique et Logique Son rle : Ce circuit permet de traiter et tester les donnes. Toute instruction qui modifie une donne fait toujours appel l'UAL. OFPPT / DRIF G.E. - 18 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

L'entre de L'UAL est connecte au bus interne via : des registres "temporaires" un registre particulier appel "accumulateur". La sortie de l'UAL est connecte uniquement l'entre de l'accumulateur. Noter : les deux entres sont prcdes par une mmoire tampon. On les appelle encore des registres tampons ou verrou. Ces registres permettent de stocker des octets aux entres de l'U.A.L. L'UAL tant constitu d'une logique combinatoire, elle est dpourvue de moyen propre de stockage. Ce type de registre ne peut tre manipul par le programmeur. Il lui est totalement transparent. 1.2 L'accumulateur C'est le registre le plus important du microprocesseur, il sert systmatiquement lorsque le microprocesseur a besoin de "manipuler" des donnes. La plupart des oprations logiques et arithmtiques sur les donnes font appel au couple "UAL accumulateur" selon la procdure suivante:

Il en est de mme pour les dplacements et transferts des donnes d'un endroit un autre comme : de mmoire mmoire. de mmoire units d'entre-sortie (I/O). Cette action se fait en deux temps : source vers Accumulateur et ensuite Accumulateur vers destination. Les instructions supportes par un accumulateur sont trs nombreuses. Au niveau de la programmation, il reprsente une grande souplesse d'utilisation! Les autres registres ne permettent que des oprations limites. Certains microprocesseur, possdent des accumulateurs de longueur double tel D chez Motorola et HL chez Intel - dissocis en deux et gnralement baptiss individuellement A et B ou H et L respectivement. Gros avantage prsent par un microprocesseur possdant plusieurs accumulateurs : les oprations logiques et arithmtiques se font entre accumulateurs limitant ainsi les accs (transferts) avec l'extrieur. 1.3 Le Compteur d'Instructions Appel encore Compteur Programme (P.C.) ou Compteur Ordinal (C.O.) OFPPT / DRIF G.E. - 19 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Son rle : Pointer TOUJOURS le premier octet d'une instruction. Commentaires : Le programme excuter est une succession d'instructions ordonnes (chaque instruction pouvant prend plusieurs octets!) qui se trouve rang dans une zone mmoire, gnralement des adresses successives. Le P.C. "repre" le premier octet de chaque instruction du programme. La taille du PC a une longueur de 16 bits ce qui lui permet d'adresser 65536 adresses mmoire soit 64 k octets (le champ mmoire). Notons qu'il est connect au bus interne des donnes. A la mise sous tension, une valeur particulire est dpose sur le bus d'adresses (Dans le cas du 6809, cette valeur est $FFFE). Le contenu des cases mmoires ($FFFE-$FFFF) reprsente en gnral l'adresse o se trouve le premier octet de la premire instruction du programme.

Cette adresse est transmise aux circuits mmoires par l'intermdiaire du bus d'adresse via le Registre d'Adresses. Le P.C. pointe toujours l'adresse du dbut de l'instruction suivante. (A retenir, car parfois il est utile de connatre l'adresse prsente.) Il est possible de recharger le [P.C.] avec une adresse qui ne correspond pas au droulement squentiel du programme. On trouve les dtournements conditionnel et inconditionnel. 1.4 Le registre d'adresses Son rle : Le Registre d'adresses ou (R.A.) sert d'interface entre le bus des donnes interne et le bus des adresses. Il "pilote" le bus d'adresses du microprocesseur. Commentaires : D'une longueur de 16 bits, il est constitu de deux registres 8 bits (partie haute et partie basse). Son contenu provient de diffrentes sources : Le Compteur d'instruction Un registre gnral Un emplacement mmoire Le contenu du registre d'adresse pointe la zone mmoire utile au microprocesseur. Une fois que le premier octet de l'instruction en cours est dcod : Le contenu du Compteur d'Instructions est chang (contient l'adresse du dbut de l'instruction venir). Le contenu du Registre d'adresses change! Donc [C.I.] [R.A.] Ce changement correspond :

OFPPT / DRIF G.E. - 20 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

soit une incrmentation du contenu afin de lire l'information complmentaire de l'instruction en cours. soit un chargement d'une nouvelle valeur correspondant une nouvelle zone mmoire utilise temporairement par le microprocesseur (zone diffrente de celle o se trouve le programme). Cette nouvelle valeur provient soit... d'une lecture en mmoire (directement ou indirectement selon les modes d'adressage utiliss) d'un calcul (addition, ...) 1.5 Le Registre d'instructions Sa tche : Le registre d'instructions contient le premier octet de l'instruction en cours d'excution. Commentaires : Le registre est charg pendant le cycle de base extraction - excution. Il reoit l'information (octet) grce au bus de donnes auquel il est connect. L'information qu'il "capture" sur le bus des donnes est utilis par le dcodeur d'instructions. Suivant le protocole ci-dessous : La donne extraite de la mmoire est stocke dans le R.I. (c'est la phase extraction). Ensuite ce contenu est interprt par le dcodeur d'instructions qui agit alors sur la logique de contrle (c'est la phase excution). Cet octet indique au microprocesseur deux choses : Une action (une lecture, une criture ou autre ...) Un lieu d'action (un registre, un accumulateur, une case mmoire...) Le rsultat de cette interprtation se traduit par des niveaux logiques sur le bus de contrle. 1.6 Le registre d'tat L'existence de ce registre permet de distinguer le simple calculateur du vritable ordinateur. Son rle : Stocker les rsultats des tests effectus par l'U.A.L. aprs traitement sur les donnes Commentaires : L'existence de ces rsultats permet d'crire des programmes avec des branchements conditionnels (nouvelle adresse dans le C.I.). En fonction de l'tat des bits de ce registre le microprocesseur peut, alors, excuter des programmes diffrents. le microprocesseur prend en quelque sorte des "dcisions". Les bits les plus couramment utiliss sont : a) le bit de retenue : ce bit est dans l'tat actif lorsque le huitime bit du rsultat de l'opration gnre une retenue.` b) le bit de zro : ce bit est actif lorsque l'opration a pour effet de mettre tous les bits d'un accumulateur ou d'un registre la valeur logique 0 (trs utilis pour raliser des compteurs). c) le bit de signe : information qui indique que le bit le plus significatif (MSB) du contenu de l'accumulateur est un 1 logique.

OFPPT / DRIF G.E. - 21 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Exemples d'application : Pour une soustraction - Selon les rgles de l'arithmtique du complment 2 cela signifie que le nombre est ngatif. Ces 3 bits de base sont parfois complts par des bits supplmentaires choisis par le constructeur. 1.7 Les registres gnraux En plus des 6 registres de base que possdent tous les microprocesseurs 8 bits, il peut en exister d'autres destins faciliter la tche du programmeur. On les nomme registres gnraux. Sur schma fonctionnel type donn, nous avons 3 registres gnraux B, C et D. Ce ne sont pas des registres puissants (tel un accumulateur) puisqu'ils n'ont pas de liaison directe avec la sortie de l'U.A.L. Ces registres peuvent nanmoins affecter le Registre d'Etat. Parfois, ils peuvent constituer un registre 16 bits - appel paire de registre (ex : BC chez Intel ou D chez Motorola). Ainsi, il est possible de raliser des oprations sur un mot (ex : incrmentation de la paire). 1.8 La logique de contrle Appel encore Squenceur ou Unit de contrle (U.C.) Son rle : Permet tous les lments constitutifs du microprocesseur de travailler ensemble et dans l'ordre. Commentaires : La logique de contrle est pilote par le Registre d'Instruction via le dcodeur d'instruction. Cette unit joue en quelque sorte un rle d'intendance puisqu'elle dcide de la disponibilit du bus tel ou tel lment logique. La logique de contrle possde une architecture complexe et trs spcialise. L'lment central est reprsent par le dcodeur d'instructions qui dcode les informations (premier octet) stockes dans le R.I. pour gnrer les signaux ncessaires l'excution de l'instruction. La logique de contrle gnre sur les lignes de contrle des niveaux logiques qui activent les diffrents circuits environnant tels que mmoires et circuits I/O. Cette unit fournit, partir d'un signal de rfrence qui est l'horloge, tous les signaux de synchronisation utiles au bon fonctionnement de l'ensemble. Cette horloge est cre partir d'un oscillateur interne qui utilise un signal en provenance d'un quartz externe. Deux actions complmentaires noter : Cette unit assure : le contrle de mise sous tension du microprocesseur (initialisation des registres). le traitement des interruptions. Linterruption c'est une requte prsente la logique de contrle par des lments extrieurs (priphriques).

OFPPT / DRIF G.E. - 22 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

2. Architecture du 6809
Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est oriente 16 bits. Il est fabriqu en technologie MOS canal N et se prsente sous la forme d'un botier DIL 40 broches. Il est mono tension (5V). Il existe deux versions diffrencies par l'horloge. le 6809 est rythm par une horloge interne (f=1 MHZ, 1.5 MHZ et 2 MHZ). le 6809E est rythm par une horloge externe. Ce dernier est adapt aux applications multiprocesseur. Il prsente la particularit de pouvoir tre synchronis par une horloge extrieure. Compatibilit complte entre les 2 versions. 2.1 Prsentation du brochage Lalimentation (Vss - Vcc) Le bus des donnes 8 bits (Do D7) Ces huit broches sont bidirectionnelles. Elles permettent la communication avec le bus des donnes interne du microprocesseur. Chaque broche peut "piloter" 1 charge TTL et 8 entres de circuits appartenant la famille 680 0. Bus en logique 3 tats. Le bus des adresses 16 bits (A0 A15) Ces broches unidirectionnelles transfrent l'adresse 16 bits fournie par le microprocesseur au bus d'adresse du systme. Mmes caractristiques lectriques que pour le bus des donnes. Bus en logique 3 tats. Les adresses sont valides sur le front montant de Q. Le bus de contrle La broche Read/Write Cette broche indique le sens de transfert des donnes sur le bus des donnes. Ligne logique 3 tats R/W = 1 lecture en cours (D0 - D7 sont des entres) R/W = 0 criture en cours (D0 - D7 sont des sorties)

OFPPT / DRIF G.E. - 23 -

Rsum de Thorie et Guide de travaux pratique Cette ligne est valide sur le front montant de Q. Les lignes d'tat du bus

MICROCONTROLEUR

BA (Bus available) et BS (Bus state) Information qui permet de connatre l'tat du microprocesseur tout moment.

1er cas : Le microprocesseur est en fonctionnement normal, il gre les bus d'adresses et de donnes. 2me cas : Le microprocesseur est en phase de reconnaissance d'interruption pendant deux cycles. Cet tat correspond la recherche des vecteurs d'interruption : Reset, NMI, IRQ, SW1,2 et 3. 3me cas : Ce signal apparat lorsque le microprocesseur rencontre l'instruction de synchronisation externe (niveau bas sur SYNC). Il attend alors cette synchronisation sur une des lignes d'interruption. Les bus sont en haute impdance pendant ce temps. Dernier cas : Correspond l'arrt du microprocesseur (niveau bas sur HALT). Le microprocesseur laisse la gestion des bus des donnes et des adresses un circuit annexe (contrleur de DMA). Les bus sont en haute impdance. La ligne BA au niveau haut indique que les bus sont en haute impdance. Broche d'initialisation RESET : un niveau bas sur cette broche entrane une rinitialisation complte du circuit. Consquences : l'instruction en cours est arrt le registre de pagination (DP) est mis zro les interruptions IRQ et FIRQ sont masques l'interruption non masquable NMI est dsarme Pour tre active cette ligne doit tre maintenue un niveau bas durant un temps suffisamment long (plusieurs cycles d'horloge). Schma adopt gnralement

OFPPT / DRIF G.E. - 24 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Le P.C. est initialis avec le contenu des vecteurs d'initialisation qui se trouvent aux adresses $FFFE et $FFFF. Ce contenu reprsente l'adresse du dbut du programme qui sera excut par le microprocesseur.

La broche : HALT (Arrt du microprocesseur). Un niveau bas sur cette broche provoque l'arrt du microprocesseur (mais la fin de l'excution de l'instruction en cours). Il n'y a pas perte des donnes. (BA = BS = 1) Dans ce cas : les demandes d'interruption IRQ et FIRQ sont inhibes les demandes d'accs direct (DMA) la mmoire sont autorise. les demandes d'interruptions RESET et NMI sont prises en compte mais leur traitement est diffr. Les broches d'interruption NMI (No Masquable Interrupt) IRQ (Interrupt Request) FIRQ (Fast Interrupt Request) Entres (actives sur un niveau bas) qui peuvent interrompre le fonctionnement normal du microprocesseur sur front descendant de Q. Entres d'horloge XTAL et EXTAL (Extension crystal)

La frquence du quartz (horloge) est quatre fois la frquence du microprocesseur. Eout reprsente le signal d'horloge commun au systme. Il permet la synchronisation du microprocesseur avec la priphrie. Qout reprsente le signal d'horloge en quadrature avec Eout. Les donnes sont lues ou crites sur le front descendant de Eout. Les adresses sont correctes partir du front montant de Qout. Broches complmentaires du bus de contrle : MRDY (Memory ready) : cette broche de commande permet d'allonger la dure de Eout pour utiliser des mmoires temps d'accs long. Active sur un niveau bas. Lallongement est un multiple de un quart de cycle et sa valeur maximale est de 10 cycles. DMA / BREQ (Direct Memory Acces/Bus Request) : cette broche permet de suspendre l'utilisation des bus du microprocesseur, pour faire de l'accs direct ou du rafrachissement mmoire. Fonctionnement : pendant que Q est au niveau haut (si DMA/BREQ bas) cela entrane l'arrt du microprocesseur la fin du cycle en cours ... et non de l'instruction.

OFPPT / DRIF G.E. - 25 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

(BA = BS = 1 ce qui veut dire que tous les bus sont en haute impdance). Le circuit ayant gnr cette commande dispose de 15 cycles machines avant que le microprocesseur ne reprenne le contrle des bus.

OFPPT / DRIF G.E. - 26 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

B. EXEMPLE : MICROPROCESSEUR 80286


Le brochage du circuit intgr est reprsent sur la figure 1. La largeur du bus de donnes est de 16 bits. Le bus dadresse, constitu de 24 bits, peut gr un espace physique de 16 Mo.

Le processeur 80826 peut fonctionner selon deux modes. En mode rel qui prsente un systme dadressage compatible avec celui du 8086 mais un jeu dinstructions tendu et sensiblement plus complet. En mode protg qui intgre des mcanismes complexes comme le contrle de dbordement de zone, la gestion des taches et commutation de contexte, la protection des donnes plusieurs niveaux de privilge dexcution et fonction de leurs niveau de privilges propre. Contrairement un microcontrleur, un microprocesseur ne peut fonctionner seul. Quelle que soit lapplication il est donc accompagn dun certain nombre de circuits priphriques. Dans le cas de 80286 ces circuits priphriques sont :

OFPPT / DRIF G.E. - 27 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Un gnrateur dhorloge 82284. Les trois fonctions essentielles de ce circuit sont la synchronisation du signal RESET, la gnration de lhorloge de base et la synchronisation du signal READY permettant laccs un circuit mmoire ou interface dentre / sortie. Un coprocesseur mathmatique optionnel 80287. Ce processeur spcialis dans les traitements numriques peut gnralement acclrer les calculs portant sur des nombres rels flottants ou sur des nombres entiers en format tendu dans des rapports voisin de 100, en gnral fonction de lopration. Lintrt majeur de ce coprocesseur rside dans sa facilit de connexion au processeur matre car son bus est directement branch en parallle sur celui de 80286. Le 80287 reconnat automatiquement les oprations pour lesquels il est concern. La prsence ou labsence de ce coprocesseur reste transparente au programmeur jusquau moment de ldition des liens. La plus part des compilateurs des langages volus comportent une option avec ou sans coprocesseur.

Les circuits annexes sont : Un contrleur de RAM dynamique 8027 Des tampons bidirectionnels 8286-8287 Des bascules 8283-8282 Un contrleur dinterruption 8259A

1. Architecture systme
Une architecture autour de 80286 comporte deux types de bus comme le montre le synoptique de la figure 2 :

Figure 2 Architecture systme multiprocesseur autour dun 80286 Un bus local compos des signaux directement produits par le processeur lui-mme (adresses, donnes et signaux de contrles). Un bus systme qui relie ou connecte le processeur des ressources publiques de mmoires ou dentre / sortie.

Cette architecture est utilise dans les systmes Intel Multibus I et Multibus II. Une architecture plus simple est reprsente sur la figure 3 :

OFPPT / DRIF G.E. - 28 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Fig.3 Architecture de 80286 avec ses circuits priphriques

2. Structure interne du processeur 80286


Drive du 8086, lunit centrale du 80286a t conu comme un microprocesseur 16 bits autorisant une utilisation dans un environnement multitches multi-utilisateurs. Cette caractristique nt pas employe par Microsoft dans son systme dexploitation DOS. Le botier intgre de faon cble un certain nombre de mcanismes de base permettant limplantation simple dun systme dexploitation performant. Les principaux mcanismes implants traitent le partage de la mmoire, la protection de celle-ci par niveaux de privilge rpartis en anneau,le contrle de non dbordement de zone lors dun accs mmoire par une tache spcifique. Les quatre niveaux de privilge sont schmatiss par la figure 4. Le schma de la figure 5 reprsente la structure interne du 80286 constitu de quatre sous-ensembles lmentaires, dtaills ci-aprs.

OFPPT / DRIF G.E. - 29 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Fig.4 Les quatre niveaux de privilge du 80286

Fig. 5 Structure interne de 80286 2.1 Le bus unit

OFPPT / DRIF G.E. - 30 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Le bus unit ralise toutes les oprations portant sur le bus dentre / sortie, mmoire ou priphrique : gnration des adresses des donnes, des signaux de commande ncessaires aux accs mmoire. Le bus unit tablit un rgime pipeline en accs au bus par la lecture anticip des instructions qui sont ensuite mmorises lintrieur de linstruction unit. Cette lecture anticip permet de stocker jusqu six octets dinstruction : ce processus permet une plus grande vitesse de traitement. 2.2 Linstruction unit Linstruction unit reoit les instructions de la file de six octets du bus unit, dcode ces instructions et les stocke, dcodes, dans une file dattente pouvant contenir jusqu trios instructions compltes. 2.3 Lexcution unit Les instructions dcodes sont alors rcupres par lexcution unit qui les excute et peut ventuellement solliciter le bus unit pour raliser des accs en lecture ou en criture sur le bus de donnes. 2.4 Ladresse unit La fonction de cette unit est la gestion de la mmoire et la gnration des adresses physiques utilises par le bus unit. La gnration des adresses ncessite la prsence dune unit arithmtique de 24 bits pour prtendre laccs effectif sur une zone de 16 Mo. La gestion de la mmoire comporte galement les contrles de protection.

3. Segmentation de la mmoire
3.1 Mode rel Le microprocesseur /80286 peut adresser 1 Mo de mmoire RAM en mode rel et 16 Mo en mode protg. Dans les deux cas, la mmoire globale est trononne en segments de 64 Ko. Un segment est donc dfinit par son adresse physique absolue de dpart dans la mmoire et sa longueur maximale de 64 Ko. En rgle gnrale, un segment devra commencer dans la mmoire une adresse divisible par 16. La figure 6 montre que les segments peuvent tre conscutifs, disjoints, se chevaucher ou se superposer. A un instant donn, ladresse dune information est dfinie laide du contenu de deux registres CS et IP. Le registre CS est le registre slecteur de segment et le registre IP donne la valeur de dplacement dans ce segment. Ce dplacement est aussi appel offset. Ladresse complte est note CS :IP. Les deux registre CS et IP sont des registres 16 bits. Ladresse relle sur 20 bits peut se calculer par la relation 16.CS + IP qui donne un rsultat sur 20 bits.

OFPPT / DRIF G.E. - 31 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Fig. 6 Rpartition des segments dans la mmoire

3.2 Mode protg Dans cette configuration, le 80286, utilise plein les 24 bits de son espace dadressage, ce qui autorise laccs 16 Mo de mmoire. Une mmoire cache, interne lAdresse Unit, permet alors deffectuer la traduction dadresse, dvaluer les niveaux de protection et dlaborer ventuellement cette adresse physique de la mmoire cible. On parle ici de mmoire virtuelle car lespace adressable est beaucoup plus large que lespace physique. On suppose donc que des parties de la mmoire sont supportes donc des mmoires auxiliaires et charges lors de leur utilisation effective. En mode protg comme en mode rel ladresse peut tre exprime par CS:IP.

4. Les registres de 80286


Les registres quipant le processeur 80286 sont rpartis en trois groupes : les registres gnraux les registres de segmentation les registres dtat et de contrle.

4.1 Registres gnraux Il sagit de 8 registres 16 bits. Le 80286 na pas de registre accumulateur. Chaque registre peut tre employ pour servir doprande ou de rsultat dans une opration arithmtique ou logique. Certains de ces registres sont parfois ddis des oprations particulires. - AL, AX : sont obligatoirement utiliss comme support doprande dans les instructions dentres / sorties ainsi que dans les multiplications et divisions. OFPPT / DRIF G.E. - 32 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

- CX : compteur de boucle dans les instructions de comptage (Loop) ou dans les instructions de traitement de chaine ainsi que dans les dcalages de plusieurs pas. - DX : support dadresse dans les instructions dentres / sorties ou poids forts dune quantit 32 bits pour la multiplication ou la division. - SP : pointeur de pile. - BX, BP : sont trs frquemment utiliss dans les modes dadressage indirect et sont de ce fait appels registres de base. BP et plus spcifiquement ddi la pile et trouve son utilisation principale dans la rcupration des paramtres envoys une procdure par un programme appelant. - SI, DI : sile peuvent tre utiliss pour ladressage indirect, ils sont galement ddis la fonction dindex dans ladressage indirect index ou dans les instructions de traitement de chaines. Ils sont de fait appels registres dindex. 4.2 Registres de segmentation Le 80286 est muni de quatre registres de segments distincts (DS, ES, SS et CS) permettant donc daccder immdiatement des objets situs dans quatre segments logiques diffrents, situs une implantation quelconque en mmoire. Le code segment (CS) pointe le segment contenant le programme en cours dexcution. Le stack segment (SS) pointe le segment dans lequel se trouve utilise la zone de pile courante, indexe par le Stack Pointer (SP) ou le Base Pointer BP. Le data segment (DS) rfrence le segment des donnes utilises par le programme en cours. Lextra segment (ES) est analogue au registre DS ; il permet ventuellement daccder un deuxime segment de donnes. 4.3 Registres dtat et de contrle Le 80286 contient deux registres dtat et de contrle. Le premier registre contient les 11 flags indicateurs dont la signification est donne la figure 7.

0 : Retenue (Carry) 2 : Parit (Paruty) 4 : Retenue auxiliaire 6 : Zro 7 : Signe 8 : Pas pas (trap flag) 9 : Autorisation dinterruptions masquables 10 : Direction dincrmentation 11 : Dpassement 13 : Niveau de privilge dE/S (I/O Privilege Level) 14 : Emboitement des taches (Nested Task Flag) 8, 9, 10 : registres de contrle 13, 14 : registres spcifiques au mode protg.

OFPPT / DRIF G.E. - 33 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

5. Quelques instructions assembleur de la famille 8086


La liste des instructions suivantes est destine a donner une ide de langage assembleur de la famille 8086. 5.1 Instructions arithmtiques La destination est la source, A et B peuvent etre un registre ou une mmoire, la source peut etre une donne imdiate. - MOV - ADD - ADD B, A - SUB B, A - AND B, A - CMP B, A - INC RM - DEC RM - NOT RM - NEG RM : destination, source : destination, source : le resultat A + B est mis dans B, et A est inchang. : le rsultat B A est mis dans B, et A est inchang. : le rsultat est mis dans B, et A est inchang. : compare A et B et positione les flags. : RM est remplac par RM + 1. : RM est remplac par RM 1. : donne le complment de RM. : donne le complment 2 de RM.

5.2 Instructions sur la pilr - PUSH RM - POP RM : place RM dans la pile. : extrait RM de la pile.

5.3 Instructions de contrle - JMP - J** - CALL - RET - IRET - STI - CLI : branchement inconditionnel : branchement conditionnel (galit, plus grand, plus petit, etc..) : appel un sous programme. : retour dun sous programme : retour dinterruption. : validation des interruptions. : invalidation des interruprtion

OFPPT / DRIF G.E. - 34 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Chapitre 3

MICROCONTROLEUR.
I. CONSIDERATIONS GENERALES
Un systme minimal, pour fonctionner, a besoin : d'une Unit Centrale. de Mmoire morte, pour le programme (PROM, EPROM, ...). de Mmoire vive, pour les calculs, pour stocker les donnes. de circuits Interfaces, pour connecter les priphriques qui vont permettre la communication avec lextrieur. D' o l'apparition des Microcontrleurs (ou Monochip) : Dans un seul circuit, on va trouver : Une Horloge (oscillateur). Un Processeur (Unit Centrale). De la Mmoire Vive (RAM). De la Mmoire Morte (PROM, EPROM ou EEPROM). Des Interfaces, qui vont dpendre, en gnral, du type de microcontrleur choisi : o Compteurs / timer. o Convertisseur Analogique/Numrique (C.A.N.) o chien de Garde (Watch Dog"). o Gestion d'un "port" parallle. o Gestion dune liaison srie RS232. o Gestion dinterruptions.. o Gestion de moteurs en PWM. o Gestion dcran LCD. o Gestion de Bus I2C. o etc ... Il suffit de choisir le microcontrleur le mieux adapt lapplication que l'on doit raliser !

1. Architecture des microcontrleurs


Les microcontrleurs ont t conus sur une architecture dite HARVARD (RISC) et non sur un modle VON NEUMANN (COMPLEX). Larchitecture VON NEUMANN (figure 1) employe par la plupart des microcontrleurs actuels (INTEL80XX, Motorola HC05, HC08 et HC11, ou ZILOG Z80) est base sur un bus de donnes unique. Celui-ci vhicule les instructions et les donnes.

Fig. 1 Architecture Von Neumann

OFPPT / DRIF G.E. - 35 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Larchitecture HARVARD (figure 2) utilise par les microcontrleurs PICS est base sur deux bus de donnes. Un bus est utilis pour les donnes et un autre pour les instructions.

Fig.2 Architecture Harvard Avantages et inconvnients Architecture VON NEUMANN (MOTOROLA, INTEL, ZILOG) Avantages Jeu dinstructions riches Accs la mmoire facile Architecture HARVARD (RISC) (MICROCHIP PICs) Jeu dinstructions pauvre mais facile mmoriser Le codage des instructions est facile, chaque instruction est code sur un mot et dure un cycle machine Le code est plus compact Le jeu dinstructions est trs pauvre, par exemple pour effectuer une comparaison il faut faire une soustraction Les accs aux registres internes est la mmoire sont trs dlicats

Inconvnients

Le temps pour excuter une instruction est variable Le codage des instructions se fait sur plusieurs octets

Remarque : La taille mmoire spcifie pour un PICs sexprime en Kilo Mots (14 bits pour la famille 16F87X) et non en kilo octets. Comme chaque instruction est code par un mot de 14 bits, compares aux microcontrleurs classiques (1,2 ou 3 octets par instruction), les PICs ont un code plus compact et ils utilisent moins de mmoire. 1.2 Le PIC Un PIC nest rien dautre quun microcontrleur, cest dire une unit de traitement de linformation de type microprocesseur laquelle on a ajout des priphriques internes permettant de raliser des montages sans ncessiter lajout de composants externes. La dnomination PIC est sous copyright de Microchip, donc les autres fabricants ont t dans limpossibilit dutiliser ce terme pour leurs propres microcontrleurs. Les PICs sont des composants dits RISC (Reduce Instructions Construction Set), ou encore composant jeu dinstructions rduit. Il faut retenir que plus on rduit le nombre dinstructions, plus facile et plus rapide en est le dcodage, et plus vite le composant fonctionne. Sur le march on trouve 2 familles opposes, les RISC et les CISC (Complex Instructions Construction Set). Chez les CISC, on diminue la vitesse de traitement, mais les instructions sont plus complexes, plus puissantes, et donc plus nombreuses. Il sagit donc dun choix de stratgie. Tous les PICs Mid-Range ont un jeu de 35 instructions, stockent chaque instruction dans un seul mot de programme, et excutent chaque instruction (sauf les sauts) en 1 cycle. On atteint donc des OFPPT / DRIF G.E. - 36 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

trs grandes vitesses, et les instructions sont de plus trs rapidement assimiles. Lexcution en un seul cycle est typique des composants RISC. Lhorloge fournie au PIC est prdivise par 4 au niveau de celle-ci. Cest cette base de temps qui donne le temps dun cycle. Si on utilise par exemple un quartz de 4 MHz, on obtient donc 1000000 de cycles/seconde, or, comme le PIC excute pratiquement 1 instruction par cycle, hormis les sauts, cela vous donne une puissance de lordre de 1MIPS (1 Million dInstructions Par Seconde). Les pics peuvent monter 20 MHz. 1.2.1 Les diffrentes familles des PICs La famille des PICs est subdivise lheure actuelle en 3 grandes familles : La famille Base-Line, qui utilise des mots dinstructions (nous verrons ce que cest) de 12 bits, La famille Mid-Range, qui utilise des mots de 14 bits (et dont font partie les 16F84 et 16F876), La famille High-End, qui utilise des mots de 16 bits. 1.2.2 Identification dun PIC Pour identifier un PIC, vous utiliserez simplement son numro. Les 2 premiers chiffres indiquent la catgorie du PIC, 16 indique un PIC Mid-Range. Vient ensuite parfois une lettre L : Celle-ci indique que le PIC peut fonctionner avec une plage de tension beaucoup plus tolrante. Ensuite, vous trouvez : C indique que la mmoire programme est une EPROM ou plus rarement une EEPROM CR pour indiquer une mmoire de type ROM F pour indiquer une mmoire de type FLASH. Il faut noter que ce niveau que seule une mmoire FLASH ou EEPROM est susceptible dtre efface, donc nesprez pas reprogrammer vos PICs de type CR. Pour les versions C, voyez le datasheet. Le 16C84 peut tre reprogramm, il sagit dune mmoire EEPROM. Le 12C508, par exemple, possde une mmoire programme EPROM, donc effaable uniquement par exposition aux ultraviolets. Donc, leffacement ncessite une fentre transparente sur le chip, qui est une version spciale dveloppement, et non la version couramment rencontre. Un composant quon ne peut reprogrammer est appel O.T.P (One Time Programming : composant programmation unique). Les derniers chiffres identifient prcisment le PIC. (84) Finalement sur les botiers est donn le suffixe -XX dans lequel XX reprsente la frquence dhorloge maximale que le PIC peut recevoir. Par exemple 04 pour un 4MHz. Exemple : Un 16F84-04 est un PIC Mid-Range (16) donc la mmoire programme est de type FLASH (F) donc rinscriptible de type 84 et capable daccepter une frquence dhorloge de 4MHz. Une dernire indication que vous trouverez est le type de botier. Exemple : le botier PDIP, est un botier DIL 18 broches, avec un cartement entre les ranges de 0.3 (troit). La version 4 MHz sera amplement suffisante. Notez ds prsent que les PICs sont des composants STATIQUES, cest dire que la frquence dhorloge peut tre abaisse jusqu larrt complet sans perte de donnes et sans dysfonctionnement. Une version 10 peut donc toujours tre employe sans problme en lieu et place dune 04. Pas linverse, naturellement. OFPPT / DRIF G.E. - 37 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Ceci par opposition aux composants DYNAMIQUES (comme les microprocesseurs de votre ordinateur), donc la frquence dhorloge doit rester dans des limites prcises. Nessayez donc pas de faire tourner votre PIII/500 166MHz, car cest un composant dynamique.

2. Exemple : PIC16F628
Description du PIC16F628 Ce composant intgre un microcontrleur 8 bits, c'est--dire un processeur et des priphriques, dans un botier Dual in line de 18 broches. Il est ralis en technologie CMOS et peut cadenc par une horloge allant de 0 20 MHz ; il doit tre aliment par une tension allant de 3 5,5 V. Les broches du composant possdent plusieurs affectations entre les portes dE/S, les priphriques et les fonctions systme. Brochage du PIC16F628

En priphrie de lunit centrale, on peut recenser les ressources suivantes sur le composant : Mmoire Flash Programme : 2048 instructions Mmoire RAM Donnes : 224 Octets Mmoire EEPROM Donnes : 128 Octets Ports dE/S : 2 ports 8 bits Priphriques : o 3 Timers (8 et 16 bits) o 1 module Capture/compare/PWM o 2 comparateurs analogiques 1 rfrence de tension 1 USART (mission/rception srie synchrone et asynchrone) Architecture interne Le microcontrleur est compos dune unit centrale et de priphriques ; le fonctionnement est gr par un squenceur qui, en fonction des modes opratoires, fournit les signaux de contrle chaque module. Le fonctionnement de lunit centrale est de type RISC (Reduced Instruction Set Computer), le jeu dinstructions est rduit 35.

OFPPT / DRIF G.E. - 38 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Unit centrale Le cur du processeur est compos de 3 entits : LALU (oprations arithmtiques et logiques sur 8 bits) et son registre dtat (STATUS) Le registre du travail : W (Warking Register) Les registres dusage gnral (File Registres)

Les oprations possibles sont alors les suivantes (avec un exemple) : W W (op) valeur immdiate ADDLW 0xFF Dest. WQ (op) Registre ADDWF REGISTRE, dest. Registre W MOVWF REGISTRE Dest. Registre MOVF REGISTRE,dest. Dest. Registre 1 INCF REGISTRE,dest. Dest. Registre 1 plus test INCFSZ REGISTRE,dest. Manipulation et test individuel de bits sur les registres Ou : (op) reprsente une opration arithmtique ou logique OFPPT / DRIF G.E. - 39 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Dest. reprsente la destination des donnes (W ou le REGISTRE concern)

OFPPT / DRIF G.E. - 40 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

II Les microcontrleurs 16F87X 1. Caractristiques des microcontrleurs 16F87X


Ces microcontrleurs appartiennent la famille des PICs. Le 16 signifie quils font partie de la famille des 16F de MICROCHIP et le PIC16F876 est une version 28 broches alors que le 16F877 est une version 40 broches.

Caractristiques communes : Programmable sur site ICSP (In Circuit Serial Programming). Dbuggable sur site ICD. Frquence de fonctionnement leve, jusqu 20 Mhz. Une mmoire vive de 192 368 octets. Une mmoire EEPROM pour sauver des paramtres de 128 256 octets. Une mmoire morte de type FLASH de 4 Kmots 8 Kmots (1mot = 14 bits). Chien de garde WDT. Surveillance d'horloge OST. Surveillance de tension dalimentation BOR. De 21 32 Entres et sorties suivant le type de micro contrleur. Chaque sortie peut sortir un courant maximum de 25mA. 3 Temporisateurs : TIMER0 (8 bits avec pr diviseur), TIMER1 (16 bits avec pr diviseur avec possibilit dutiliser une horloge externe rseau RC ou QUARTZ) et TIMER2 (8 bits avec pr diviseur et post diviseur) 2 entres de captures et de comparaison avec PWM (Modulation de largeur dimpulsions). Convertisseur analogique numrique 10 bits avec de 5 8 entres multiplexes maximum. Une interface de communication srie asynchrone et synchrone. (USART/SCI). Une interface de communication srie synchrone. (SSP/SPI et I2C). Plusieurs modes de fonctionnements faible consommation. Une seule tension d'alimentation 2 ou 5V. Conservation des informations en mmoire vive jusqu' 1.5V. Faible consommation : 1 <2mA 5V pour Fquartz=4Mhz. OFPPT / DRIF G.E. - 41 -

Rsum de Thorie et Guide de travaux pratique 2 3 20A 3V pour Fquartz 32Khz. <1A pour en mode sommeil.

MICROCONTROLEUR

2. Organisation interne
2.1) Les Cs 16F873 et 16F876.

OFPPT / DRIF G.E. - 42 -

Rsum de Thorie et Guide de travaux pratique 2.2) Les Cs 16F874 et 16F877.

MICROCONTROLEUR

Remarque : Les 16F873 et 16F874 prsentent peu dintrt par rapport aux 16F876 et 16F877, en effet ils possdent moins de mmoires programmes et ils sont peu prs au mme prix.

3. Description des diffrentes broches


OFPPT / DRIF G.E. - 43 -

Rsum de Thorie et Guide de travaux pratique 3.1) Les Cs 16F873 et 16F876.

MICROCONTROLEUR

Legend:

I = input, O = output, P = power , = Not used ST = Schmitt Trigger input

I /O = input/output, TTL = TTL input

Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt. 2: This buffer is a Schmitt Trigger input when used in Serial Programming mode. 3: This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.

OFPPT / DRIF G.E. - 44 -

Rsum de Thorie et Guide de travaux pratique 3.2) Les Cs 16F874 et 16F877.

MICROCONTROLEUR

OFPPT / DRIF G.E. - 45 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

4. Brochages physiques des diffrentes versions de microcontrleurs 16F87X.

OFPPT / DRIF G.E. - 46 -

Rsum de Thorie et Guide de travaux pratique Les broches du microcontrleur (c).

MICROCONTROLEUR

4.1) MCLR. Cette broche sert initialiser le C. Le C dispose de plusieurs sources de RESET : POR. EXTERNAL RESET. WDT. BOR. POR: (POWER ON RESET) Mise sous tension. Un front montant sur MCLR dclenche l'initialisation du C. Le temps ncessaire est au minimum de 72mS et au maximum de 72mS+1024*Tosc. Le C dispose en interne dun circuit de dtection de niveau, quand la tension VDD est comprise entre 1.2V et 1.7V, il dmarre une procdure dinitialisation. Cette broche peut tre simplement relie VDD si on na pas besoin de RESET externe. Par contre si on souhaite implanter un bouton de remise zro, on pourra cbler un simple rseau RC sur la broche MCLR. Remarque importante : On peut se passer de circuit RC la seule condition que le temps de mont de VDD soit suffisamment rapide (au minimum 50mV/mS). Si le temps de monte est infrieur 50mV/ms, il faut rajouter un rseau RC. EXTERNAL RESET (Mise ltat bas de MCLR). Remise zro extrieure. Il faut appliquer un niveau bas sur l'entre RESET pendant au moins 2S pour que l'Initialisation soit prise en compte. WDT: Chien de garde. Si le WDT arrive la fin du temps de garde sans avoir t rafrachi il y aura alors une initialisation du C. BOR: Baisse de lalimentation. Si la tension VDD chute en dessous de 4V pendant 100S au moins, le microcontrleur peut gnrer un RESET. Schma structurel du cblage de la broche MCLR.

OFPPT / DRIF G.E. - 47 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

4.2) Oscillateur : OSC1 et OSC2 ou CLKIN et CLOUT. Ces broches permettent de faire fonctionner loscillateur interne du PIC. On peut utiliser 3 types doscillateurs : Un quartz ou rsonateur cramique.

Un oscillateur externe

Un rseau RC

Remarque : Les instructions standards durent 1 cycle machine (sauf les instructions de sauts 2 cycles). Le C utilise 4 coups dhorloge pour raliser un cycle machine. Si la frquence du QUARTZ est de 20 MHz ( T=50 nS), une instruction sera excute toutes les 200 nS, Dans ce cas l, le C a une puissance de calcul de 5 MIPS (5 Millions dinstructions par secondes ! ! !). La frquence MAX est de 20 MHz pour les C dont les rfrences se terminent par -20. Par exemples : 16F876-20 (20 MHz max) et 16F876-04 (4 MHz max). La frquence MIN est le continu. Remarque : La consommation du circuit sera d'autant plus faible que la frquence sera petite, cela peut tre intressant pour des applications de faible consommation (alimentation autonome). OFPPT / DRIF G.E. - 48 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Pour des applications faible consommation, on peut utiliser les sries LF (Low Frequency and Low Power). 4.3) Alimentation : VDD et VSS. Ce sont les broches d'alimentation du circuit. Les tensions qui peuvent tre appliques vont : 1 - De 4,5V 6V pour la gamme standard F. 2 - De 2 6V pour la gamme tendue LF. L'intensit du courant consomm peut aller de 1A 10mA. La consommation du C sera fonction de : - La tension d'alimentation. - La frquence interne. - Le mode de fonctionnement. De plus ces bornes doivent tre dcouples par deux condensateurs : 1 - 1F lectrolytique. 2 - 10nF cramique. 4.4) LInterruption : RBO/INT. Cette broche a une double fonction elle peut tre utilise comme une broche standard RBO ou comme une entre dinterruption INT. Si cette broche est utilise comme une entre d'interruption externe, elle doit tre maintenue un niveau haut par l'intermdiaire de rsistances de 10 k pour ne pas dclencher dinterruptions imprvues, cela permet aussi de relier plusieurs sources d'interruptions sur une mme ligne (OU CABLE).

OFPPT / DRIF G.E. - 49 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

5. L'unit centrale.
5.1) Organisation mmoire. Comme les PICs utilisent un bus pour les instructions et un bus pour les donnes, il faut considrer deux plans mmoire lun pour les instructions et lautre pour les donnes ainsi que les registres internes. 7.1.1) Plan Mmoire pour les instructions (code programme).

Le plan mmoire est linaire les adresses vont de 0000h 1FFFh (8k mots de 14 bits), par page de 2K mots . On peut remarquer, le vecteur de reset est fig en 0000h. Les PICs nont quun seul vecteur dinterruption en 0004h. Lors dune interruption, le sous programme associ devra dterminer quel priphrique a demand une interruption. La pile utilise par les sous programmes nest pas implante en mmoire de donne comme avec les microcontrleurs classiques, mais dans la mmoire programme. Elles sont utilises lors dappels de sous programmes, on ne peut pas imbriquer plus de 8 sous programmes (Ce qui est dj beaucoup ! !). 5.1.2) Plan Mmoire pour les donnes et registres internes (SFR : Special Function Register). Le plan mmoire des donnes et des registres internes est dcoup en 4 zones ou bank de 128 octets, pour accder une zone il faut positionner les bits RP0 (bit 5) et RP1 (bit 6) du registre STATUS

OFPPT / DRIF G.E. - 50 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Unimplemented data memory locations, read as 0. *Not a physical register. Note1: Ce registre nest pas implment sur PIC 2: Ces registres sont rservs, il faut maintenir ces registres propres. Les registres appels General Purpose Register ne sont ni plus ni moins que des cases mmoires pour stocker les donnes. Remarque : Les 4 banques mmoires ne facilitent pas la gestion de la mmoire. Par exemple, pour accder la case mmoire 1A0h (BANK3), il ne faut pas oublier de positionner correctement les bits RP0 et RP1 du registre STATUS. Code : Transfert du contenu de ladresse 1A0h dans le registre W.

OFPPT / DRIF G.E. - 51 -

Rsum de Thorie et Guide de travaux pratique BSF BSF MOVF STATUS,5 STATUS,6 0x20,0

MICROCONTROLEUR ; RP0 = 1 Slection de la BANK 3 ; RP1 = 1 Slection de la BANK 3 ; Transfert du contenu de ladresse 1A0h dans W.

Pourquoi les concepteurs des PICs ont t obligs de scinder en 4 banques mmoires ? Ladresse des donnes est code sur 7 bits, donc les adresses vont de 00h 7Fh. Les 2 bits RP0 et RP1 sont 2 bits dadresses supplmentaires et extrieurs, ce qui porte 2 9 adresses possibles ou 512 registres. Code binaire de MOVF. 001000 d fff ffff Pour lexemple ci-dessus : MOVF 0x20,0 d=0 et fff ffff = 010 0000 Donc le code de MOVF 0x20,0 est : 001000 0 010 0000 En conclusion, la gestion de la mmoire avec les PICs nest pas trs facile, la programmation demande de la rigueur. La programmation des PICs avec des langages de hauts niveaux tels que BASIC, PASCAL et langage C permet de saffranchir de la gestion des pages mmoires. 5.1.3) LUAL : Lunit Arithmtique et Logique. d : destination 0 si W et 1 si F fff ffff : adresse mmoire.

Elle est compose : - Dun accumulateur 8 bits W : WORKING (travail), cest lui qui effectue toutes les oprations arithmtiques et logiques. OFPPT / DRIF G.E. - 52 -

Rsum de Thorie et Guide de travaux pratique - Un registre d'tat 8 bits STATUS.

MICROCONTROLEUR

bit 7

IRP: Register Bank Select bit (used for indirect addressing) 1 = Bank 2, 3 (100h - 1FFh) 0 = Bank 0, 1 (00h - FFh) RP1:RP0: Register Bank Select bits (used for direct addressing) 11 = Bank 3 (180h - 1FFh) 10 = Bank 2 (100h - 17Fh) 01 = Bank 1 (80h - FFh) 00 = Bank 0 (00h - 7Fh) Each bank is 128 bytes TO: Time-out bit 1 = After power-up, CLRWDT instruction, or SLEEP instruction 0 = A WDT time-out occurred PD: Power-down bit 1 = After power-up or by the CLRWDT instruction 0 = By execution of the SLEEP instruction Z: Zero bit 1 = the result of an arithmetic or logic operation is zero 0 = the result of an arithmetic or logic operation is not zero DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow, the polarity is reversed) 1 = A carry-out from the 4th low order bit of the result occurred 0 = No carry-out from the 4th low order bit of the result C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) 1 = A carry-out from the Most Significant bit of the result occurred 0 = No carry-out from the Most Significant bit of the result occurred Note: For borrow, the polarity is reversed. A subtraction is executed by adding the twos complement of the second operand. For rotate (RRF, RLF) instructions, this bit isloaded with either the high, or low order bit of the source register.

bit 6-5

bit 4

bit 3

bit 2

bit 1

bit 0

OFPPT / DRIF G.E. - 53 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

6. Jeu d'instructions

Note 1: When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, 1), the value used will be that value present on the pins themselves. For example, if the data latch is 1 for a pin configured as input and is driven low by an external device, the data will be written back with a 0. 2: If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 module. 3: If Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP.

OFPPT / DRIF G.E. - 54 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Remarque: toutes les instructions ne durent quun seul cycle machine, sauf les instructions de sauts tels que GOTO, CALL.

7. Les modes dadressages


7.1) Adressage inhrent ou implicite 7.1.1) Description. Le mnmonique de l'instruction mentionne la donne sur laquelle porte l'opration (contenu des registres), ou aucune donne nest ncessaire. 7.1.2) Syntaxe. MNEMONIQUE 7.1.3) Exemples. CLRW ; Mise zro de W NOP ; aucune opration (temporisation) SLEEP ; Mise en sommeil du C 7.2) Adressage immdiat. 7.2.1) Description. L'instruction porte sur une valeur constante indique immdiatement aprs le mnmonique. 7.2.2) Syntaxe. MNEMONIQUE constante 7.2.3) Exemples. MOVLW 255 ; charge 0xFF dans W ADDLW 0x20 ; additionne 32 avec W et met le rsultat dans W 7.3) Adressages direct et tendu. 9.3.1) Description. Les PICs ne disposent pas vraiment de modes dadressages DIRECT et ETENDU, ladressage de la mmoire de donnes se fait dans la page slectionne par les BIT 5 (RP0) et BIT 6 (RP1) du registre STATUS. 9.3.2) Syntaxe. MNEMONIQUE f,d d = 0 Registre W comme destination (WORKING) d = 1 Registre f comme destination (un des registres SFR) 9.3.3) Exemple.
PORTB VARIABLE EQU EQU 0x06 0x20 ; page 0

; Sassurer que nous sommes bien en BANK 0 BCF STATUS, 5 ; RP0 = 0 Slection de la BANK 0 OFPPT / DRIF G.E. - 55 -

Rsum de Thorie et Guide de travaux pratique BCF STATUS, 6

MICROCONTROLEUR ; RP1 = 0 Slection de la BANK 0 ; Transfert le contenu de VARIABLE ; dans W ; Transfert le contenu de W ; dans le registre PortB

; PORTB < - VARIABLE MOVF VARIABLE, 0 MOVWF PORTB

7.4) Adressage relatif. 7.4.1) Description. Ce mode d'adressage nexiste pas vraiment, mais des instructions permettent de raliser des sauts de programme, ceux sont les instructions GOTO et CALL. 7.4.2) Syntaxe. MNEMONIQUE Adresse 7.4.3) Exemple N1. Deux cas sont considrer : 1 2 1) Les sauts dans la mme page mmoire : CALL TEMPO ; Appel du SP TEMPO GOTO FIN ; Branchement ltiquette FIN 1 2 2) Les sauts dans une page mmoire diffrente, dans ce cas il faut positionner correctement les bits 4 et 3 du registre PCLATCH, pour accder la bonne page mmoire. BSF PCLATCH,3 BSF PCLATCH,4 CALL CONV ; 1 et 1 Slection de la BANK 3 de 1800h 1FFFh

En effet pourquoi PCLATCH et pas PCH ? PCH nest pas accessible directement il faut passer par PCLATCH pour que les bits 4 et 3 de celui-ci soient recopis dans PCH.

Remarque : Pour le retour de sous programme, il nest pas ncessaire de ce proccuper de ces bits car la valeur du PC est mmorise sur 13 bits dans la pile.

7.5) Adressage indirect ou encore index. 7.5.1) Description. Les PICs disposent travers les registres INDF(ou f0) et FSR(ou f4) dun mode dadressage index, la structure est un peu particulire, FSR est le registre dindex et INDF permet daccder son contenu. 7.5.2) Syntaxe. MNEMONIQUE INDF,d OFPPT / DRIF G.E. - 56 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

7.5.3) Exemple : PORTB <- TAB_VAL[4] Rcuprer le 4me lment dune table TAB_VAL ; ; PORTB < - TAB_VAL [4] MOVLW TAB_VAL ; W <- Adresse de TAB_VAL ADDLW 4 ; W <- W + 4 MOWF FSR ; Adresse + 4 dans le registre dindex FSR MOVF INDF, 0 ; Transfert du contenu de TABLE[4] dans W MOVWF PORTB ; Transfert du contenu de W sur le PORTB 7.6) Manipulation de bits. 7.6.1) Forage de bits. 7.6.1.1) Description. Il sagit de 2 instructions permettant de mettre 0 ou 1 un bit d'un octet de l'espace mmoire SFR. Elles sont le plus souvent utilises pour positionner des bits des registres du C. 7.6.1.2) Syntaxe. BSF ou BCF 7.6.1.3) Exemples. BCF BSF f, b f, b pour mettre 1 pour mettre 0 PORTA, 2 STATUS, 0 ; Mise 0 du bit 2 du PORTA ; Mise 1 du bit 0 du registre STATUS ; C'est--dire la CARRY

7.6.2) Test de bits. 7.6.2.1) Description. Il sagit de 2 instructions permettant de tester un bit d'un octet de l'espace mmoire SFR. Elles sont le plus souvent utilises pour dterminer ltat des bits des registres du C. En fonction du rsultat du test : - le programme se poursuit avec l'instruction suivante (rsultat du test faux) - le programme saute linstruction qui suit le test. 7.6.2.2) Syntaxe. BTFSS ou BTFSC 7.6.2.3) Exemple. MOVF BTFSS OFPPT / DRIF G.E. - 57 -

f,b f,b CMP, 1 STATUS, Z ; Transfert du contenu CMP dans CMP ; Cela permet de tester si le contenu ; de CMP est nul en positionnant le bit Z ; Test du bit Z ?

Rsum de Thorie et Guide de travaux pratique GOTO MOVLW MOVWF GOTO DECF .. . SINON 0xFF CMP FSI CMP, 1

MICROCONTROLEUR ; Z=0 alors excuter le code pour SINON ; Alors CMP <- 0xFF ; allez en fin de si ; CMP <- CMP -1 Dcrmenter CMP

SINON FSI

8. Les ports d'entres / sorties


8.1. Gnralits. Le C dispose de 3 PORTS (A,B et C) pour le 16F876 et 5 PORTS (A,B,C,D et E) pour le 16F877. Tous les ports dentres sorties Input/ Output sont bidirectionnels. La plupart des lignes de PORTs ont une double fonction. Le PORT A (5 bits) I/O pure et/ou convertisseur analogique et/ou TIMER 0. La broche RA4 du PORT A (Entre du TIMER 0 T0CKI) est du type DRAIN OUVERT. Le PORT B (8 bits) I/O pure et/ou programmation in situ ICSP/ICD (Broche RB3/PGM, RB6/PGC et RB7/PGD) et lentre dinterruption externe RB0/INT. Remarque : Si le PIC est utilis en mode ICSP/ICD il faut laisser libre les broches RB3/PGM, RB6/PGC ainsi que RB7/PGD) et les configurer en entre. Le PORT C (8 bits) I/O pure et/ou TIMER 1 et/ou SPI / I2C et/ou USART. Le PORT D (8 bits) I/O pure et/ou port parallle 8 bits associ au PORT E. Le PORT E (3 bits) I/O pure et/ou pilotage du PORT E RE0/RD, RE1/WR et RE2/CS. Toutes les lignes de PORTs peuvent fournir un courant de 25mA par ligne de PORT. Une limite de 40mA par PORT doit tre respecte pour des questions de dissipation.

OFPPT / DRIF G.E. - 58 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

8.2 Configuration des PORTx , les registres PORTx et TRISx. Tous les ports sont pilots par deux registres : - Le registre de PORTx, si le PORT x ou certaines lignes de PORT X sont configures en sortie, ce registre dtermine ltat logique des sorties. - Le registre TRISx, cest le registre de direction. Il dtermine si le PORTx ou certaines lignes de port sont en entre ou en sortie. Lcriture dun 1 logique correspond une entre (1 comme Input) et lcriture dun 0 logique correspond une sortie (0 comme Output). Au RESET toutes les lignes de ports sont configures en entres. Remarque : Les registres TRISx appartiennent la BANQUE 1 des SFR. Lors de linitialisation du C il ne faut pas oublier de changer de page mmoire pour les configurer. Exemple : On souhaite obtenir la configuration suivante des PORTA et PORTB.

Remarque toutes les lignes de sorties des PORTs sont mises zro. ; Mise zro des registres de donnes des ports A et B clrf PORTA clrf PORTB ; Configuration des PORTA et B ; Accs aux registres TRISx (Banque mmoire 1) bsf STATUS,RP0 ; RP0 = 1 bcf STATUS,RP1 ; RP1 = 0 ; Configuration des registres de direction ; Configuration du PORTA X X S E S S S E movlw B11010001 ; valeur binaire 1 1 0 1 0 0 0 1 movwf TRISA ; Configuration du PORTB E E S S E S S E movlw B11001001 ; valeur binaire 1 1 0 0 1 0 0 1 movwf TRISB ; Retour en banque mmoire 0 bcf STATUS,RP0 ; RP0 = 0 bcf STATUS,RP1 ; RP1 = 0 . . 8.3. Le PORT A. Le PORT A (5 bits) I/O pure et/ou convertisseur analogique et/ou TIMER 0. Attention PA4 (Entre du TIMER 0 T0CKI), elle est de type DRAIN OUVERT.

OFPPT / DRIF G.E. - 59 -

Rsum de Thorie et Guide de travaux pratique


BLOCK DIAGRAM OF RA3: RA0 AND RA5 PINS

MICROCONTROLEUR
BLOCK DIAGRAM OF RA4/T0CKI PIN

PORT A FUNCTIONS

Legend: TTL = TTL input, ST = Schmitt Trigger input Registres associs au PORT A

Legend: :x = unknown (inconnu), u = unchanged (inchangeable) , - = unimplemented locations read as '0' (location non implmente lire comme 0). 8.4. Le PORT B. Le PORT B dispose de (8 bits) I/O pure et/ou programmation in situ ICSP/ICD (Broche RB3/PGM, RB6/PGC et RB7/PGD) et une entre dinterruption externe RB0/INT. Il dispose de deux fonctions spciales : OFPPT / DRIF G.E. - 60 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

- La premire cest la possibilit de configurer toutes ses lignes avec une rsistance de PULL-UP en configurant le bit RBPU 0 du registre OPTION. - La deuxime, cest la possibilit de gnrer une interruption sur un changement dtat des broches RB4 RB7. Cest trs pratique pour la gestion des claviers matrics. BLOCK DIAGRAM OF RB3:RB0 PINS BLOCK DIAGRAM OFRB7:RB4 PINS

PORT B FUNCTIONS

Legend: TTL = TTL input, ST = Schmitt Trigger input Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt. 2: This buffer is a Schmitt Trigger input when used in Serial Programming mode. 3: Low Voltage ICSP Programming (LVP) is enabled by default, which disables the RB3 I/O function. LVP must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 28-pin and 40-pin mid-range devices. Registres associs au PORT B OFPPT / DRIF G.E. - 61 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Legend: x = unknown (inconnu) , u = unchanged (inchangeable) . 8.5. Le PORT C. Le PORT C (8 bits) I/O pure quil partage avec le TIMER 1, la liaison SPI / I2C et lUSART. PORT C BLOCK DIAGRAM (PERIPHERAL OUTPUT OVERRIDE) RC <2:0 >, RC < 7:5 >

PORT C BLOCK DIAGRAM (PERIPHERAL OUTPUT OVERRIDE) RC < 4:3 >

PORT C FUNCTIONS OFPPT / DRIF G.E. - 62 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Lgende: ST = Schmitt Trigger input Registres associs au PORT C

Legend: x = unknown (inconnu), u = unchanged (inchangeable) 8.6. Les PORT D et E. Le PORT D (8 bits) I/O et PORT E (3 bits) utilisent la mme type structure interne. PORT D BLOCK DIAGRAM (IN I/O PORT MODE)

PORT D FUNCTIONS OFPPT / DRIF G.E. - 63 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Legend: ST = Schmitt Trigger input, TTL = TTL input Note 1:Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port mode. Registres associs au PORTE D

Legend: x = unknown (inconnu), u = unchanged (inchangeable). PORTE BLOCK DIAGRAM (IN I/O PORT MODE)

PORT E FUNCTIONS OFPPT / DRIF G.E. - 64 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Legend: ST = Schmitt Trigger input, TTL = TTL input Note1: Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port mode. Reagistres associs au PORT E

Legend: x = unknown (inconnu), u = unchanged (inchangeable).

OFPPT / DRIF G.E. - 65 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

9. Le convertisseur analogique numrique.


Le convertisseur analogique numrique est approximations successives et il possde une rsolution de 10 bits. Il est compos de : - Un multiplexeur analogique 5 voies (PIC16F876) ou 8 voies PIC16F877). - Un chantillonneur bloqueur. - Un Convertisseur Analogique Numrique de 10 bits. 9.1. Organisation interne.
A/D BLOCK DIAGRAM

Remarque : Les entres analogiques RE1/AN5, RE2/AN6 et RE3/AN2 sont disponibles avec les PICs 16F877 et 16F874. De plus la broche RA4 nest pas concerne pas le convertisseur.

OFPPT / DRIF G.E. - 66 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

9.2. Fonctionnement du convertisseur. La conversion se passe en 2 temps : - 1er temps le signal convertir est appliqu sur lentre convertir, ce signal doit tre prsent au moins pendant le temps Tacq (temps dacquisition environ 20S pour 5V). - 2me temps la conversion, approximations successives. Le temps de conversion minimum est de 12 TAD (TAD cest le temps de conversion dpendant de lhorloge interne, typiquement 1,6S). Une conversion commence toujours par la mise 1 du bit GO/DONE du registre ADCON0. Lorsque la conversion est termine se bit repasse 0. Donc pour pouvoir lire le rsultat dans les registres ADRESL et ADRESH il suffit dattendre que le bit GO/DONE passe 0.

La valeur rsultante N de la conversion ADRSH : ADRESL est gale : N (valeur numrise) = ((VIN - VREF-) / (VREF+ - VREF-)) * 1023) Si VREF+ = VDD = 5 V et VREF- = VSS = 0 V alors N (valeur numrise) = 1023 * (VIN / 5 ) Mais avant de raliser une conversion il faut dfinir la configuration du convertisseur : - Le nombre dentres analogiques. - Le nombre dentres logiques. - Le type de tension de rfrence : - Interne VREF =VDD-VSS. - Externe, soit VREF= VREF+ - VSS ou VREF= VREF+ - VREF-. Cette configuration ce fait travers le registre ADCON1, voir page suivante. 9.3. Le registre ADCON1. Il permet de choisir une configuration parmi les 16 proposes. Remarque : La configuration de ce registre ADCON1 ne dispense pas de configurer les registres de directions des PPORTA et PORTE respectivement TRISA et TRISE. ADCON1 REGISTER (ADDRESS 9Fh)

bit 7

ADFM: A/D Result Format Select bit 1 = Right justified. 6 Most Significant bits of ADRESH are read as 0.

OFPPT / DRIF G.E. - 67 -

Rsum de Thorie et Guide de travaux pratique bit 6-4 bit 3-0

MICROCONTROLEUR

0 = Left justified. 6 Least Significant bits of ADRESL are read as 0. Unimplemented: Read as '0' PCFG3:PCFG0: A/D Port Configuration Control bits:

A = Analog input;

D = Digital I/O

Note 1 : These channels are not available on PIC16F873/876 devices. 2 : This column indicates the number of analog channels available as A/D inputs and the number of analog channels used as voltage reference inputs. De plus le bit ADFM permet de choisir entre deux types de justification pour le rsultat. - Si ADFM=1 alors le rsultat sera justifi droite dans les registre ADRESH et ADRESL, c'est--dire ARESL contient les bits 7 0 du rsultat de la conversion et ADRESH contient 6 zros suivi des bit 9 et 8 du rsultat de la conversion. - Si ADFM=0 alors le rsultat sera justifi gauche, c'est--dire ARESH contient les bits 9 2 du rsultat de la conversion et ADRESH contient les bit 1 et 0 du rsultat de la conversion suivi de 6 zros. A/D RESULT JUSTIFICATION

OFPPT / DRIF G.E. - 68 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

9.4. Le registre ADCON0. Ce registre permet de dfinir lhorloge de conversion (bit ADCS1 et ADCS0), le canal convertir (CHS2, CHS1 et CHS0) et ADON bit de mise en fonctionnement. Remarque : Lors de la mise en fonctionnement du CAN par le bit ADON, Le bit GO/ DONE ne doit pas tre modifi en mme temps, c'est--dire dans la mme instruction. . ADCON0 REGISTER (ADDRESS: 1Fh)

bit 7-6

ADCS1 : ADCS0 : A/D Conversion Clock Select bits 00 =FOSC/2 01 =FOSC/8 10 =FOSC/32 11 =FRC (clock derived from the internal A/D module RC oscillator) CHS2:CHS0: Analog Channel Select bits 000 = channel 0, (RA0/AN0) 001 = channel 1, (RA1/AN1) 010 = channel 2, (RA2/AN2) 011 = channel 3, (RA3/AN3) 100 = channel 4, (RA5/AN4) 101 = channel 5, (RE0/AN5) (1) 110 = channel 6, (RE1/AN6) (1) 111 = channel 7, (RE2/AN7) (1) GO/ DONE : A/D Conversion Status bit If ADON = 1: 1 =A/D conversion in progress (setting this bit starts the A/D conversion) 0 =A/D conversion not in progress (this bit is automatically cleared by hardware when the A/D conversion is complete) Unimplemented: Read as '0' ADON: A/D On bit1 = A/D converter module is operating 0 = A/D converter module is shut-off and consumes no operating current

bit 5-3

bit 2

bit 1 bit 0

Note 1 : These channels are not available on PIC16F873/876 devices.

Le choix de lhorloge est dtermin par les bits ADCS1 et ADCS0, sachant que le temps TAD doit tre au minimum de 1,6 S.
TAD vs. MAXIMUM DEVICE OPERATING FREQUENCIES (STANDARD DEVICES (C))

OFPPT / DRIF G.E. - 69 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Note

1: The RC source has a typical TAD time of 4 s, but can vary between 2-6 s. 2: When the device frequencies are greater than 1 MHz, the RC A/D conversion clock source is only recom-mended for SLEEP operation. 3: For extended voltage devices (LC), please refer to the Electrical Characteristics (Sections 15.1 and 15.2).

9.5. Exemple dutilisation. Exemple : On souhaite obtenir la configuration suivante avec un PIC16F877 : RE2 : Sortie logique RE1 : Sortie logique RE0 : Entre logique RA5 : Sortie logique RA4 : Entre Logique RA3 : Entre analogique RA2 : Entre logique RA1 : Entre analogique RA0 : Entre analogique Tension de rfrence VREF = VDD VSS = 5 V et frquence du quartz gale 12 MHz.

Programme en assembleur. OFPPT / DRIF G.E. - 70 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Remarque : Toutes les lignes de sorties des PORTs sont mises zro.

OFPPT / DRIF G.E. - 71 -

Rsum de Thorie et Guide de travaux pratique 10. Les timers. Les PICs 16F87x disposent de 3 timers :

MICROCONTROLEUR

- Le timer 0 (8 bits): Il peut tre incrment par des impulsions extrieures via la broche (TOCKI/ RA4) ou par lhorloge interne (Fosc/4). - Le timer 1 (16 bits): Il peut tre incrment soit par lhorloge interne, par des impulsions sur la broche T1CKI/RC0 ou par un oscillateur (RC ou quartz) connect sur les broches TOSO/RCO et T1OSI/RC1. - Le timer 2 (8 bits) : Il est incrment par lhorloge interne, celle peut tre pr divise. Tous ces timers peuvent dclencher une interruption interne, si ils ont t autoriss. 10.1 Le timer 0. 10.1.1) Prsentation : Cest le plus ancien des timers implants dans les PICs, son ancienne appellation tait RTC, pour Real Time Clock (horloge temps relle). On peut se servir de celui-ci pour gnrer des vnements priodiques, comme le rafrachissement dafficheurs multiplexs ou lincrmentation de variables (secondes, minutes . ). Celui-ci est incrment soit par lhorloge interne (Fosc/4) ou par une horloge applique sur la broche TOCKI/ RA4 . BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER

Comme on peut le constater sur ce schma le timer 0 partage avec le chien de garde Watchdog le pr diviseur. Celui-ci est affect lun ou lautre, suivant la valeur du bit PSA (0 : Timer0 et 1 : chien de garde). OFPPT / DRIF G.E. - 72 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

On peut obtenir un schma simplifi du fonctionnement du timer 0 sans le chien de garde. Timer0 Block Diagram

10.1.2) Fonctionnement : Le bit T0CS permet de choisir lhorloge, interne (Fosc/4) ou externe T0CKI/RA4. Dans ce dernier cas lincrmentation du timer 0 peut se faire soit sur front montant ou descendant suivant la valeur du bit T0SE. Le bit PSA de choisir si horloge permet de pr diviser lhorloge dun rapport allant de 2 256. La valeur de pr division est fixe par les bits PS2, PS1 et PS0. Quand le contenu du timer 0 passe de FF 00 le bit T0IF passe 1 pour signaler un dbordement, si le bit T0IE est 1 alors une interruption timer 0 est dclenche. Le contenu du timer 0 peut tre modifi tout instant, une condition prs, la nouvelle valeur inscrite dans le registre TMR0 sera prise en compte aprs 3 cycles machines. Remarque importante : Lorsque le bit T0IF passe 1 lors du passage de la valeur FFh 00h du registre TMR0, il doit tre remis 0 de faon logicielle par une instruction du type : bcf INTCON,T0IF 10.1.3) Configuration et registres associs : La configuration du timer 0 passe par les registres TMR0 (adresse 01h), OPTION_REG (adresse 81h page 1) et INTCON (adresse 0Bh : toutes les pages). OPTION_REG REGISTER (@ 81h or 181h)

OFPPT / DRIF G.E. - 73 -

Rsum de Thorie et Guide de travaux pratique REGISTERS ASSOCIATED WITH TIMER 0

MICROCONTROLEUR

Legend : x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by Timer 0. 10.2. Le timer 1. 10.2.1) Prsentation : Il fonctionne sur le mme principe que le timer 0, mais il est plus moderne dans sa conception. Cest un compteur 16 bits. TIMER1 BLOCK DIAGRAM

10.2.2) Fonctionnement : Le bit TMR1CS permet de choisir lhorloge soit interne (Fosc/4), externe T1CKI ou un oscillateur quartz connect sur les broches T1OSO et T1OSI. Les bits T1CKPS1 et T1CKPS0 permettent de choisir la valeur de la pr division appliquer lhorloge choisie, de 1 8. Le bit T1SYNC permet de choisir si lhorloge de sortie du pr diviseur doit tre synchrone avec lhorloge du microcontrleur. Dans le cas o lon choisit lhorloge interne Fosc/4, il nest pas ncessaire de la synchroniser. Le bit TMR1ON active ou dsactive le timer 1. Si ce bit est 1 alors le timer 1 est en fonctionnement et les registres TMR1H :TMR1L sont incrments chaque coup dhorloge. Quand le contenu du timer 1 passe de FFFF 0000 le bit TMR1IF passe 1 pour signaler un dbordement, de plus si le bit TMR1IE est 1 alors une interruption timer 1 est dclenche. Remarque importante : Lorsque le bit TMR1IF passe 1 lors du passage de la valeur FFFF 0000 des registres TMR1H :TMR1L, il doit tre remis 0 de faon logicielle par une instruction du type : bcf PIR1, TMR1IF OFPPT / DRIF G.E. - 74 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

10.2.3) Configuration et registres associs : La configuration du timer 1 passe par les registres : PIR1 (adresse 0Ch), PIE1 (adresse 8Ch page 1) le registres TMR1L et TMR1H (adresses 0Eh et 0Fh), T1CON (adresse 10h page 0) et INTCON (adresse 0Bh : toutes les pages). T1CON: TIMER1 CONTROL REGISTER (ADDRESS 10h)

REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER

Legend: x = unknown, u = unchanged, - = unimplemented, read as '0'. Shaded cells are not used by the Timer1 module. Note1: Bits PSPIE and PSPIF are reserved on the PIC16F873/876; always maintain these bits clear.

OFPPT / DRIF G.E. - 75 -

Rsum de Thorie et Guide de travaux pratique 10.3. Le timer 2.

MICROCONTROLEUR

10.3.1) Prsentation : Cest un timer 8 bits, son horloge ne peut tre que lhorloge interne divise par 4 (Fosc/4) TIMER 2 BLOCK DIAGRAM

10.3.2) Fonctionnement : Il est incrment par lhorloge interne (Fosc/4) pr divise ou non. Les bits T2CKPS1 et T2KPS0 permettent de choisir la valeur de la pr division (1,4 ou 16). Le contenu du registre incrment TMR2 et il est compar au registre PR2, si ces deux registres sont gaux alors une impulsion dhorloge est gnre et le contenu de TMR2 est remis 00h. Celle-ci peut servir dhorloge pour piloter les liaisons I2C et SPI du module SSP ou encore tre divise par un post diviseur appel : POSTSCALER. Son rapport de division peut tre de 1 16. Les bits T2OUTPS0, T2OUTPS1, T2OUTPS2, et T2OUTPS3, permettent de choisir la valeur de la post division 1, 2, 3, 4, 5 . 16. Quand la sortie du post diviseur passe 1 le bit TMR2IF est positionn, celui-ci peut dclencher une interruption si celle-ci a t autorise (Bit TMR2IE 1 du registre PIE1). Remarque importante : Lorsque le bit TMR2IF passe 1 lorsquune impulsion est gnre en sortie du POSTSCALER, il doit tre remis 0 de faon logicielle par une instruction du type : bcf PIR1, TMR2IF

10.3.3) Configuration et registres associs : La configuration du timer 2 passe par les registres : PIR1 (adresse 0Ch), PIE1 (adresse 8Ch page 1), TMR2 (adresse 11h page 0), PR2 (adresse 92h page 1), T2CON (adresse 12h page 0) et INTCON (adresse 0Bh : toutes les pages).

OFPPT / DRIF G.E. - 76 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

T2CON: TIMER 2 CONTROL REGISTER (ADDRESS 12h)

10.4. Les modules CCP1 et CCP2 (C.C.P. :Capture Compare Pwm). Ces deux modules peuvent fonctionner dans lun des trois modes ci-dessous : - Mode capture (CAPTURE) : Ce mode permet en autre deffectuer des mesures de temps. - Mode comparaison (COMPARE) : Ce mode permet en autre de gnrer des vnements priodiques. - Mode PWM (PULSE WITH MODULATION): Ce mode permet de gnrer des signaux dont le rapport cyclique est variable. Ces modules sont associs aux broches RC2/CCP1 et RC1/T1OSI/CCP2. Suivant le mode choisit, les timers 1 ou 2 vont tre utiliss. Les modes Capture et Comparaison utilise le timer 1, tandis que le mode PWM utilise le timer 2. 10.4.1) Le mode CAPTURE : Il mmorise la valeur du timer 1 dans les registres CPP1R1H : CPP1R1L ou CPP1R2H : CPP1R2L quand un vnement se produit sur une des broches CCP1 ou CCP2. Cette mmorisation peut avoir lieu : - Tous les fronts montants. - Tous les fronts descendants. - Tous les 4 fronts montants. - Tous les 16 fronts montants. OFPPT / DRIF G.E. - 77 -

Rsum de Thorie et Guide de travaux pratique Capture Mode Operation Block Diagram

MICROCONTROLEUR

11. La liaison srie USART ou SCI (serial communication interface).


11.1. Prsentation : Remarque : La liaison USART du PIC peut fonctionner soit en mode synchrone ou asynchrone, seul le mode asynchrone sera tudi. La liaison srie SCI est une interface srie asynchrone de type START / STOP. Elle permet d'effectuer des communications avec d'autres systmes ou objets techniques sur de longues distances (quelques mtres quelques kilomtres). Elle dispose des fonctionnalits suivantes: - Fonctionnement en Full Duplex, c'est dire mission et rception de donnes en mme temps. - Transmission et rception de donnes (compatibles avec la norme RS232 en utilisant une fonction dadaptation de niveaux). - Contrle des erreurs de transmission et de rception. - Transmission sur 8 ou 9 bits. - Mode rveil automatique lors de la rception de signaux valides. - 4 Sources d'interruptions possibles.

Cette interface est compose de 3 fonctions : - La transmission. - La rception. - Le gnrateur dhorloge (choix de la vitesse de transmission et de rception).

OFPPT / DRIF G.E. - 78 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

11.2. La transmission :
11.2.1) Prsentation : USART TRANSMIT BLOCK DIAGRAM

11.2.2) Fonctionnement : ASYNCHRONOUS MASTER TRANSMISSION

Cette fonction utilise un registre dcalage pour transmettre les 8 ou 9 bits de linformation du registre TXREG. Pour que cette fonction soit oprationnelle, il faut que la broche RC6 du PORTC soit configure en sortie, positionner 1 le bit SPEN du registre RCSTA et le bit TXEN du registre TXSTA. Dans le cas o lon utilise une transmission sur 9 bits (Bit de parit par exemple), il faut autoriser la transmission sur 9 bits via le bit TX9 du registre TXSTA, la valeur du neuvime bit doit tre mise dans le bit TX9D du registre TXSTA. Avant de transmettre une information, il faut sassurer que le registre de transmission soit libre travers le bit TXIF (1 libre et 0 occupe). Le bit TMRT du registre TXSTA indique si la transmission est compltement termine (1 termine et 0 occupe). OFPPT / DRIF G.E. - 79 -

Rsum de Thorie et Guide de travaux pratique 11.2.3) Configuration et registres associs :

MICROCONTROLEUR

La configuration de la transmission de la SCI passe par les registres : PIR1 (adresse 0Ch), PIE1 (adresse 8Ch page 1), RCSTA (adresse 18h page 0), TXREG (adresse 19h page 0), TXSTA (adresse 98h page 1), SPBRG (adresse 99h page 1) et INTCON (adresse 0Bh : toutes les pages). REGISTERS ASSOCIATED WITH ASYNCHRONOUS TRANSMISSION

Legend:

x = unknown, - = unimplemented locations read as 0. Shaded cells are not used for asynchronous transmission. Note1: Bits PSPIE and PSPIF are reserved on the PIC16F873/876; always maintain these bits clear. Le registre le plus important pour la transmission cest le registre TXSTA. TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h)

OFPPT / DRIF G.E. - 80 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

11.3. La rception : 11.3.1) Prsentation :


USART RECEIVE BLOCK DIAGRAM

11.3.2) Fonctionnement : ASYNCHRONOUS RECEPTION

Cette fonction utilise un registre RSR dcalage pour les 8 ou 9 bits de linformation recevoir, une fois la rception termine la valeur est stocke dans le registre RCREG. OFPPT / DRIF G.E. - 81 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Pour que cette fonction soit oprationnelle, il faut que la broche RC7 du PORTC soit configure en entre et positionne 1 le bit SPEN du registre RCSTA. Dans le cas ou lon utilise une rception sur 9 bits, il faut autoriser la rception sur 9 bits via le bit RX9 du registre RCSTA, la valeur du neuvime bit est rcupre dans le bit RX9D du registre RCSTA. Avant de lire une information dans le registre RCREG, il faut sassurer que linformation est bien reue en testant le bit RCIF (1 Donne reue), ce bit est remis 0 lors de la lecture du registre RCREG. Les bits FERR et OERR peuvent indiquer respectivement une erreur de format et une erreur over run . 11.3.3) Configuration et registres associs : La configuration de la transmission de la SCI passe par les registres : PIR1 (adresse 0Ch), PIE1 (adresse 8Ch page 1), RCSTA (adresse 18h page 0), RCREG (adresse 1Ah page 0), TXSTA (adresse 98h page 1), SPBRG (adresse 99h page 1) et INTCON (adresse 0Bh : toutes les pages). REGISTERS ASSOCIATED WITH ASYNCHRONOUS RECEPTION

Legend: Note1:

x = unknown, - = unimplemented locations read as '0'. Shaded cells are not used for asynchronous reception. Bits PSPIE and PSPIF are reserved on PIC16F873/876 devices; always maintain these bits clear.

Le registre le plus important pour la transmission cest le registre RCSTA.

OFPPT / DRIF G.E. - 82 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

RCSTA: RECEIVE STATUS AND CONTROL REGISTER (ADDRESS 18h)

OFPPT / DRIF G.E. - 83 -

Rsum de Thorie et Guide de travaux pratique 11.4. Le gnrateur dhorloge:

MICROCONTROLEUR

11.4.1 Prsentation et fonctionnement: Cest lui qui fixe la vitesse de la rception et transmission de lUSART. Il faut utiliser la formule ci-dessous pour calculer la valeur mettre dans le registre SPBRG. Si la frquence du quartz du microcontrleur est suprieure 10MHz, il est conseill de positionner le bit BGRH 1. BAUD RATE FORMULA

X = value in SPBRG (0 to 255) Tableaux de vitesses : BAUD RATES FOR ASYNCHRONOUS MODE (BRGH = 0)

BAUD RATES FOR ASYNCHRONOUS MODE (BRGH = 1)

OFPPT / DRIF G.E. - 84 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

11.4.2) Configuration et registres associs : La configuration du gnrateur dhorloge de la SCI passe par les registres : TXSTA (adresse 98h page 1), RCSTA (adresse 18h page 0) et SPBRG (adresse 99h page 1). REGISTERS ASSOCIATED WITH BAUD RATE GENERATOR

Legend : x = unknown, - = unimplemented, read as '0'. Shaded cells are not used by the BRG.

12. Les interruptions.


12.1. Prsentation. Le C dispose de plusieurs sources d'interruptions. Une interruption externe, action sur la broche INT/RB0. Dbordement du TIMER0. Changement dtat logique sur une des broches du PORTB (RB4 RB7). Une interruption dun des priphriques (PEIE). - Fin de programmation dune case mmoire de lEEPROM. - Changement dtat sur le PORTD (PSPIE). - Fin de conversion analogique numrique (ADIE). - Rception dune information sur la liaison srie (RCIE). - Fin dmission dune information sur la liaison srie (TXIE). - Interruption SPI ou I2C du module MSSP (SSPIE). - Interruption du registre de capture et/ou de comparaison 1 (CCPI1E). - Interruption du registre de capture et/ou de comparaison 2 (CCPI2E). - Dbordement du TIMER1 (TMR1E). - Dbordement du TIMER2 (TMR2E). - Collision de BUS (BCLIE)

OFPPT / DRIF G.E. - 85 -

Rsum de Thorie et Guide de travaux pratique 12.2. Fonctionnement.

MICROCONTROLEUR

Lors dun vnement dans un ou plusieurs des circuits priphriques ( ADC, EEPROM, USARTSCI, MSSP-I2C-SPI, TIMER1, TIMER2) comme par exemple : la fin de conversion, la fin de programmation dun octet dans lEEPROM, la rception dune information, la dtection dun front, etc et si le bit de linterruption concerne a t autorise ( EEIE, PSPIE, ADIE, RCIE, TXIE, SSPIE, CCP1IE, TMR2IE, TMR1IE, CCP2IE ou BCLIE : Registres PIE1 et PIE2 ) alors une interruption priphrique est dclenche. Pour que celle-ci soit prise en compte il faut que le bit dautorisation des interruptions priphriques soit positionn 1 (PEIE) ainsi que le bit GIE dautorisation globale des interruptions du registre INTCON. Pour quune interruption du type TIMER0 ou INT/RB0 ou PORTB soit prise en compte il suffit que le bit local dautorisation dinterruption soit positionn 1 (T0IE ou INTE ou RBIE) ainsi que le bit GIE dautorisation globale des interruptions du registre INTCON. Dans ces conditions le programme en cours dexcution est interrompu et le microcontrleur excute le programme dinterruption partir de ladresse 0x0004. Au dbut de celui-ci il faut que le logiciel vrifie quel priphrique a dclench linterruption. INTERRUPT LOGIC

OFPPT / DRIF G.E. - 86 -

Rsum de Thorie et Guide de travaux pratique 12.3. Droulement dune interruption. Chronogramme de la prise en compte dune interruption. INT Pin and Other External Interrupt Timing

MICROCONTROLEUR

Au dbut dune interruption le sous programme dinterruption doit sauvegarder le contexte et le restituer la fin, cest dire les valeurs des registres W, PCLATCH et STATUS. Cela permet au processus interrompu de retrouver ses registres intacts. Pour respecter ce principe il faut ajouter au dbut du sous programme dinterruption quelques instructions pour sauvegarder les registres W, PCLATCH et STATUS. A la fin du sous programme on ajoute des instructions pour restaurer ces valeurs. SAVING STATUS, W, AND PCLATH REGISTERS IN RAM

OFPPT / DRIF G.E. - 87 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

12.4 Configuration et registres associs : - Le registre OPTION permet de choisir le type de front pour linterruption INT/RB0. OPTION_REG REGISTER (ADDRESS 81h, 181h)

- Le registre INTCON permet dautoriser les interruptions globales (GIE), les interruptions des priphriques (PEIE), Linterruption TIMER0 (T0IE), linterruption extrieure (INT/RB0), linterruption de changement dtat du PORTB (RBIE) et les indicateurs associs des interruptions (TIMER0, INT/RB0 et du changement dtat du PORTB : RBIF). INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh, 18Bh)

OFPPT / DRIF G.E. - 88 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

- Les registres dautorisations des interruptions priphriques PIE1 et PIE2. PIE1 REGISTER (ADDRESS 8Ch)

OFPPT / DRIF G.E. - 89 -

Rsum de Thorie et Guide de travaux pratique - Le registre des indicateurs dvnements PIR1. PIR1 REGISTER (ADDRESS 0Ch)

MICROCONTROLEUR

OFPPT / DRIF G.E. - 90 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Chapitre 4

Programmation des PICs


1. Ecrire un programme PIC (16F8XX)
Pour crire un programme PIC ils sont ncessaires :

un diteur de texte un assembleur un compilateur un simulateur pour tester le programme sur le micro

Tout cela est mis la disposition par Microchip. Cela s'appelle MPLAB, tlchargez-le et installez-le sur votre micro. MPASM - L'assembleur MPASM fait partie de MPLAB, c'est l'assembleur qui permet d'crire le programme PIC. Le meilleur moyen d'apprendre est d'analyser un programme simple, tel que clignotement d'une LED. Il est ncessaire de tlcharger le guide de MPASM de chez Microchip et de l'imprimer. Le set dinstructions pour PIC 16F8XX. est donn sur annexe 1 Pour vous donner un aperu voici un petit bout de programme qui allume une LED lorsqu'on appui sur le bouton poussoir. La LED est connecte la voie 0 et le B.P. la voie 1 du port B. toto btfss PORTB,1 b toto bsf PORTB,0 toto est une tiquette btfss est une instruction de test de bit (bit test file skip if set), elle test le bit 1 du registre PORTB, si ce bit est 1 (Bouton poussoir appuy) elle saute l'instruction suivante, c'est dire qu'elle arrive l'instruction bsf, si le bit est 0 elle excute l'instruction suivante b toto branchement l'tiquette toto, le programme boucle bsf PORTB,0 bit set file, c'est dire qu'elle positionne 1 la voie 0 du PORTB (ce qui allume la LED)

OFPPT / DRIF G.E. - 91 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Le programme complet (la LED change d'tat chaque appui sur le BP) ;****************************************************************** ; bp_led - Commande d'une LED l'aide d'un BP ; La LED change d'tat chaque appui sur le BP ; ; RB ;0 LED (cathode sur RB0, anode via rsistance 1.2K au +5V) ; 1 BP (contact la masse via rsistance 1K , brancher une rsistance ; 10K de polarisation entre RB1 et +5V) ; ;******************************************************************** list p=16f84,f=inhx8m __config B'00000000000001' ; #include "p16f84.inc" ;**** Constantes ********* led equ 0 bp equ 1 ; org goto ; ; org Start clrf bsf movlw movwf bcf bsf b PORTB STATUS,RP0 B'11111110' TRISB STATUS,RP0 PORTB,led Main ; select bank1 ; seul rb0 en sortie ; teint la led 10 0 Start ; WDT Enabled, RC Oscillator

;************** Main ********************************** Main btfsc b comf btfss b b end OFPPT / DRIF G.E. - 92 PORTB,bp $-1 PORTB,F PORTB,bp $-1 Main ; saute l'instruction suivante si bp appuy ; saut l'instruction prcdente ; bascule etat de la led ; saute l'instruction suivante si bp relach ; saut l'instruction prcdente

Rsum de Thorie et Guide de travaux pratique Le programmateur

MICROCONTROLEUR

Une fois le programme compil, il faut le transfrer dans la mmoire du microcontrleur. Pour cela il vous faut: Une petite interface matrielle

Ci-dessus, l'interface de programmation par le port srie du PC. C'est une des meilleures interfaces de programmation, ne ncessite pas d'alimentation externe. Ses caractristiques: tension d'alimentation fournie par le port srie : 4.5V tension de programmation : 13.5V connexion au port srie par un cble droit 9 points mle / femelle permet de programmer les PIC 12Cxx, 16Cxx, 16Fxx, 16Fxxx etc.... ainsi que les EEPROM 24Cxx Le kit comprend:

l'interface de programmation ci-dessus un cordon de connexion au port srie du PC le logiciel de programmation ICPROG sur disquette une documentation en franais

Un logiciel Un logiciel qui assure le transfert des donnes entre le PC et le microcontrleur (il est fourni avec le programmateur) ou bien il se trouve sur le Web. Il est conseill ICPROG , c'est le meilleur logiciel de programmation de PIC l'heure actuelle, et il a l'avantage d'tre disponible en freeware. Un premier programme : Clignotement d'une LED 2 approches diffrentes:

un programme qui utilise le timer : led_tim.zip (ANNEXE 2) o Le timer gnre une interruption toutes les 256s. Dans la routine d'interruption, l'on dcrmente la variable TIME. o Dans le programme principal, on change l'tat du PORTB (sur lequel est connecte une LED) lorsque TIME=0, et on recommence le cycle.

OFPPT / DRIF G.E. - 93 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

un autre qui utilise le chien de garde : led_wdt.zip (ANNEXE 3)

Carte d'exprimentation

Pour tester de nouveaux montages base de PIC, il peut s'avrer utile de disposer d'une platine de dveloppement. Pour ma part j'utilise la carte d'exprimentation pour PIC16F84 ci-dessus. Ce systme permet de tester rapidement un PIC que vous avez russi programmer. La platine dispose de sa propre tension d'alimentation 5V, d'un oscillateur quartz 4, 10 ou 20 Mhz, d'une zone pastille permettant d'implanter des composants d'E/S, de 4 LED et un bouton poussoir pouvant tre relis aux E/S par des straps.

OFPPT / DRIF G.E. - 94 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

2. Programmation en utilisant EDITALGO


A. Implanter un algorigramme avec le logiciel EditAlgo
Quelques rgles
Le logiciel peut fonctionner de deux manires diffrentes. L'option Programme permet d'crire un petit programme monobloc, avec des variables globales. L'option Procdure permet d'analyser le contenu d'une procdure et une seule. Les variables utilises sont alors globales, locales ou paramtres d'entre sortie ou paramtres d'entre. Dans les deux cas, le bloc d'instructions commence par DEBUT et se termine par FIN Chaque nouvelle action ou expression, lorsqu'elle n'est pas encore formalise, est note entre <...>. Les boucles ou itrations doivent commencer par un niveau gnral <BOUCLE> et terminer par <FinBOUCLE>. Le type de la boucle ne pourra tre donn qu'au niveau suivant. Dans la mesure ou BOUCLE n'est pas une primitive du processeur, il figure entre '<' et '>' comme toute autre action non primitive. Ainsi dans l'ordre on doit :

Dcrire l'action Si ncessaire, prciser que cette action est incluse dans une boucle (on commence par l'intrieur) Prciser le type de boucle Prciser les bornes ou les conditions.

Dfinir la fonction de lalgorithme.


Exemple a : On souhaite faire clignoter une diode la priode 2s. Exemple b : On souhaite compter les impulsions produite par le mouvement dune roue dente entre les bras dun photocoupleur en fourche (codeur incrmental) Exemple c : On souhaite raliser un d magique : lutilisateur appuie sur un bouton un instant puis le lche. Aussitt un rsultat saffiche sur un afficheur 7 segments.

OFPPT / DRIF G.E. - 95 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Dfinir les entres sorties du microcontrleur et les variables internes utiles.


Exemple a: Une seule sortie, B0 qui sera reli directement la diode. B0=1 : Diode allume. B0=0 : Diode teinte. Exemple b : A0 en entre, reoit linformation du capteur. Bien que ce ne soit pas demand on peut sortir sur le port B la valeur courante du comptage. Il sagit donc dun nombre de 8 bits. On a intrt a stocker la valeur courante dans une variable interne COMPTEUR. Exemple c : A0 en entre reoit linformation sur ltat du bouton : 1 pour appuy et 0 pour pas appuy. Lafficheur 7 segments peut tre piloter via un transcodeur BCD 7 segments. Il faut donc seulement 4 bits pour indiquer la valeur du d de 0 6. On utilisera pour cela les bits B4 (poids fort) B0 du Port B. On a intrt utiliser un variable interne DE pour stocker la valeur courante du d.

Dessiner lalgorigramme sur feuille.

La reprsentation des algorigramme est normalise. Elle comporte diffrents lments de base. Nous nutiliserons que les lments suivants.

OFPPT / DRIF G.E. - 96 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Entre et sortie dun algorigramme. Le programme commence toujours par le Dbut. Un algorigramme a forcment un dbut et un seul. Par contre il peut navoir aucun lment Fin ou plusieurs. Dbut et Fin peuvent tre utiliss pour dfinir un sous programme. Ils sont alors les points dentre et de sortie du sous programme. Symbole gnral pour tout type daction : faire uns opration arithmtique (+, -) (remarque : * et / ne sont pas prvus dans EditAlgo) ou logique (OU, XOR, NON ? ET) sur des variables, incrmenter un nombre, le dclaer droite ou a gauche

Appel de sous programme. Lors dune procdure souvent rpte, par exemple utiliser des compteurs comptant dans le vide pour faire passer le temps et faire ainsi une temporisation. Au lieu de rcrire sans arrt le programme effectuant cette temporisation, on en fait une fonction que lon appelle quand on en a besoin. Dans EditAlgo cet lment est reprsent par le symbole gnral. Entre Sortie. Dans la mesure du possible, on rcupre les informations en entres, on les stocke dans des variables internes, on fait tous les calculs sur des variables internes, puis on met jour les sorties en fonction des rsultats obtenus. Cet lment reprsente les lectures en entre et criture en sortie. Cependant, dans le cas de variables simples (informations TOR) de telles complications sont inutiles. Dans EditAlgo, ce symbole est reprsent par le symbole gnral. Condition. Cet lment reprsente un test effectu dont on peut dire que le rsultat est vrai ou faux. Le test peut tre effectu sur un bit (bit=1 ? ; bit=0 ?) ou sur des nombres (nombre 1<nombre2 ? nombre1=nombre 2 ?)

OFPPT / DRIF G.E. - 97 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Exemple a :

Cet exemple ne pose pas de difficults. Remarquez seulement la notation B0 <-- 0 qui signifie que lon place la valeur 0 dans B0.

Exemple b :

Ici, remarquez les deux blocs de condition. Le premier attend que A0 passe 1 et le second attend que A0 repasse 0. On dtecte ainsi les impulsions de A0. Il faut cependant tre sr que le microcontrleur ait le temps dincrmenter avant limpulsion suivante.

OFPPT / DRIF G.E. - 98 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Exemple c :

Cet algorigramme est plus complexe. -On place 0x0F dans DE. Cest une notation hexadcimale, elle est utilise dans EditAlgo. Habituez-vous nutiliser que de lhexadcimal lorsque vous programmez le microcontrleur. -Seuls les 4 bits de poids faibles de DE ont une importance. Ils doivent tre recopis dans les 4 bits de poids faibles du port B si possible sans toucher aux 4 bits de poids fort du Port B. Cest la raison dtre de la variable Tampon. Tampon recopie Port B. Le ET 0xF0 est ce quon appelle un masque qui place les 4 bits de poids faibles de Tampon 0 et laisse intact les 4 bits de poids fort. Ensuite le OU permet de recopier les 4 bits de poids faibles de DE sur les 4 bits de poids faibles de Tampon. Les 4 bits de poids forts de DE tant toujours 0, cela ne pose pas de problme. Au dmarrage, on envoie donc 1111 sur lafficheur, il naffiche donc rien, cest ce quon veut. -Remarquez que lon a mis plusieurs oprations dans un mme bloc. On peut se le permettre pour simplifier lorganigramme condition que cela ne nuise pas la lisibilit. -On attend que lutilisateur appuie (et donc que A0 passe 1) -Ds quon appuie, DE est initialis 0x01 (cest dire que le d est 1) -Tant que A0 reste 1 on incrmente la valeur de DE. Si DE devient suprieur 0x06, on repasse par linitialisation de DE 0x01. -Quand lutilisateur relche le bouton, on retourne au moment de laffichage. Dans ce d, le hasard est produit par le fait que lutilisateur ne peut pas matriser suffisamment prcisment la dure de sa pression pour dcider de la valeur du d.

OFPPT / DRIF G.E. - 99 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

B. Utilisation du logiciel EditAlgo.


Pour lancer EditAlgo, double-cliquez sur EditAlgo.exe La fentre ci-contre saffiche.

La fentre se compose dune barre de menu ; dune grille de 8x15 lments sur laquelle vous pourrez reprsenter votre algorigramme ; Une fentre et une commande en bas de la fentre dont la signification sera donne plus loin.

Les tapes suivantes peuvent tre effectues dans nimporte quel ordre. Premire tape : Dcider des entres / sorties.

Sur la bande du haut, cliquez sur PortA . Cliquez simplement sur les boutons pour changer les bits du portA en entre (E) ou en sortie (S) Le bit de poids fort est gauche. Idem pour le PortB . OFPPT / DRIF G.E. - 100 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Deuxime tape : Dfinir les variables utilisateur.

Sur la troisime partie de la bande suprieure, vous pouvez dfinir des variables utilisateur. Tapez simplement le nom de votre variable, sans espace puis tapez Entre. Vous pouvez galement supprimer des variables. Ne laissez pas de ligne vide entre les variables.

Troisime tape : Dessiner lalgorigramme.

Vous pouvez choisir nimporte quelle case en cliquant dessus avec le bouton gauche de la souris. Chaque cas a un numro qui apparat si vous laissez la souris immobile un instant au-dessus. En cliquant-droit, vous faites apparatre ce menu. Il vous permet de choisir entre les diffrents types dlments possibles. Vous avez le choix entre

OFPPT / DRIF G.E. - 101 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Elment condition.
Le choix de condition fait apparatre la fentre cicontre. Vous pouvez laisser cette fentre ouverte ou pas. Vous pourrez toujours la rouvrir grce au menu Fentre. Quand vous appuyez sur le bouton du haut, les options ci-contre apparaissent. Cest une condition sur un bit. Il faut prciser le nom du registre et le numro du bit en question. Vous pouvez choisir lun des registres systme (dont Port A et Port B) ou un registre utilisateur. Vous devez prciser quel tat vous souhaitez tester : 0 ou 1. Quand vous avez termin, appuyez Valider.

OFPPT / DRIF G.E. - 102 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Quand vous appuyez sur le bouton du bas, les options ci-contre apparaissent. Cest une condition sur un registre. Il faut prciser le nom du registre tester. Vous pouvez choisir lun des registres systme (dont Port A et Port B) ou un registre utilisateur. Vous devez choisir le test ( =, <>, <, > ) et la valeur de comparaison ( droite), soit un registre soit un nombre. Attention : Si vous entrez un nombre droite, utilisez une notation hexadcimale. Exemple : pour 28, tapez 0x1C. Quand vous avez termin, appuyez Valider.

Remarque : Chaque fois que vous tapez Valider, vous crasez lancienne programmation de llment par la nouvelle.

OFPPT / DRIF G.E. - 103 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Elment opration.

Le choix dOpration fait apparatre la fentre cicontre. Vous pouvez laisser cette fentre ouverte ou pas. Vous pourrez toujours la rouvrir grce au menu Fentre. Trs important : Pour gagner de la place, on peut mettre plusieurs oprations en un seul lment. Le bouton Ajouter permet dajouter des oprations. Si vous avez fait une erreur il faut recommencer avec Effacer ou bien utiliser la fentre code (voir plus loin) Le bouton du haut donne accs aux oprations sur un bit, cest dire Mise 1 ou Mise 0. Le deuxime bouton permet de faire des oprations deux oprandes, cest dire +, -, ET, OU, XOR. Attention : Si vous entrez un nombre droite, utilisez une notation hexadcimale. Exemple : pour 28, tapez 0x1C. Le troisime bouton donne accs des oprations une oprande : NOT, OUI, SHIFTL et SHIFTR (dcalage gauche et droite) Incrmenter, Dcrmenter, SWAP (inversion des 4 bits de poids forts avec les 4 bits de poids faibles) Attention : Si vous entrez un nombre droite, utilisez une notation hexadcimale. Exemple : pour 28, tapez 0x1C. Remarque : Pour affecter une valeur, par exemple x=0x35, il suffit de faire x=OUI 0x35. Le bouton du bas donne accs des commandes particulires : Pause 0,1s ?? : Permet de faire une pause de ?? 0,1s o ?? est un nombre hexadcimal (noter 0x..) Pause 5ms ?? : Permet de faire une pause de ?? 5ms o ?? est un nombre hexadcimal (noter 0x..) CALL et RETURN sont des instructions assembleur. OFPPT / DRIF G.E. - 104 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

ROUTINE permet dinclure un sous programme ralis au pralable : Ralisez le sous programme et enregistrez-le en tant que programme. Le Dbut et le Fin du sous programme seront sont entre et sa sortie. Les entres/sorties du sous programme doivent tre les mmes que celles du programme principal. Les variables utilisateur du sous programme sont automatiquement ajouts au programme principal.

Les branchements ordinaires.


Ils vous permettent de relier entre eux les lments. Vous devez dabord slectionner la direction du branchement (vers le haut, vers la droite, vers le bas) Quand vous avez slectionn le branchement, doublecliquez sur llment pour lui donner la courbure souhaite. Remarque : Vous pouvez aussi double-cliquer sur un lment opration pour changer sa forme.

OFPPT / DRIF G.E. - 105 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Les branchements vers.

Lorsque vous avez besoin de remonter ou bien que dessiner les branchements complexifie trop lalgorigramme, vous pouvez reprsenter un saut, cest die un branchement vers une destination. Quand vous avez slectionn Branchement vers, choisissez le numro de la cellule de destination. Slectionnez le numro de llment sur lequel vous souhaitez vous brancher, puis appuyez sur Valider . Remarque : Branchez vous directement sur llment souhaitez. Inutile de reprsenter une arrive pour le saut (lment Branchement depuis . Cet lment est inutile) Remarque 2 : Tout comme pour les branchements ordinaires, vous pouvez double cliquer sur llment Branchement vers pour lui donner la forme souhaite.

Modification du code.

A chaque lment correspond une portion de code (cest dire de programme) Vous pouvez lafficher grce la commande Code du menu Fentre . OFPPT / DRIF G.E. - 106 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Vous pouvez modifier ce code. Cliquez sur Modifier, lcran devient bleu. Faites vos modifications. Quand vous en avez fini, Cliquez sur Valider ou bien Annuler. Remarque : Un fichier rsum est cr automatiquement quand vous enregistrez le programme. Il porte lextension *.RSU. Pendant la programmation vous pouvez aussi, en laissant le curseur immobile sur un lment, voir un rsum de ce qui a t programm dans llment (le carr reprsente une tabulation) Par contre, si vous utilisez la fentre code pour modifier un lment, la fonction rsum indiquera code modifi pour cet lment.

Quatrime tape : Fichier *.ASM.

Grce la commande Programme du menu Fentre , vous pouvez visualiser le programme assembleur qui sera gnr. Vous pouvez ractualiser ce code assembleur grce la commande Fichier Asm du menu Programme. Outils ou bien en fermant et en rouvrant la fentre Vous pouvez voir le rsultat grce la fentre programme. Dans le menu fentre , cliquez sur Programme . Vous pouvez modifier ce code. Cliquez sur Modifier, lcran devient bleu. Faites vos modifications. Quand vous en avez fini, Cliquez sur Valider ou bien Annuler. Vous pouvez sauvegarder ce fichier en cliquant Sauvegarder.

OFPPT / DRIF G.E. - 107 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Cinquime tape : Sauvegardes.

Dans le menu Fichier vous devez sauvegarder le fichier *.ASM. Attention : Le fichier *.ASM nenregistre pas la structure graphique de votre algorigramme. Si vous voulez la conserver, enregistrez-l avec Enregistrer programme sous Vous pourrez ensuite la rouvrir avec Ouvrir programme ou mme lutiliser comme sous programme grce la commande Routine de llment opration.

Sixime tape : Compilation.

Dans le menu Outil, choisissez la commande MPASMWIN. Il sagit dun utilitaire Microchip.

OFPPT / DRIF G.E. - 108 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

La fentre ci-contre apparat. Cliquez sur Browse. Choisissez votre fichier Asm. Cliquez sur Assembl .MPASMWIN lance la compilation. Si vous obtenez ce genre de message, alors votre programme ne contient pas derreur. Il a t compil avec succs sous forme dun fichier *.HEX. Vous pouvez passer ltape suivante.

Si vous obtenez ce genre de message, alors la compilation a chou. Votre programme contient des erreurs et il vous faut les corriger.

OFPPT / DRIF G.E. - 109 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Pour connatre les erreurs que MPASMWIN a rencontr, dans le menu Fentre de EditAlgo, cliquez sur Erreur et slectionnez le fichier *.ERR correspondant votre programme. La fentre, en bas gauche, apparat. Gnralement, les erreurs sont clairement explicites. Il suffit de lire attentivement le fichier *.ERR. Remarque : Les deux messages indiqus ci-contre sont seulement des avertissements et nempchent pas la compilation. En fait vous aurez toujours ces deux messages. Ne vous en proccupez pas.

Quand vous avez corrig votre programme, enregistrez de nouveau le fichier *.ASM puis ressayez de le compiler.

OFPPT / DRIF G.E. - 110 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

Septime tape : Transfert du programme sur le PIC16F84 (Microcontrleur)

Tout dabord, reliez un programmateur au port srie COM1 de votre ordinateur et branchez le programmateur une carte Microcontrleur PIC. Le PIC ne doit pas tre aliment et les bits 6 et 7 du Port B doivent tre dbranchs. Quand le branchement est fait, lancez ICPROG. ICPROG est un logiciel gratuitement mis disposition par Bonny Gijzen. La fentre ci-contre apparat. Vrifiez que en haut droite, le microcontrleur slectionn est bien le PIC 16F84. Dans Fichier, slectionnez Open File et choisissez le fichier *.HEX correspondant votre programme. Si droite, Oscillator nest pas XT, il y a un problme. Peut-tre vous tes vous tromp de fichier.

Pour lancer le transfert cliquez sur licne reprsentant un circuit frapp par un clair. Confirmez votre choix en cliquant OK. Le transfert commence. Il ne vous reste qu tester votre programme avec le microcontrleur !

OFPPT / DRIF G.E. - 111 -

Rsum de Thorie et Guide de travaux pratique ANNEXE 1

MICROCONTROLEUR

OFPPT / DRIF G.E. - 112 -

Rsum de Thorie et Guide de travaux pratique ANNEXE 2

MICROCONTROLEUR

; Clignotement d'une LED a l'aide du TIMER ; Ce programme utilise une interruption gnre par le timer toutes les 256 s . ; A chaque interruption il execute la routine ServiceRtcc qui dcremente la variable ; TIME. ; Le programme principal (dans ce cas BL1) est une boucle qui teste dans la routine ; SecondOver si TIME est gal 0. Si oui, il incrmente le PORTB. Une LED branche la voie 0 du PORTB changera d'tat toutes les 2ms (256s * 8). Sur la voie 1, toutes les 4 ms ...., sur la voie 7 toutes 256ms (2ms * 128) ; Quartz = 4Mhz list p=16f84,f=inhx8m __config B'00000000000001' ; #include "p16f84.inc" ; TIME equ 0x10 ; org 0 goto Start ; org 4 goto ServiceRtcc ; org 10 Start movlw 0 movwf PORTB ; movwf PORTA tris PORTB tris PORTA call InitRtcc clrf PORTB clrf PORTA BL1 call SecondOver incf PORTB,1 goto BL1 ; InitRtcc movlw B'10000000' option clrf TMR0 movlw B'10100000' movwf INTCON movlw .8 movwf TIME OFPPT / DRIF G.E. - 113 ; WDT Disabled, XT Oscillator

;make port b outputs

;turn off leds ;wait for 1/2 second ;toggle leds

;start time ;enable interrupts ; / ;initialize time

Rsum de Thorie et Guide de travaux pratique return ; ServiceRtcc btfsc decf clrf bsf bcf retfie ; SecondOver movf btfss goto movlw movwf return end

MICROCONTROLEUR

INTCON,T0IF TIME,1 INTCON INTCON,T0IE STATUS,Z

;rtcc interrupt? ;yes then dec time ;clr all interrupts ;enable RTIE ; Z=0 ;not zero then return ;check if time = 0 ; / ;no then loop ;load for 1/2 second

TIME,1 STATUS,Z SecondOver .8 TIME

OFPPT / DRIF G.E. - 114 -

Rsum de Thorie et Guide de travaux pratique ANNEXE 3

MICROCONTROLEUR

; Clignotement d'une LED a l'aide du Watch Dog Timer (WDT) ; En SIM, il faut attendre 30 sec avant que le WDT se reveille ; ; ; ; ; ; ; #include "p16f84.inc" ; org goto ; org Start bsf movlw movwf movlw movwf bcf Loop sleep incf goto end STATUS,RP0 ; select bank1 0 ; set portb to output TRISB ; TRISB = 0 B'00000111' OPTION_REG ; OPTION = 0F prescaler 128 STATUS,RP0 ; select bank0 PORTB,f Loop 10 0 Start LIGHTS.PIC: RC Oscillator version This is as simple as it gets. Port B outputs produce square waves if approxfollowing frequencies. Pin PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 Hz 28 14 7 3.5 1.7 0.8 0.4 0.2 list p=16f84,f=inhx8m __config H'00ff' ; WDT Enabled, RC Oscillator

OFPPT / DRIF G.E. - 115 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TRAVAUX PRATIQUE
Pour raliser les TP il est recommandable dutiliser le logiciel EDITALGO

OFPPT / DRIF G.E. - 116 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP 1

Allumage d'une LED en sortie.

* fichier led.asc * Allumage d'une LED sur le portb *Equivalences registres portb equ $1004

*Dbut du programme implantation en EEPROM org ******************** * Configuration ******************** * configuration du portb * le portb en mode single est unidirectionnel et en sortie (pas de DDRB) ******************** *Programme principal ******************** *Allumage de la led 1 sur le portb start ldaa #$01 staa portb bra * *************************** * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect $fffe fdb start $F800

* le vecteur est obligatoire pour faire demarrer le programme au bon endroit End OFPPT / DRIF G.E. - 117 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP2 Recopie d'un port d'entre en sortie

* fichier recop.asc * recopie d'un port d'entre sur un port de sortie *Equivalences registres portb portc ddrc equ equ equ $1004 $1003 $1007

*Dbut du programme implantation en EEPROM org $F800 ******************** * Configuration ******************** * configuration du portb et C * portc en entree pas de ddrb, b tjs en sortie start clr ddrc

* ******************** *Programme principal ******************** *Allumage de la led 1 sur le portb debut ldaa portc staa portb bra debut *************************** * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect end OFPPT / DRIF G.E. - 118 fdb $fffe start

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP3 Clignotement de toutes les LED sur un port en sortie

* fichier clignot.asc * clignotement de LEDS d'un port en sortie *Equivalences registres portb equ $1004

*Dbut du programme implantation en EEPROM org ******************** * Configuration ******************** ******************** *Programme principal ******************** *Eteindre toutes les leds sur le portb. OFPPT / DRIF G.E. - 119 $F800

Rsum de Thorie et Guide de travaux pratique start clr portb

MICROCONTROLEUR

*temporisation de 197ms debut ldx #$ffff

*tempo base sur le nombre de boucle effectuer * ici on execute 65535 fois les instructions dex et bne. * elles durent 6 cycles d'horloge. Soit pour un P *cadenc 8MHz Horloge =f/4=2Mhz * Soit 0,5s pour la periode. *Donc la duree d'un bne et dex et de 3s *repet 65535 fois donne 197 ms temp dex bne com bra temp portb debut

*************************** * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect end $fffe fdb start

OFPPT / DRIF G.E. - 120 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP 4 Clignotement d'une seule LED sur un port en sortie l'aide dun tempo par boucle. Introduction d'un sou programme.

*fichier ledclign.asc * Clignotement d'une seule led sur le portb *Equivalences registres portb equ $1004

*Dbut du programme implantation en EEPROM

OFPPT / DRIF G.E. - 121 -

Rsum de Thorie et Guide de travaux pratique org $F800

MICROCONTROLEUR

******************** * Configuration ******************** * L'initialisation de la pile est obligatoire lors de l'utilisation d'un sous programme. start lds #$00ff

******************** *Programme principal ******************** *Allumer la led 1 sur le portb. debut staa * Attente de 197ms bsr tempo ldaa portb #$01

* Eteindre la led 1 sur le portb. ldaa staa * Attente de 197ms bsr bra ******************** * Sous Programmes ******************** * SP Tempo ***************** tempo debut #$00 portb

*temporisation de 197ms tempo ldx #$ffff

*tempo base sur le nombre de boucle effectuer

OFPPT / DRIF G.E. - 122 -

Rsum de Thorie et Guide de travaux pratique temp bne rts dex temp

MICROCONTROLEUR

*************************** * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect end $fffe fdb start

OFPPT / DRIF G.E. - 123 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP 5 Clignotement d'une seule LED sur un port en sortie l'aide dun tempo par boucles imbriques.
Mme pgm principal qu'en TP 4.

*fichier led1clig.asc * Clignotement d'une seule led sur le portb * Le temps de clignotement est de 1 s *Equivalences registres portb equ $1004

*Dbut du programme implantation en EEPROM org ******************** * Configuration OFPPT / DRIF G.E. - 124 $F800

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

******************** * L'initialisation de la pile est obligatoire lors de l'utilisation d'un sous programme. start lds #$00ff

******************** *Programme principal ******************** *Allumer la led 1 sur le portb. debut ldaa staa #$01 portb

* Attente de 197ms bsr tempo

* Eteindre la led 1 sur le portb. ldaa staa * Attente de 197ms bsr bra ******************** * Sous Programmes ******************** * SP Tempo ***************** *temporisation de 1s * chargement du compteur du nombre de boucle a effectuer tempo ldaa #10 tempo debut #$00 portb

* Chargement de la valeur permettant de faire une tempo de 0,1s t1s ldx #33333

*tempo base sur le nombre de boucle effectuer OFPPT / DRIF G.E. - 125 -

Rsum de Thorie et Guide de travaux pratique t100ms dex bne

MICROCONTROLEUR

t100ms

* fin de la boucle de 100ms * dcomptage du nombre de boucle deca bne rts t1s

*************************** * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect end $fffe fdb start

OFPPT / DRIF G.E. - 126 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

TP 6 Clignotement d'une seule LED2 sur le mme port en sortie. La dure d'extinction et d'allumage tant diffrente Introduction de variable et passage de paramtre

OFPPT / DRIF G.E. - 127 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

* Fichier hautbas.asc * Led allume durant un temps different de celui eteint. *Equivalences registres portb * Constantes dureeal dureeet *Variables org duree rmb $0000 1 equ equ 30 10 equ $04

*Dbut du programme implantation en EEPROM org ******************** * Configuration ******************** start lds #$00ff $F800

******************** *Programme principal ******************** * prparation de l'adressage index pour instruction ldy #$1000

*Allumer la led 1 et 8 sur le portb. ldaa staa #$81 portb,y

* Attente de 3 secondes debut staa bsr ldaa duree tempo #dureeal

* Eteindre la led 1 sur le portb. bclr portb,y,#$01

OFPPT / DRIF G.E. - 128 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

* cette instruction permet d'eteindre la led 1 sans toucher aux autres sorties * Attente de 1 secondes ldaa staa bsr #dureeet duree tempo

* Allumer la led 1 sur le portb. bset portb,y,#$01

* cette instruction permet d'allumer la led 1 sans toucher aux autres sorties bra ******************** * Sous Programmes ******************** * SP Tempo ***************** *temporisation parametre par duree * chargement du compteur du nombre de boucle a effectuer tempo ldaa duree debut

* Chargement de la valeur permettant de faire une tempo de 0,1s t1s ldx #$33333

*tempo base sur le nombre de boucle effectuer t100ms bne dex t100ms

* fin de la boucle de 100ms * dcomptage du nombre de boucle deca bne rts t1s

*************************** OFPPT / DRIF G.E. - 129 -

Rsum de Thorie et Guide de travaux pratique * Vecteurs d'interruptions *************************** *vecteur de reset org rstvect end $fffe fdb start

MICROCONTROLEUR

OFPPT / DRIF G.E. - 130 -

Rsum de Thorie et Guide de travaux pratique

MICROCONTROLEUR

BIBLIOGRAPHIE Philippe Lebenneur : Les microcontrleurs PIC 16F87X, Granville 2003 Franois de Dieuleveult, Herv Fanet : Principes et pratique de llectronique Bigonoff : La programmation des pics Rvision 6

OFPPT / DRIF G.E. - 131 -