Le microcontroleur 851 LE MICROCONTROLEUR 851 ------------------------------------------------ Le 851 est un microcontroleur 8 bits c'est à dire un microprocesseur associé dans un même boîtier avec tous les éléments nécessaires au pilotage d'un système; CPU, RAM, ROM, borniers d'entrée sortie, timers, circuits pour liaison série. Il existe en 3 versions essentielles : - Le 851 proprement dit avec ROM interne, inutilisable pour de petites séries. Le 8751 identique au précédent mais avec PROM programmable et effaçable UV Le 831 sans ROM interne Le boîtier 4 broches comprend: - 32 broches constituant 4 ports de 8 bits P P1 P3 programmables en entrée ou sortie. Les 2 bornes d'alim et 5v - 2 bornes pour le quartz (12 Mhz typiquement ) -3 bornes essentielles dont le rôle sera précisé plus loin EA/VPP et /Prog -1 RESET +5V P1. P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST RXD P3. TXD P3.1 INT P3.2 INT1 P3.3 T P3.4 T1 P3.5 WR P3.6 RD P3.7 XTAL2 XTAL1 VSS 1 4 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 851 32 1 831 31 11 3 12 29 13 28 14 27 15 26 16 25 17 24 18 19 2 21 22 23 VCC P. P.1 P.2 P.3 P.4 P.5 P.6 P.7.7.6.5.4.3.2.1. AD AD1 AD2 AD3 AD4 AD5 AD6 AD7 EA / Vpp /prog A15 A14 A13 A12 A11 A1 A9 A8 Gnd RXD réception de l'uart interne TXD Emission de l'uart Interne INTO Interruption Active au niveau bas INT1 Interruption 1 T Entrée de commande du Timer T1 Entrée de commande du Timer 1 WR Signal d'écriture dans la RAM externe RD Signal de lecture dans la RAM externe Le 851 peut adresser : - 64 ko de RAM où sont stockées essentiellement des données auxquels il faut ajouter 64 ko de ROM contenant le programme. -Il contient en plus 2 Timers 16 bits et un UART pour transmission série. --------------------------------------------------------- 1 ----------------------------------------------------------
Le microcontroleur 851 LES SIGNAUX SUR LE BUS Le signal de l oscillateur interne est divisé par 12.Chaque cycle machine dure 12 périodes d horloge et est divisé en 6 périodes S1 à S6, chacune d elle comprenant deux phases d horloge P1 et (Figure ci contre ). Une instruction faisant appel à une mémoire interne dure un cycle machine soit 1µS pour une horloge à 12Mhz.Dans ce cas les signaux sur le bus ont la chronologie représentée ci dessous. P1 P1 P1 P1 P1 P1 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 Un cycle machine S1 S2 S3 S4 S5 S6 PCH A8 A15 PCH A8 A15 PCH A8 A15 PCH A8 A15 L octet bas de l adresse est P PCL PCL PCL PCL présentée sur le port P entre Code Code Code S1 et S2 pour la saisie du premier octet du code machine puis entre S4 et S5 pour la saisie du second octet du code machine s il existe.la lecture du code en ROM est effectuée grace à l activation de en S3 ainsi qu en S6 L utilisateur à rarement besoin de connaître exactement ces signaux sauf pour un dépannage èventuel à l oscilloscope ou pour analyser finement le déroulement des interruptions. --------------------------------------------------------- 2 ----------------------------------------------------------
Le microcontroleur 851 ORGANISATION DU PLAN MEMOIRE ROM Les 4 premiers ko de ROM peuvent être internes au boîtier (851 8751 ) ou externes. La broche EA permet de choisir l'option: Si EA= la mémoire interne,si elle existe,est ignorée. A la mise sous tension le µp lit le programme à partir de dans la ROM externe. ( Un 851 dont la ROM interne est programmée,récupéré sur un montage peut être utilisé comme un 831 en mettant la broche EA au niveau bas ) Si EA=1 le début de programme est lu dans la ROM interne. Au delà de l'adresse FH le µp se commute automatiquement sur la ROM externe. Le signal de lecture pour les ROM externes est fourni par la broche Les données transitent par le port P qui est réservé à cet usage et cesse d'être utilisable pour des entrées sortie. Par ce même port P transitent aussi les 8 bits de plus faible poids des adresses (A-A7) que l'on "latche" au vol grâce au signal actif au niveau haut (Comme dans le cas du 885). L'octet haut des adresses apparaît sur. Les adresses dans le plan mémoire sont toujours définies sur 16 bits, les 2 ports P et sont donc inutilisables comme entrée-sortie si le programme est en ROM externe (831). D La figure ci contre montre comment PO P Data une ROM extérieure doit être reliée au CPU. D7 - EA* A CPU Latch A7 ROM 851/31 Externe RAM Le µp peut adresser 64kO mais il existe de plus 256 octets internes Ces 256 cases internes sont considérablement privilégiées par le logiciel, le programmeur doit les utiliser au maximum, leur accès est facile et rapide. La majorité des instructions de l'assembleur concerne ces octets internes, les instructions arithmétiques et logiques ne sont exécutables qu'entre eux. Les mémoires vives extérieures ne sont mises en jeu que par un nombre très limité d'instructions (MOVX), une instruction de saut et des déplacements.dans ce cas les signaux d'écriture WR et de lecture RD utilisent les fils 6 et 7 du bornier P3.Comme plus haut les données transitent sur P ainsi que l'octet bas de l adresse. Suivant le type d'adressage utilisé le port est réservé ou non pour l'octet haut.la figure suivante montre comment câbler une RAM dans le cas d'un adressage absolu sur 16 bits. Les adresses des cases mémoire internes sont toujours présentées sur 8 bits.il coexiste 256 octets ayant les mêmes adresses dans les RAM internes et externes, mais ils ne sont pas accessibles par les mêmes instructions. Les P3 WR CPU 851/31 P3.6 P3.7 instructions MOV concernent la RAM interne alors que les MOVX s'adressent aux RAM externes accessibles par les signaux RD et WR sur P3.6 et P3.7. * Voir texte /OE et /CS A8 A15 Liaison du CPU avec une ROM ou PROM externe PO P RD Liaison du CPU avec une RAM externe Latch D Data D7 /CS A A7 RAM Externe R/W A8 A15 /OE Adressage --------------------------------------------------------- 3 ----------------------------------------------------------
Le microcontroleur 851 La RAM interne est partagée en 2 parties distinctes: - 128 Octets de à 7FH - De à 1F (32 premiers octets) les cases mémoire sont organisées en 4 groupes (banque ) de 8 registres utilisés pour l'adressage. Dans chaque groupe (Banque) les 8 registres s'appellent R...R7. Par logiciel on pourra utiliser l'un de ces 4 groupes. Les 16 octets suivants constituent une zone laquelle le µp peut accèder bit à bit. Chaque bit a une adresse qui peut varier de pour le bit de plus faible poids de l'octet d'adresse 2h à 7F (Bit 7 de l'octet d'adresse 2FH ) Au delà de 3H se trouve une zone libre utilisable pour tout stockage temporaire, elle accueille en particulier la pile pointée par le "stack". Les 128 octets suivants de 8 à H constituent le SFR (Special Function Register) Y sont placés tous les registres internes du µp. Par exemple, les cases mémoire 8H 9H AH et BH constituent les latches associes aux ports P..P3. EH n'est pas autre chose que l'accumulateur. 65536= Interne RAM ext ROM ext 255 MOV MOVX MOVC SFR Banques 128 127 48 32 Adress Bit RD WR H ROM int 851 EA=1 Champ mémoire du 831 / 51 1H EA= d'état. A la position DH dans le SFR on trouve le registre d'état ou PSW qui contient les bits Contenu du PSW (DH) PSW.7 CY Retenue Carry PSW.6 AC Retenue intermédiaire PSW.5 F Utilisable pour usage général définissable par l'utilisateur PSW.4 RS1 Les 2 bits définissant la banque de registres active PSW.3 RS son numéro est RS1RS en binaire PSW.2 OV Dépassement lors d'un calcul PSW.1 Non utilisé PSW. P Bit de parité du contenu de l'accumulateur 1 si nombre de 1 impair --------------------------------------------------------- 4 ----------------------------------------------------------
Le microcontroleur 851 Le registre d état est modifié lors de l exécution de certaines instructions. Il est important de connaître lesquelles de façon à sauver si c est nécessaire ce PSW lors d un appel à sous programme. Ces informations sont groupées dans le tableau suivant : Instructions Cy OV AC Instructions Cy OV AC ADD X X X SETB 1 ADDC X X X CLR C SUBB X X X CPL C X MUL X ANL C,Bit X DIV X ANL C,/Bit X DA X ORL C,Bit X RRC X ORL C,/Bit X RLC X MOV C,Bit X CJNE X X X indique que le bit est positionné à 1 ou après exécution. Le contenu du SFR est détaillé dans la figure suivante. On notera que les cases de la première colonne sont les seules a être accessibles bit par bit. F8 F9 FA FB FC FD FE F (B) F7 E8 EF E(ACC) E7 D8 DF D (PSW) D7 C8 TL2 TH2 CF C C7 B8 (IP) BF B (P3) B7 A8 (IE) AF A () A7 98 (SCON) SBUF 9F 9 (P1) 97 88 (TCON) TMOD TL TL1 TH TH1 8F 8 (P) 81 (SP) DPL DPH 87 (PCON) Note: Le bit de la case 8H (128 1 ) a pour adresse bit 128 (soit 8H), 8.1 a pour adresse bit 81H etc.. le bit de 88H a donc comme adresse bit 88H et ainsi de suite. Ainsi le bit des cases du SFR adressables par bit à pour adresse bit le numéro de la case mémoire.par exemple ACC. a pour adresse bit EH Le tableau ci dessous indique le contenu des cases les plus importantes après un Reset. On notera en particulier la position du Stack Pointer immédiatement en dessus de la première banque, elle peut naturellement être modifiée.il faut noter cependant que la pile étant nécessairement située en mémoire interne à une taille maximale de 12 octets,( Si l on conserve les 8 octets de la banque il ne reste alors aucun autre octet disponible pour les données ) (jusqu à 248 pour un 852 qui possède 256 octets de RAM interne.) --------------------------------------------------------- 5 ----------------------------------------------------------
Le microcontroleur 851 Initialisation des cases du SFR Symbole Fonction Valeur initiale au chargement P Port SP Stack Pointer DPL Pointeur d'adresse octet bas DPH Pointeur d'adresse octet haut PCON Power control TCON TMOD TL TL1 TH TH1 P1 SCON SBUF IE IP P3 PSW ACC B Controle des compteurs timers Mode de fonctionnement des timers Chargement compteur Octet bas Chargement compteur 1 Octet bas Chargement compteur Octet Haut Chargement compteur 1 Octet Haut Port 1 Controle du port série Buffer associé au port série Port 2 Validation des interruptions Controle parité interruptions Port 3 Mot d'état Accumulateur Registre B pour multiplication 7 HMOS XXXXXXX NMOS XXX Indéterminé XX XXX Adresse Hexa 8H 81H 82H 83H 87H 88H 89H 8AH 8BH 8CH 8DH 9H 98H 99H AH A8H B8H BH DH EH FH --------------------------------------------------------- 6 ----------------------------------------------------------