27/04/2010 Cours 1 Microcontrôleur Jalil Boukhobza LC 206 [email protected] 02 98 01 69 73 1 Plan du cours 1. 2. 3. 4. 5. Introduction Signaux d’E/S et ports L’unité centrale Les modes d’adressage Les instructions 2 Pourquoi le 68HC11 ? Contient un microprocesseur de la même famille que celui précédemment vu. Peu cher Très utilisé: Lecteurs de code barres Différents programmateurs Robots Thermostats d’ambiance Contrôle d’affichage dans les voitures … Source: http://www.arlabs.com/hc11chp.jpg 2 modes de fonctionnement et 2 modes de Test 3 1 27/04/2010 Qu’est ce qu’un µcontrôleur Un µcontrôleur intègre dans un même circuit: Une unité centrale ou micro processeur (CPU) De la mémoire (RAM, ROM, EPROM, EEPROM,...) Des interfaces d'entrées/sorties Périph d’E/S CPU mémoire µcontrôleur Entrée/sorties 4 Définition globale Le 68HC11 est un µcontrôleur développé par Motorola (devenu freescale) construit avec une unité centrale 8 bits. Il contient: un espace adressable (bus d'adresses de 16 bits). Un convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux. Une interface de communication série asynchrone (RS232) Une interface de communication série synchrone Un timer 16 bits avec 3 entrées de capture et 4 sorties de comparaison plus 1 E/S programmable Plusieurs sources d'interruptions (internes et externes) Plusieurs broches d'E/S polyvalentes réparties sur 5 ports.() (DMA) (Coprocesseur mathématique) 5 Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97 Structure globale 6 2 27/04/2010 68HC11 en bref Mémoire subdivisée au max en 3 blocs: RAM: mémoire vive d’au moins 256 octets et toujours présente. ROM: peut être présente ou absente mémoire destinée aux programmes ROM: programmable par masque lors de la fabrication EPROM: programmable électriquement OTPROM: non effaçable (One Time PROM) EEPROM: effaçable plusieurs fois EEPROM: destinée aux données 7 68HC11 en bref -2 Unité centrale entourée d’un certain nombre de ports parallèles: Port A, B, C, D, E: bidirectionnels ou uni directionnels Certains ports sont partagés avec des ressources internes et donc ne sont pas toujours accessibles: ex. port E commun avec le convertisseur Analogique/Digital Entrées séries dispo: SPI: Serial Peripheral Interface (synchrone) SCI: Serial Communication Interface (asynchrone) 8 68HC11 en bref -3 Ensemble de Timers disponible: Plusieurs timers évolués Accumulateur d’impulsions Une horloge temps réel Un chien de garde (COP Computer Operating Properly): destiné à surveiller le fonctionnement du µcontrôleur Convertisseur analogique digital à 8 entrées 2 modes de fonctionnement: Mode « single chip »: fonctionne seul Mode « expanded »: connecté à des circuits externes, dans ce cas le port B et C se transforment en lignes d’adresses et de données. 9 3 27/04/2010 Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97 Famille du 68HC11 10 Famille du 68HC11 -2RAM ROM EPROM EEPROM TIMER A/D D/A SCI,SPI PWM DMA COPRO PLL PORTS BROCHES Famille A 256 0 à 8k 0 0 à 512 X 8 voies Famille D …. 192 à 256 0 à 4K 0 0 X 0 ou 4 voies Famille M 1280 32K 0 640 1+1 1+1 2 1+2 4 X X A=>E 48,52 A=>H ou A=>D 64, 68 ou 40, 44 A=>H ? 80 ? 8voies 11 Signaux d’E/S Le 68HC11 est inclus dans un boitier a plusieurs broches. En plus des E/S des ports, il possède plusieurs broches selon les versions: VSS et VDD: alimentation VDD=5V, VSS=0. XTAL et EXTAL: connexion d'un quartz ou d'une horloge externe. E : sortie d'horloge. IRQ et XIRQ: entrées d'interruptions externes. VRH et VRL: tension de référence pour la conversion A/N. VRH<VDD. MODA et MODB: mode de fonctionnement. RESET signal d'initialisation. STRA et STRB: en mode normal (monopuce), signaux de communication avec une interface parallèle. 12 4 27/04/2010 Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97 Structure globale 13 Port d’E/S PA0-PA7: entrées: PA0-PA1-PA2 et sorties PA3-PA4-PA5-PA6, et entrée/sortie PA7. Lignes partagées avec celles du Timer. PB0-PB7: sorties parallèles en mode «mono puce » et @ de poids forts en mode étendu PC0-PC7: E/S parallèles à usage général en mode « mono puce » et bits de poids faibles + données en mode étendu. STRA indique si @ ou données et STRB indique si lec/Ecr PD0-PD5: E/S parallèle du port D, communes avec les ports série (SPI et SCI) PE0-PE7: Entrées du port E partagée avec les entrées du convertisseur analogique/digital 14 Structure globale Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97 15 5 27/04/2010 Port d’E/S -2CPU Accum. Timer de pulses 16bits Chien de garde Expansion de bus PortA Strobe / Handshake A/D Famille A Port E SP1 SCI Port D Port B Série sync et async Port C 16 Fonctionnement des ports Le port A est destiné aux E/S « parallèles » Mais aussi aux timer, pulse accu, PortA (en simplifiant) $1000 Le portB est en sortie parallèle (en mode monopuce) $1004 PortB 17 Fonctionnement des ports -2 Le port C est destiné aux E/S. Chaque bit peut être configuré par le bit correspondant de DDRC : 1=> sortie , 0 =>entrée DDRC $1007 $1003 PortC Le portD est destiné soit aux E/S (6bits de poids faible contrôlés par DDRD) Soit à SPI et SCI DDRD $1009 PortD $1008 STRB STRA 18 6 27/04/2010 L’unité centrale Modèle 8 bits Peut faire des opérations sur 16bits De la même famille que le 6801 Processeur CISC 2 accumulateurs A et B de 8 bits A et B concaténé donne le registre D (Double) et donc un registre 16bits 2 registres d’index X et Y Un registre pointeur de pile 16bits Un registre PC Un registre CCR 19 Les registres 2 accumulateurs A et B de 8 bits Opération arithmétiques et logiques Indépendants Accumulateur « virtuel » D Registres d’index X et Y pour l’adressage (rappel; adressage avec déplacement du 68000). SP ≈ (A7 du 68000) CCR: registre de code de conditions 20 Le registre CCR S X H I N Z V C N: nombre résultant négatif Z: nombre résultat = zéro V: dépassement de capacité C: nombre résultant ayant une retenue H: Demi retenue pour certains type d’instructions I: masque d’interruption, interdit les interruptions … « masquables » S: stop disable, mis à 1 pour desactiver l’instruction « stop » (qui suspend l’horloge) X: X Interrupt Mask, comme le bit I mais sur les interruptions sur l’entrée XIRQ. 21 7 27/04/2010 Le 68HC11 Architecture (globale) Mémoires X,Y 16bits SP 16bits PC 16 bits Interface Mémoire et E/S A,B RI UAL S,X,H,I, N, Z, V,C. Unité de Contrôle E/S et timers 22 Mapping mémoire Non utilisé Non utilisé 23 Les modes d’adressage 6 modes d’adressage 1 seul espace adressable De $0000 à $FFFF (64Ko) Registres des ressources internes (non ceux du processeur) accessibles via des adresses en mémoire Pas de segmentation (espace linéaire) Pas de virtualisation 24 8 27/04/2010 Modes d’adressage -2 Adressage Inhérent Adressage immédiat Adressage direct Adressage étendu Adressage indexé Adressage relatif 25 Adressage Inhérent (ou implicite) Il n’y a pas d’adresse effective dans ce mode. L’instruction se suffit à elle-même N’est pas à proprement parler un mode d’adressage. Exemple d’instruction: ABA (ajoute A et B et stocke le résultat dans A) INCB (incrémentation de B) DEX (décrémentation de X) … 26 Adressage immédiat Adresse effective=adresse suivant l’adresse contenant le code de l’instruction par conséquent la donnée à manipuler suit immédiatement l’instruction. Donnée peut être sur 8 ou 16 bits Exemple: LDAA #$55 (chargement du registre 1 avec la valeur hexa 55) CST EQU $1234 LDX #CST LDD #7 (chargement du registre D avec la valeur 7) 27 9 27/04/2010 Adressage direct 1er « vrai » mode d’adressage Instruction suivie d’un octet non signé représentant l’adresse effective de la donnée à manipuler. Adresse codée sur 1 octet: de $00 à $FF 256 premiers octets de l’espace d’adressage Exemple: LDAA STAA CMPA LDD $01 $02 $25 $01 28 Adressage étendu Évolution de l’adressage direct permettant d’atteindre n’importe quelle adresse mémoire. Autorise un codage de l’adresse effective sur 2 octets: de $0000 à $FFFF Exemple: LDAA STAA CMPA LDD $0101 $0802 $2525 $0201 NB: Utiliser l’adressage direct quand c’est possible Certains assembleurs émettent des « warnings » sinon 29 Adressage indexé Souple et puissant Fait intervenir (au max) 2 éléments: Contenant des registres d’index (X et Y) Un déplacement (offset) 2 possibilités: Adressage indexé avec déplacement nul X ou Y contiennent l’adresse effective Exemple: LDD CMPA 0,X ,X (autre écriture) Adressage indexé avec déplacement non nul L’adresse effective est la somme du contenu du registre d’index et de l’octet non signé qui le précède (de $00 à $FF) Exemple: LDD ADDD 4, X $25,Y 30 10 27/04/2010 Adressage relatif Utilisé uniquement pour les instructions de saut et de branchement L’adresse est spécifiée sous forme d’un déplacement Ajouté à la valeur actuelle du PC PC pointe sur l’instruction suivante L’adresse effective= @instr + 2 + déplacement: Déplacement codé sur 1 octet signé De -128 à +127 Exemple: ICI EQU LDA STA BEQ LDY BRA LABAS * #$AA $1000 ICI 0,X LABAS 0028 0028 002a 002d 002f 0032 86 b7 27 1a 20 aa 10 00 f9 ? ee 00 f6 ? 31 Adressage «bit » Pas un mode d’adressage à proprement parler. Manipulation de bits individuels dans les registres. 2 sous modes: Mode positionnement de bit INSTRUCTION OPERANDE MASQUE Le « masque » indique les bits à manipuler (en immédiat), « operande » peut être en adressage direct ou indexé Ex: BCLR PORTB %00110001 (positionne à 0 les bits 0, 4 et 5 du portB). Mode test de bit et branchement INSTRUCTION OPERANDE MASQUE SAUT Ex: BRCLR TFLG1 $80 BOUCLE (test le bit 7 du registre TFLG1 et branche à BOUCLE si ce bit est nul 32 Le jeu d’instructions 1- Chargement et stockage Les instructions de l’UAL nécessitent généralement 2 opérandes dont une, au moins, se trouve dans un registre interne. Les instructions de chargement permettent de transférer des données de la mémoire vers les registres Les instructions de stockage permettent de faire l’inverse. 33 11 27/04/2010 Le jeu d’instructions 1- Chargement But: charger un registre avec une valeur Registres concernés: A, B (8 bits), D, X, Y, SP (16 bits) Instructions: ldaa, ldab, ldd, ldx, ldy, lds Modes d’adressage: Immédiat, direct, étendu, indexé. 34 Le jeu d’instructions 1- transfert entre registres Le 68HC11 possède un certain nombre d’instructions de transfert entre les registres. Instructions sans arguments codés sur 1 octet (adressage inhérent ou implicite) Les instructions tab: transfert du contenu de l’accumulateur A vers B tba: B vers A tap: transfert du registre A vers le registre de condition CCR tpa: CCR vers A tsx: transfert le contenu du pointeur de pile +1 vers le registre d’index X. 35 Le jeu d’instructions 1- transfert entre registres -2 tsy: transfère le contenu du pointeur de pile SP +1 dans le registre d'index Y. txs: transfère le contenu du registre d'index X -1 dans le pointeur de pile SP. tys: transfère le contenu du registre d'index Y-1 dans le pointeur de pile SP. xgdx: échange le contenu de D et de X. xgdy: échange le contenu de D et de Y. 36 12 27/04/2010 Le jeu d’instructions 1- stockage But: stocker en mémoire le contenu d’un registre Registres concernés: A, B (8 bits), D, X, Y, SP (16 bits) Instructions: staa, stab, std, stx, sty, sts Modes d’adressage: direct, étendu, indexé. 37 Le jeu d’instructions 2- Instructions de traitement Le traitement des données est effectué par l’UAL. Il s'agit d'opérations arithmétiques et logiques. Les instructions de traitement peuvent être classées selon différents critères. La classification qui a été choisie ici est la suivante : Opérations Opérations Opérations Opérations sur deux opérandes dont un en mémoire. sur deux opérandes entre registres. sur un seul opérande. diverses. 38 Le jeu d’instructions 2- Opération sur 2 opérandes (une en mémoire) Modèle de l’opération: R=fn(R, mem), ou R est un registre. Modes d’adressage possibles (pour l’opérande en mémoire): Immédiat, direct, étendu, indexé. Exemples: adda #20 cpy $02 subb #$FA anda 0, X (additionne le contenu A à la valeur décimale 20 et stocke dans A) (compare la valeur de Y avec le contenu de la mémoire à l’@ $02). Les indicateur N, V, Z et C sont mis à jour. ( soustrait de B la valeur héxa FA et stocke le résultat dans B) (effectue un ET bit à bit entre le contenu de A et le contenu de la mémoire à l’@ pointée par X) 39 13 27/04/2010 Le jeu d’instructions 2- Opération sur 2 opérandes (une en mémoire) Fonctions Opérations Addition sans retenue R=R+Mem instructions adda, addb, addd Addition avec retenue R=R+Mem+C adca, adcb Soustraction sans retenue R=R-Mem suba, subb, subd Soustraction avec retenue R=R-Mem-C sbca, sbcb Comparaison R-Mem cmpa, cmpb, cpd, cpx ET bit à bit R=R.Mem anda, andb OU bit à bit R=R+Mem oraa, orab OU exclusif bit à bit R=R⊕Mem eora, eorb Test bits R.Mem bita, bitb 40 Le jeu d’instructions 2- Opération sur 2 opérandes (dans des registres) Fonctions Opérations Instructions Addition A et B A=A+B aba Soustraction de B de A A=A-B sba Comparaison de A et de B A-B cba Multiplication A=A.B mul Addition des poids faibles de X avec B X=X[0,7]+B abx Addition des poids faible de Y avec B Y=Y[0,7]+B aby Division entière D/X X<quotient et D<Reste Idiv 41 Le jeu d’instructions 2- Instructions à un seul opérande Modèle de l’opération: R=fn(R) ou Mem=fn(Mem). Modes d’adressage possibles: Étendu Indexé Registres concernés: A, B et D et pour certaines instructions X, Y et SP. 42 14 27/04/2010 Le jeu d’instructions 2- Instructions à un seul opérande Fonctions Opérations Instructions Décalage logique ou arithmétique, gauche ou droite Décalage sans ou avec considération du bit de signe asla, aslb, asl, asld lsla, lslb, lsl, lsld, asra, asrb, asr, lsra, lsrb, lsr, lsrd Rotation gauche ou droite rola, rolb, rol, rora, rorb, ror Mise à zéro Mem=0 ou R=0 clra, clrb, clr Décrémentation Mem=Mem-1 ou R=R-1 deca, decb, dec, des, dex, dey Incrémentation Mem=Mem+1 ou R=R+1 inca, incb, inc, ins, inx, iny Négation Mem= 0-Mem ou R=0-R nega, negb, neg Complément à 1 Mem= $FF-Mem ou R=$FF-R coma, comb, com Comparaison à 0 Mem-0 ou R-0 tsta, tstb, tst 43 Le jeu d’instructions 3-Manipulations de bits En plus des fonctions logiques, 2 instructions peuvent modifier la valeur de certains bits d’une donnée. bset: Cette instruction permet de mettre a 1 les bits d'une donnée d correspondants aux bits à 1 d'un masque m. Elle supporte l'adressage direct sur 8 bits (limité aux adresse $00 a $FF) et indexé. Elle réalise la fonction d + m. Elle nécessite deux opérandes: l'adresse de la donnée et le masque (sur 8 bits). Syntaxe: bset adresse masque ou bset offset,X masque bclr: cette instruction permet de mettre à 0 les bits d'une donnée d correspondants aux bits a 1 d'un masque m. Comme l'instruction précédente, elle supporte l'adressage direct et indexé et nécessite deux opérandes. Elle réalise la fonction d.m(barre). Syntaxe: bclr adresse masque ou bclr offset,X masque 44 Le jeu d’instructions 4-La division 2 instructions pour la division: idiv (Division entière): réalise la division entière (nonsigné) sur 16 bits du contenu de D (numérateur) par le contenu de X (dénominateur). Le résultat de la division (quotient) est mis dans X et le reste dans D. fdif (Division fractionnaire): D doit être inférieur à X. Après l'opération, le résultat dans X est interprétable comme un réel inférieur à 1 codé avec 16 bits après la virgule Les 2 instructions utilisent un adressage implicite/inhérent 45 15 27/04/2010 Le jeu d’instructions 4-La division (exemples) idiv: Soit 320 le contenu de D (soit $0140) et soit 30 le contenu de X (soit $001E).Après idiv, X contiendra 10 (soit $000A) qui est le quotient de 320/30 et D contiendra la valeur 20 ($14) reste de la division entière (320=10x30+20) fdiv: Avec D=30 et X=40 après l'instruction fdiv, D contiendra la valeur 0 et X la valeur $C000 soit en binaire %1100 0000 0000 0000 qu'il faut interpréter comme un nombre en virgule fixe égal à 2-1 + 2-2 = 0.5 + 0.25 = 0.75. Cela correspond a la partie fractionnaire de la division de 30 par 40 (30/40=0.75). 46 Le jeu d’instructions 5.instructions de branchement codées sur deux octets et utilisent un mode d'adressage dit relatif. Condition Instruction Condition instruction C=1 bcs, blo C=0 bcc, bhs V=1 bvs V=0 bvc N=1 bmi N=0 bpl Z=1 beq Z=0 bne C+Z=1 bls C+Z=0 bhi N⊕V =1 blt N⊕V =0 bge Z+(N⊕V)=1 ble Z+(N⊕V)=0 bgt 1 bra 0 brn 47 16