Répondre 1:

La mémoire interne du 8051 est divisée en deux parties: une partie pour stocker le code assemblé (le jeu d'instructions) et l'autre pour conserver les données.

MOVC stockera vos données dans la mémoire de code.

MOV stockera vos données dans la mémoire de données.

MOVX stockera vos données dans une mémoire externe (étant donné que votre microcontrôleur est interfacé avec une mémoire externe)


Répondre 2:

MOVC charge l'accumulateur avec un octet de l'espace de code, la mémoire du programme.

Il existe deux formes de l'instruction MOVC.

MOVC A, @ A + PC

C'est probablement l'utilisation la plus courante. Le nombre de 8 bits dans A est ajouté au nombre de 16 bits dans le compteur de programme, et l'octet à cette adresse est copié dans A. C'est très pratique pour les tables de recherche qui sont assemblées en place après cette instruction. Par exemple,

INC A
MOVC A, @ A + PC
RET
DB '0', '1', '2', '3', '4'

Cela prend un nombre binaire 0..4 dans A et le remplace par ASCII 0..4 dans le tableau de la ligne 4. L'instruction initiale "inc" est nécessaire pour passer par-dessus l'instruction RET, sinon si A était 0x00, l'octet retourné serait l'opcode pour RET.

L'autre forme est

MOVC A, @ A + DPTR

Cela fonctionne exactement de la même manière qu'avec le compteur de programmes, sauf que DPTR fournit l'adresse de base 16 bits.

MOVX charge l'accumulateur avec un octet à partir de l'espace de données de la mémoire externe, ou inversement. Il existe également deux formes de cette instruction, et contrairement à l'instruction MOVC, elle peut transférer des données dans les deux sens.

MOVX ,

MOVX A, @ Ri charge l'accumulateur avec l'octet de mémoire de données externe adressé par le nombre de 8 bits dans Ri. «Ri» signifie un registre d'index, qui peut être R0 ou R1.

MOVX A, @ DPTR charge l'accumulateur avec un octet de mémoire de données externe adressé par le nombre 16 bits dans DPTR.

MOVX @ Ri, A et MOVX @ DPTR, A

...doexactlythesamethinginreverse.... do exactly the same thing in reverse.

L'instruction MOVX suppose que la mémoire externe est connectée d'une manière particulière et modifie les configurations de port. Vous ne devez pas utiliser une instruction MOVX à moins de bien comprendre la façon dont le 8051 est câblé en circuit.


Répondre 3:

tout d'abord, je voudrais dire que les deux ne sont que pour l'accès aux données. u ne peut pas utiliser les instructions en utilisant movc et movx.

dans movc "C" => signifie mémoire de code (sur puce ou intégré). la mémoire de code peut être utilisée pour stocker des données permanentes comme sept modèles de segment, un mot de passe ou des tables de recherche qui resteraient les mêmes tout au long du programme. Étant donné que ces données se trouvent dans la ROM, elles ne seront pas supprimées si l'alimentation est coupée. ces données peuvent être lues pendant l'exécution en utilisant l'instruction MOVC a, @ a + dptr. nous n'avons pas d'instructions pour écrire la mémoire du code pendant l'exécution. cela doit être noté.

dans MOVX => X signifie RAM externe qui peut être connectée via P0 et P2. il est accessible via les broches de commande WR et RD sur P3. le bus d'adresse recevra l'adresse de dptr. comme il s'agit de RAM, nous pouvons effectuer deux opérations sur la mémoire pendant l'exécution, c'est-à-dire la lecture et l'écriture.

pour write => movx @ dptr, a

pour lecture => movx a, @ dptr

TOUTES LES OPÉRATIONS SONT TOUJOURS W.R.T. CPU OU uC.

ces instructions appartiennent au mode d'adressage indirect d'index. par conséquent, tous les transferts sont effectués uniquement via l'accumulateur.

Si vous avez des questions, vous pouvez nous écrire sur teknowtasc.ent27@gmail.com.

Nous proposons également des formations industrielles sur les technologies embarquées.

pour plus de détails, vous pouvez visiter:

Notre page facebook: Teknowtasc

ou Vous pouvez vous abonner à notre chaîne sur youtube: TEKNOWTASC