LES MODES D`ADRESSAGE Adressage Immédiat Exemple: MOV A
Transcription
LES MODES D`ADRESSAGE Adressage Immédiat Exemple: MOV A
Le microcontroleur 8051 --------------------------------------------------------------------------------------------------------------------- LES MODES D'ADRESSAGE Adressage Immédiat Ce n'est pas réellement un adressage mais le remplissage d'une case mémoire avec un octet. Cette opération est caractérisée par la présence du sigle # devant la valeur de l'octet à charger dans le texte assembleur . Exemple: De même MOV MOV MOV MOV A,#40H Chargement de l'octet 40H dans l'accumulateur A,#40 chargerait 40 décimal soit 28H A,#11001101B charge le mot binaire P1,#80H envoie 80H sur le port P1 Toute case mémoire interne désignée par son adresse peut être chargée : MOV 40H,#5AH 5AH est chargé dans la case 40H Adressage direct L'adresse n'a que 8 bits (soit 1 seul octet dans l'instruction ) Seule la RAM interne et le SFR peuvent être adressés de cette manière: Exemple: MOV A,45H chargement de l'accumulateur avec le contenu de la case d'adresse 45H (mémoire interne) ( MOV A,45H E5 45) MOV R0,30H A8 30 Chargement du registre R0 de la banque 0 (par défaut) avec le contenu de la case 30H MOV A,P1 E5 90 nous avons vu plus haut que le port 1 était matérialisé dans la case 90H de la RAM interne. L'assembleur comprend la dénomination P1 pour désigner le port 1 ANL A,78 55 4E (4EH=78) Une opération ET est effectuée entre le contenu de A et le contenu de la case mémoire 78 (4EH) (Interne) Il n'existe pas d'adressage direct dans la RAM extérieure, l’instruction : MOVX A,(0A568H) qui chargerait dans A le contenu de la case externe A568H n'existe pas. Adressage Indirect par registre L'instruction spécifie un registre qui contient l'adresse .Les mémoires internes et externes peuvent être mises en jeu par ce type d'adressage. Dans le cas d'un adressage sur 8 bits le registre d'index peut être l'un des 2 registres R0 ou R1 choisi dans la "banque" activée, L'adressage indirect est désigné dans l'assembleur par le signe at @ On notera que les cases du SFR ne sont pas accessibles par adressage indirect Exemple: MOV A,@R0 Charge l'accumulateur avec le contenu de la case dont l'adresse est le contenu du registre R0 de la banque active. MOV @R1,P1 Lecture du port P1 et transfert de son contenu dans la case mémoire dont l'adresse est le contenu du registre R1 de la banque active. ∩ désignant le NAND ANL A,@ R0 ((R0)) ∩ (A)⇒(A) L'adressage sur 16 bits ne concerne bien sûr que la mémoire extérieure. Le registre d'index est le Data Pointer Register DPTR localisé en 82H(DPL) et 83H(DPH) dans le SFR . Exemple: MOVX @DPTR,A Charge la mémoire dont l'adresse est le contenu du DPTR dans l'accumulateur .Le X du mnémonique indique qu'il s'agit d'une mémoire extérieure. --------------------------------------------------------- 7 ---------------------------------------------------------- Le microcontroleur 8051 --------------------------------------------------------------------------------------------------------------------Une page de 256 octets peur être atteinte en utilisant le registre R0 (ou R1 ) Exemple: MOVX @R1,A Les signaux RD ou WR ( suivant le cas, ici WR) sont créés par le CPU , l'adresse A0 A7 est envoyée sur P0. et mémorisée dans le latch d’adresses. Le port P2 n’est pas touché,s’il a été préalablement chargé il définit l’octet haut d’une mémoire connectée sur P2-P0 , donc une page de 256 octets. Exemple: Si (R0)= A0 MOV P2,43H MOVX A,@R0 Charge l'accumulateur avec le contenu de la case 43A0H La mémoire de programme (ROM) peut être lue par des instructions spéciales MOVC. Dans ce cas l'adresse lue est la somme du contenu initial de l'accumulateur et d'un registre de base qui est le DPTR ou le compteur programme lui même (PC). Exemple: Supposons que A contienne 23H et (DPTR)=8000H alors MOVC A,@A+DPTR charge dans A le contenu de l'adresse 8023H Exemple: MOVC A,@A+PC correspond aux opérations (PC) ⇐ (PC)+1 et (A)⇐ ((A)+(PC)) Adressage Implicite ou spécifique à un registre L'adressage est implicite si l'octet de programme contient lui même les informations d’adresse. Les instructions concernant les registres R0 … R7 sont de ce type, 3 bits sont réservès dans l'octet de code pour désigner le registre en cause. Exemple: Exemple: ADD A,R4 qui fait l'addition de (A) et du contenu du registre R4 de la bank activée a pour code machine 00101rrr ou rrr=100 numéro du registre soit dans ce cas : 00101100B= 2CH INC R3 incrément de R3 a… pour code 00001rrr soit ici 00001011 ou 0DH Des instructions spécifiques à un registre (par exemple RAZ de A ou complément de A) ne nécessitent pas d'adresse. Ces instructions tiennent le plus souvent sur un seul octet Exemple: DA A INC A Ajustement décimal pour l'addition en DCB Incrément de A Adressage de Bits Le 8051 possède un processeur de bits qui travaille sur des bits individuels. Pour ce processeur l'Accumulateur est C. Les bits de certains registres sont ainsi accessibles par une adresse sur 1 octet. D'abord les bits de la zone réservée en début de RAM interne (16 octets de 20H à 2FH ), ces 128 bits ont des adresses qui vont de 00 (Bit 0 de la case 20H) à 7FH (bit 7 de 2FH). Sont également accessibles de cette façon les bits des cases du SFR dont l'adresse en hexa. se termine par 0 ou 8, 80H 88H 90H 98H etc...Leur adresse est constituée par: 5 bits de fort poids qui sont les mêmes que ceux de l'adresse de la case 3 bits qui précisent la position du bit dans la case. Ainsi le bit 5 de la case 90H a pour adresse pour adresse 11001 110 soit 0CEH --------------------------------------------------------- 10010 101 soit 95H Le bit 6 de la case mémoire C8 a 8 ---------------------------------------------------------- Le microcontroleur 8051 --------------------------------------------------------------------------------------------------------------------L'un des opérandes est toujours le carry C Exemple: MOV C,45H MOV P1.3,C MOV RS0,C chargement de C avec le bit d'adresse 45H Le contenu de C est transféré dans le bit 3 du port P1 Le bit RS0 est désigné‚ par son nom de code Il n'y a pas d'adressage immédiat de bit pour lequel les seules valeurs seraient #0 ou #1 mais deux instructions de mise à 0 et 1 CLR mise à zéro SETB mise … 1 Ainsi qu'une instruction de complémentation CPL Exemple: CLR C CLR P3,6 SETB RS1 CPL P1.1 SETB P3.2 Mise du bit C à 0 RAZ du bit 6 de P3 Mise à 1 de RS1 Inversion du bit 1 de P1 Mise à 1 du bit 2 du port 3 --------------------------------------------------------- 9 ---------------------------------------------------------- Le microcontroleur 8051 --------------------------------------------------------------------------------------------------------------------- Symbole Position du bit Adresse du bit Signification CY AC F0 RS1 RS0 OV P PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.0 D7 D6 D5 D4 D3 D2 D0 Retenue Retenue intermédiaire Flag 0 Sélection de BANK MSB LSB Bit de dépassement Bit de parité ( 1 si nombre de bits impair) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SM0 SM1 SM2 REM TB8 RB8 TI RI EA ES ET1 EX1 ET0 EX0 RD WR T1 T0 INT1 INT0 TXD RXD PS PT1 PX1 PT0 PX0 TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0 IE.7 IE.4 IE.3 IE.2 IE.1 IE.0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 IP.4 IP.3 IP.2 IP.1 IP.0 8F 8E 8D 8C 8B 8A 89 88 9F 9E 9D 9C 9B 9A 99 98 AF AC AB AA A9 A8 B7 B6 B5 B4 B3 B2 B1 B0 BC BB BA B9 B8 Timer 1 bit de dépassement Timer 1 bit RUN Timer 0 bit de dépassement Timer 0 bit RUN Interruption 1 bit de controle Interruption 1 Flag de front Interruption 0 bit de controle Interruption 0 flag de front Mode série bit de controle 0 Mode série bit de controle 1 Mode série bit de controle 2 Bit de validation de réception Transmis 8 bits Reçu 8 bits Flag d'interruption transmission Flag d'interruption réception Validation toutes interruptions Validation interruption port série Validation interruption Timer 1 Validation interruption extérieure 1 Validation interruption Timer 0 Validation interruption extérieure 0 Signal de lecture dans RAM ext Signal d'écriture dans RAM ext Entrée / sortie Timer 1 Entrée / Sortie timer 0 Entrée interruption 1 (Active niveau 0) Entrée interruption 0 Port série emission Port série réception Priorité interruption port série Priorité interruption Timer 1 Priorité interruption extérieure 1 Priorité interruption Timer 0 Priorité interruption extérieure 0 Adresses et symbole des bits dans le SFR ---------------------------------------------------------- --------------------------------------------------------- 10 ----------------------------------------------------------