Sunteți pe pagina 1din 66

Systmes Microcontrleurs

V1.1

Christian Dupaty Professeur de gnie lectrique Acadmie dAix-Marseille christian.dupaty@ac-aix-marseille.fr

Systmes Microcontrleurs

Table des matires


Table des matires .................................................................................................................................. 2 1. Brve histoire du processeur ........................................................................................................... 4 2. Introduction : De lanalogique au numrique ................................................................................... 5 2.1. Deux niveaux lectriques : le bit .............................................................................................. 6 2.2. Conventions logiques ............................................................................................................... 6 2.3. Immunit au bruit ..................................................................................................................... 6 3. Rappels sur la numration en lectronique numrique ................................................................... 7 3.1. Les oprations .......................................................................................................................... 7 3.1.1. Laddition .................................................................................................................................. 7 3.1.2. Les nombres signs : la soustraction ....................................................................................... 8 3.2. Les multiplications et les divisions par des puissances de 2 ................................................... 8 3.3. Les oprations boolennes. ..................................................................................................... 9 3.3.1. Le complment ......................................................................................................................... 9 3.3.2. La fonction ET ou AND ................................................................................................ 9 3.3.3. La fonction OU ou OR .................................................................................................. 9 3.3.4. La fonction OU EXCLUSIF ............................................................................................... 10 3.3.5. Les fonctions de dcalages et de rotations............................................................................ 10 3.4. Les nombres rels .................................................................................................................. 11 3.5. Le codage du texte, la code ASCII ........................................................................................ 12 4. Introduction au traitement programm ........................................................................................... 13 4.1. Algorithme / Organigramme ................................................................................................... 13 4.2. Structures de programmation ................................................................................................ 14 4.2.1. Structures alternatives ........................................................................................................... 14 4.2.2. Structures rptitives : ........................................................................................................... 14 4.3. Langages de programmation ................................................................................................. 15 5. Technologie des systmes microprocesseur .............................................................................. 16 5.1. Comparatif .............................................................................................................................. 16 5.2. Lexique ................................................................................................................................... 16 5.3. HARVARD vs VON NEUMAN................................................................................................ 17 5.4. MicroProcesseur : Organisation structurelle dun systme minimum VON NEUMAN ........ 18 5.5. Exemple de ralisation dun dcodeur dadresses pour un bus 64KO .................................. 19 5.5.1. Dcodage par portes logiques ............................................................................................... 20 5.5.2. Dcodage par dcodeur intgr : .......................................................................................... 20 5.5.3. Dcodage par PAL : ............................................................................................................... 21 6. Les Microcontrleurs : .................................................................................................................... 25 6.1. Organisation gnrale (INFINEON-SIEMENS C517A, CPU type INTEL 8051).................... 25 6.2. Lunit centrale ....................................................................................................................... 26 6.3. Ports parallles ...................................................................................................................... 26 6.4. Ports sries asynchrones ....................................................................................................... 27 6.5. TIMERS .................................................................................................................................. 28 6.5.1. Production de signaux, principe : ........................................................................................... 28 6.5.2. Mesure de dure, principe : ................................................................................................... 28 7. Le standard INTEL 8051. .............................................................................................................. 29 7.1. Un volution du 8051, l INFINEON (SIEMENS) C517A ...................................................... 30 7.2. Organisation de la mmoire ................................................................................................... 31 7.2.1. Unit centrale 8051, lments dassembleur ......................................................................... 35 7.2.2. Modes d'adressage ................................................................................................................ 35 7.2.3. Le processeur Booleen : ........................................................................................................ 36 8. Le jeu dinstructions du 8051 : ....................................................................................................... 37 9. Programmation structure et sous-programmes ........................................................................... 40 10. Lassembleur 8051 ................................................................................................................. 41 10.1. Utilisation du Linker la dfinition des segments .................................................................. 42 11. Lenvironnement de dveloppement ...................................................................................... 43 12. Interruptions ........................................................................................................................... 45 12.1. Principes................................................................................................................................. 45 12.2. Masquage et validation .......................................................................................................... 47 12.3. Exemple de mise en uvre des interruptions ....................................................................... 49 13. TIMER .................................................................................................................................... 52 14. Le TIMER 2 ............................................................................................................................ 57
SAM1A_coursv11.doc

2/67

Systmes Microcontrleurs
15. 16. 17. 18. COMPARE sur C517A ........................................................................................................... 58 CAPTURE .............................................................................................................................. 61 ADC sur C517A ...................................................................................................................... 62 Communications sries .......................................................................................................... 64

Ressources Internet : Documentation INTEL 8051 : http://www.intel.com/design/mcs51/cf_51.htm Documentation NXP PHILIPS 8051 : http://www.nxp.com/ Documentation ATMEL 8051 : http://www.atmel.com/products/8051/default.asp Outils de dveloppement KEIL : http://www.keil.com/c51/ Emulateur/Simulateur 8051 JAVA : http://www.edsim51.com/ Emulateur/Simulateur 8051 : http://www.hugovil.com/fr/emu8051/index.html

Objectifs et contenus:
Dcouverte de la programmation et des microcontrleurs Connaissance de la numration binaire et hexadcimale, fonctions logiques boolennes. Codage des nombres entiers des rels et des caractres. Structures des systmes microprocesseurs, ALU, priphriques, dcodage dadresses. Notions dalgorithmie, programmation structure Structures des microcontrleurs (HAVARD, VON NEUMAN) Notions de langage, dcouverte de lassembleur Structure dun outil de dveloppement (assembleur, compilateur, linker, simulateur, dbugger) Domaines demploi et principes des interruptions Gestion des priphriques, ports parallles, TIMER, ports sries, ADC. Etre capable crer et valider un petit programme en assembleur en respectant les rgles de programmation structure Etre capable de mettre ne uvre un outil de dveloppement logiciel.

Rq : les exemples de programmes de ce cours sont crits en assembleur 8051. Les chapitres sur les priphriques prennent exemple sur le 8051 sauf prcision (quelques priphriques propres au C517A INFINEON)

SAM1A_coursv11.doc

3/67

Systmes Microcontrleurs
1. Brve histoire du processeur 1642 : Pascal invente la Pascaline, calculatrice entirement mcanique.

La Pascaline 1792 : Les frres Chappe inventent le tlgraphe optique (Le premier rseau ?) 1801 : Jacquard : mtiers tisser cartes perfores - Langage binaire - Programme enregistr

1854 : Georges BOOLE Autodidacte pouss par De Morgan 1932 : Compteur tubes (premier calculateur lectronique)

1946 : ENIAC premier ordinateur Consommation : 140KW Horloge :100 kHz 5,000 additions par seconde 500 multiplications par seconde 1951 : Transistor FET et Disque Dur (5Mo) 1953 : Mmoire Tores magntiques 1957 : Premier circuit intgr (Texas / Kilby) 1971 : Premier micro-processeur 4004 dINTEL : 15/11/1971 2250 Transistors Bipolaires 108 KHz, 4bits 1974 : Intel 8080 Mots de 8 bits bus adresses 16 bits, bus donnes 8 bits 7 registres 8 bits 64 k octets adressables 6000 transistors Horloge : 2 MHz 1981 : LIntel 8086 quipe le premier PC et le MOTOROLA 68000 lApple II, dbut de linformatique grand public. 1985 1990 : premiers microcontrleurs industriels INTEL 8051 et MOTOROLA 68HC11. 1995 : La puissance des ordinateurs permet la vulgarisation des outils de CAO et des compilateurs C avec comme cibles les microcontrleurs

Mtier Tisser Jacquard

ENIAC

Premier CI

SAM1A_coursv11.doc

4/67

Systmes Microcontrleurs
2. Introduction : De lanalogique au numrique Entre un disque noir et un disque compact il y a une diffrence de principe : le premier est analogique, le second numrique. Que signifient ces termes ? - Le mot analogique voque ressemblance, si on regarde avec un microscope une partie de sillon dun disque noir on verra une sorte de valle sinueuse dont les flancs reproduisent, peu prs, la forme des signaux lectriques transmis aux hautparleurs. A un son grave correspondent des sinuosits qui ont une priode spatiale grande (quelques mm pour 100 Hz), un son aigu correspondent des sinuosits dont la priode spatiale est plus petite (quelques centimes de mm pour 10 kHz). De mme, lamplitude des sinuosits reproduit, grosso-modo, lamplitude du son que lon souhaite reproduire. - Le mot numrique voque nombre. Si on regarde au microscope (Grossissement suprieur 100) une plage dun disque compact on verra une sorte de pointill de trous ovales, presque identiques, rpartis de faon irrgulire sur des pistes quasi-circulaires. Aucun rapport de forme entre le son enregistr et lallure de la gravure ne peut tre observ, prsence ou absence de trous constituent les deux valeurs possibles dun chiffre en base 2. Ces chiffres, regroups par paquets de 16, constituent des nombres entiers dont la valeur est limage, via un code, de lamplitude du signal sonore.

Le passage dun monde lautre se fait par des convertisseurs analogique numrique (CAN) et numrique analogique (CNA), dont nous ntudierons pas ici le fonctionnement. La diffrence de principe voque plus haut se retrouve videmment quand on observe le fonctionnement des circuits : un circuit analogique manipule des signaux lectriques qui peuvent prendre une infinit de valeurs, qui sont en gnral les fonctions continues du temps, un circuit numrique manipule des signaux qui ne peuvent prendre quun nombre fini (gnralement 2) de valeurs conventionnelles, sans rapport avec le contenu de linformation, qui sont des fonctions discontinues du temps.

SAM1A_coursv11.doc

5/67

Systmes Microcontrleurs
2.1. Deux niveaux lectriques : le bit Nous considrerons, que les signaux numriques reprsentent des valeurs binaires ; ils ne peuvent prendre que deux valeurs. Une variable binaire porte le nom de bit, contraction de binary digit, littralement chiffre en base 2. Dans un circuit lectronique la grandeur physique significative que lon utilise le plus souvent est la tension (un signal lectrique peut trs bien tre un courant), sauf prcision contraire explicite la valeur dun signal lectrique binaire se mesurera donc en volts. Dans un systme numrique tous les potentiels sont mesurs par rapport un potentiel de rfrence, la masse, qui est une quipotentielle commune tous les circuits.

2.2. Conventions logiques Une entre ou une sortie dun circuit numrique ne peut prendre que deux valeurs, notes gnralement H, pour High (haut), et L, pour Low (bas) : 3 et 0,2 volts sont des valeurs typiques frquemment rencontres. La valeur dun signal reprsente en gnral quelque chose : - chiffre en base deux, 0 ou 1, - valeur dune variable logique, vrai ou faux, - tat dun oprateur, actif ou inactif, - tat dune porte, ouverte ou ferme, - tat dun moteur, arrt ou en marche, - etc. Traditionnellement on qualifie de convention logique positive lassociation entre H et 1, ou vrai, ou actif, et de convention logique ngative lassociation entre H et 0, ou faux, ou inactif.

2.3. Immunit au bruit Lun des intrts majeurs des signaux numriques est leur grande robustesse vis vis des perturbations extrieures. Lexemple des enregistrements sonores en est une bonne illustration. Les disques noirs reproduisent les altrations mcaniques dues leur manipulation et leur vieillissement, le signal sonore sen retrouve bruit. Le signal numrique ne vieillit pas. Seul son support est altrable. Au niveau du bit, la protection repose sur le fait que linformation nest pas contenue dans lamplitude du signal. Un signal analogique direct a une forme qui est limage de linformation transmettre. Toute perturbation cette forme se traduit par une dformation de linformation associe. Lamplitude dun signal numrique na pas de rapport avec linformation vhicule, la seule contrainte est que le systme soit encore capable de diffrencier sans ambigut un niveau haut et un niveau bas. Lcart entre ces deux niveaux tant grand, seule une perturbation de grande amplitude pourra provoquer une erreur de dcision. Au niveau du systme Les valeurs lmentaires (bits) sont regroupes en paquets pour former des mots, ces mots doivent obir certaines rgles de construction, des codes. On cre des codes qui permettent de dtecter et, dans une certaine mesure, de corriger des erreurs.

SAM1A_coursv11.doc

6/67

Systmes Microcontrleurs
3. Rappels sur la numration en lectronique numrique En lectronique numrique les nombres sont cods en binaire, deux tats 0 et 1. Gnralement 0 est cod par une tension de 0v et 1 par une tension de 5v. Avec la rduction de la taille des transistors intgrs sur une puce, le 1 est aussi reprsent par une tension de 3v voir 1,2v. Le format de base dun nombre est loctet : 8 bits (8 chiffres binaires) Bit Valeur Dcimale 7 7 2 128 6 6 2 64
7 6

5 5 2 32
5 4

4 4 2 16
3 2

3 3 2 8
1 0

2 2 2 4

1 1 2 2

0 0 2 1

Ainsi : 10110110 vaut : 1*2 +0*2 +1*2 +1*2 +0*2 +1*2 +1*2 +0*2 = 128+32+16+4+1= 181 La notation binaire nest pas trs lisible et la notation dcimale ne reprsente pas les bits. Les octets sont gnralement cods en hexadcimal. Ainsi 10110110 se dcompose en deux chiffres hexadcimaux B6 1011 0110 B 6 Certains processeurs travaillent sur des nombres de deux octets (16 bits) on parle alors de mots (words) Les processeurs pour ordinateurs les plus modernes travaillent sur des mots de 8 octets (64 bits) Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hexa 0 1 2 3 4 5 6 7 8 9 A B C D E F

3.1. Les oprations 3.1.1.Laddition Que vaut 1011 + 0110 ? 1011 + 1110 --------------

On additionne les chiffres de droite, et on obtient 1+0 = 1 On crit 1 On additionne 1 + 1 , et on obtient 10 (2 nexiste pas en binaire). On crit 0 et on reporte 1 On additionne 0+1+le report et on obtient 10. On crit 0 et on reporte 1 On additionne 1+1+le report et on obtient 11. On crit 1 et on reporte 1 Reste le report que lon crit, soit 1.

La rponse est donc 11001, soit 25. Les 2 nombres de dpart tant 1011, soit 11, et 1110, soit 14. On procde de la mme manire pour les nombres hexadcimaux, en sachant que : 0xF + 0x1 = 0x10, soit 15+1 = 16. Rq : Les lettres b, h,d dsignent la base des nombres , 0x est utilis en langage C pour dsigner un nombre hexadcimal ainsi : 10110101b B5h 0xB5 185 185d Dsignent tous le mme nombre

SAM1A_coursv11.doc

7/67

Systmes Microcontrleurs
3.1.2.Les nombres signs : la soustraction Dans certaines applications, il est ncessaire de pouvoir utiliser des nombres ngatifs. Le signe - est un concept, il nest pas reprsentable lectriquement . Si un nombre binaire est considr comme sign le bit 7 reprsente le signe (pour un octet). Dans les nombres signs, un bit 7 1 signifie nombre ngatif. Remarque : 10000000 (-0) est gal 00000000 (0). Afin de ne pas perdre un nombre la reprsentation signe est la suivante. Binaire Pour rendre un nombre ngatif sign 1) On inverse la totalit du nombre. 00000011 2) On ajoute 1 00000010 On obtient alors ce quon appelle le COMPLEMENT A DEUX du nombre. 00000001 00000000 Exemple : soit le nombre 5 : 00000101 Comment crire 5 ? 11111111 11111110 1) on inverse tous les bits (complment 1) 11111010 11111101 2) on ajoute 1 (complment 2) 5 = 11111011 11111100 111110101 Pour faire la conversion inverse, on procde de manire identique. 1) on inverse tous les bits 00000100 2) On ajoute 1 00000101 Et on retrouve 5 Dans le cas des octets signs : La plus grande valeur est 01111111, soit +127 La plus petite valeur devient 10000000, soit 128. Exemples doprations sur les nombres signs Prenons 3 + 5 11111101 (-3) 00000101 (5) 100000010 (2)
me

Dec 3 2 1 0 -1 -2 -3 -4 -5

+ =

Il y a 9 bits , or le processeur nen gre que 8. Le 9 est un bit spcial appel retenue (carry). Dans le registre dun processeur effectuant cette opration, il reste donc les 8 bits de droite, soit 2, qui est bien gal (3 )+ 5.

3.2. Les multiplications et les divisions par des puissances de 2 Ce sont des dcalages arithmtiques (i.e. avec conservation du signe), par exemple pour des octets :

SAM1A_coursv11.doc

8/67

Systmes Microcontrleurs
3.3. Les oprations boolennes. 3.3.1.Le complment Ou NOT ou encore complment 1. Cette fonction est souvent note ! Elle consiste inverser tous les bits de loctet. Exemple : NOT 10001111 donne 01110000 .

3.3.2.La fonction ET ou AND Ou AND et souvent note & Elle consiste effectuer un ET logique entre chaque bits de deux octets. Pour faire une opration ET , il faut toujours 2 octets. Les diffrentes possibilits sont donnes ci-dessous Le rsultat vaut 1 si et seulement si les deux bits sont 1 Bit1 Bit2 AND 0 0 0 0 1 0 1 0 0 1 1 1 Exemple : Soit 11001100 AND B 11110000 donne 11000000 Cette opration peut tre utilise pour MASQUER des bits et les forcer 0 Ex pour tester si PA4=1 PORTA & = x 0 0 x 0 0 x 0 0 x 1 x x 0 0 x 0 0 x 0 0 x 0 0

Le rsultat est nul si PA4=0. Ex positionner PA4 0 PORTA & = x 1 x x 1 x x 1 x x 0 0 x 1 x x 1 x x 1 x x 1 x

Seul PA4 a t modifi et mis 0 3.3.3.La fonction OU ou OR Ou OR, et souvent note | Le rsultat vaut 1 si lun des deux bits est 1 Bit1 Bit2 OR 0 0 0 0 1 1 1 0 1 1 1 1 Exemple 10001000 OR 11000000 donne 11001000 Ex positionner PA4 1 PORTA x x x x x x x OU 0 0 0 1 0 0 0 = x x x 1 x x x Seul PA4 a t modifi et positionn 1 x 0 x 9/67

SAM1A_coursv11.doc

Systmes Microcontrleurs
3.3.4.La fonction OU EXCLUSIF Ou XOR, et souvent note ^ Le rsultat vaut 1 si et seulement si un des deux bits est 1 Bit1 Bit2 XOR 0 0 0 0 1 1 1 0 1 1 1 0 Exemple : 10001000 XOR 11000000 donne 01001000 Ex Inverser PA4 PORTA x x x x x x x x XOR 0 0 0 1 0 0 0 0 = x x x /x x x x x Seul PA4 a t invers 3.3.5.Les fonctions de dcalages et de rotations Souvent notes << (dcalage gauche) et >> dcalage droite Le contenu de loctet est dcal dun bit dans le sens demand Cas dun dcalage gauche sur loctet 01010011: 0 1 0 1 0 0 1 1 0 Rsultat : 10100110 Remarque 01010011 * 2 = 10100110 Cas dun rotation gauche sur loctet 01010011: C 0 1 0 1 0 0 1 1 Rsultat : 1010011C et C contient 0

SAM1A_coursv11.doc

10/67

Systmes Microcontrleurs
3.4. Les nombres rels Les microcontrleurs ne peuvent pas effectuer de calculs directs sur les nombres rels, ceux-ci ne sont pas codables en binaire (il ny a que des nombres entiers). Les nombres rels sont cods en virgule fixe ou en virgule flottante, ils ne sont pas utilisables pour les programmes crits en 1 assembleur. Calcul en virgule fixe, Le calcul seffectue en codage Q On choisit (selon les besoins) un nombre de bits pour la partie entire et un nombre de bits pour la n partie dcimale. Les bits de la partie entire reprsentent les puissances de 2 et ceux de la partie -n -m dcimale les 2 . Lerreur absolue sur un rel reprsent en virgule fixe est toujours infrieure 2
28 256 27 128 26 64 25 32 24 16 23 8 22 4 21 2 20 1 2-1 0.5 2-2 0.25 2-3 0.125 2-4 0.0625 2-5 0.03125 2-6 0.015625 2-7 0.0078125 2-8 0.00390625

Exemple : codage de la valeur 1,5625 sur un octet positif en Q6 6 chiffres binaires dcimaux 1 chiffre binaire pour la partie entire (0 ou 1 donc) le poids fort reprsente le signe (0 pour +, 1 pour -) Partie dcimale (ici 6 bits en Q6) 1,5625 = 0110 0100= 1*2 +1*2 +0*2 +0*2 +1*2 +0*2 +0*2 = 1+0.5+0.0625= 1.5625 Signe + Partie entire (ici 1 bit) -1,5625 = 11011100 en complment 2 Le complment 2 de la partie entire 01 donne 10+1=11 (complment +1) Le complment 2 de la partie dcimale 100100 donne 011011+1=011100 Calcul en virgule flottante Ce type de codage est trs performant car il permet de coder les nombres rels sur une trs grande plage numrique avec un format binaire constant. Il demande en revanche une manipulation binaire plus complexe pour les additions et les multiplications et gnralement utilis par les langages volus comme le C. r : rel coder Sm : signe de la matrice (0 = positif, 1 = ngatif) M : matrice Se : signe de lexposant E : exposant Un nombre rel cod en virgule flottante a
0 -1 -2 -3 -4 -5 -6

r = Sm.M.10
cette aspect :

Se.E

Sm

Se

En

E0

Mm

M0

Nb bits 16 32 64

Exposant N 4 8 14
-n

Mantisse M 10 22 48

16, 32, 64 ou128 bits suivant les processeurs et les compilateurs La mantisse reprsente les chiffres significatifs dun rel infrieur 0 cod en 2 3 Par exemple 245,36 a une mantisse gale +24536 et un exposant gale +3 : 245,36=0.24536.10 Exemple de codage en virgule flottante : 1 -1 -4 -10 et 2 +2 +2 =0.5634765 -5,635 = -0,5635.10 Sm 1 Se 0 E3 0 E2 0 E1 0 E0 1 M9 1 M8 0 M7 0 M6 1 M5 0 M4 0 M3 0 M2 0 M1 0 M0 1

0.5634765

Les compilateurs C ou C++ sappuient sur des bibliothques crites en assembleur et effectuant les quatre oprations sur les rels. Les fonctions mathmatiques complexes sont ralises par dveloppements limits avec ces quatre oprations SAM1A_coursv11.doc

11/67

Systmes Microcontrleurs

3.5. Le codage du texte, la code ASCII Dans les annes 60, le code ASCII (American Standard Code for Information Interchange) est adopt comme standard pour les tlscripteurs. Il permet le codage de caractres sur 8 bits, soit 256 caractres possibles, normalis de 0x00 0x7F (bit de poids fort 0) il est adapt aux particularits linguistiques telles les accents pour les codes 0x08 0xFF. Il est rest de fait le standard de communication en mode texte. Le code ASCII code 1

8 BS ( 8 H X h x

9 HT ) 9 I Y i y

A LF * : J Z j z

B VT + ; K [ k {

F SI US / ? O _ o DEL

0x00 NUL SOH STX ETX EOT ENQ ACK BEL 0x20 0x30 0x40 0x50 0x60 0x70 SP 0 @ P ` p ! 1 A Q a q " 2 B R b r # 3 C S c s $ 4 D T d t % 5 E U e u & 6 F V f v ' 7 G W g w

NP CR SO , < L \ l | = M ] m } . > N ^ n ~

0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS

SAM1A_coursv11.doc

12/67

Systmes Microcontrleurs
4. Introduction au traitement programm 4.1. Algorithme / Organigramme Reprsentation graphique normalise d'un processus. Ensemble de rgles opratoires rigoureuses permettant de dcrire un processus particulier. Ex. : algorithme de mesure, de conditionnement de bouteilles, de rgulation d'un racteur nuclaire... Un algorithme peut tre : reprsent par un organigramme. crit sous forme littrale, avec un langage algorithmique proche d'une programmation structure type C. Exemple :

Algorigramme
DEBUT

Algorithme Debut Fixer la temprature de consigne Tant que T<Consigne Chauffer Fin Tant que Fin

FIXER LA CONSIGNE DE TEMPERATURE

MESURER LA TEMPERATURE

CHAUFFER

T>CONSIGNE

FIN

SAM1A_coursv11.doc

13/67

Systmes Microcontrleurs
4.2. Structures de programmation 4.2.1.Structures alternatives

SI propositionvraie alors action(s)1 sinon action(s)2 Fin si

ou sous forme rduite : SI proposition vraie alors action(s) Fin si

4.2.2.Structures rptitives :

Rpter action(s) proposition vraie

jusqu'

Rpter action(s) tant que proposition vraie


SAM1A_coursv11.doc

14/67

Systmes Microcontrleurs
4.3. Langages de programmation L'excution d'un PROGRAMME se dfinit comme la lecture, le dcodage et l'excution d'une suite d'instructions stockes en mmoire. Langage machine : Le P est constitu de circuits logiques squentiels et combinatoires. La programmation de ces circuits dpend des niveaux logiques prsents dans le registre d'instruction. Pour tre stock en mmoire le programme doit tre crit en binaire. A la base, les instructions sont donc codes en langage binaire (hexa) : ce sont les instructions machines. Chaque P possde son jeu d'instructions. Devant l'impossibilit d'crire un programme en langage binaire on utilise des logiciels de programmation permettant la conception de programmes dans un langage plus ou moins proche de l'homme. Exemple de CODE MACHINE (C 8051) :
0x0000 0x0003 0x0005 0x0007 0x0009 0x000B 0x000D 0x000F 0x0011 75817F B2A0 1109 80FA 78FF 79FF D9FE D8FA 22

Illisible !!!

Programmation en ASSEMBLEUR : Chaque instruction machine est reprsente par une criture symbolique (mnmonique) : le langage assembleur qui dpend du P utilis (pas de compatibilit). La programmation ASSEMBLEUR est essentiellement : Une traduction du langage mnmonique en langage machine. (Assembleur) Une affectation des valeurs numriques aux tiquettes et oprandes (diteur de liens ou LINKER) Exemple de programme assembleur (C 8051) :
; FLASH LED PORT50 LED EQU CSEG MOV SUITE: CPL LED CALL SJMP ; TEMPO: MOV TEMPO1: MOV TEMPO2: DJNZ DJNZ RET END P5.0 AT 0 SP,#7Fh ; initialize stack ; flash LED TEMPO SUITE R0,#0FFh R1,#0FFh R1,TEMPO2 R0,TEMPO1 ; tempo longue (R0xR1)

Programmation en langage volu : La programmation en langage assembleur dpend du P utilis. Elle est efficace mais peu lisible et difficile maintenir. Un langage volu utilise des instructions trs synthtiques. La traduction est effectue par un programme COMPILATEUR dont le rle englobe celui de l'assembleur. Le rle du compilateur est de traduire un programme SOURCE crit en langage volu en un programme OBJET crit en langage machine directement excutable par le P. Exemple de programme en langage C : (partiel)
char mi, ce, di, un; /* dfinition des variables utilises */ int i,m, c, d, u; PORT=124 ; if (bouton==enfonce) Led=eteind ; else Led= allume ; m=valeur/1000; /* Valeur du chiffre du millier */ c=(valeur-(1000*m))/100; /* Valeur du chiffre de la centaine */

La programmation en langage volu est indpendante du P utilis.

SAM1A_coursv11.doc

15/67

Systmes Microcontrleurs
5. Technologie des systmes microprocesseur 5.1. Comparatif Petits automatismes Informatique industrielle Frquences 4 40MHz 1GHz 3.5GHz Puissance de calcul faible Trs lev 2 3 4 Mmoire RAM : 1KO RAM : 1GO ROM : 1MO 5 Mmoire programme ROM FLASH : 64 KO Disque dur Intgration des priphriques Maximum minimum consommation faible Elev prix 0,5 50. 200 1000 Composant utilis Microcontrleur 8/16 bits Microprocesseur 32/64 bits Note : les structures des systmes pour linformatique industrielle ne sont pas prsentes ici 5.2. Lexique UP : 8 bits, 64KO dadresses, type 8051, 68HC11, PIC16, PIC18, ATMEL AVR , ST6, ST7 ROM : mmoire morte PROM ou EPROM RAM : Mmoire vive statique PIA, PIO : Peripherical interface adapter, priphrical input/output. Port parallle 8bits ACIA ou USART : Asynchronous communications interface adapter ou Universal Synchrone/Asynchrone Receive/Transiver. Port srie code NRZ . TIMER : PTM : Programmable Timer Module . Production et mesures de dures. Dcodeur dadresses : permet partir du bus dadresse (A0-A15) ou dune partie de celui ci de crer des signaux permettant de slectionner les diffrents botiers (CS pour Chip Select) lorsque ladresse du botier considr est est active.

De nombreux autres priphriques existent sur le march: EEPROM : mmoire morte effaable lectriquement ADC : convertisseurs analogiques numriques DAC : convertisseurs numriques analogiques Comparateurs de tension Horloge temps rel (RTC) Port parallle de puissance Commande de moteur pas pas ou PWM (gestion de pont en H) Interface srie synchrone SPI ou IIC Gestionnaire afficheur LCD graphique / alphanumrique Interface ethernet Interface WIFI Bus de communications de terrain (CAN ou LIN) Superviseur dalimentation / Chien de garde (watch dog)

Principaux fondeurs de microcontrleurs 8bits(2008) : - ATMEL (AVR) - INFINEON - INTEL (805x) - MICROCHIP (PIC) - MOTOROLA (68HCxx) - NEC - STMicroelectronics (STx) - TOSHIBA

Ram Access Memory : Mmoire vive , en lecture/criture elle ne conserve les informations que si elle est sous KO : Kilo Octets, 1 KO = 210 octets = 1024 octets , MO Mega Octets, 1 MO = 220 octets = 1.048.576 octets Read Only Memory : Mmoire morte , elle conserve ses donnes mme hors tension, on ne peut pas crire

tension
3 4

Mmoire ROM effaable lectriquement et rinscriptible (environ 100.000 fois) le temps d criture est 106 fois suprieur celui dune RAM SAM1A_coursv11.doc

dedans

16/67

Systmes Microcontrleurs

5.3. HARVARD vs VON NEUMAN Larchitecture, dite architecture de Von Neumann, est un modle pour microcontrleur qui utilise une structure de stockage unique pour conserver la fois les instructions et les donnes requises ou gnres par le calcul. La sparation entre le stockage et le processeur est implicite dans ce modle. Une mme instruction permet laccs au programme ou aux donnes, cependant pas simultanment. Cette architecture est maintenant principalement utilise pour la conception des processeurs dordinateurs (PC, MAC) Unit arithmtique et logique A.L.U Mmoire Programme (ROM) Mmoire Donnes (RAM)

ADRESSES

DONNEES

Ce type darchitecture ncessite plusieurs cycles dhorloge pour excuter une instruction (recherche dinstruction, dcodage, lecture oprande, excution) Larchitecture de type Harvard est une conception de microprocesseurs qui spare physiquement la mmoire de donnes et la mmoire programme. Laccs chacune des deux mmoires seffectue via deux bus distincts. Cette structure permet un accs simultan aux donnes et aux instructions lexcution des programmes est plus rapide. En revanche elle ncessite des instructions diffrentes pour accder la mmoire programme et la mmoire de donnes. Cette architecture trs employe pour la conception des processeurs de traitement de signal (DSP) est de plus en plus utilise pour les microcontrleurs dusage gnraux. Unit arithmtique et logique A.L.U ADRESSES DONNEES ADRESSES DONNEES Mmoire Programme (ROM) Mmoire Donnes (RAM)

Ce type darchitecture, plus complexe fabriquer permet une excution du programme en PIPELINE (recherche dinstruction, dcodage, lecture oprande, excution en un cycle dhorloge) Instruction/temps N N+1 N+2 N+3 R : recherche D : Dcode L : Lit oprande E : Excute T R T+1 D R T+2 L D R T+3 E L D R T+4 R E L D T+5 D R E L T+6 L D R E

A partir de ce temps le microcontrleur effecteur les tches RDLE en un cycle dhorloge

SAM1A_coursv11.doc

17/67

Systmes Microcontrleurs

5.4. MicroProcesseur : Organisation structurelle dun systme minimum VON NEUMAN Horloge Base de temps
Dcodage dadresse

Horloge interne du microprocesseur (E) Q/4 Q/12

Vers Chip Select

A12-A15

UP 8 bits type 8085-6809


D0-D7

Adresses hautes

Donnes

A0-A11
Adresses basses

CONTRLES

contrle s

CS0 A0-A11 D0-D7 RW

CS1 A0-A7 D0-D7 RW

CS2 A0-A1 D0-D7 RW

CS3 A0-A1 D0-D7 RW

CS4 A0-A2 D0-D7 RW

ROM 8KO
(programme)

RAM 256 octets (variables)

PIA
PRA PRB PRC

ACIA
TX RX CLK

TIMER
O1 O2 O3 I1 I2 I3

extrieur
SAM1A_coursv11.doc

18/67

Systmes Microcontrleurs
LE DECODAGE D'ADRESSES : Le dcodage d'adresse permet de dfinir l'emplacement des diffrentes zones mmoires dans l'espace adressable. Pour cela sa fonction est de produire les diffrents signaux de slection (CS\) des circuits communiquant avec le P : mmoires, CNA, CAN, circuit d'interface //, srie ... Si un circuit n'est pas slectionn (CS\=1), ses entres/sorties se trouvent en tat HAUTE IMPEDANCE avec pour effet de DECONNECTER le circuit du bus de donnes.

5.5. Exemple de ralisation dun dcodeur dadresses pour un bus 64KO $FFFF $F000 $EFFF $E000 PROM1 4KO PROM2 4KO type 68xx , sur un microcontrleur INTEL 80xx la PROM commence ladresse 0x000

$A007 $A000

TIMER

$6004 $6000

ACIA

$4004 $4000

PIA

$07FF $0000

RAM 2KO

32K A15 1 1 1 0 0 0

16K A14 1 1 0 1 1 0

Table de vrit (* : nest pas ncessaire au dcodage) 8K 4K 2K 1K 512 256 128 64 32 16 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 1 1 x x x x x x x x 1 0 x x x x x x x x 1 * * * * * * * * * 1 * * * * * * * * * 0 * * * * * * * * * 0 * * x x x x x x x

8 A3 x x * * * x

4 A2 x x x * * x

2 A1 x x x x x x

1 A0 x x x x x x

Hexadcimal $F000-$FFFF $E000-$FFFF $A000-$A007 $6000-$6003 $4000-$4003 $0000-$07FF

/CS ROM1 ROM2 TIMER ACIA PIA RAM

Remarque : il existe des adresses images , cest dire des adresses ou lon retrouvera la mme donne. Ex : la donne ladresse $0080 de la RAM se retrouvera aux adresses $0080,et $0880 les bits dadresse A8-A12 ntant pas dcodes. Le dcodage dadresse peut seffectuer de diverses manires : par portes logiques, dcodeur intgr (type 74LS138) ou par PAL (type 16L8), il sagit de toutes les faons de logique combinatoire.

SAM1A_coursv11.doc

19/67

Systmes Microcontrleurs
5.5.1.Dcodage par portes logiques Les /CS des circuits priphriques et mmoires sont gnralement actifs 0 , on obtient donc les quations suivantes : RAM=A15+A14+A13+A12 PIA=A15+/A14+A13+A12 ACIA=A15+/A14+/A13+A12 TIMER=/A15+A14+/A13+A12 ROM2=/A15+/A14+/A13+A12 ROM1= /A15+/A14+/A13+/A12 On voit que la ralisation des ce dcodeur ncessitera plusieurs circuits intgrs (des fonctions NAND, NOR, AND, OR), de plus certains priphriques ncessitent dtre synchroniss avec lhorloge E du microprocesseur, les signaux /CS doivent alors tre valids lors de ltat actif de E ce qui ncessite des portes supplmentaires. Cette solution est trs rarement retenue. 5.5.2.Dcodage par dcodeur intgr : le 74HC138 est un dcodeur 3 vers 8 avec 3 entres de validation et sorties actives ltat bas.

&

&

/ROM2

A12

&
74HC138

/ROM1

A15 A14 A13

A2 A1 A0

E 0v 0v

E3 /E2 /E1

/Y7 /Y6 /Y5 /Y4 /Y3 /Y2 /Y1 /Y0

/ROM /TIMER /ACIA /PIA /RAM

Le dcodage est ici simplifi, cependant trois portes NAND sont encore ncessaires. En plaant /ROM1 sur /Y7 et /ROM2 sur /Y6 on limine le circuit NAND mais le dcodage dadresse est modifi : /ROM1 va de $F000 $FFFF mais avec des images de $E000 $EFFF ! /ROM2 va de $D000 $DFFF mais avec des images de $C000 $CFFF !

SAM1A_coursv11.doc

20/67

Systmes Microcontrleurs
5.5.3.Dcodage par PAL : Lutilisation dun PAL (programable array logic) permet un dcoupage beaucoup plus souple pour un prix similaire du composant, cependant la programmation dun PAL ncessite un programmateur et un outil de dveloppement de PAL en langage ABEL ou VHDL . Exemple de dcodeur dadresse crit en langage ABEL module DECODAD; title 'Decodeur d adresse'; Declarations DECODAD device 'P16L8'; A15,A14,A13,A12,A11,A10 pin 1,2,3,4,5,6; ROM1,IO,ROM2,DRAM pin 14,15,16,17; H,L,X = 1,0,.X.; Address = [A15,A14,A13,A12, A11,A10,X,X, X,X,X,X, X,X,X,X]; equations !DRAM = (Address <= ^hDFFF); !IO = (Address >= ^hE000) & (Address <= ^hE7FF); !ROM2 = (Address >= ^hF000) & (Address <= ^hF7FF); !ROM1 = (Address >= ^hF800); test_vectors (Address -> [ROM1,ROM2,IO,DRAM]) ^h0000 -> [ H, H, H, L ]; ^h4000 -> [ H, H, H, L ]; ^h8000 -> [ H, H, H, L ]; ^hC000 -> [ H, H, H, L ]; ^hE000 -> [ H, H, L, H ]; ^hE800 -> [ H, H, H, H ]; ^hF000 -> [ H, L, H, H ]; ^hF800 -> [ L, H, H, H ]; end DECODAD

A15 A14 A13 A13 A11 A10

ROM1 ROM2 IO DRAM

SAM1A_coursv11.doc

21/67

Systmes Microcontrleurs

Exercice : Dcodage par dcodeur 3/8 (74138) :

Schma 1 : Complter chaque sortie en indiquant la zone adresse et la capacit correspondante.

Donner lquation logique de la sortie CS4\.

Schma 2 :

Indiquer le niveau de AEN (Adress ENable) validant le dcodage. Pour chaque position de cavalier implant (A OU B OU C) : dterminer les plages d'adresses possibles pour lesquelles la sortie est au niveau bas en compltant le tableau i-dessous. indiquer la capacit mmoire correspondante.

SAM1A_coursv11.doc

22/67

Systmes Microcontrleurs
Table de dcodage, schma 2 :

Exercice 3 :

Dterminer pour le schma i dessous : La capacit mmoire des circuits U1 et U2 L'tat de chaque circuit suivant le niveau de X (CE et OE actifs au niveau bas)

SAM1A_coursv11.doc

23/67

Systmes Microcontrleurs
6. Les Microcontrleurs : Ce sont des circuits intgrs regroupant les fonctions dun systme minimum microprocesseur. Avantages des microcontrleurs : Intgration dans un seul botier Fiabilit Cot de cblage rduit Faible consommation

Inconvnients Lintgration de nombreux priphriques, de RAM, de ROM limite la puissance de calcul et la vitesse de ces circuits (les transistors intgrs sont destins aux priphriques et non plus au calcul). Mise en uvre et approche du composant dapparence complexe.

6.1. Organisation gnrale (INFINEON-SIEMENS C517A, CPU type INTEL 8051)

SAM1A_coursv11.doc

24/67

Systmes Microcontrleurs
6.2. Lunit centrale On retrouve en commun dans toutes les units centrales (CPU ou CORE): Le compteur de programme qui contient ladresse de la prochaine instruction Un ou des registres dindex qui permettent ladressage indirect (ici Rn ou DPTR) Une ou des registres de pile (au moins la pile S) qui pointe des donnes empiles dans le RAM (voir page 40) Un registre de code condition donnant entre autre le type de rsultat de linstruction prcdente afin de conditionner les instructions de saut. Un ou deux accumulateurs (A et B) Une unit arithmtique et logique, elle effectue des oprations entre laccumulateur et loprande qui peut tre le code suivant linstruction ou une donne en mmoire. Le rsultat est toujours plac dans l accumulateur A. Un bus de donnes : 8 ou 16 bits pour les petits systmes permettant les changes entre les registres, les mmoires et les priphriques Un bus dadresses : en gnrale 16 bits sur les microcontrleurs. soit 65536 adresses (64KO) Un bus de contrle permettant de piloter les priphriques et mmoires et dindiquer ltat du microprocesseur. 6.3. Ports parallles Ces ports permettent le transfert dinformations en parallle, gnralement sur 4 ou 8 bits. Ils peuvent tre : - Toujours en entre - Toujours en sortie - Configurable en Entre OU en Sortie (dans ce dernier cas ils sont en entre par dfaut). Leur utilisation est trs simple sils sont unidirectionnels, il suffit de lire ou dcrire dans leur registre. Sinon les ports dE/S doivent tre configurs avant leur utilisation. Si leur sortie est de type push-pull (soit ltat 1, soit ltat 0) il existe un registre de direction (Data Direction Register) permettant de dfinir le sens de transfert des donnes. Si la sortie est drain-ouvert, le registre DDR est inutile, pour utiliser le port en entre, il suffit de disposer une rsistance pullup et de placer un 1 en sortie. Cas du 8051-C517A : En crivant un 1 sur le PORT la sortie /Q de la bascule D passe 0, ce qui bloque n1. La sortie (Pin) peut tre utilise en entre (il y a seulement une charge pull-up). Ex : mov P1,#0Fh permet dentrer des donnes sur les bits 3,2,1,0

Rq : par dfaut les PORTS de C517A sont 1 aprs le RESET.

SAM1A_coursv11.doc

25/67

Systmes Microcontrleurs
6.4. Ports sries asynchrones 6 Ces priphriques permettent dtablir des communications sries asynchrones suivant le format NZR (No Return to Zero). Ils communiquent avec le microprocesseur en parallle par lintermdiaire du bus de donnes et en srie avec lextrieur par une liaison srie asynchrone (sans horloge). Ils peuvent par ailleurs piloter un modem. Exemple de trame : asynchrone 1start, 8 bits, parit paire, 1 stop : nombre 10010001

Start

D0

D1

D2

D3

D4

D5

D6

D7

Stop

Parit paire : le bit de parit est positionn pour que lensemble des bits de donne et le bit de parit reprsente un nombre de bits 1 pair Parit impaire : le bit de parit est positionn pour que lensemble des bits de donne et le bit de parit reprsente un nombre de bits 1 impair Dans ce type de transmission lhorloge de transmission est comprise dans le signal, le bit de start est utilis par le rcepteur pour se synchroniser avec lmetteur. Cependant les deux horloges de transmission et de rception sont au dpart trs proche. Lhorloge de rception possde une frquence multiple de celle de transmission (en gnral x16 ou x64). Dans le cas dune division par 16 : Lors de la rception du front descendant du bit de start, lUSART attend 8 tops dhorloge, le circuit reoit alors thoriquement le milieu du bit de start, l USART attend ensuite 16 tops dhorloge, le circuit reoit alors le milieu de D7 et lit ce bit, l USART attend ensuite 16 tops etc. Lhorloge du rcepteur est donc resynchronise lors de la rception de chaque caractre. Le milieu du bit de start est trouv aprs 8 tops Signal TX START D7 16 tops dhorloge Lecture de D7 (ici 1)

Horloge RX rcepteur 1 2 3 4 5 6 7

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Lhorloge RX (rception) doit donc toujours tre suprieure celle de TX (transmission). En ralit les deux horloges sont identiques et TX est divis dans lACIA pour produire la vitesse de transmission souhait. Registres internes dun USART, Choix du format de transmission Nombre de bits de donnes : 7 ou 8 Parit : paire, impaire, sans Nombre de bits de stop : 1 ou 2 Gnralement on rend gale le nombre de bits pour un octet gal 10. De cette manire il suffit de diviser la vitesse en BAUDS (bits par seconde) par 10 pour obtenir la vitesse en octets par seconde. Choix de la division dhorloge (1, 16, 64 en gnral)
6

USART :Universal Synchronus Asynchronus Receiver Transceiver UART : Universal Asynchronus Receiver Transceiver (pour les interfaces uniquement asynchrone)
SAM1A_coursv11.doc

26/67

Systmes Microcontrleurs
Contrle des commandes de communication avec hanshaking, siganux RTS et CTS (Ready To Send et Clear To Send) 6.5. TIMERS Ces priphriques permettent de produire ou de mesurer des dures et des frquences.

6.5.1.Production de signaux, principe : Un compteur 16bits compte depuis une valeur charge dans un registre et agit sur une broche du circuit lors du passage de 0xFFFF 0. Le TIMER peut tre configur afin de recharger le compteur lors du dbordement. Lhorloge pouvant tre celle du uP ou une horloge externe.

Horloge RW Registre 16 bits Bus de donnes Compteur


Dbordement

Chargement IRQ

Action sur la broche de sortie

6.5.2.Mesure de dure, principe : Un compteur est mis zro lors dun premier vnement (front montant ou descendant), lors du deuxime vnement la valeur du compteur (le nombre de tops dhorloge compts) est stocke dans un registre destination du bus de donnes. La dure mesure est gale N*T. N est le nombre de tops dhorloge compt entre les deux vnements et T la priode de lhorloge Horloge Interne ou externe Dtection dvnements Compteur 16bits Registre 16 bits Bus de donnes

RAZ

Ecriture IRQ Les timers possdent de nombreux registres : Registres 16 bits pour la production ou la mesure de dures Registres de contrle pour les actions en sortie. Aucune, mettre 1, mettre 0, basculer Registres de contrle pour la dtection dvnement : Aucune, front montant, descendant, tous Etc.

SAM1A_coursv11.doc

27/67

Systmes Microcontrleurs
7. Le standard INTEL 8051.

Les microcontrleurs sont toujours apparemment complexes, cela est du au grand nombre de fonctions quils intgrent (CPU, mmoires, priphriques ) On voit ci-dessus communment tous les microcontrleurs: LALU : Arithmetic and Logic Unit Les registres accumulateurs (ACC et B) Le registre dtat du microcontrleur (PSW) Le pointeur de pile (stack pointer) Le gestionnaire de temps et loscillateur qui cadence le droulement du programme Le gestionnaire dinterruptions Les registres pointeurs (index) DPTR Le compteur de programme qui contient ladresse de linstruction excuter Les mmoires RAM, ROM, EPROM Les ports parallles, le port srie, les TIMER La broche RST (Remise zro, active ltat haut elle initialise le programme) ALE, Adresse Latch Enable, utilise en mode mmoire externe /EA, si 1 la mmoire interne 0x000 0xFFF est slectionne /PSEN, indique un accs la mmoire externe
SAM1A_coursv11.doc

28/67

Systmes Microcontrleurs
7.1. Un volution du 8051, l INFINEON (SIEMENS) C517A Ce microcontrleur possde un noyau (CORE) compatible avec le standard INTEL 8051, il est quip en plus du 8051 dun convertisseur analogique numrique, de fonctions COMPARE , dun chien de garde

-8 PORTS parallles -Un convertisseur analogique numrique 10 bits -Deux ports sries asynchrones (USART) -Trois TIMER -Un chien de garde (WD) -32KO de mmoire programme (ROM) -2KO + 256Octets de RAM

SAM1A_coursv11.doc

29/67

Systmes Microcontrleurs
7.2. Organisation de la mmoire

Rq : lutilisation de mmoires externes (ROM ou RAM) limite le nombre de priphriques (qui deviennent des BUS adresses-donnes) Mmoire programme (CODE space) 0x0000 0x7FFF (32KO) en interne ou 64KO en externe. Lors dun RESET le program counter (PC) pointe ladresse 0x0000 (toujours le dbut du programme) Mmoire de donnes (DATA space) : - Une RAM externe est adressable de 0x0000 0xFFFF - La mmoire interne est compose de trois parties

Les adresses RAM 0x00 0x7F sont adressables en direct et en indirect 0x00 0x1F : 4 banques de 8 registres gnraux. (Une seule banque active) les registres R0 et R1 peuvent servir de pointeurs en RAM (adressage indirect). 0x20 0x2F : 16 octets soit 128 bits adressables individuellement 0x30 0x7F : 80 octets 0x80 0xFF : 128 octets adressables uniquement en indirect 0x80 0xFF : 128 registres internes et de priphriques adressables uniquement en direct (les adresses finissants par 0 ou 8 sont galement adressables par bit)

SAM1A_coursv11.doc

30/67

Systmes Microcontrleurs

8051 : Plan mmoire

SAM1A_coursv11.doc

31/67

Systmes Microcontrleurs
8051 Special Function Registers

* SFRs are bit addressable. # SFRs are modified from or added to the 80C51 SFRs. Reserved bits. 1. Reset value depends on reset source. 2. LPEP Low Power EPROM operation (OTP/EPROM only)

SAM1A_coursv11.doc

32/67

Systmes Microcontrleurs
8051 : recherche, dcodage, excution dune instruction

Chaque partie du cycle recherche, dcode, oprande excute coute deux impulsions dhorloge, il faut 12 ou 24 impulsion dhorloge pour excuter une instruction. Ainsi un 8051 cadenc 24MHz aura une horloge dinstruction de 2MHz (500nS par instruction)

SAM1A_coursv11.doc

33/67

Systmes Microcontrleurs
7.2.1.Unit centrale 8051, lments dassembleur ACC est laccumulateur. Il comprend 8 bits. mov a,# 12 ; charge la valeur 12 dans le registre ACC B est un accumulateur utilis pour les oprations de multiplication et de division (ncessitant 16bits) mul AB AxB , ;rsultats pFORTS dans B, pfaibles dans ACC div AB A/B, ;rsultat dans ACC, reste dans B Les registres R0 et R1 servent comme registres d'index (pointeurs) pour adresser la mmoire RAM mov a,70h ;Charge 70h dans ACC mov 71h,a ;enregistre ACC dans la case 71h Au lieu de cette squence on peut crire mov R0,70h ;R0 pointe ladresse 70h mov a,@R0 ;le contenu de 70h est plac dans ACC inc R0 ;R0 pointe ladresse 71h mov @R0,a ;le contenu de ACC est plac ladresse 71h Le pointeur de pile SP contient ladresse du premier octet, qui n'est pas encore rserv par la pile. Le registre d'instructions PC contient adresse l'instruction excuter. Registre PSW : Program Status Word : Le registre PSW contient huit bits. Beaucoup d'oprations changent ces bits. Quelques oprations changent leur comportement selon ces bits. Par exemple inc a ajoute 1 ACC, change dans PSW les bits CY, AC,OV,P 7 CY 6 AC 5 F0 4 RS1 3 RS0 2 OV 1 F1 0 P

CY Carry, Retenue: Le rsultat de la dernire opration a caus une retenue. Le bit permet des oprations sur des oprandes plus longues que 8bits. AC auxiliary carry : retenue pour les chiffres de 4 bits (codage BCD) OV Overflow, Dbordement: Le rsultat de la dernire opration a caus un dbordement. Seulement pour des nombres entiers signs complment 2. F0 : drapeau (flag) dusage gnral RS1, RS0 : slection de la banque R0-R7 active F1 : drapeau (flag) dusage gnral P, parity : si gale 1, indique que le nombre de bits 1 de ACC est pair.

7.2.2.Modes d'adressage Exemples ADD A,7FH (adressage direct) ADD A,@RO (adressage indirect) ADD A,R7 (adressage registre) ADD A, # 127 (adressage immdiat)

A=A+contenu adresse 7F A=A+contenu de ladresse point par R0 A=A+contenu de R7 A=A+127

Registre : toute opration entre un registre (R0-R7) et ACC, B, DPTR. mov a,R0 ;copie la valeur dans R0 dans ACC mov R1,a ;copie la valeur dans ACC dans R1 mov R1,R0 ;copie la valeur dans R0 dans R1 Immdiat: L'oprande se trouve directement dans le programme derrire le code de l'instruction. Au niveau d'assemblage, ce mode d'adressage sexprime avec le symbole dise (#). mov a,#12 ;place 12 dans ACC Direct : l'adresse de l'oprande se trouve dans l'octet suivant le code de l'instruction. Ce mode dadressage permet daccder aux registres SFR (priphriques, etc.) ainsi quau 128 octets hauts de la RAM interne. mov 85h,a ;copie ACC ladresse 85h
SAM1A_coursv11.doc

34/67

Systmes Microcontrleurs

Registre indirect : ou adressage index, rserv aux accs en RAM. L'adresse de la donne est contenue dans les registres R0, R1, SP pour laccs RAM et R0, R1, DPTR pour laccs ROM. Lindirection est marque par un @. Ladresse est sur 8 bits (0x00 0xFF) mov R0,85h ; R0 pointe 85h mov @R0,a ;copie ACC ladresse 85h Base register plus index register addressing : permet daccder aux donnes en ROM. Ladresse de la donne est calcule en ajoutant le dcalage ACC au registre DPTR (data pointer) ou PC. Ceci permet daccder toutes les adresses clr a ; ACC=0 mov DPTR,#0A34h ; DPTR=A34h movc a,@a+DPTR ; ACC egale le contenu de la mmoire ROM A34h

7.2.3.Le processeur Booleen : Le jeu dinstruction du 8051 permet daccder directement certains bits (SFR, RAM, PSW). mettre un bit 1 mettre un bit 0 complmenter un bit saut si le bit est 1 saut si le bit est 0 saut si le bit est 1 puis passer le bit 0 dplacer le bit

SAM1A_coursv11.doc

35/67

Systmes Microcontrleurs
8. Le jeu dinstructions du 8051 : Syntaxe: Rn registres R0-R7 @Ri adressage indirect RAM interne ou externe par les registres R0 ou R1 #data 8 adressage immediat (8 ou 16 bits) bit 128 drapeaux gnraux et bits des SFR A Accumulateur ACC

Mnemonic Description
Logic Operations ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL XRL XRL XRL CLR CPL RL RLC RR RRC SWAP A,Rn A,direct A,@Ri A,#data direct,A direct,#data A,Rn A,direct A,@Ri A,#data direct,A direct,#data A,Rn A direct A,@Ri A,#data direct,A direct,#data A A A A A A A AND register to accumulator AND direct byte to accumulator AND indirect RAM to accumulator AND immediate data to accumulator AND accumulator to direct byte AND immediate data to direct byte OR register to accumulator OR direct byte to accumulator OR indirect RAM to accumulator OR immediate data to accumulator OR accumulator to direct byte OR immediate data to direct byte Exclusive OR register to accumulator Exclusive OR direct byte to accumulator Exclusive OR indirect RAM to accumulator Exclusive OR immediate data to accumulator Exclusive OR accumulator to direct byte Exclusive OR immediate data to direct byte Clear accumulator Complement accumulator Rotate accumulator left Rotate accumulator left through carry Rotate accumulator right Rotate accumulator right through carry Swap nibbles within the accumulator

Byte

Cycle

1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1

1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1

SAM1A_coursv11.doc

36/67

Systmes Microcontrleurs
Data Transfer MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD A,Rn A,direct A,@Ri A,#data Rn,A Rn,direct Rn,#data direct,A direct,Rn direct,direct direct,@Ri direct,#data @Ri,A @Ri,direct @Ri, #data DPTR, #data16 A,@A + DPTR A,@A + PC A,@Ri A,@DPTR @Ri,A @DPTR,A direct direct A,Rn A,direct A,@Ri A,@Ri Move register to accumulator Move direct byte to accumulator Move indirect RAM to accumulator Move immediate data to accumulator Move accumulator to register Move direct byte to register Move immediate data to register Move accumulator to direct byte Move register to direct byte Move direct byte to direct byte Move indirect RAM to direct byte Move immediate data to direct byte Move accumulator to indirect RAM Move direct byte to indirect RAM Move immediate data to indirect RAM Load data pointer with a 16-bit constant Move code byte relative to DPTR to accumulator Move code byte relative to PC to accumulator Move external RAM (8-bit addr.) to A Move external RAM (16-bit addr.) to A Move A to external RAM (8-bit addr.) Move A to external RAM (16-bit addr.) Push direct byte onto stack Pop direct byte from stack Exchange register with accumulator Exchange direct byte with accumulator Exchange indirect RAM with accumulator Exchange low-order nibble indir. RAM with A 1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 1 1 1 1

SAM1A_coursv11.doc

37/67

Systmes Microcontrleurs
Boolean Variable Manipulation CLR CLR SETB SETB CPL CPL ANL ANL ORL ORL MOV MOV C bit C bit C bit C,bit C,/bit C,bit C,/bit C,bit bit,C Clear carry flag Clear direct bit Set carry flag Set direct bit Complement carry flag Complement direct bit AND direct bit to carry flag AND complement of direct bit to carry OR direct bit to carry flag OR complement of direct bit to carry Move direct bit to carry flag Move carry flag to direct bit 1 2 1 2 1 2 2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 2 1 2

Program and Machine Control ACALL LCALL RET RETI AJMP LJMP SJMP JMP JZ JNZ JC JNC JB JNB JBC CJNE CJNE CJNE CJNE DJNZ DJNZ NOP addr11 addr16 rel @A + DPTR rel rel rel rel bit,rel bit,rel bit,rel A,direct,rel A,#data,rel Rn,#data rel @Ri,#data,rel Rn,rel direct,rel addr11 addr16 Absolute subroutine call Long subroutine call Return from subroutine Return from interrupt Absolute jump Long iump Short jump (relative addr.) Jump indirect relative to the DPTR Jump if accumulator is zero Jump if accumulator is not zero Jump if carry flag is set Jump if carry flag is not set Jump if direct bit is set Jump if direct bit is not set Jump if direct bit is set and clear bit Compare direct byte to A and jump if not equal Compare immediate to A and jump if not equal Compare immed. to reg. and jump if not equal Compare immed. to ind. and jump if not equal Decrement register and jump if not zero Decrement direct byte and jump if not zero No operation 2 3 1 1 2 3 2 1 2 2 2 2 3 3 3 3 3 3 3 2 3 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1

SAM1A_coursv11.doc

38/67

Systmes Microcontrleurs

9. Programmation structure et sous-programmes


Lors de la cration dun programme il faut sassurer de : Sa lisibilit Sa maintenabilit (dcouper le programme en fonctions logicielles ou sous-programmes) Sa compacit (viter les groupes dinstructions redondants) Exemple :
PP SP1 SP2 SP3

init

T1

T2

T3

SP1

OUI

SP3

T4

SP3 SP2 NON T5

Retour

Retour

Retour

Il est ncessaire de dcouper le logiciel en un programme principal associ un ensemble de sous programmes, afin dviter les redondances et de facilit la lecture. Les microcontrleurs disposent dun registre ddi la sauvegarde du PC (program counter) lors de lappel dun sous programme (Stack Pointer ou SP). Ce registre pointe une adresse en RAM qui est automatiquement incrment lors dune sauvegarde et dcrmente lors de la rcupration, cest une pile LIFO (Last In First Out). Le gros avantage est lconomie de place en RAM, une mme adresse peut contenir des donnes de types diffrents suivant le contexte du programme. En dbut de programme le SP doit tre initialis avec une adresse RAM disposant de suffisamment d'espace. Lappel dun sous programme seffectue par linstruction call adresse (sur 12 bits) ou lcall adresse (sur 16 bits) Ladresse de retour est mmorise dans la pile S (SP est incrment deux fois). Le compteur de programme (PC) est charg avec ladresse de destination. Le sous programme se termine par linstruction RET qui a pour effet de recharger le PC avec ladresse de retour stocke dans la pile (SP est dcrment deux fois). La pile permet galement la sauvegarde rapide de donnes par les instructions push et pop. Attention il doit TOUJOURS y avoir un RET aprs un CALL et toujours un POP aprs un PUSH ! call tempo se trouve ladresse 0x123 (l'instruction occupe 2 octets) call calcul se trouve ladresse 0x456 mov mov call mov jmp tempo: call ret calcul: ret s,7Fh a,#55h tempo a,#12h call ailleurs calcul mov call s,7Fh tempo calcul AD RAM pointe par SP 0x84 0x83 0x82 0x81 0x80 0x7F Valeur

? 58h 04h 25h 01h ? ?

ret

ret

SAM1A_coursv11.doc

39/67

Systmes Microcontrleurs

10.

Lassembleur 8051

Rgles de programmation en assembleur : - Trois champs : tiquettes (adresses), instructions, oprandes, commentaires - Prciser la zone mmoire utiliser (ROM, RAM, XRAM ) Exemple de programme assembleur
#include <reg517A.inc> ; CD 6/08 ; PROGRAMME FLASH LED PORT20 ; ce programme fait clignoter (flash) le port P2.0 ; LED EQU P2.0 ; utilisation de la LED sur P2.0 CSEG AT 0 ; adresse d'assemblage (ici 0h, adresse de RESET) MOV SP,#7Fh ; charge pointeur de pile avec la base RAM SUITE: CPL LED ; complmente la LED (FLASH) CALL TEMPO ; tempo SJMP SUITE ; on recommence ; TEMPO LONGUE R0xR1 TEMPO: MOV R0,#0FFh ; charge R0 et R1 TEMPO1: MOV R1,#0FFh TEMPO2: DJNZ R1,TEMPO2 ; decremente R1 jusqu' 0 DJNZ R0,TEMPO1 ; decremente R0 et recharge R1 si R0!=0 RET END

# indique une directive de compilation, ici linclusion du fichier reg517A.inc qui contient les dfinition des registres et priphrique du microcontrleur utilis (En particulier ladresse du bit P2.0) ; indique un commentaire, INDISPENSABLE la lecture et comprhension du programme La premire colonne contient des tiquettes qui reprsentent des quivalences ou des adresses (dans ce cas elles sont suivis dun :). La deuxime colonne contient une directive ou une instruction. EQU correspond une quivalence (ici entre P2.0 sappellera LED), END indique la fin du programme. MOV, CPL, CALL etc sont des instructions assembleur. CSEG indique le segment de mmoire courant pour le PROGRAMME (donc la ROM). AT 0 place les codes machines suivants partir de ladresse 0 (adresse de RESET). Rq : lcriture en colonnes nest pas obligatoire, un espace suffit pour sparer les champs mais le programme devient alors beaucoup moins visible. Les directives dassemblage : Commentaire : ; Equivalence : EQU Rservation en RAM : DS RAM Initialisation de constantes : DB Initialisation de const 16bits : DW Rservation dun bit DBIT Adresse courante $

var1 label : ici : la : flag :

EQU DS B DW DBIT jmp

123 5

; rserve 5 octets en

27,33h,coucou 123 ,ABCDh 2 ; reserve 2 bits $ ; boucle sans fin

SAM1A_coursv11.doc

40/67

Systmes Microcontrleurs

10.1.

Utilisation du Linker la dfinition des segments

Loutil de dveloppement permet de saffranchir de la connaissance des adresses des diffrentes mmoires du microcontrleur, cela est utile en raison du grand nombre de cibles disponibles et de leurs configurations mmoires diffrentes. (Rq : les RAM DATA et IDATA sont communes tous les microcontrleurs, mais XDATA et la ROM peuvent tres trs diffrents) La directive segment permet de dfinir un type de segment mmoire. Les types de segments reconnus sont : DATA : mmoire RAM et SFR de 0x00 0xFF, adressable en direct et indirect BIT : zone RAM bitadressable et certains SFR, adressables avec les instructions pour bits. IDATA : RAM adressable en inirect par les registres R0,R1, (gnralement 0x00 0xFF) XDATA : RAM externe accessible par linstruction MOVX via le registre DPTR. CODE : ROM accessible via MOVC et le registre DPTR Nommer un segment : SEGMENT Slectionner un segment : RSEG Segment pr-definis : CSEG (ROM), DSEG (DATA), BSEG(BIT), ISEG (IDATA, XSEG (XDATA) La directive ORG permet de changer dadresse DANS un segment Le linker choisit automatiquement les adresses de diffrentes zones, le programmeur peur forcer ladressage (exemple pour le RESET, le programme DOIT commencer ladresse 0x0000)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mesdonnees monprog mesconst pile SEGMENT SEGMENT SEGMENT SEGMENT RSEG DS RSEG DS RSEG ORG CSEG LJMP RSEG MOV mov mov RSEG DB DATA CODE CODE IDATA ;mesdonnees est un segment de DATA ; ROM ; ROM ; creation d'une pile ; ; rserve un octet en RAM ; reservation pour pile

---0000 ---0000 ---0000 0000 020000 ---0003 758100 0006 74AB 0008 F500 ---0000 1B33636F 0004 75636F75 0008 00 ---0001 F

val :

mesdonnees 1 pile 20h monprog 0 AT 0 debut

; force segment adresse 0 ; autre methode ; saut sur debut

F F

debut:

monprog ; adresse connue du linker !!! SP,#pile-1 a,#0ABh val,a mesconst 27,33h,'coucou',0

const:

24 25 26 donnee : 27 ---28 assembl la suite du prcdent. 000A 04 29 000B A800 F 30 000D F6 31 000E 80FE 32 33

RSEG DS RSEG inc mov mov jmp END

mesdonnees 20 monprog a R0,val @R0,a $

; reserve 20 octets en RAM ; le programme sera

SAM1A_coursv11.doc

41/67

Systmes Microcontrleurs

11.

Lenvironnement de dveloppement

Gnralement lenvironnement de dveloppement logiciel comporte : - Un gestionnaire de projet (choix du compilateur, de la cible, association des fichiers source, configuration cran etc - Un assembleur - Un compilateur C - Un dbugger pour la mise au point - Un simulateur - Un gestionnaire de communications pour le transfert des programmes dans a cible. - Des outils daide au dveloppement (configuration graphique, gestion dun noyau temps rel)

SAM1A_coursv11.doc

42/67

Systmes Microcontrleurs
Outil de dveloppement : Flux des donnes

Les outils de dveloppement permettent la cration des programmes partir de fichiers sources crits en langage C et en assembleur. Le compilateur C et lassembleur produisent partir de plusieurs sources des fichiers objets (*.o) contenant les codes machine de la cible SANS les adresses. Le fichier *.lkr est propre chaque cible, il dcrit le plan mmoire ainsi que les rservations et ventuellement les fichiers lir automatiquement. Les fichiers *.lib contiennent un ensemble de fichiers *.o et forment ainsi une bibliothque (library) Le linker lie les fichiers *.o et .lib et ajoute les adresses en fonction de son fichier de configuration (*.lkr). Il produit le fichier excutable (*.hex) et le fichier des symboles pour le debug (*.cod) , le fichier listing (*.lst) le plan mmoire (*.map) . Le fichier *.hex est utilis pour programmer la mmoire de la cible laide dun programmateur (versions ROM OTP) ou dun systme interne au microcontrleur, lISP (In Situ Programming) Certains composants intgrent une gestionnaire de dbug, on parle alors dICD (In Circuit Debug)

SAM1A_coursv11.doc

43/67

Systmes Microcontrleurs

12.

Interruptions Principes

12.1.

Gnralement un programme volue en fonction dvnements physiques. (touche enfonce, gestion dun afficheur, dpassement dune temprature, rception dune communication srie) Les microcontrleurs scalaires nexcutent quune instruction la fois ! Ils ne sont pas rellement multitches. (Cest un concept qui sera tudi plus tard). Prenons lexemple dune simple calculette. Le microcontrleur doit : - Dtecter lappuie sur les touches. - Effecteur les calculs demands - Afficher le rsultat - Surveiller ltat des batteries Une premire approche consiste rechercher les tches effectuer par scrutation :

On voit que le programme passe beaucoup de temps surveiller sil se passe quelque chose, le dlai entre lvnement et sont traitement nest pas connu. Dautre part si un vnement apparat durant lexcution dune tche, son traitement en sera dautant plus retard. Une deuxime approche consiste utiliser le processus dinterruption quipant tous les microcontrleurs. Les vnements ne sont plus scruts par programme, mais leur source est connecte un dispositif matriel (interne au microcontrleur) qui dtectera lvnement et interrompra le programme en cours pour effectuer la tche logicielle correspondante.

SAM1A_coursv11.doc

44/67

Systmes Microcontrleurs

Les avantages de cette technique sont vidents. Le microcontrleur peut passer son temps ne rien fair (ou ) traiter des tches permanentes et non prioritaires, il est sollicit automatiquement lorsquune nouvelle tche est ncessaire. Le temps de rponse un vnement est plus rapide et surtout il est connu. Les contraintes : - Gestion automatique des adresses des sous-programmes dinterruption (utilisation de vecteurs) - Le programme en cours peut tre interrompu nimportant quand. (un vnement physique est asynchrone) - Les donnes en cours de traitement avant linterruption, peuvent tre perdues. - Que se passe t il sil y a un interruption durant le traitement dune autre ? Priorits, soit la tche en cours est prioritaire sur la nouvelle, soit elle ne lest pas :

SAM1A_coursv11.doc

45/67

Systmes Microcontrleurs
Sauver le contexte : Lors de linterruption, le compteur de programme (PC) est charg avec ladresse de linterruption. En fin de le PC doit tre charg avec ladresse de retour, cette dernire est mmorise dans la pile S. Si des registres sont modifis dans le sous-programme dinterruption ils doivent tre sauvegards puis restaurs avant le retour. Ces opration se fond laide dinstructions push ou pull qui stockent des donnes dans la pile. ATTENTION, dans une pile LIFO les oprations push et pull doivent tre effectues dans un ordre inverse. Exemple : ; SP dinterruption push acc ; sauvegarde du contexte push psw push 12 ; ici est traite la tche en IT pop 12 ; restauration du contexte pop psw pop acc reti ; retour de sous-programme dIT

12.2.

Masquage et validation

Par dfaut la plupart des sources dinterruptions sont dsactive (masque) lors du RESET. Certaines sources ne sont pas masquables (NMI : Non Masquable Interrupt) Masquage et validation des interruptions, exemple :

vnement 1

Dtecteur dvnement s

Flag IT1 1 En IT1

& Charge le vecteur de lIT1 dans le PC

vnement 2

Dtecteur dvnement

Flag IT2 0 En IT2

& Charge le vecteur de lIT2 dans le PC

vnement n

Dtecteur dvnement

Flag ITn 1 En ITn

& Charge le vecteur de lITn dans le PC

1 EAL

Les vnements dtects provoque la mise 1 dun u drapeau (flag) qui leur est propre. Si le bit dautorisation et 1 et que le masque global (EAL) lest aussi) linterruption a lieu : le PC est charg avec ladresse du vecteur. Avant linstruction de retour dinterruption (RETI) le masque DOIT tre effac par le programme.

SAM1A_coursv11.doc

46/67

Systmes Microcontrleurs
Exemple de structure dinterruption (C517A)

Exemple de registre de configuration (C517A)

SAM1A_coursv11.doc

47/67

Systmes Microcontrleurs

12.3.

Exemple de mise en uvre des interruptions

Le port P2.0 doit changer dtat chaque front descendant sur P3.2 (/INT0). CSEG ljmp ORG push push cpl clr pop pop reti prog: mov setb setb setb sjmp END AT prog 3 acc psw P2.0 IE0 psw acc 0

; adresse vecteur INT0 ; push et pop pour demo ; bascule P2.0 ; efface drapeau d'IT

sp,#7Fh IT0 ; detection front desc EX0 ; active IT0 EAL ;active les IT demasques $

Sources et vecteurs dinterruption du C517A : Interrupt Source External Interrupt 0 Timer 0 Overflow External Interrupt 1 Timer 1 Overflow Serial Channel 0 Timer 2 Overflow / Ext. Reload A/D Converter External Interrupt 2 External Interrupt 3 External Interrupt 4 External Interrupt 5 External Interrupt 6 Serial Channel 1 Compare Match Interupt of Compare Registers CM0-CM7 assigned to Timer 2 Compare Timer Overflow Compare Match Interupt of Compare Register COMSET Compare Match Interupt of Compare Register COMCLR Interrupt Vector Address 0003H 000BH 0013H 001BH 0023H 002BH 0043H 004BH 0053H 005BH 0063H 006BH 0083H 0093H 009BH 00A3H 00ABH Interrupt Request Flags IE0 TF0 IE1 TF1 RI0 / TI0 TF2 / EXF2 IADC IEX2 IEX3 IEX4 IEX5 IEX6 RI1 / TI1 ICMP0 - ICMP7 CTF ICS ICR

SAM1A_coursv11.doc

48/67

Systmes Microcontrleurs
REMARQUE : Le vecteur de RESET se trouve ladresse 0x0000 et lLes vecteurs dinterruptions se trouvent aux adresses 0x0003 0x0AB. Pour pouvoir utiliser ces vecteurs il est ncessaire de placer en 0x0000 un saut absolu (LJMP) sur une adresse hors de la zone des vecteurs dinterruption. Loutil de dveloppement KEIL propose un entte de programme contenant les dclarations des diffrents segments mmoire, une rservation de RAM pour la pile SP ainsi quun saut en 0x0000 sur le segment de programme. entete.A51
NAME module_name ;-----------------------------------------------------------------------------; FONCTION: ; ; ;-----------------------------------------------------------------------------; AUTEUR : ; Dvelopp le : ; Dernire modif le : ;-----------------------------------------------------------------------------#include <reg517A.inc> ; include dfinition des registres du C Infineon C515C ;-----------------------------------------------------------------------------; XDATA SEGMENT--Reserves space in external RAM--Delete this segment if not used. ;-----------------------------------------------------------------------------xdata_seg_name SEGMENT XDATA ; segment for XDATA RAM RSEG xdata_seg_name ; switch to this xdata segment xdata_variable: DS 1 ; reserve 1 Bytes for xdata_variable ;-----------------------------------------------------------------------------; DATA SEGMENT--Reserves space in DATA RAM--Delete this segment if not used. ;-----------------------------------------------------------------------------data_seg_name SEGMENT DATA ; segment for DATA RAM. RSEG data_seg_name ; switch to this data segment data_variable: DS 1 ; reserve 1 Bytes for data_variable ;-----------------------------------------------------------------------------; IDATA SEGMENT--Reserves space in indirect DATA RAM--Delete this segment if not used. ;-----------------------------------------------------------------------------idata_seg_name SEGMENT IDATA ; segment for DATA RAM. RSEG idata_seg_name ; switch to this data segment idata_variable: DS 1 ; reserve 1 Bytes for data_variable ;-----------------------------------------------------------------------------; BIT SEGMENT--Reserves space in BIT RAM--Delete segment if not used. ;-----------------------------------------------------------------------------bit_seg_name SEGMENT BIT ; segment for BIT RAM. RSEG bit_seg_name ; switch to this bit segment bit_variable: DBIT 1 ; reserve 1 Bit for bit_variable bit_variable1: DBIT 4 ; reserve 4 Bits for bit_variable1 ;-----------------------------------------------------------------------------; Add constant (typeless) numbers here. ;-----------------------------------------------------------------------------typeless_number EQU 0DH ; assign 0D hex typeless_num1 EQU typeless_number-8 ; evaluate typeless_num1 ;-----------------------------------------------------------------------------; -- Debugging with Monitor-51 needs -- NE PAS DETRUIRE ;-----------------------------------------------------------------------------DSEG AT 0x23 RESERVE: DS 3 ;-----------------------------------------------------------------------------; STACK SEGMENT--Reserves space for STACK -- NE PAS DETRUIRE ;-----------------------------------------------------------------------------STACK SEGMENT IDATA ; Segment pour la pile RSEG STACK DS 32 ; Taille de la pile

SAM1A_coursv11.doc

49/67

Systmes Microcontrleurs
;-----------------------------------------------------------------------------; Provide an LJMP to start at the reset address (address 0) in the main module. ; You may use this style for interrupt service routines. ;-----------------------------------------------------------------------------CSEG AT 0 ; absolute Segment at Address 0 LJMP start ; reset location (jump to start) ;-----------------------------------------------------------------------------; CODE SEGMENT--Reserves space in CODE ROM for assembler instructions. ;-----------------------------------------------------------------------------PROG SEGMENT CODE RSEG PROG ; switch to this code segment start: MOV SP,#STACK-1 ;-----------------------------------------------------------------------------; Insert your assembly program here. ;------------------------------------------------------------------------------

;-----------------------------------------------------------------------------; The END directive is ALWAYS required. ;-----------------------------------------------------------------------------END ; End Of File

SAM1A_coursv11.doc

50/67

Systmes Microcontrleurs

13.

TIMER

Les microcontrleurs intgrent des compteurs (8 ou 16 bits) qui suivant leur utilisation sont nomm TIMER ou COMPTEUR. Utilisation comme TIMER : gnralement lorsque leur horloge est constante ils peuvent alors mesurer ou produire des temps. Utilisation comme COMPTEUR : Gnralement ils comptent des vnements (fronts montants ou descendant) sur une entre physique du microcontrleur. Le C517A possde trois TIMER/COUNTER avec des applications diffrentes pour chaque. Les TIMER/COUNTER 0 et 1 peuvent tre configure en 4 modes :

Mode 0: 8-bit timer/counter avec un pr-diviseur par 32 Mode 1: 16-bit timer/counter Mode 2: 8-bit timer/counter avec rechargement automatique Mode 3: Timer/counter 0 est un timer/counter 8-bit et Timer/ counter 1 est un TIMER 8 bits. Les entres INT0 et INT1 peuvent tre utilises comme en entre de validation (gate) pour ces deux TIMER, cela facilite la mesure de temps MODE 0 pour TIMER 0 (idem pour TIMER 1) :

Le bit C/T (Counter/Timer) permet de choisir la source de lhorloge, OSC/12 ou la broche T0 le comptage seffectue sur les 8 bits de TH0 (TL0 servant de pr-diviseur par 32 = 25) TR0 (TIMER RUN 0) active le TIMER si : Le bit GATE est 0 Ou Le bit Gate est 1 ET la broche /INT0 est 1 Lorsquil y a dbordement (passage de TF0 de 0xFF 0x00), le bit TF0 passe 1, une interruption peut tre gnre (TF0 DOIT tre remis 0 par programme). Linterruption est active si ET0 du registre IEN0 est 1.

SAM1A_coursv11.doc

51/67

Systmes Microcontrleurs
MODE 1 pour TIMER 0 (idem pour TIMER 1)

Le fonctionnement est identique au mode 0. Le comptage se fait sur 16 bits et il ny a pas de pr-diviseur. MODE 2 pour TIMER 0 (idem pour TIMER 1)

Lors du dbordement (overflow) le registre TL0 du TIMER/COUNTER est automatiquement recharg avec le contenu du registre TH0. La dure avec dbordement est donc 0xFFFF-TH0. Ce mode est particulirement adapt pour gnrer des signaux rectangulaires. Dans le cas dun signal carre il ny a qu basculer le port de sortie, dans le cas un rectangle il faut dans linterruption recharger TH0 avec la prochaine valeur.

SAM1A_coursv11.doc

52/67

Systmes Microcontrleurs
MODE 3

Le TIMER/COUNTER 0 compte sur 8 bits, le TIMER1 utilise le registre TH0 comme compteur (8 bits). Exemple : gnrer un signal carree sur P2.0 (T=0,5S)
#include <reg517A.inc data_seg_name SEGMENT DATA ; segment for DATA RAM. RSEG data_seg_name ; switch to this data segment cpt: DS 1 ; compteur d'interruptions ; valTH0 EQU 3Ch ; 3CB0 = FFFFh-50000d+1 (0-50000) valTL0 EQU 0B0h LED EQU P2.0 ; STACK SEGMENT IDATA ; Segment pour la pile RSEG STACK DS 32 ; Taille de la pile ; CSEG AT 0 ; absolute Segment at Address 0 LJMP start ; reset location (jump to start) ORG 0x000B ; vecteur TIMER0 ovf LJMP IT_TIMER0 ; PROG SEGMENT CODE RSEG PROG ; switch to this code segment start: MOV SP,#STACK-1 MOV TMOD,#00000001b ; TIMER 0 sur mode 1 source Q/12 SETB TR0 ; run TIMER 0 MOV CPT,#10 ; compteur d'IT SETB ET0 ; autorise IT sur debordement TIMER0 SETB EAL ; autorise toutes les IT SJMP $ ; attend IT ; IT_TIMER0: DJNZ CPT,NON CPL LED ; bascule LED MOV CPT,#10 ;recharge le compteur d'IT NON: MOV TH0,#valTH0 ; recharge TIMER0 MOV TL0,#valTL0 CLR TF0 ; efface drapeau IT0 RETI END ; End Of File
SAM1A_coursv11.doc

53/67

Systmes Microcontrleurs

EXEMPLE 1

EXEMPLE 2

SAM1A_coursv11.doc

54/67

Systmes Microcontrleurs
Exemple 2 : Comptage dvnement. Un capteur optique dtecte le passage de bonbons sur un tapis roulant les entrainant dans une boite. La boite doit tre ferme lorsquelle contient dix bonbons.

#include <reg517A.inc> data_seg_name SEGMENT DATA ; segment for DATA RAM. RSEG data_seg_name ; switch to this data segment CPT: DS 1 ; compteur de boites ; valTH0 EQU 0FFh ; 10 bonbons par boite valTL0 EQU 0F6h BOITE EQU P2.0 STACK SEGMENT IDATA ; Segment pour la pile RSEG STACK DS 32 ; Taille de la pile ; CSEG AT 0 ; absolute Segment at Address 0 LJMP start ; reset location (jump to start) ORG 0x000B ; vecteur TIMER0 ovf LJMP IT_TIMER0 ; PROG SEGMENT CODE RSEG PROG ; switch to this code segment start: MOV SP,#STACK-1 MOV TMOD,#00000101b ; TIMER 0 sur mode 1 source Q/12 CLR A ; compteur de boites MOV CPT,A MOV TH0,#valTH0 ; recharge TIMER0 MOV TL0,#valTL0 SETB ET0 ; autorise IT sur debordement TIMER0 SETB EAL ; autorise toutes les IT SETB TR0 ; run TIMER 0 SJMP $ ; attend IT ; IT_TIMER0: SETB BOITE ; impulsion sur fermeture CLR BOITE INC CPT ;incremente compteur MOV TH0,#valTH0 ; recharge TIMER0 MOV TL0,#valTL0 CLR TF0 ; efface drapeau IT0 RETI END ; End Of File

Essayer les exemples ci-dessus dans le simulateur, on constate une petite erreur sur la dure de la priode. En effet, les TIMER sont rechargs par logiciel, le dcalage correspond aux instructions dappel de sous-programme dinterruption et de rechargement des registres du TIMER

SAM1A_coursv11.doc

55/67

Systmes Microcontrleurs

14.

Le TIMER 2

Les TIMER ncessitent un apport logiciel afin dactionner les sorties. Les fonctions matrielles CAPTURE/COMPARE permettent de limiter considrablement le logiciel. COMPARE automatisent les actions sur les broches externes. CAPTURE facilite lchantillonnage temporel pour la mesure de dure. CAPTURE/COMPARE permet une raction immdiate aux vnements (ce nest plus le logiciel qui recharge le TIMER mais un signal agissant directement sur lentre des registres, la prcision temporelle est alors celle de loscillateur. Les fonctions CAPTURE/COMPARE sappuient sur le TIMER 2 ou le COMPARE TIMER Modes opratoires du TIMER 2

T2I1, T2I0 =0,1 le TIMER 2 compte lhorloge issue du prdiviseur OSC/12 /24 /48 /96 T2I1, T2I0 =1,0 le COUNTER 2 compte les fronts descendants sur T2 T2I1, 0T2I0 =1,1 le TIMER 2 compte lhorloge issue du prdiviseur OSC/12 (uniquement) lorsque T2=1 En cas de dbordement TF2=1 une interruption peut tre active.

SAM1A_coursv11.doc

56/67

Systmes Microcontrleurs

15.

COMPARE sur C517A

COMPARE AVEC TIMER 2 (fonctions CCx) MODE 0

Lorsquil y a concidence (match) entre le TIMER 2 et le registre de comparaison (CCx) la broche slectionne est mise 1. (S=1 Q=1 et /Q=0 le transistor est bloqu le pull-up ramne un NL1 sur la sortie) Lorsque le TIMER dborde la broche slectionne est mise 0 et le TIMER peut tre recharg. Ce principe est particulirement adapt la modulation de largeur dimpulsion, Pulse Wave Modulation (PWM) pour le contrle de vitesse des moteurs ou la synthse vocale .

SAM1A_coursv11.doc

57/67

Systmes Microcontrleurs
MODE 1

A chaque concidence la donne dans le Latch de sortie est recopie sur le port. Cette donne est choisie par programmation et place sur le le Latch interne. Il donc est possible de choisir le niveau de sortie lors de la concidence MODE 2

. Quand il y a concidence entre le TIMER 2 et le registre COMSET un NL1 apparat sur le port en sortie si le bit de masque SETMSK est 1 Quand il y a concidence entre le TIMER 2 et le registre COMCLR un NL0 apparat sur le port en sortie si le bit de masque CLRMSK est 1

SAM1A_coursv11.doc

58/67

Systmes Microcontrleurs
Commande simultane de plusieurs broches en MODE 0 et 1:

SAM1A_coursv11.doc

59/67

Systmes Microcontrleurs

16.

CAPTURE

Lors de lvnement (front montant ou descendant) sur une broche le contenu du TIMER 2 est recopi dans un registre, une interruption peut tre gnre. Le microcontrleur conserve ainsi une trace trs prcise de linstant ou sest produit lvnement. Le traitement et les actions correspondantes peuvent tre traites ensuite. Avec les registres CRC, CC4

Avec les registres CC1 to CC3

SAM1A_coursv11.doc

60/67

Systmes Microcontrleurs

17.

ADC sur C517A

Le C571A possde un convertisseur analogique numrique 10 bits approximations successives (ADC, Analog to Digital, Converter) 12 entres multiplexes. Une entre devant tre slectionne avant chaque conversion. Il peut effectuer des conversions uniques ou continues. Un chantillonneur-bloqueur interne bloque le signal durant la conversion. La conversion peut tre demande (Start Of Conversion) par logiciel (criture dans ADDTL) ou par un signal externe. La fin de conversion est signale par un bit qui peut dclencher une interruption. Le rsultat est place dans deux registres 8 bits ADDATH et ADDATL. (seuls 2 bits de ADDATL sont valides, le rsultat tant sur 10 bits) Les rfrences de tensions (Vref+, Vref-) sont places sur deux broches externes. Voir le schma page 63

Exemple de gestion de lADC : ; Simple programme effectuant une conversion sur AN0 (P7.0) #include <reg517A.inc> ; data_seg_name SEGMENT DATA ; segment for DATA RAM. RSEG data_seg_name ; switch to this data segment RESH: DS 1 ; poids forts du rsultat RESL: DS 1 ; poids faibles du rsultat ; CSEG AT 0 ; absolute Segment at Address 0 LJMP start ; reset location (jump to start) ; PROG SEGMENT CODE RSEG PROG ; switch to this code segment MOV ADCON0,#00000000b ; SOC interne, BSY=0, conversion unique ; AN0 slectionne CLR EADC ; pas d'interruption MOV ADDATL,#0 ; SOC JB BSY,$ ; attend EOC CLR BSY ; rq : ces deux instructions sont ; remplaables par JBC MOV RESH,ADDATH ; sauve le rsultat MOV RESL,ADDATL SJMP $ ; boucle sans fin END ; End Of File

Exercice : Afin de minimiser linfluence du bruit de quantification on souhaite effectuer la moyenne de 20 mesures avant de stocker le rsultat. Raliser un sous-programme recevant dans ACCA le numro du canal dentre puis effectuant 20 mesures et calculant leur moyenne avant stockage dans RESH, RESL. RESH contient les deux poids forts et RESL les huit poids faibles. Raliser un programme testant ce sous programme.

SAM1A_coursv11.doc

61/67

Systmes Microcontrleurs

SAM1A_coursv11.doc

62/67

Systmes Microcontrleurs

18.

Communications sries

Linterface de communications peut grer les communications synchrones (type SPI), mode maitre (gnre lhorloge) ou esclave (reoit lhorloge) ainsi que les communications asynchrones (code NRZ) Lhorloge asynchrone (Baud Rate Clock) peut tre gnre partir dOSC/2 ou du TIMER1., les diffrents modes permettent dobtenir de nombreuse frquence de cadencement (le gnrateur de Baud est galement utilis pour les communications synchrones.

En mode synchrone les donnes sont transmises via un simple registre dcalage, la phase de lhorloge peut tre ajuste de manire synchroniser tous les types de rcepteurs (fronts montants, dpendants etc.) Mode synchrone

Une transmission est initie par une criture dans SxBUF. Les donnes sont alors mises et reues simultanment de manire synchrone. Aprs 8 tops dhorloge SxBUF contient la donne reue. Les bits TI/RI indiquent la fin de la transmission/rception et peuvent gnrer une interruption, ces bits doivent tre remis zro par logiciel.

SAM1A_coursv11.doc

63/67

Systmes Microcontrleurs
Mode asynchrone

Send est un signal interne lUSART qui valide la sortie des donnes Shit est un signal interne commandant le dcalage du registre de transmission ou rception Une transmission est initie par une criture dans SxBUF. A la fin le bit TI passe 1 et peut gnrer une interruption, ce bit doit tre remis zro par logiciel. Une rception est initie par la rception dun bit de START. A la fin de la rception le bit RI passe 1 et peut gnrer une interruption, ce bit doit tre remis zro par logiciel. Loctet reu se trouve dans SxBUF.

SAM1A_coursv11.doc

64/67

Systmes Microcontrleurs
Exemple asynchrone: programme cho , ce programme (simulable sur le port srie 1), retourne en cho le caractre reu.) voir page 27 principe des communications asynchrones #include <reg517.inc> sorelh equ 0BAh ; registres baud sorell equ 0AAh TIO equ S0CON.1 ; bit fin reception RIO equ S0CON.0 ; bit fin reception stack segment IDATA ; pour pile S prog segment code ; zone programme pconst segment code ; pour constantes RSEG stack DS 10h ; reserve 16 octets pour la pile ; CSEG AT 0 ; RAZ ljmp start ; RSEG prog start: mov sp,#stack-1 setb adcon0.7 ; FOSC = baud generator mov sorelh,#3 ;9600 Bauds (Q=24MHz) mov sorell,#0D9h mov S0CON,#01010000B ; mode 1, rx actif ljmp tache ; SP emission d'un message (fin par 0) putst: mov R0,#0FFh ; R0 est le pointeur de caractre suite: inc R0 ; caractre suivant mov a,R0 ; dans acc movc a,@a+dptr jz fin ; si acc=0 c'est finit call putch ; sinon mission caractre sjmp suite ; au suivant ! fin: ret ; SP emission d'un caractre (dans acc) putch: mov S0BUF,a ; caractre dans registre de transmission jnb TIO,$ ; transmission termine ? clr TIO ; efface drapeau ret ; SP test caractere reu isch: jnb RIO,non ; attend caractre mov a,#0FFh ; si oui acc=FF ret non: clr a ; si non acc=0 ret ; SP reception caractere getch: clr RIO ; efface drapeau mov a,S0BUF ret ; pour test, emission du message puis echo+1 tache: mov dptr,#txt ; adresse message dans pointeur ROM call putst ; emission message repete: call isch ; attend reception jz repete call getch ; rcupre le caractre reu inc a ; retourne car +1 call putch sjmp repete ; boucle sans fin ; message transmettre RSEG PCONST txt: db 'Test communications - ECHO+1',10,13,0 END

SAM1A_coursv11.doc

65/67

Systmes Microcontrleurs

SAM1A_coursv11.doc

66/67

S-ar putea să vă placă și