Instructions
Les instructions sont codées sur 14 bits
Elles sont stockées dans la mémoire programme (mémoire flash non volatile); les mnémoniques et leur utilisation est donnée ici
Les 6 bits de poids fort contiennent le code de l'instruction (opcode)
Les 7 bits de poids faible contiennent l'adresse de la case mémoire vive (ce peut être un registre) contenant l'octet à traiter
Le bit 7 indique où sera placé le résultat de l'opération:
L'espace mémoire est divisé en pages (0, 1, 2 et 3) (Banks)
Avec le 16F84
La page adressée est déterminée par le bit 5 RP0 du registre STATUS
Il faut donc modifier la valeur de RP0 quand on passe de la page 0 à la page 1 et inversement
Au reset, RP0 est à 0
Instructions orientées octet | |||||||||||||
13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Opcode | 0/1 | Adresse du registre concerné |
Les 4bits de poids fort contiennent le code de l'instruction (opcode)
Les bits 7 8 et 9 déterminent le bit concerné par l'opération (bit 0 à bit 7)
Les 7 bits de poids faible contiennent l'adresse de la case mémoire vive (ce peut être un registre) contenant l'octet à traiter
L'espace mémoire est divisé en pages (0, 1, 2 et 3) (Banks)
Avec le 16F84
La page adressée est déterminée par le bit 5 RP0 du registre STATUS
Il faut donc modifier la valeur de RP0 quand on passe de la page 0 à la page 1 et inversement
Au reset, RP0 est à 0
Instructions orientées bit | |||||||||||||
13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Opcode | Bit concerné | Adresse du registre concerné |
Bit 9 | Bit 8 | Bit 7 | Bit concerné |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
Instructions littérales et de contrôle:
Les 6 bits de poids fort contiennent le code de l'instruction (opcode)
Les 8 bits de poids faible contiennent la valeur numérique ou littérale qui sera utilisée par l'instruction
Instructions littérales et de contrôle | |||||||||||||
13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Opcode | Valeur utilisée |
Les 3 bits de poids fort contiennent le code de l'instruction (opcode)
Les 11 bits de poids faible déterminent la destination, en fait seuls les 10 bits de poids faible suffisent pour adresser les 1k du 16F84; le bit 10 de poids fort doit donc rester à 0
Instructions CALL et GOTO | |||||||||||||
13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Opcode | Adresse de destination |
Les instructions s'exécutent en un seul cycle sauf celles qui entraînent un saut et qui nécessitent deux cycles
Un cycle correspond à 4 périodes d'horloge: avec un quartz 4 MHz, un cycle dure donc 1 us
Retour au sommaire
© 1999-2009 A. Ducros F5AD