Vous êtes sur la page 1sur 122
APM Introduction au 8051 - Programmation et Interfaces Version 24 Status Terminé (pour le moment) Date 07/09/2013 Auteur Jean-Michel Gonet 1, Le microprocesseur 11 Queest-ce quiun ordinateun? 1.2 Les premiers ordinateurs 1.2.1 La machine dacees aléatoue 122 Les machines de Konrad Zuse. 123 Llarchitecture Harvard, 12.4 Liarchitecture von Newnann, 1.3 Mémoire et periphériques. 2, Le 8051 en 5 minutes, 2.1 8051 - Spécifications. 2.2 8051 - Structure de la mémoire de données inteme 2.3 8051. —Les ports dentiée / sortie numeériques. 2.3.1 Diagramme des ports 1, 2 et 3. 2.3.2 Diagramme du port 0 2.3.3 Le port 0 et les entrées digitale, 2.4 8051 — Configuration technique. 2.5 Le eycle instruction et la fréquence Fase/12 3. Quelques composants de base. 31 Le« DIP switch » 3.2 Interrupteus et résistances de trage. 3.3 Les afficheurs LED 7 segments. 3.3.1 La résistance de protection. 3.3.2 Les alficheurs multiples. 3.3.3 Les convertisseurs BCD a 7 segments 4, Pratique — Utilisation des ports dentiée / sorte AV Le circuit 42 Le programme. 43 Lerésultat 44 Quelques questions 455 Relation entre software et hardware 5. 8051 —Le temps reel 5.1 8051 ~Les temporisateurs Timers, 5.1.1 Fonetionnement des temporisateurs 5.1.2 Configuration des temporisateurs, 5.13 Caleul du temps 5.2 Les interruptions... s 5.2.1 8051 — Les interruptions sur le 805 5.2.2 Configuration des interruptions, 5.23C5I — Mise en place des interruptions depuis Keil uVision C. 6. Prafique ~ Temporisateurs et interruptions. 61 Le circuit, 62 Le programme. 63 Lerésultat. 6.4 Quelques questions 7. 8051 —La UART. 7.1 La communication série, 72 LaUART du 8051 73 Configuration de la UART 7-4 Caloul de la vitesse de transmission 7.4.1 Fréquence de transmission basée sure timer! 7.42 Fréquence de transmission basée sur le cycle dinstruction 7.5 Exemple de configuration de la UART. Jean-Michel Gant «APM. lnoduction au 8051 - Progranunation Interfaces «24-2122 7.6 Pratique — Utiliser la UART comme sortie standard — print® 7.6.1 Le circuit 7.6.2 Le programme — redefinition de putchar 76.3 Le résultat, 7.64 Quelques questions 8. Le C en 5 minutes 8.1 Progratmation C —int, char et le modificateur unsigned, 8.2 Programmation C — Opérations booléemnes. 8.3 Programmation C — Précédence des opérateurs 84 Programmation C — Variables locales et variables globules. 8.5 Programmation C — Pointeurs et tableatx, 8.6 Programmation C — Les énumérations 8.7 Structures. 8.7.1 Collections de structures, 88 Les unions. 88.1 La virgule fixe 8.9 Code distribué sur plusieurs fichiers, 9. Les composants TTL. 911 Concept - « Chip Select » et état de « Haute Lmpédance » 9.2 Composants — Les séries TTL, 9.2.1 Composants ~ La famille TTL-HC. 9.2.2 Composants — Mdentifiants de circuits TTL a usage courant 93 Composants —La baseule 9.3.1 Composants ~ Le 74HC373. 9.4 Composants — Le multiplexeuret Ie décodeur 9.4.1 Composants ~ Décodems / démultiplexeus TTL. 10, La mémoire exteme 10.1 8051 — L’aceés ala mémoire de données exter. 10.1.1 8051 ~ Le port 0 en mode mémoire externe 10.1.2 8051 — Cycles de lecture et eéeriture de la mémoire externe. 10.1.3 Programmation C pour $051 — xdata 10.2 Pratique ~ Lire et écrire dans la mémoire externe 102.1 Le circuit. 10.2.2 Le comecteur CE 102.3 Le programme 10.24 Le résultat. 10.25 Quelques questions. 11, Pratique- Une mémoire daffichage. 11.1 Le circuit 11.2 Le programme, 11.3 Le résultat, 11-4 Quelques questions 12, Le davier. 12.1 Composant ~ Le elavier 12.1.1 Proteus — Les claviers vituels 12.2 Pratique - Le clavier comme une mémoire exteme, 122.1 Le circu. 1222 Le programme 1223 Lerésultat. 12.24 Quelques questions. 13, Le Bus, 13.1 Concept — Le bus, Jean-Michel Gant - APM. lntoductin au 8051 - Programas Interfaces «24-9122 13.2 Pratique — Contrdlewr de bus. 132.1 Le eontrdleur de bus. 132.2 Les trois périphériques 132.3 Le programme, 14, Les test unitaires 14.1 Questce quiun test unitaire 1422 Programmation C — Structure pour tests unitaires 142.1 Programmation C — Le préprocesseur 142.2 Keil wVision — Créer un environnement de test 142.3 Programmation C — Structure de base pour les tests unitaires, 1424 Keil uVision — Lancer les tests unitaires directement 143 Concept ~ Le développement piloté par les tests 144 Exemple pratique de test unitate. 15, Keil wVision. 15.1 Introduction 152 Création et configuration du projet. 153 Configurer un projet pour Proteus VSM 154 Ajouter des fichiers dans le projet. 15.5 Quelques particularités én C pour 8051 15.6 Compilation, 16, Proteus. 16.1 Introduction, 162 ISIS, ARES et VSM. 16.3 Placer les composants. 163.1 Choisir les composants du circuit. 163.2 Placer les composants dans le circuit. 16.3.3 Remplacer um composant par un autre 16.4 Connecter les composants, 164.1 Les simples condhcteurs, 16.42 Les bus, 16.43 Les teminau 16.44 Lialimentation et la terre 16.5 Naviguer sur le circuit 165.1 Géter la taille deta feulle 165.2 Distribuer un circuit sur plusieurs feuiles 16.6 Sunuler le circuit 166.1 Chargement du programme avec MPLABX 166.2 Chargement de programmes avec Keil wVision. 16.6.3 Lancement de la simmiation. 16.64 Exécution pas a pas. Appendice A, Table des illustrations JeaMicel Gent -APM.-lntodutin u 801 - Programas Intense «24-4122 Ho i 2 na ua ld us us 16 7 7 us 121 1. Le microprocesseur Un microprocesseur est une petite machine qui se trouve a linlérieur des ordinateurs, Cette petite ‘machine lit ou exéoute les programmes, puis commande les différentes parties de Vordinateur pour leur faire accomplice qui est demands Selon cette description, dans un autobus, le microprovesseur serait Ie chauffeur: IL ites signes de trafic, puis il contrde le bus pour ne pas sortir dela route ni effiayer les autres autommobilistes. En. ‘méme temps, il aun horaire a suivre, des aréts oit les passagers montent et descendent. Le ‘conducteur suit un programme. Pour décrire avec plus de précision ce quest un microprocesseur, il faut commencer par déinir 2 «quest un ordinateur 14 Qu’est-ce qu'un ordinateur? ‘Voici la défintion d’ordinateur donnée par Ie dietionnaire: [Un ordinateur est une machine yrogramme. (Ceci laisse quelques questions ouvertes + Quiestce quune machine? + Quiest-ce quitune information? + Quest-ce quium programme? spable de transformer des informations selon un Une machine est un outil doté d'un mécanisme, Par exemple, un simple toumevis nest pas une machine. Mais un toumevis électrique en est un. Le fait quiun objet soit une machine ou pas ne dépend pas de son ufiité, mais de son principe de fonctionnement, On parle d'une cafetire, on dune machine @ café, = Une machine consommne de fénergie pour réliser un travail = Une machine a un propos. Elle sert quelque chose, Son existence a été planifie = Une machine a été constnuite de toutes piéces. Normalement par les hommes. Par exemple, tun eochon sert& quelque chose, mais ce nfest pas une machine On parle d'automatisme lorsque machine a un certain degré dinitiative, voir dindépendance. Par exemple, une machine @ laver peut travailler toute seule, une fois quion 'a chargée de linge sale, mis Te detergent, et slectionné le programme {hon 2 SO pega, wn eee NE Pour quitune machine ait de initiative elle doit étre capable de prendre des décisions. Elle a besoin de + Informations sur les quelles baser ses choix. = Régles, qui transforment les informations en choix La machine & laver ne prend aucune cision tant que son propritaire n'a pas choisi et laneé un des programmes de lavage. Mais, dés que le programme démarre, la machine vérifie si la porte est ferme, Pour cela elle a besoin de = Information: Oui ou non, la porte est-elle fermée? Pour cela la machine & laver posséde un senseu qui se trouve collé au loquet de la porte = Régle: Si la porte est ouverte, alors attend. Une fois que la porte est fermée, la machine @ laver passe au stade suivant du programme, qui consiste a faire entrer de eau, De nouveau elle a besoin de: + Information: Quel est le niveau de V'eau dans le tambow? Pour cela un senseur est collé & un Alottew + Régle: Tant que le niveau est plus bas qu'une quantité, alors attendte, Dans chaque cas, l'information est arrivée par le biais d'un senseur. Un senseur transforme un phénoméne physique en signal électrique. Ce signal électrique arrive dans le cerur décisionnel dela machine qui litle programme. Le programme contient les régles. Le résultat @appliquer une régle a ‘une information est une action. Il existe deux types actions Jean-Michel Gant - APM. lntoduction au 8051 Programmation Interfaces «24-6122 = Des actions qui affeetent le déroulement du programme, Ou, dit autrement, sauter me autre seetion du programme. Par exemple: "‘ant que Ja porte est ouverte, attendre. Dés quelle se ferme, alors passer au pas suivant", Ow encore: "tant que le niveau dean n'est pas sufisant, attendre' = Des vraies actions, Par exemple: "ouvrir fa vanne d'eau", Ou encore: "faire tourer le tambour" Les vrnies actions sont initiées par un signal électrique. Ce signal est transformé en mouvement par un moteur Iya done, au cceur de la machine @ laver, un engin qui regoit des signaux électriques en. provenance de senseurs, et les transforme, au moyen de régles (Je programme), en d'autres signaux. lectriques, qui actionnent des moteurs, des relais magnetiques, des alarms sonores, ete Cot engin vit dans un monde oit tout est représents par des signaux électriques, Cet engin ne travaille pas avec la réalité. I travaille avec une représentation de la réalité. Il vit dans le monde de Vinformation. Cet engin est un ordinate 4.2 Les premiers ordinateurs Les algorithmes sont connus depuis lantiquité. Le premier, et plus fameux, est le calcul du plus ‘etandl commun diviseur (PGDO), inventé dans Vantiquité par Euelide [Pou calculer le PGCD de devs: nombres, A et B. 1. Effectuer la division euclidienne de A par B. Soit R le reste l2. Remplacer A par B et B par R. 13. Recommencer. |e PGCD est le dernier reste R non nal. Lenni de cet algorithme est quill ne peut étre interpret que par des inmwins. Pour tenter comprendre comment une machine pensante pourrait exécuter cet algorithme, il faut Zabord trouver lun moyen de le réduire en opérations élémentaires. Méime opération élémentaire est un concept flou, Pour un adulte, la division euclidienne peut paraitre élementaite, mais un enfant de 5 ans ne saurait pas a réaliser. 4.2.1 La machine d'accés aléatoire En 1936, deux chercheurs, M. Alain Turing, et M, Emil Post publiérent des études sur la formalisation des algorithmes, On déduit de leurs théories que tout algorithme peut étre déeomposé en une série ordomnee dopérations élémentaires de trois types: + Opérations arithmétiques sur des données, qui donnent comme résultat d'autres données (pour caci il est nécessaire avoir un support doit lire et Seri les données). + Sauts dun point dela série dopérations a un autre, + Sauts d'un point de la série dopérations a un au, suivant le résulat d'une opération arithinstique. La machine capable dinterpréter ces algotithmes s'appelle « machine d'accés aléatoire »: [One machine absiraite qui possbde un nombre indéterming dlléments de Inémoire quielle peut aceéder dans le désordre, et qui suit pas & pas un [programme composé diun nombre indéterminé @ instructions simples (des accds lan dléments de mémoire, des opérations arithméneues basiques, des sauts & \"intérieur du programme, éventuelfement conditionnés au résultat de la derniére lapération) Jean-Michel Gant - APM. lntoduction au 8051 - Proranunatin Interfaces «24-7122 Alan Turing fut zetrouvé mort dans son lit, empoisonné au eyanure, Une pomime a moitié eroquée se trouvait a coté du lit. L'enquéte n'estima pas opportun de vérifer si la pornme était contamins, Il est possible que Turing ait trempé la pomme volontairerment dans le poison, mais il est également possible quil siagisse d'un accident, ® Mlustratton 3: La pomme de Apple est-elle un hommage & ‘Alan Turing? Ce rest pas officiel, mais il aété spéculé que le logo de Apple est en honnenr des contributions de ‘Alan Turing aux sciences de information’. Il se peut que la fameuse pomme fasse plutot référence 4 colle de Newton, ou bien encore celle de Adan et Eve. Lidée de V'arc-en-ciel est de Steve Jobs, pour bien mettre Vaccent surla qualité des couleurs de I'Apple I 1.2.2 Les machines de Konrad Zuse La premiere réalisation de machine daceés aléatoire est Ia Zuse Z7, construite par Konrad Zuse dans V'appartement de ses parents* Zuse était un ingénieur civil, et congu la ZL entre 1936 et 1938, comme une aide pour ses caleuls. Dans sa conception, la Zuse 2 était trés semblable é un ordinateur moderne: instructions, mémoire, routines, sows-routines, ete, Par conte, elle était enticrement mécanique, elle avait une fiSquence dhhorloge de 4Hz, et ne pouvait marcher que quelques minutes au maximum. La Z2 (1939) était basée sur des relais. Elle fonctionna juste assez pour impressionner une audience de la Deutsche Versuchsanstalt fr Luftfahrt avi lui finanga la Z3 (1941) comme un projet ultra-seeret pour Varmée de Vai T Drepréssarécentebiographic, pare en 2011, Stove Jobs 2 declare sil uri bien vous que ce sit vai mais qui ‘ny avait jamais pense fai meme Vor également i/en wikipedia om wikiZ1_(congute) pn wikipedia onawikiZ2_ Gomoute, ‘npn wkipeiaorgvikZ3_ (compute, ett: /en wiupeiaorghwikvZ4 computer) Jean-Michel Gant - APM. lnoduction au 801 - Proganunatin Interfaces «24-122 Leeerten Mbustration 4. La Zuse Z1, construite dans Vappartement des parents de Konrad Zuse La Za (1945) fut construite par Konrad Zuse dans V'ntention dela vendre. L’Allemagne perdant la suerte, il di la déménager plusieurs fois pour fuir le front et Farmée russe. En 1949, le rmathématicien suisse Eduard Stiefel Tacheta et Yamena 4 ETH de Zhtich en 1950. La Z4 fut ulilisée pour raliser les caleuls de structure de la Grande Dixence, Parla suite, Konrad Zuse construisit plus de 200 autres machines. Sa compagnie fut finalement achetée par Siemens en 1967. Les deux clefs du suecés des machines de Zuse furent = Uiliser un systéme tres simple pour représenter les nombres : le systéme binaire = _Utiliser un micro-séquenceur dans le bloc de contrdle : chaque instruction da programme pointe sur une séquence spécifique du micto-séquenceur, Il devient possible de eréer des nouvelles instructions en ajoutant des nouvelles micro-séquences, sans toucher le reste du Cette simplicité lui permit de construire ses premiéres machines tout seul, et les suivantes avec un staff réduit; Pour la Z4 il avait une équipe de 25 personnes autour de lui, ce qui nfest pas plus grand quiun modeste bureau ingenieur. (Ces deux concepts sont toujours présents dans les ordinatews moderes. 4.23 architecture Harvard le ASCC (4utomatic Sequence Controlled Calculator), consteit par IBM, en association avec VUniversité de Harvard, et livré en 194, est plus connu sous le nom de Harvard Matk Beaucoup plus grand et plus cher que ceux de Zuse, il servit faire des caleuls balistiques. Iisa le programme dtune bance perforée, En conséquence, le programme était strictement séparé des données 1 Vor @ ce sujet pr-03 bm com miso esubisnarmm intro Jean-Michel Gant - APM. lntoductio au 801 - Proganunation Interfaces «24-9122 Gontidle Eoriture Mbusiration 5: Architechare Harvard. Te programme est physiquement séparé des données. Liatehitecture de Harvard a Yavantage d'tre simple : pour exeuter un programme, il faut alterner des lectures dinstructions et des lectures / eritures de données. Le fait que les deus éléments scient sur des supports différents rend le mécanisme plus simple, 1.2.4 architecture von Neumann En 1945, John von Netmarm publia ce qui s’appet par la suite architecture de Neumann, et qui est celle dela plupart des ordinateurs modemes: [Une machine acces aléatoire qui a une unité de traitement séparée Tiave unite Ide stockage. L'umité de stockage peut conserver i la fois des programmes et des données. U.de traitement U.de stockage Mlustration 6: Architecture von Neumann: le programme et les données sont sur le ‘méme support Le fait que le programme et les données soient sur le méme support, permet plusieurs choses importantes Jes Miciel Gone - APM -lnroducion a1 80St -Prowrnmation ntnes- 24-1022 Test possible de « charger » un programme dans la meémoire, puis de Mexécuter Test possible pour un programme de créer dautres progrannmmes (assemblews, compilateurs) est possible pour un programme de se copier sur dautres programmes du méme ordinateur, et méme autres ordinateuts st des mécanismnes de transmissions existent (virus informatique). est théoriquement possible pour un programme de erger des versions amiliorées de Iui miéme (scence fiction 7) 41.3 Mémoire et périphériques Les architectures de Neumann et de Harvard peuvent paraitre assez éloignees des réalités domestiques. Cependant, pour permettre a une machine accés aléatoire de contréler les moteurs, thermostats, pompes et verrous d'un lave-linge, il suffit de connecter certains des éléments de mémoire a des sondes et des relais: oA (LO SS Sa = |i O Mlusiration 7- Les ports sont des dléments de mémoire connectés cut monde extérieur Selon leur uilité principale, ily a deux types d'éléments de mémoire: Coux qui ne font que stocker les informations. C'est a ceux-ci quion se réffre en général par Ie terme « élément de mémoire » Ceux qui sont conneetées i des mécanismes externes. Ces éléments sont des « ports», et les écanistnes aux quels ils sont connectés sont des « périphériques » = Un élément de mémoire relié & me sonde permet Iunité de contréle deffectner une lecture du monde physique, Cet élément de mémoire est un « port entrée » = Undlément de mémoire connecté un relais permet a Tunité de controle agir sur le monde physique. Cet élément de mémoire est un « port de sortie», Jean-Michel Get - APM -lusoduetin a 8951 -ProanmntineInterfees «24 = 11/122 2. Le 8051 en 5 minutes 2.4 8054 - Spécifications = Le 8051 a quatre ports de 8 bits. Chaque bit peut étre configuré comme une entrée ou comme une sortie = Le 8051, comme tous les microcontrdleurs, posséde des périphériques interes = A ports d'entrée/ sortie mumériques. = 2 compteurs/ temporisatewrs. Cenx-ci sont pratiques pour cadencer des actions dans le programme. Par exemple, pour altemer les temps dactvité et €amrét du tambour d'un lave-linge, ~ Uneémetteur / récepteur asynchrone tniversel, appelé couramment UART". Il Sagi «dune unité pour transmettre des données en série, Celui-ci Ini permet par exemple de ‘communiquer avec un dispositif de type terminal. Ou également un autre ordinateur, via le pot série COM = Le 8051 suit architecture de Harvard : le stockage du code est séparé du stockage des données. = Le 8051 p ~ Le 8051 posséde une meémoire inteme pour le code de 2048 bytes? = Le 8051 peut également lire des données d'une mémoire exteme (voir 10.1), ef ire le code une mémoire externe de une memoire inteme pour les données de 256 octets 1. Chinversal Asynchronous Receiver Transmitter 2 Lebyte(prononce «hare »), de symbole B et a pls petite unit adressable 'un ardinater. Un octet est un scsenble de Shits. Dans lamajonté des architectures, les bytes sont de Sbits Voir également nifivikinedin naw Mlustration 8: Vite densemble du 8081 2.2 8051 - Structure de la mémoire de données interne La mémoire inteme du 8051 est divisée en deux moitiés + Les adresses entre 0x00 et Ox7F sont des registres @ usage général (des éléments de ‘mémbire). Cette zone est appelée simplement mémoire interne (Internal RAM). = Les adkesses entre 0x80 et OxFF sont des registres & usage spécial (Special Fimetion Registers). Ils sont utilisés pour contélet les périphériques intemes : UART, temporisateuts, ports dentrée / sortie. Voici un schéma de la mémoire de données du 8051 Mlustration 9: Mémoire de données interne du ‘$051 Jes Michiel Gone - APM -lnroducion a $0St -roginmation ntnes- 24-4122 2.3 8051 — Les ports d'entrée / sortie numériques Les adkesses 0xB0, 03x80, 0::50 et 02:80 de la mémoire inteme sont directement religes aux 4 ports du 8051. Les ports sont bidirectionnels = Une lecture de adresse comespondante au port permet de lire I'stat dun péripherique branché dessus. ~ Une deriture sur Tadresse correspondante au port permet d'établir Iétat dun périphérique branch dessus, Mluswration 10: Les ports di mémoire de domées 2.3.1 Diagramme des ports 1, 2et 3 Les ports 1, 2et 3 ont hnit connecteurs chacun, Chaque connecteur est relig avec le bit correspondant dans Ia mémoire de données du micro contrGleur par un circuit ressemblant au suivant Ihustration I: Schéma pour un connecteur dun port. Chaque port a huit comecteurs Par exemple, pour configurer le port en sortie, et y rire un 1 1 Le uC écrit un 1 sur la donnée D de la bascule (Voir point 9.3, des explications supplémentaires sures bascules de type D). Jes Michiel Gone - APM -lnroducion a S0St -Progrnmaion ntenes= 24-1822 2 Lasottie Ge la bascule se met @ 0, ce qui bloque le courant travers le MOS. 3 Le courant qui traverse la résistance (se déversant a travers le port est tés petit. 4 En conséquence le port se met & 1 — Mlustration 12: Pour avowr un "I" en sortie du port, le uC éeritun "1" sur labascule 2.8.2 Diagramme du port 0 Le port 0 est légrement différent des ports 1 2 et 3 : il est configuré en « collecteur ouvert ». Ou, plutot, en « drain ouvert », puisque le 8051 est implémenté en technologie CMOS. Ceci veut dire ‘ui fa pas résistance de « tirage » (pull-up en anglais) Mlustration 13: Le port 0 (contrairement aux ports 1, 2 et 3) n'a pas de résistance de tirage Enconséquenee, le port 0 ne peut produire de courant. Il peut quen const - Ala place de sort un « 0 » il « consomme » du courant, c'est dire quil se mettre en circuit ouvert = Alaplace de sortir un « I », i « blogue » le courant, cest dite quil se met en circuit ferme, mmer Jes Michiel Gone - APM -lnroducion a $0St -Prosinmaion ntnes- 24-1622 1 Mlustration 14: Le port 0 peut soit « consommer » di courant, soit « bloquer » le courant. Ceci a quelques conséquences sur la maniére de connecter des circuits surle port 0 (voir le chapitre 4etle point 2.3.3) 2.3.3 Le port O et les entrées digitales Comme décrit au point 2.3.2, le port 0 n'a pas de résistances de tirage. En conséquance, il ne peut que consommer du courant, il ne peut pas en produire. Pour connecter des entrées digitales (tn latch, par exemple), l faut ajouter extérieurement les résistances de tage ut Mlustration 15: Avec les résistances de tirage, le port 0 devient identique aux ports 1, 2 et 3 2.4 8051 — Configuration technique. ‘Voici les requis techniques minimum pour mettre en fonetionnement un miero-contrdlewr $0€51 = RST (entrée): Lorsque cette entrée vient a niveau haut, le 8051 est réinitialisé, Ceci veut dire aque les registres spécianx reviennent a leurs valeurs par défaut. Pendant I'allumage il est recommandé de conserver cette entrée a niveau haut pendant ax: moins 2ms, - BR (entrée): Lorsque cette entrée est niveau haut, le 8051 exécute le progranme de la ‘mémpire programme interne, La mémoire interne est limitée & 2048 bytes. Jes Michiel Gone - APM -lnroduction a $0St -rogrnmation ntenes= 24-1722 + XTAL1 et XTAL2: Le 8051 posséde un oscillateur interme qui tome 12MHz, Pour ccompléter le eireut interne, il faut brancher ente ces deux botnes un etistal de 12MEz et deux condensateurs de 30pF, Voici le strict minimum pour que le 80551 puisse fonctionner (les bomes Calimentation sont omises, du cizeuit) ut Mhustration 16: Configuration minimum pour le 8051 2.5 Le cycle d'instruction et la fréquence Fosc!12 Le cycle dinstruction' est le eyele opsrationne! de base d'un microprocesseur ou d'un icrocontr leur. Il consiste en + Récupérer 'instruction 4 exécuter de la mémoire programme, ~ Déterminer quelles actions sont requises par linstruetion, = Eventuellement récupérer des données supplémentaires de la mémoire programme ou de la ‘mémbire de données, + Exéouter les actions, Ce cycle est répété depnis que le microprocesseur ou microcontréleur est mis sous tensions, jusqu'a ce quil est mis hors tension. Sur le 8051, un cycle dinstruction stexécute en 12 cycles dhotloge, Par exemple, sie 8051 est cadeneé a 12MH2, il exéeute 1x1 0° instructions par seconde, Dans In documentation du 8051, la durée du cycle dinstruction est typiquement notée par Fose/2, it Fose est la fréquence de Yoscillateur externe ou horloge. La fréquence Fose/12 est a prendre en. ‘compte pour toutes les opérations en temps réal (voir chapitre 5). 1 Barat de Wikip intbclen wikipedia orgtvikiInstuction evele Jes Michiel Gone - APM -Inroduction a $0St -Prowinmation ntenes- 24-1822 3. Quelques composants de base 3.4 Le « DIP switch » Un« DIP switch » consiste en un ou plusieurs interrupteurs qui ont exactement la taille d'un DIP. [én micro-lectronique, wi bottier DIP (Dual Inline Package), estun bottier de Jircuitintégré qui connecte un circuit intégré cut monde extérieur: On rencontre légalement le terme DIL pour désigner ces boitiers. Les boitiers DIP peuvent ére directement soudés sur fe circuit imprimé (PCB), ow insérés dans des supports leue-mémes soudés, permettant un remplacement facile chi composant et une réduction des risques de destruction lors de la soudure. [Les boitiers DIP peuvent étre aussi bien uilisés pour les circuits intégrés (tels ue les microprocesseurs) que pour des rangées de composants électroniques Idiscrets(tels que les résistances). |(source + bity:Lifewikipedia orehviki/Dual Inline Package) ” see E a f a Mlustration 17: Un « DIP switch » de 8 éléments 3.2 Interrupteurs et résistances de tirage Les entrées digtales ont une impédance dent tes dlevée, I faut en tei compte si on branche un {nferrupteur directement dessus + Lorsque Vinterrupteur est fermé (done, laisse passer le courant), 'enlrée digitale est directement connectee a 'alimentation, et détecte corectement un « 1 » logique, = Par contre, lorsque Vinterrupteur est ouvert (donc, ne laisse pas passer de courant), entrée digitale nest connectée a rien. En conséquence, il nest pas garanti quelle détecte tm « 1» Lielectricit statique ot les parasites peuvent suffire ala fare basculer d'un niveau a autre Vee Vee ate Mlustration 18: Tnterrapteur sans résistance de tage Pour que, lorsque l'interrupteur est ouvert, l'entrée digitale soit forcée au niveau « 0 », on utilise une réastanee de rage + Lorsque J'interrupteur est fermé, le courant passe 4 travers Ja résistance, L’entrée digitale se trouvant branchde directement & Veo, elle pergltun «1 »logique, + Lorsque Iinterrupteur est ouvert, lentrée digitale est branchée @ la masse & travers la résistance, Comme la résistance interne de Ventrée digitale est és élevée, la résistance de tirage fait presque Feet d'un couut-cirenit. En conséquenee, Ventrée digitale pergoit un «>. Mlusiration 19: interrupteur avec résistance de tirage Pour étte effective, a valeur de la résistance de tirage doit ere beaucoup plus grande que la résistance interne de V'alimentation, et beaucoup plus petite que a résistance interme de Ventrée digitale Jes Miciel Gone - APM -lnroduction a S0St -Prosrnmaion ntnes- 24-2022 RucERER, 3.3 Les afficheurs LED 7 segments Liafficheur LED 7 segments! est un des composants électroniques les plus simples pour représenter des chfftes de 0 49, et les lettres de A a F Mlustration 20: Afficheur LED 7 segments Ty a deux configurations possibles: + Cathode comnaune (common cathode) : toutes les cathodes sont religes entre elles, = Anode commune (common anode) : toutes les anodes sont religes entre elles. Mlustration 21: Afficheur LED 7 segments en cathode commune et anode commune 3.3.1 La résistance de protection Les LED des afficheurs 7 segments on, comme toutes les diodes a émission lumineuse + Une tres petite résistance interne. = Un tension de seul qui dSpend fortement de la couleur du LED. 1 Vor également: hip/ifzwikipedia orgwiki/Aficher 7 segments esa Michel Gone - APM -lnroduction a 80St -Prowrnmation ntnes- 24-2122 Lorsqu’on alimente une diode, il faut faite attention @ tenir le courant dans les limites de fonetionnement, Les valeurs typiques de fonctionnement sont, pour des afficheurs de 10mm rouges + Courant Galimentation typique : 1,., = Lma + Tension seuil : Ving = 1.8V Les cireuits micro-contrdlés ont typiquement une alimentation disponible de SV. En conséquence, la résistance de protection devrait valoir F sain Veg S18 R Tea T10” 3.2k 3.3.2 Les afficheurs multiples our simplifier les circuits, il existe sur le marché" des afficheurs LED groupés par 2, 4 et méme plus chiftes, Mbustration 22: Afficheurs 7 segments multiples Le cireuitinteme suit toujours le méme principe ; les connectews a, b, c,d, ©, £ get dp sont comectés entre eux, par contre les anodes / calhodes sont séparées. Ceci permnet allumer les afficheurs indépendanament les uns des autres. Mlustration 23: Schéma interne dwn afficheur 7 segments ‘multiple en anode commune. Par contre, si plusieurs afficheurs sont allumés, ils affichent tous le méme nombre. En conséquence, Ie circuit de contrdle est oblige d'allumer chaque affichewr & tour de role, a une vitesse suffisante 1 Vor ke catalogue en liane itn amscavatrni. afi hous multples-T-segmentslestet 159 uml Jes Mice Gone - APM -lnroducion a 80St -Progtnmation ntnes= 24-2222 pour donner impression quils sont touts allumés a la fois. 3.3.3 Les convertisseurs BCD & 7 segments Un probléme classique des afficheurs 7 segments est quils ne suivent pas tne notation standard, et ‘ui utiisent 7 bits pour représenter les chiffies de 0 8 9, qui normalement nécessitent de seulement 4 bits Voici la conversion pour les chifties 0 a 9 ‘Valeur |Affichage | abedefy |a|b| e[ a] ef] g| 0 0 osF [ifififififiso 1 1 0x06 _[o]11]o/o[o/o 2 2 oxsB [i[ifolififola 3 3 oxaP [i fifififofoli 4 4 ox66 [ofa [1 [ololi[a 5 5 oxed_[o]1[o]o/1[olo 6 6 om [rfofififififa 7 7 oxo7_[1]i[1[ofofolo 8 8 oF fifififififafa 9 9 oxoF [i [afififofifi 10 A ox? (a fafa fofafala ul > ose fofofifafifafa 2 c oa9_[1fofolifififo B a ose fofafifafifofa 4 E ox [ifofofififila 15 F ox _[1folofolafifa Pour pouvoir afficher cortectement des valeurs numériques sur Yafficheur 7 segments il faut réaliser Ja conversion. Les convertisseurs BCD a 7 segments servent justement a ga. Il sagit de circuits intégrés qui ont 4 entrées et 7 sorties, et qui implémentent la table de vérité ci-dessus, En général, ces cireuits ne gérent pas le point décimal Jes Michiel Gone - APM -lnroducion a $0St -Progrnmaion ntenes- 24-2822 Mustration 24: Le décodeur BCD 7 segments ‘Sur un microcontréleur, la conversion peut étreréalisée plus €eonomiquement depuis le programme, Jes Michiel Gone - APM -lnroducion a $0St -Proginmation ntenes- 24-2422 4. Pratique — Utilisation des ports d'entrée / sortie ‘Au chapitre 2 nous avons vules ports entrée / sortie numériques. Dans ee premier exercice pratic jque nous cémontrons leur fonctionnement 44 Le circuit Les interrupteurs sont conneetés au port 1, et un aflicheur 7 segments en anode comumune sont ‘connects sur le port 0. ld fF Ee mi eguy0 fa. FEET GHEE Fle Mlustration 25: Les interrupteurs sont connectés au port], et Vafficheur au port 0 Voici 4 laliste des composant a utiliser (voir 16.3) Microcontrdleur : 80C51 Condensateuts : CAP Cristal : CRYSTAL, Résistances : RES Interrupteurs : DIPSW_8 Afficheur LED : 7SEG-COM-ANODE. Ce modéle a, dans sa configuration par défaut, un courant nominal de 10mA. Les réxistances de protection de 3.70 indiquées dans le circuit sont prévues pour un courant nominal de ImA (voir point 3.3.1). Vous devez done changer Ie la propriété « Segment On Current » a 1mA 4.2 Le programme Le progranume consiste uniquement a lire du port | et a éerire dans le port 0 finelude * point dtentrée du programme, + Copie les valeurs du port 1 dans le port 0. ” void main(void) c unsigned char 3; while(1) i s=PL , 43 Le résultat Si tout va bien, le circu ‘Tafficheur 7 segments, ‘= comporte comme si nous avions connecté les interrupteurs directement Mlustration 26: L'nterrupteur directement connects Vafficheur 4.4 Quelques questions = Pourquoi avons-nous choisi port 0? = Pourquoi les interrupteurs sont directement connectés au port 1, sans résistances de tirage ? n allicheur en anode commune ? Pourquoi Tavoir connect au 4.5 Relation entre software et hardware Une question qui peut venir Yesprit en sant le programme ci-dessus est la suivante : Comment est-ce possible de copier 'éat de 7 interrupteurs du port 0 dans 7 LEDs du port 1, en utilisant une Jes Michel Gone - APM -lnroduction a $0St -rowinmaion ntnes- 24-2622 seule variable s ? Laxréponse se trouve dans la structure interme des variables uilisées. Autant PO et P1 que s, sont des variables de type char, dune taille de un octet. instruction © = P1 copie chacun des bits de Ja variable P1 dans Ia variable o=[P1.7]pa.6fet-s|pt.afen.3]ea.2]et.1]et-o] instruction £0 = copie chacun des bits de la variable s dans la variable PO. Chaque bit dela variable P1 est branché sur un des connecteurs du port 1. Chaque bit de la variable PO est branch sur un des connecteurs du port 0. Mlustration 27° PO etP1 sont des variables branchées sur les connecteurs (Ce que fait le programme est uniquement de copier la valeur du port 1 dans le port 0, en passant par la variable 2. Un programme plus évolué pourrait faire quelque chose de plus sophistique avec la valeur une fois quelle se trouve dans s. Jes Miciel Gone - APM -lnroducion a S0St -Progrnmation ntenes= 24-2722 5. 8051 — Le temps réel 5.1 8051 — Les temporisateurs - Timers Le microcontréleur 801 disposent de dewx' compteurs /temporisatours de 16 bits (couramment appelés Timers, en anglais) Ils sont identifiés comme timer et timerl. Is sont indépendants et peuvent fonetionner en dews modes = Mode compteur : Dans ce mode, le ispositif compte le nombre de transitions de « 1 0» sur les connectewss 7 ou Une interruption est signalée lorsque le compte déborde = Mode temporisateur : Dans ce mode, le dispositif compte les eyeles d'instruetion (Fose!/12, voir point 2.5). Une interruption est signalée lorsque le compte dborde 2 ca Bgzzs2232333 LL [21 [21 fel fel LL fel] fel S11 die TST TST ST TTT ETT TTT TTT TTT SEESERSHE S222 252 8 BEPEEEP ACTER EEE Iilustration 28: Les temporisateurs peuvent compter les transitions sur T0 et T1. 5.11 Fonctionnement des temporisateurs Les temporisateurs fonetionnent de Ta fagon suivante + Llapplication charge une valeur dans les registres THI-TLI (timer!) ou THO-TLO (timex) + Le dispositifincrémente Ia valeur des registres THx-TLx. ~ Enmode temporisateur, linerémentation est faite & chaque eyele dhorloge (voir point 25) 1 Sulvant les modéles de 8051, i peut en exister un trosiéme,letimer2. Nous ne avons pas documenté dans ce teste = Enmode compteur, Hinerémentation est faite chaque transition de « 1.4.0.» sure connecter 7) ou TL = Lorsque le compteur déborde (c'est dite que THx-TLx passe de 0xFFFF & 030000), le bit ‘TPI (timer!) ou TFO (timerO) est mis a 1, ce qui provoque tne interruption si celle-ci est activée (voir point 5.2.2), = Dans la routine dinterruption, application recharge la valeur appropriée dans THx-TLx. Enmode 2, uniquement TL1 est utilisé pour le décompte. Lorsquill déborde, TL est automatiquement rechargé avee la valeur de THI ea] IO! aE Mlustration 29: Diagramme de fonctionnement des temporisateurs 5.1.2 Configuration des temporisateurs Les temporisateurs sont configurés au moyen des registres TCON et TMOD. Jes Michel Gone - APM -Inroduction a S0St -roginmation ntenes- 24-3022 TCON ({A80C51], page 86) TFL TRI | TO | TRO IE m1 1K0 110 Bit7 Bio TRA [| Indaue que emer et rive m tae devon compe Babs 1 spartndware longi econpta diner rive 80. Eubl 3 «0» par hardae longue Foteriptin ace TRI |! -Letinet et ott Letina ext tactic "TRO |! Indque gu tines et rive m tne de son compte Baba 1» pr tindware omg le copa dine arive 0 Foueritin gece T= Letier et ct TRO [ox tetina et tt TEL |1—Uneconiton ditaroton ne le conectaw STE a ae dee Remi 4260 atonatiqunet lord waite de itrnpton TT] _|1—Unetanstin de« 40» sr IVF provoquue inteprin 0 Unaivea 0» a ZHET provoqu te terion TEO —_|1—Uneconitonditerptcn ele canetew HITE a ae dee, Remi 20 atria oy date! de aterption. TTO [1 Unetrnstn de« 1&0» sr HTT provoqe un inti —Unnivem «0» INTO prov te neroption, TMOD (A80CSI], page 87) cater | crit [ Mii | Mot | GATEO | c/ro# | Mio | Moo Bit7 Biro GATEI |= Le tine et acfméme so TCONTRI et «0 Tina pet re ile par nares peigheiquer ane tects lsmurocatte Letina nest wf qe wi TCONTRI ot», CrTI# |More camper 0 Mode tanpointeu Mit |S: 01> — Mote d= fonciennen par Te tane 0) Mode 0~ Comper Tenors Ge 8 (TH) ace dviscurd Sits TL) 1 ~ Mode 1 Conptew/ Tempers de tobias (TH @TL1) MOL |10=Mode 2=CompeurTanpersteu de tits (TLL), recharge vee TH longi ave 8 Tae 3~ Compt /Teporsacur pase T= Le tier et acme sTCONTRO et a0» GATEO 0 Letina st utes TCONTRO stat CITO# | —Melecomptew 0 Mode nputater MIO |-3f10: Moo Mode de fincomenent pow eter op Side 0 ~Conpteur Tenporsatr de tts (THO) ae dviscr de Sbits(TLO) 1 ~ Mode 1 Compter/ Teoria de 16bis (TH LO) MOO |10—Mode 2~Coneeur/Tenperbteu de 8 its (1LO, serechorge avec THO lang aive 40 Mode 3 Conptay / Teupoisseu de Shits (THO) sn divnew. 5.1.3 Caloul du temps Les temporisateurs comptent sur une base de Fosc/12, mais chaque mode est légérement different dans le comportement Comme les compteurs sont inerémentaus, le nombre de eycles compter se fait depuis le Jes Michel Gone - APM -lnroduction a 80St -Prowinmation ntnes- 24-3122 ccomplément a deux de THX-TLx. Dans les exemples ci-dessous, nous indiquons le complément i 2 comme XX Pour avoir la vraie valeur a dsposer dans le registre AN =0xFF XX" Exemple pour le mode 0 Dans le mode 0, le temporisateur compte sur THX, mais utilise les 5 premiers bits de TLx pour diviser la fiéquence de base Fose/12. La période est donc 12-TLx es (TH) Par exemple, pour compter 3s avec un mictocontréleur cadeneé a 12MHz. THs 9 TL THs?=3-10° Ty a plusieurs solutions, puisquil y a plusieurs valeurs du diviseur de fiéquence qui aménent a des valeurs possibles sur le comptew. Admettons que nous voulons avoir we certaine marge sur le compte: THX"? = 0x80, dans ce cas TLX = 23, Exemple pour le mode 1 Dans le mode 1, le compteur se fait sur les 16 bits dela paire THs et TLX. La fiéquence de base est toujours Fose/12, La période est done 12TH: Thx} “Foxe Par exemple, pour compter 20ms avec un microcontréleur cadencé a 12MHz PP nite: Au final - [THX: TLx] = 0x10000 — 20000 = 0xBIEO. + THx=0xBL + TLx=0xE0 Exemple pour le mode 2 Le mode 2 se calcule comme le mode 1 mais il wutilise que TLx comme compte. Avec seulement 8 bits, il ne peut pas mesurer des laps de temps aussi grands que le mode 1 Par exemple, sur un microcontleur eadenee i 12 MHz, le temps maximum mesurable en mode 2 est 5.2 Les interruptions [En informaiqaie”, sme interruption extn arrit tomporaire de Texdeation lnormate d'un programme par le microprocesseur afin dexécuter un cure gramme (appelé routine d'interruption) 1 Definition tree de Wikip voir: hip i-wikinedia orgvikntemuption (informatique) Jes Michiel Gone - APM -lnrodution a1 $0St -Proginmation ntenes- 24-3222 [Dans son acception la plus sirict, le terme ne désigne que des interruptions dont} |Vexécution est provoquée par des causes externes au programme: avancement ld'toe horloge, signalisation de la complétion d'un transfert de données, [un signal externe), etc La routine dinterruption est en charge dteffectuer les traitements pertinents. La nature de cew-ci dépend de chaque application. Voici quelques exemples, = _ Interruptions réguligres provoquées par Tavancement d'une horloge = Rafiaichir un éeran = Incrémenter des compteurs d'heures, minutes, secondes. + Surveiller'état cum senseur (température, pression, présence.) + Bte ~ Interruptions faisant partie dun processus, comme la complétion d'un transfert de données - Mettte le dispositif de transmission en mode lecture, pour recevoir une réponse, + Placer plus de données dans la mémoire tampon, + te + Interruptions ponctuelles provoquées par tn signal externe = + Afficher ou envoyer un message dalarme, + Allumer / teindre un dispositif (ventilateur, evacuation eau.) + Bte 5.2.1 8051 — Les interruptions sur le 8051 Le 8051 a 5 sources! possibles dinterruptions + Les drapeaux TF1 et TFO, qui s‘allument lorsque les temporisateurs 0 et 1 debordent (voir 5) + Les drapeaux IEO et IE1, qui sallument selon les transitions détectées su les connecteurs INTO et INTL = Les drapeaux RI et TT, qui sallument lorsquiun earactére a été transmis par la UART (voir chapitre 7) Pour que 'interruption se déclenche il faut trois conditions = Que le drapeau corespondant s'allumne (transition de « 0 » a « 1»). + Que les interruptions en général soient activées (bit BA doit tre « 1 »), + Que Finterruption correspondante au drapeau soit activée, T_ Nous avons ois de citer les sources interruption ds timer? (voir (A80CSI], page 110) Jes Michiel Gone - APM -lnroduction a1 80St -Prosinmation ntnes- 24-3822 Mustration 30: Diagramme de fonctionnement des interruptions Pour pouvoir prendre en charge le traitement, la routine interruption doit avoir un moyen de savoir quelle a été la source de celle-ci. Sur le 8051, chaque source dlinterruption est branchée sur une adresse différente, En conséquence il y @ une routine spécifique 4 chaque source dinterruption Source | Adresse [Numéro] Cause Connecteur INTO| 0x0003 | 0 |Une transition su INTO est détectée, timex0 0x000B | 1 [Le compteur / temporisatewr 0 est arrive i 0 Connecteur TNTI| 0x0013 | 2 |Une transition sw TNTT est détectée, timer 0x001B | 3 [Le comptour /temporisatew | est antivé A 0 Port série 0x0023 | 4 _ | Port série UART ‘avioze [iz] 8 g oivieed fez a 2 2 Fal wz fe zivived z as % Sazpzzza22 Tes fs] (2) Fe Fel Fo) 5 fo fod fo) Fo) Fs] [=] Ey #8) (Le) [a] [ee] TS] Tel Te GRGSS PRR RRR PPPLEEEE EG: Iilustration 31: Les connecteurs INT1 et INTO peuvent déclencher des interruptions Jes Miciel Gone - APM -lnroduction a1 $0St -rowinmatio ntnes- 24-3422 5.2.2 Configuration des interruptions Les interruptions sont activées ou désactivées au moyen du registre IE. 1E EA wa | er2 | eS | ET1 | EX1 | ETO | EXO BiT Be Ter ieripons st actives BA [0 =a ir tarp so nce, 1 =e interipns dine? sont actives Fm 0 Lees interruptions du timer?! sont désactivees. 1=Leintposde a UART at aves Es 0 Lees interruptions de la UART scat désactivees. ETI [!-ts tert ate sat aves 0 Levine art wn rns BEX | Larios exemer ar lecteur ST so ce 0 Lester eens a lcm TFT ut dsc. ETO [£6 aero dain st aves 0 Lester tne wat deranes EXO [11a ier exes comet 0 Lester exeres alent S770 at descr. [nent aller eur tvone pa cuneate sont lanege en méme temps, celle de haute prionité est traitée en premier Le 8051 supporte deux priorités pour les interruptions : haute et basse. Lorsque deux interruptions (Kes strats du tna Sat de hate peer 1P na wa PIR pri | Pxi_| Pro | PXO Bie? Bea 1 es interopons dane? ent eae pri PTD [os eran tier sot deat ret 1 es inerptons dn UART sot de nt prior PS [os argon dela UART sat dchage prt Tes inerpon dane! ent dae prin PTI |o~Ls eran du tine sot debate ret PX1__|1-—Levintaropions di commen ZT sot de te pre 0 Ls inti du comecew TO va de hae prt PTO [1 Levintaropins diner sot dehat prior. PXO | - Le interoptions du comestour D170 set de depron Les interapions du center TTO sat de hte rei 5.2.3 C51 ~Mise en place des interruptions depuis Keil uVision C Pour déelarer une routine dinterruption, le compilateur C51 de Keil wVision utilise la directive interrupt void maRoutinePourLeTimer0 (void) interrupt 1 i / Toi le traitement Jes Miciel Gone - APM -lnroducion a1 80St -Prosinmation ntnes- 24-3822 // de Liinearruption pour 77 Ye timero. EAse désactive automatiquement lorsquune interruption est gérée. Il se réactive automatiquement lorsque la routine dinterruption est fnie, Jes Miciel Gone - APM -lnroduction a 80St -Prosrnmaion ntnes= 24-3622 6. Pratique — Temporisateurs et interruptions (Cat exereie pratique démontre de manie tés basique le fonctionnement des temporisateur et des interuptions 64 Lecircuit ‘Unintesrupteur est conneeté sur 'entiée TIVTT, et un afficheur 7 segment en anode commune sur le porto, T f Tan 2 Ha Mlustration 32: L'interrupteur sur 'entrée INTL sert a simuler les interruptions externes 6.2 Le programme Le programme est divisé en trois parties. Le point dentrée (fonction main) configure le timer0 en ‘mode | et les intemruptions pour le timer0 et TIVTT. Ensuite il attend sans rien faire autre (boucle Jwhile), Liaction proprement dite se passe au niveau des interruptions. © Point dtentrée. * Configure les temporisateurs ot Les interruptions, + puis ne fait plus qu’attendre, “ void main(void) c // Temporivateur 0 comme temporisateur 16 bits et active 71 Ya detection sur INT: ‘tom = x14; // Temporivateur 0 en mode 1: ‘mop = Ox017 // Active les interruptions pour Le temporisateur 0 et V1 Ya Ligne externe INTL 1B = oxser Ji Dodo: while (1); La routine pour I'interruption du time10 (interruption 1° 1, voir point 5.2.1) inerémente un compteur ‘chaque fois. Puis, avant de terminer, rintialise le timer0 (comme il est en mode 1, il ne se recharge pas automtatiquement) // Variables gicbales, pour maintenir le contexte /1 dime interruption & autre luneigned char compteur — pe + Interruptions pour Le temporisateur 0. ” void temporisateurD (void) interrupt 1 ( // Retualise le compteur et 1taffichage: if (compteur I= 0) fi compteurt=Ls , PO = compteury // Réinivinlice Le temporicateur: ‘tho = Ox00s La routine pour Interruption exteme met le compteur & 0, Ceci a pour effet, compte tenu de la Jogique pow I'interruption da timer0, danéter le compteur pe + Interruption pour 1a ligne externe 1. " void Lignefxternel (void) interrupt 2 i if (campteur i °) Jes Michiel Gone - APM -lnroduction a1 80St -Proginmation ntnes- 24-3822 compt eur ccompt eur , , Le compteur doit étre déclaré comme variable globale (voir point 8.4), conservée d'un appel & autre des routines des interruptions. 63 Le résultat Si tout va bien, le comptage se manifeste sur laflicheur 7 segments (sans toute fois montrer des chifites justes). Le comptage peut s'activer et se désactiver en ouvrant et fermant l'nterrupteur anes ona ie Ilustration 33: Le comptage se manifeste sur Vficheur 7 segments 6.4 Quelques questions + De quelle fréquence est linterruption configurée avec TL.O = 0x00 at THO = 0x00, sile microcontrdleur est cadenes a 12MHz.? + Pourquoi Iintesrupteur n'a effet que lorsquil se ferme ? + Lallogique du programme est écartelée sur les deux fonctions de gestion dinterruptions. Si Ie comportement du programme était plus complexe que cat exemple, ceci pourrait poser un probléme de lecture (et done de maintenance a long terme), Comment le résoudre ? Jes Miciel Gone - APM -lnroducion a 80St -Prosinmation ntnes= 24-3922, 7. 8051 —-La UART 7.4 La communication série Un! « récepteur /émetteur asynchrone universal » (en anglais « universal asynchronous receiver transmitter »,abrévié habituellement comme UART), est un composant électronique qui traduit les données entre les formes paralléle et série. Les UART sont habituellement utilisées avee des protocoles de communication tels que ELA, RS-232, RS-422 et RS-485, La désignation ‘«universelle » vient du fait que le format de données et la vitesse de transmission sont configurables, Les niveaux électriques sont gérés, si nécessaire, avec un composant exteme supplementaize (par exemple, un modem), Une UART est normalement wn circuit intégré, ou fait partie dun circuit intégré, uilisée pour gérer Ja communication série avec des ordinateurs ou des périphériques distants. Les UART sont trés, ccomrmnes dans les microcontrdleus, LaUART émet des données via le connecteur TXD, et regoit des données via le connecteur RXD. Lorsque deux UART sont comnectées directement, le connecteur TXD de Ime est branche sur le cconnecteur RXD de Vante, sip? azzaza2i [31 {zl fel 1 [2 fe) fe) fol =) fe) fod f=) fol Ps) [=] PPEGEEEEEP PLEEEEEEE? 7.2 La UART du 8051 Le 8051 dispose d'une UART relativement flexible. Nous allons décrre ici que quelques éléments de base pour pouvoir Futliser comme sortie standard dans un laboratoite (Voir point 7.6). En émission (et modes 1, 2,3), la UART fonetionne de la fagon suivante Lorsquiune valeur est écrite dans le registre SBUF, la transmission démamre an suivant battement de Mhotloge wtilisée pour la vitesse de transmission. 10 ow 11 bits sont énnis a travers TXD: Le bit de Stat (toujours « 0 »), les 8 bits de SBUF (bit le moins signifiant en premier), puis, éventuellement, le 9iéme bit (TB8), et enfin le bit de Stop (toujours « 1»), Lorsque tous les bits ont été transmis, TI est établi a « 1 », Si les interruptions sont activées pour le port série, ceci provoque tne interruption. Lorsque Iapplication détecte que TI esta « 1 », elle peut remettre une valeur dans SBUE, et confinuer ainsi la transmission, Enréception (et modes 1, 2, 3),la UART fonctionne de la fagon suivante La réception débute lorsque une transition de « 1 a 0» est déteetée sur RXD. Les bits regus au travers de RXD sont eopiés un a un dans SBUF. Le 9iéme bit (qui peut étre Ie bit de Stop, owe Sieme bit) est copié dans RBS Lorsque tous les bits ont été regu, RI est établi a « 1 ». Siles interruptions sont activées pour le port sénie, cect provogue une interruption. application peut alors récupérer Ia valeur de SBUF, et une nouvelle réception peut démarrer Mlustration 35: Diagramme de fonctionnement de Ta UART = La cadence de transmission est déterminse soit par le timer, soit par Vhorloge principale du ‘microcontréleur. Des diviseurs de fréquence servent a ramener la vitesse de transmission & des valeurs standard (voir point 7.4) 7.3 Configuration de la UART Le registre SCON est le registre principal de configuration du port série Jes Michiel Gone - APM -lnrodution a $0St -Proginmaion ntenes- 24-4222

Vous aimerez peut-être aussi