Transcript Voir PPS
Le Micro-contrôleur 8051 Jelassi Khaled Microcontrôleur 1 Plan Général Organisation Générale Structure Générale de la mémoire Mémoire Programme Mémoire de Données Externe Jeu d'instructions Organisation matérielle Ports d'Entrées/Sorties Jelassi Khaled Microcontrôleur Compteurs/Timers Interface Série Les interruptions Norme RS232 Présentation carte XEVA Exemples 2 Organisation Générale Schéma Bloc Jelassi Khaled Microcontrôleur 3 Structure Générale de la mémoire Cartographie On appelle cartographie mémoire ou memory mapping l'organisation géographique de la mémoire Jelassi Khaled Microcontrôleur 4 Structure Générale de la mémoire Accès aux données Espaces adressables différents pour le programme et les données Jelassi Khaled Microcontrôleur 5 Structure Générale de la mémoire Accès aux données Cela permet un accès aux données en 8 bits plus rapide Cependant, des adresses d’accès 16 bits aux données peuvent être générés grâce au registre DPTR Jelassi Khaled Microcontrôleur 6 Structure Générale de la mémoire Mémoire Programme Elle constituée de ROM ou d’EPROM Taille maximale : 64kOctets Sur le 80C51 : les 4kOctets sont sur le chip En version romless toute la mémoire est externe dans ce cas, le signal de validation de la mémoire s’appelle PSEN (Program Store Enable) Jelassi Khaled Microcontrôleur 7 Structure Générale de la mémoire Mémoire de Données Les RAM, interne et externe, occupent des espaces différents de la mémoire programme Les 128 octets inférieurs (80C51) de RAM interne, sont sur le chip Jusqu’à 64kOctets de RAM externe peuvent être adressés Le CPU génère les signaux de lecture (RD) et d’écriture (WR) pour la gestion de la mémoire externe Jelassi Khaled Microcontrôleur 8 Structure Générale de la mémoire ! Particularité pour les systèmes de développement Sous certaines conditions, la RAM externe (mémoire de données externe) et la ROM externe (mémoire de programme externe) peuvent être combinées en appliquant RD et PSEN sur les entrées d'une fonction ET et en reliant sa sortie à l'entrée de lecture des mémoires RAM et ROM externes. Jelassi Khaled Microcontrôleur 9 Structure de la Mémoire Programme Vecteurs d'interruptions Après un RESET, le 80C51 commence son exécution à l'adresse 0000h Chaque interruption possède un emplacement fixe dans la mémoire programme Une interruption provoque un saut à cet emplacement qui contient une routine de service d'interruption Par exemple, l'interruption externe 0 est assignée à l'adresse 0003h Jelassi Khaled Microcontrôleur 10 Structure de la Mémoire Programme Vecteurs d'interruptions Chaque emplacement possède une taille de 8 octets. Si le programme est suffisamment court, il peut être contenu entièrement dans cette zone. Sinon, une instruction de saut sera utilisée Jelassi Khaled Microcontrôleur 11 Structure de la Mémoire Programme ROM interne et ROM externe Les 4kOctets inférieurs de la mémoire programme sont soit sur le chip soit à l'extérieur. Une sélection est faite en plaçant l'entrée EA (External Acces) à 1 (Vcc) ou à 0 (GND). Si EA = Vcc, la ROM interne est utilisée pour les adresses allant de 0000h à 0FFFh. Les versions sans ROM doivent avoir cette broche à 0 La sortie PSEN n'est active que pour la lecture de ROM externe (et non interne) Jelassi Khaled Microcontrôleur 12 Structure de la Mémoire Programme ROM externe 16 lignes d'entrées/sorties (Ports 0 et 2) sont utilisées pour les fonctions de bus : P0 : bus multiplexé données/adresses poids faibles le signal ALE (Adress Latch Enable) est à 1 pendant que P0 contient les poids faibles d'une adresse P2 : poids forts de l'adresse Jelassi Khaled Microcontrôleur 13 Structure de la Mémoire Programme ROM externe Les adresses en mémoire programme sont toujours de 16 bits même lorsqu'on utilise moins de 64kOctets. L'utilisation de ROM externe sacrifie 2 ports de 8 bits aux fonctions d'adressage Jelassi Khaled Microcontrôleur 14 Structure de la Mémoire de Données Externe RAM externe Le CPU génère RD et WR Le bus d'adresses, pour l'accès aux données peut être de 1 ou 2 octets : On peut utiliser un adressage sur 1 octet avec une ou plusieurs lignes d'E/S pour paginer la RAM 2 octets d'adresses peuvent être utilisés. Dans ce cas les poids forts sont sur P2 Jelassi Khaled Microcontrôleur 15 15 Structure de la Mémoire de Données Externe RAM externe Jelassi Khaled Microcontrôleur 16 Structure de la Mémoire de Données Interne L'espace mémoire interne est divisé en 3 blocs 128 octets inférieurs, 128 octets supérieurs et espace SFR Les adresses de la RAM interne sont toujours d'un octet espace adressable de 256 octets Cependant, il y a en réalité 256 + 128 octets Jelassi Khaled Microcontrôleur 17 Structure de la Mémoire de Données Interne RAM interne : Adressage en mode direct uniquement Une adresse dite "directe" supérieure à 7Fh permet d'accéder à un espace mémoire Une adresse dite "indirecte" supérieur à 7Fh permet d'accéder à un autre espace Adressage en mémoire mode direct ou indirect. Jelassi Khaled Microcontrôleur Adressage en mode indirect uniquement 18 Structure de la Mémoire de Données Interne Les 128 octets inférieurs Les 32 octets inférieurs sont groupés en 4 banques de 8 registres appelés R0 à R7. Les bits RS0 et RS1 du PSW fixent la banque Les 16 octets suivants contiennent un bloc d'espace mémoire adressable par bit. Le jeu d'instruction du 80C51 comporte de nombreuses instructions dites "single-bit" et les 128 bits de cette zone (16*8) sont adressables directement par ces instructions à des adresses allant de 00h à 7Fh Jelassi Khaled Microcontrôleur 19 Structure de la Mémoire de Données Interne SFR : Special Function Register Cette zone comporte : les verrous des ports d'E/S les timers les contrôleurs de périphériques etc. Zone adressable uniquement en mode direct 16 emplacements adressables par bit : ce sont ceux dont les adresses se terminent par 0h ou 8h Jelassi Khaled Microcontrôleur 20 Structure de la Mémoire de Données Interne PSW : Program Status Word Contient différents bits de statut reflétant l'état du CPU Il réside en mémoire SFR et contient : CY : bit de retenue. Utilisé dans les fonctions arithmétiques comme retenue et dans certaines fonctions booléennes comme 9ème bit d'accumulateur AC : retenue auxiliaire utilisée dans les opérations en BCD Jelassi Khaled Microcontrôleur 21 Structure de la Mémoire de Données Interne PSW : Program Status Word Il contient également : RS0 et RS1 : bits de sélection des banques de registres OV : indicateur de dépassement P : indicateur de parité. Il reflète la parité du nombre de 1 de l'accumulateur. Lorsque P = 1, il s'agit d'un nombre impair de 1 F0 : bit laissé libre au programmeur Jelassi Khaled Microcontrôleur 22 Le Jeu d'Instruction Modes d'adressage Adressage direct : L'opérande est spécifié par un champ d'adresse exprimé sur 8 bits dans l'instruction Seules la RAM interne et la mémoire SFR peuvent être adressées ainsi Par exemple : mov add mov Jelassi Khaled A,26h A,25h 27h,A : A = (26h) : A = A + (25h) : (27h) = A Microcontrôleur 25h : 12 26h : 64 27h : ? 23 Le Jeu d'Instruction Modes d'adressage Adressage Indirect : Dans ce mode, l'instruction spécifie un registre qui contient l'adresse de l'opérande. Les RAM internes et externes peuvent être adressées ainsi. Par exemple : mov mov inc add inc R1,#25h A,@R1 R1 A,@R1 R1 : : : : : mov @R1,A : (@R1) = A Jelassi Khaled R1 = 25h A = (@R1) R1 = R1 + 1 A = A + (@R1) R1 = R1 + 1 Microcontrôleur 25h : 12 26h : 64 27h : ? 24 Le Jeu d'Instruction Registres d'adresses Les registres d'adresses, pour l'adressage au format 8 bits, peuvent être R0 ou R1 de la banque sélectionnée ou le pointeur de pile SP Pour l'adressage 16 bits, seul le registre DPTR est employé Jelassi Khaled Microcontrôleur 25 Le Jeu d'Instruction Instructions de registres Les instructions utilisant les registres R0 à R7 comportent, dans leur code opératoire, 3 bits désignant le numéro du registre. Elles sont donc plus compactes que celles utilisant un adressage direct nécessitant un octet supplémentaire Jelassi Khaled Microcontrôleur 26 Le Jeu d'Instruction Adressage indexé On ne peut atteindre que la mémoire programme avec ce type d'adressage. Il est destiné à la lecture de tables un registre 16 bits (DPTR ou PC) pointe la base (le début) de la table et l'accumulateur contient l'indice dans cette table Jelassi Khaled Microcontrôleur 27 Le Jeu d'Instruction Adressage indexé L'adresse dans la table est donc constituée de l'addition de l'accumulateur au pointeur Un autre type d'adressage indexé est utilisé dans le cas du saut : la destination est calculée à partir de la somme du pointeur et de l'accumulateur. Jelassi Khaled Microcontrôleur 28 Le Jeu d'Instruction Adressage immédiat L'opérande est ici une constante. Par exemple : mov A,#100 : A = 100 add A,#25h : A = A + 25h anl A,#10110110b : A = A & 10110110b Jelassi Khaled Microcontrôleur 29 Le Jeu d'Instruction Instructions Arithmétiques Les durées correspondent à une horloge à 12Mhz Jelassi Khaled Microcontrôleur 30 Le Jeu d'Instruction Instructions Arithmétiques La mémoire RAM interne peut être incrémentée sans passer par l'accumulateur L'instruction d'incrément inc peut s'appliquer au registre 16 bits DPTR L'instruction mul AB multiplie A par B, le résultat de 16 bits est contenu dans B:A L'instruction div AB divise A par B, le quotient est dans A et le reste dans B L'instruction da A ajuste le résultat d'opération en code BCD (ce n'est pas une conversion) Jelassi Khaled Microcontrôleur 31 Le Jeu d'Instruction Instructions Arithmétiques : exemples add add add add A,#127 A,7FH A,R7 A,@R0 Jelassi Khaled : : : : Microcontrôleur A A A A = = = = A A A A + + + + 127 (7Fh) R7 (@R0) 32 Le Jeu d'Instruction Instructions Logiques Jelassi Khaled Microcontrôleur 33 Le Jeu d'Instruction Instructions Logiques Les opérations combinatoires (AND, OR, XOR et NOT) sont effectuées bit-à-bit Les opérations peuvent être appliquées à n'importe quel octet de RAM interne sans passer par l'accumulateur ce qui est important pour la commande des ports d'E/S De plus, lors d'interruptions, cela économise la sauvegarde de A sur la pile Jelassi Khaled Microcontrôleur 34 Le Jeu d'Instruction Instructions Logiques : exemples mov anl A,#45h A,#0EBh A = 0100 0101 : A = 45h : A = A & EBh & EBh = 1110 1011 = 0100 0001 mov xrl A,#7DH A,#0F0h A = 0111 1101 : A = 7Dh : A = A F0h 0F0h = 1111 0000 = 1000 1111 Jelassi Khaled Microcontrôleur 35 Le Jeu d'Instruction Instructions Logiques Rotations Droite Droite avec CY Gauche Gauche avec CY CY Echange poids forts/ports faibles de A Jelassi Khaled Microcontrôleur CY 36 Le Jeu d'Instruction Instructions Logiques : exemples mov A,#45h swap A : A = 45h : A = 54h mov rl rl : A = 7Dh = 0111 1100b : A = F8h = 1111 1000b : A = F1h = 1111 0001b A,#7DH A A Jelassi Khaled Microcontrôleur 37 Le Jeu d'Instruction Instructions Logiques : exemples Application à la conversion en BCD d’un nombre inférieur à 100 contenu dans A mov A,#16 mov B,#10 div AB swap A add A,B Jelassi Khaled : : : : : A = B = A/B A = A = 16 10 A = 1, B = 6 10h A + B = 16h Microcontrôleur 38 Le Jeu d'Instruction Transferts de données en RAM interne Jelassi Khaled Microcontrôleur 39 Le Jeu d'Instruction Transferts de données L ’opération mov <dest>,<src> permet d ’effectuer un transfert sans passer par l ’accumulateur Adressage direct avec la pile : push : incrémente SP puis copie un octet sur la pile pop : prend un octet sur la pile puis décrément la pile Jelassi Khaled Microcontrôleur 40 Le Jeu d'Instruction Transferts de données ! La pile est adressée par rapport à SP : c’est de l’indirect les 128 octets supérieurs, lorsqu’ils existent, sont accessibles Lorsque la limite de la RAM interne est dépassée, les valeurs « pushées » sont perdues et les valeurs « popées » sont indéterminées. Jelassi Khaled Microcontrôleur 41 Le Jeu d'Instruction Transferts de données Il existe une opération au format 16 bits pour l’initialisation du DPTR L’instruction XCH A,<byte> échange les contenus de A et de l’octet adressé XCHD est similaire mais n’échange que les quartets de poids faibles Jelassi Khaled Microcontrôleur 42 Le Jeu d'Instruction Transferts de données : exemples Décalage d'un nombre BCD de 2 digits vers la droite Jelassi Khaled Microcontrôleur 43 Le Jeu d'Instruction Transferts de données en RAM externe Seul l'adressage indirect est utilisé avec : soit 1 octet d'adresse : @R0 ou @R1 soit 2 octets d'adresse : @DPTR Dans le cas de 2 octets : monopolisation du port 2 ce qui n'est pas indispensable lorsque la RAM externe est petite Jelassi Khaled Microcontrôleur 44 Le Jeu d'Instruction Transferts de données en ROM Utilisation en lecture seule Le signal PSEN est activé et utilisé comme signal de lecture movc A,@A+DPTR : charge dans le contenu de l'adresse A+DPTR Jelassi Khaled Microcontrôleur 45 Le Jeu d'Instruction Transferts de données en ROM : exemple mov call A,debut_table table … Doit être > 0 table: movc A,@A+PC ret • La table est placée après l'instruction RET • Sa taille est de 255 octets au maximum Lecture d'une table Jelassi Khaled Microcontrôleur 46 46 Le Jeu d'Instruction Instructions Booléennes Jelassi Khaled Microcontrôleur 47 Le Jeu d'Instruction Instructions Booléennes Traitement d'un bit à la fois Zone de 128 bits en RAM interne et registres adressables par bit en zone SFR. Tous les ports sont adressables par bit Types d'instructions : 5 fonctions combinatoires : ET, OU, forçages à 0 et à 1, complément à 1 Transfert de bit Test de bits simple ou avec RAZ Jelassi Khaled Microcontrôleur 48 Le Jeu d'Instruction Instructions Booléennes : exemples un bit adressable dans mov C,flag la zone SFR mov P1.0,C Forçage d'un bit de port mov jnb cpl suite: C,bit1 bit2,suite C … bit1 bit2 C Réalisation d'un OU Exclusif Jelassi Khaled Microcontrôleur 49 Le Jeu d'Instruction Instructions Booléennes : sauts relatifs La destination du saut n'est pas une adresse mais un déplacement (offset) signé. Exprimé sur 1 octet, il est donc compris entre -128 et +127 Jelassi Khaled Microcontrôleur 50 Le Jeu d'Instruction Instructions de sauts Existe sous 3 formes : • SJMP, • LJMP, • AJMP Existe sous 2 formes : • LCALL, • ACALL Jelassi Khaled Microcontrôleur 51 Le Jeu d'Instruction Instructions de sauts SJMP : saut relatif. Le déplacement est compris entre -128 et +127 LJMP : saut absolu. Un adresse sur 16 bit est spécifiée AJMP : saut absolu dans le bloc courant. La taille d'un bloc est de 2kOctets. L'adresse est codée sur 11 bits (211 = 2k) et constitue les poids faibles de l'adresse 16 bits à atteindre JMP @A+DPTR : saut dont l'adresse est la somme de A et DPTR Jelassi Khaled Microcontrôleur 52 Le Jeu d'Instruction Instructions de sauts DPTR contient l'adresse de la table Équivalent à x2 Compris ici entre 0 et 4 Chaque ajmp est codé sur 2 octets Jelassi Khaled Microcontrôleur 53 Le Jeu d'Instruction Instructions de sauts : sous-programmes LCALL : adresse absolue sur 16 bits ACALL : adresse sur 11 bits La seule différence entre RET et RETI est que la seconde indique au 8051 que le traitement de l'interruption est terminé. Jelassi Khaled Microcontrôleur 54 Le Jeu d'Instruction Instructions de sauts relatifs Tous les sauts utilisent un déplacement compris entre -128 et +127 Bien qu'il n'existe pas de flag zéro, les instructions JZ et JNZ comparent A à zéro Jelassi Khaled Microcontrôleur 55 Le Jeu d'Instruction Instructions de sauts relatifs DJNZ : permet de réaliser une boucle de N passages : Jelassi Khaled Microcontrôleur 56 Le Jeu d'Instruction Instructions de sauts relatifs : exemples Décalage d'un nombre BCD de 1 digit vers la droite Jelassi Khaled Microcontrôleur 57 Organisation matérielle du 80C51 Jelassi Khaled Microcontrôleur 58 Organisation matérielle Registres à fonctions spéciales (SFR) Les adresses non-utilisées n'existent pas physiquement. Accumulateur : "A" lorsqu'il est utilisé de manière spécifique dans les instructions (DA A). On peut également l'adresser en mode direct en utilisant le nom de variable "ACC" Jelassi Khaled Microcontrôleur 59 Organisation matérielle Registres à fonctions spéciales (SFR) Registre B : utilisé uniquement dans les instructions de division et de multiplication PSW : Registre d'état SP : pointeur de pile (valeur initiale : 07h) DPTR : registre pointeur de 16 bits (DPH et DPL) Jelassi Khaled Microcontrôleur 60 Organisation matérielle Registres à fonctions spéciales (SFR) P0 à P3 sont les verrous (latches) correspondants aux ports 0 à 3 (8 bits chacun) Port en sortie : l'écriture dans le verrou d'un 1 ou d'un 0 place le port correspondant dans le même état Port en entrée : la valeur externe appliquée au port est lue dans le verrou Jelassi Khaled Microcontrôleur 61 Organisation matérielle Registres à fonctions spéciales (SFR) Port série : deux registres séparés permettent l'émission (transmit buffer) et la réception (receive buffer). SBUF : l'écriture dans ce registre transmet la valeur au buffer d'émission qui est alors prêt à l'envoi la lecture de ce registre réalise la lecture du buffer de réception Jelassi Khaled Microcontrôleur 62 Organisation matérielle Registres à fonctions spéciales (SFR) THL0/TL0 et THL/TL1 : paires de registres 8 bits constituant les registres 16 bits des compteurs/timers 0 et 1. IP, IE, TMOD, TCON, SCON, PCON : Registres de contrôle et d'état pour les interruptions, les compteurs/timers et le port série. Jelassi Khaled Microcontrôleur 63 Cycles Machine Un cycle machine = 6 états nommés S1 à S6 Durée d'un état : deux impulsions d'horloge un cycle machine = 12 impulsions d'horloge Jelassi Khaled Microcontrôleur 64 Cycles Machine En principe deux états de recherche (read) sont générés par cycle même si le second n'est pas nécessaire Jelassi Khaled Microcontrôleur 65 Ports d'Entrées/Sorties Structure 4 ports bidirectionnels constitués chacun : d'un verrou (latch) d'un driver de sortie d'un driver d'entrée Les drivers de sortie des ports 0 et 2 et le driver d'entrée du port 0 sont également utilisés pour la gestion de la mémoire externe. Dans ce cas, les poids faibles de l'adresse externe sont placés sur le port 0 et multiplexés temporellement avec l'octet de données. Le port 2 est utilisé pour les poids forts d'adresses 16 bits Jelassi Khaled Microcontrôleur 66 Ports d'Entrées/Sorties Structure Chaque bit du port 3, outre l'utilisation normale de port d'E/S, possède une autre fonction : Jelassi Khaled Microcontrôleur 67 Ports d'Entrées/Sorties Configurations des E/S Verrou correspondant au registre SFR Borne du port Inactif en mode port Bus interne Validation de l'écriture (signal interne) Jelassi Khaled Commutation entre mode port et mode bus En lecture, la valeur issue de l'entrée est placée sur le bus interne Microcontrôleur 68 Ports d'Entrées/Sorties Configurations des E/S Verrou correspondant au registre SFR Borne du port Bus interne Validation de l'écriture (signal interne) Multiplexage des adresses et des données En lecture, la valeur issue de l'entrée est placée sur le bus interne Jelassi Khaled Microcontrôleur 69 Ports d'Entrées/Sorties Configurations des E/S Les ports 1, 2 et 3 possèdent des résistances de rappel alors que le port 0 est de type drain ouvert Chaque ligne peut être placée en entrée ou en sortie indépendamment des autres Pour que le bit de port soit utilisé en entrée, un 1 doit être placé dans le latch qui bloque alors le transistor FET de sortie. Dans ce cas, la borne est placé au niveau 1 par la résistance de rappel et peut être forcée à 0 par le signal externe Jelassi Khaled Microcontrôleur 70 Ports d'Entrées/Sorties Configurations des E/S Le FET de polarisation à +Vcc du port 0 n'est pas actif pendant le fonctionnement normal du port L'écriture d'un 1 bloque le second FET : le port 0 est alors en haute-impédance P1, P2 et P3, lorsqu'ils sont placés en entrées, sont polarisés au niveau logique 1 alors que P0 est flottant. Après un RESET, un 1 est écrit dans tous les latches de port ce qui signifie qu'ils sont placés en entrée. Jelassi Khaled Microcontrôleur 71 Ports d'Entrées/Sorties Configurations des E/S Verrou correspondant au registre SFR Borne du port Bus interne Validation de l'écriture (signal interne) Jelassi Khaled Le Micro-contrôleur 8051 En lecture, la valeur issue de l'entrée est placée sur le bus interne Microcontrôleur 72 Ports d'Entrées/Sorties Configurations des E/S Verrou correspondant au registre SFR Borne du port Bus interne Fonctions alternatives : la sortie du latch doit être à 1 Validation de l'écriture (signal interne) En lecture, la valeur issue de l'entrée est placée sur le bus interne Jelassi Khaled Microcontrôleur 73 73 Ports d'Entrées/Sorties Ecriture dans un port L'écriture dans un port n'est effective qu'après l'état 1 du cycle machine suivant. Charges TTL LS : 4 pour les ports 1, 2 et 3 8 pour le port 0 Jelassi Khaled Microcontrôleur 74 Ports d'Entrées/Sorties Lecture d'un port Parmi les instructions qui lisent la valeur d'un port, certaines lisent directement l'état de la broche alors que d'autres lisent le contenu du latch. Ces dernières sont également celles qui peuvent modifier la valeur lue et réécrire dans le latch Instructions "Read-Modify-Write" Jelassi Khaled Microcontrôleur 75 Compteurs/Timers Deux compteurs/timers 16 bits : Timer 0 et Timer 1 Mode Timer : le registre interne est incrémenté à chaque cycle machine donc à 1/12 de la fréquence de l'oscillateur Mode compteur : le registre est incrémenté à chaque transition négative sur son entrée (T0 ou T1). La transition est prise en compte pendant l'état S5 du cycle machine. La valeur apparaît dans le registre pendant l'état S3 du cycle suivant. Puisqu'il faut 2 cycles machine pour prendre en compte une transition, cela signifie que la fréquence de travail maximale du compteur est 1/24 de la fréquence de l'oscillateur Jelassi Khaled Microcontrôleur 76 Compteurs/Timers Jelassi Khaled Microcontrôleur 77 Compteurs/Timers Jelassi Khaled Microcontrôleur 78 Compteurs/Timers Modes TMOD Fonctionnement en compteur ou en timer : précisé par le bit C/T du registre TMOD 4 modes de fonctionnement : M0/M1 Les modes 0, 1 et 2 sont identiques pour les deux compteurs/timers. Seul le mode 3 diffère. Jelassi Khaled Microcontrôleur 79 Compteurs/Timers Mode 0* TCON Compteur 8 bit + pré-diviseur par 32 Le registre timer fonctionne sur 13 bits Le passage de la valeur maximale à 0 place le flag d'interruption TF1 (TF0) à 1 L'entrée de comptage est validée pour TR1 (TR0) à 1 et GATE = 0 ou INT1 = 1 : ce mode existe pour assurer une compatibilité avec le timer du 8048, ancêtre du 8051 * Jelassi Khaled Microcontrôleur 80 Compteurs/Timers Mode 0 TCON 13 bits de comptage : TH1 sur 8bits TL1 sur les 5 bits de poids faibles. Les 3 bits de poids forts sont ignorés Le lancement du comptage par TR1 n'efface pas les registres TH1 et TL1 Jelassi Khaled Microcontrôleur 81 Compteurs/Timers Mode 0 Jelassi Khaled Microcontrôleur 82 Compteurs/Timers Mode 1 TCON Idem mode 0 mais sur 16 bits au lieu de 13. Mode 2 Compteur 8 bits (TL1) avec rechargement automatique en fin de décomptage C'est la valeur contenu dans TH1 qui est recopiée dans TL1 Jelassi Khaled Microcontrôleur 83 Compteurs/Timers Mode 2 Jelassi Khaled Microcontrôleur 84 Compteurs/Timers Mode 3 : Compteur/Timer 1 à l'arrêt (la valeur contenu dans TH1/TL1 est maintenue Mode 3 : Compteur/Timer 0 TH0 et TL0 sont deux compteurs distincts. TH0 : Timer 8 bits. Il utilise TR1 et TF1 du timer 1 TL0 : compteur ou timer 8 bits. Jelassi Khaled Microcontrôleur 85 Compteurs/Timers Mode 3 Jelassi Khaled Microcontrôleur 86 Interface Série "Full duplex" : émission et réception sont simultanées Registre SFR pour l'émission et la réception : SBUF Registre SFR pour la configuration : SCON 4 modes de fonctionnement RxD : réception, P3.0 TxD : émission, P3.1 Jelassi Khaled Microcontrôleur 87 Interface Série Jelassi Khaled Microcontrôleur 88 Interface Série Jelassi Khaled Microcontrôleur 89 Interface Série Mode 0 Les données entrent et sortent par RxD. L'horloge série est sortie sur TxD. Le format est de 8 bits La vitesse en Bauds est de 1/12 de la fréquence d'horloge du 8051 Il s'agit d'un mode de fonctionnement synchrone Jelassi Khaled Microcontrôleur 90 Interface Série Mode 0 Jelassi Khaled Microcontrôleur 91 91 Interface Série Mode 1 Données sur 8 bits encadrées d'un bit de START et un bit de STOP Fréquence : fixée par le timer 1 Emission sur TxD et réception sur RxD Le bit de poids le plus faible est transmis en premier. A la réception, le bit stop va vers le flag RB8 (SCON) Jelassi Khaled Microcontrôleur 92 Interface Série Mode 1 Le timer 1 est utilisé en mode 2 : ainsi il n'est pas nécessaire de le recharger Vitesse de transfert : SMOD Fosc Débit * 32 12 * (256 TH1) 2 Exemple : 9600 Bauds avec un quartz de 12Mhz et SMOD = 0 2 SMOD * Fosc TH 1 256 FDh 32 *12 * Débit Jelassi Khaled Microcontrôleur 93 Interface Série Vitesses de transfert Jelassi Khaled Microcontrôleur 94 Interface Série Mode 1 Jelassi Khaled Microcontrôleur 95 Interface Série Mode 2 Données sur 11 bits : 1 start, 8 données, 1 bit au choix (parité le plus souvent), 1 stop Le 9ème bit de données est TB8 à l'émission et RB8 à la réception L'émission est déclenchée par l'écriture dans SBUF La réception est déclenchée par lorsqu'apparaît un bit start à condition que REN = 1 Vitesse de transmission de 1/32 ou 1/64 de la fréquence de l'oscillateur du 8051 : SMOD Jelassi Khaled Microcontrôleur 96 Interface Série Mode 2 Jelassi Khaled Microcontrôleur 97 Interface Série Mode 3 Identique au mode 2 sauf en ce qui concerne la vitesse de transfert qui est réglable comme en mode 1 Jelassi Khaled Microcontrôleur 98 Interface Série Mode 3 Jelassi Khaled Microcontrôleur 99 Les interruptions 5 sources d'interruptions Activation sur état Activation sur front Interruptions Externes Interruptions Timers Interruptions Série Jelassi Khaled Microcontrôleur 100 Les interruptions Activation des interruptions Les sources d'interruptions externes INT0 et INT1 peuvent être activées sur état ou sur front Les bits IT0 et IT1 de TCON sélectionnent le type d'activation Les bits IE0 et IE1 de TCON sont positionnés à 1 lorsqu'une demande d'interruption arrive respectivement sur INT0 et INT1 Ces bits sont positionnés à 0 par le service de traitement de l'interruption lorsque l'activation est le front Jelassi Khaled Microcontrôleur 101 Les interruptions Interruptions Timers Les timers 0 et 1 positionnent à 1 les bits TF0 et TF1 de TCON lorsque que leur contenu passe de 111…11 à 000…00 Ces bits sont ensuite positionnés à 0 par le service de traitement de l'interruption Jelassi Khaled Microcontrôleur 102 Les interruptions Interruption Série L'interruption est générée par un OU logique entre RI et TI du registre SCON RI et TI sont positionnés par la réception ou l'émission d'une donnée Ces deux bits ne sont pas remis à 0 par le service d'interruption Jelassi Khaled Microcontrôleur 103 Les interruptions Validation des Interruptions Tous les bits d'interruptions peuvent être positionnés (à 1 ou à 0) par programme ce qui permet de générer ou de suspendre une demande d'interruption Chaque source d'interruption peut être autorisée ou interdite individuellement grâce au registre IE. L'ensemble des sources d'interruptions peuvent être interdites par le bit EA de IE Jelassi Khaled Microcontrôleur 104 Les interruptions Validation des Interruptions Jelassi Khaled Microcontrôleur 105 Les interruptions Priorité des Interruptions Deux niveaux de priorité peuvent être choisis pour chaque source d'interruption Si deux demandes d'interruptions apparaissent en même temps, c'est la priorité la plus haute qui sera traitée Si les deux demandes ont même priorité, alors une priorité interne est utilisée Jelassi Khaled Microcontrôleur 106 Les interruptions Priorité des Interruptions Jelassi Khaled Microcontrôleur 107 Les interruptions Priorité des Interruptions Le niveau de priorité interne n'est utilisé que pour le cas de demandes simultanées Les demandes d'interruptions sont prises en compte pendant l'état S5 du cycle machine. Jelassi Khaled Microcontrôleur 108 Les interruptions Réponse à une interruption Lorsqu'une interruption est prise en compte, c'est l'équivalent d'une instruction LCALL qui est générée sauf si: une interruption de priorité égale ou supérieure est en cours L'instruction en cours est RETI ou une écriture dans IE ou IP Le sous-programme doit se terminer par RETI Une instruction en cours se termine avant l'appel de la routine de traitement Jelassi Khaled Microcontrôleur 109 Les interruptions Vectorisation des Interruption Les adresses des routines de traitement d'interruptions sont fixées : Jelassi Khaled Microcontrôleur 110 Les interruptions Cas du RESET RST : borne d'entrée Les registres sont initialisés La RAM interne n'est pas effacée Le programme démarre à l'adresse 0000h Jelassi Khaled Microcontrôleur 111 Norme RS232 Valeurs des tensions 0 logique : tension allant de +8 à +40V 1 logique : tension allant de -8 à -40V Signaux généralement compris entre -12 et + 12V Liaison série au repos : on observe un 1 logique. Ceci permet de distinguer l'état de hors tension du récepteur de son état d'attente de réception. Jelassi Khaled Microcontrôleur 112 Norme RS232 Format Asynchrone : données envoyées de l'émetteur vers le récepteur sans négociation préalable. C'est au récepteur de se synchroniser sur l'émetteur. L'émetteur doit envoyer : un bit de START ses données(de 5 à 8 bits) un bit de parité optionnel 1 ou plusieurs bits de stop. Emetteur et récepteur doivent être configurés de la même manière Jelassi Khaled Microcontrôleur 113 Norme RS232 Nombre de fils Echange de données bidirectionnel entre 2 liaisons séries RS232C : 3 fils minimum . Un pour les données qui circulent dans un sens. Un pour les données qui circulent dans l'autre sens. Un pour la masse électrique des signaux. Jelassi Khaled Microcontrôleur 114 Norme RS232 Protocoles de communication Protocole XON XOFF : ne nécessite qu'une liaison sur 3 fils. La négociation entre l'émetteur et le récepteur pour échanger des données se fait par logiciel. Basé sur les caractères XON (ASCI 11H) et XOFF (ASCI 13H). Jelassi Khaled Microcontrôleur 115 Norme RS232 Protocole XON-XOFF Lorsque le buffer de réception est plein à 80%, le récepteur envoie le caractère XOFF. Lorsqu'il reçoit le caractère XOFF, l'émetteur doit immédiatement suspendre son émission. Lorsque le récepteur a vidé son buffer à 50%, il envoie un caractère XON à l'émetteur. A la réception de XON, l'émetteur peut reprendre son émission. Jelassi Khaled Microcontrôleur 116 Norme RS232 Protocole XON-XOFF Il est possible que l'émetteur ne reçoive pas ou perde les caractères XON/XOFF. Pour pallier à ces problèmes, lorsque l'émetteur n'a pas reçu de caractères depuis un certain temps, ce dernier peut reprendre de sa propre initiative le transfert. Si le récepteur n'est pas d'accord, ce dernier pourra toujours ré-émettre un XOFF. Jelassi Khaled Microcontrôleur 117 Norme RS232 Protocole Matériel Lorsque l'émetteur veut émettre ses données, il doit positionner la ligne RTS pour demander au récepteur s'il est prêt à accepter ces données. Le récepteur, lorsqu'il est prêt à recevoir les données, va envoyer le signal DSR de l'émetteur pour lui indiquer qu'il est prêt. Jelassi Khaled Microcontrôleur 118 Norme RS232 Brochage connecteur 9 points 1DCD 2RX 3TX 4DTR Détection de porteuse. Indique que la porteuse est présente Réception des signaux Transmission des données Terminal prêt. Sortie positionnée par l'émetteur pour signaler au récepteur qu'il est libre 5SG Masse Electrique 6DSR Emetteur prêt. Entrée indiquant qu'une donnée est prête 7RTS Demande de Transmission. Sortie indiquant au récepteur que l'émetteur est prêt à envoyer des données 8CTS Prêt à émettre. Entrée indiquant que le récepteur est prêt à recevoir des données 9RI Indicateur de sonnerie. Jelassi Khaled Microcontrôleur 119 Norme RS232 Branchement Protocole Matériel RX TX RTS CTS DSR DCD DTR SG Jelassi Khaled RX TX RTS CTS DSR DCD DTR SG Branchement Protocole Xon/Xoff RX TX RTS CTS DSR DCD DTR SG Microcontrôleur RX TX RTS CTS DSR DCD DTR SG 120 Liaison RS232: Protocole de communication Exemple d’une trame: Jelassi Khaled Microcontrôleur 121