Sunteți pe pagina 1din 14

Chapitre III : Logiciel du Contrôleur

III-1 Organisation et utilisation du jeu d’instructions

III-1-1 Les types d’instructions

Il existe 4 types d’instructions :

III-1-2 Les instructions « orientées octet »

Ce sont des instructions qui manipulent les données


sous forme d’octets. Elles sont codées de la manière
suivante :
Format des Instructions orientées
Octets ou Bytes
-6 bits pour l’instruction : logique, car comme il y
a 35 instructions, il faut 6 bits pour pouvoir les code
toutes

-1 bit de destination(d) pour indiquer si


résultat obtenu doit être conservé dans le regist
de travail de l’unité de calcul (W pour Work) o
sauvé dans l’opérande (F pour File).

- Reste 7 bits pour encoder l’opérande (File)


7 bits ne donnent pas accès à la mémoire RA
totale, donc voici ici l’explication de la division de
RAM en deux banques. Il s’agit en réalité des bi
RP0 et RP1 du registre STATUS.
Exemple d’instructions « orientées octets »

Exemple
Movf FSR ,W
; (FSR)  W

Movf PCLATH ,W
;(PCLATH)  W

movf EEDATA, W
; (EEDATA) )  W
Exemple

Soit PCLATH-temp: variable de


sauvegarde de PCLATH dans la
zone commune.

Movf PCLATH, W
; (PCLATH)  ( W)
Movwf PCLATH_temp
; (W) PCLATH_temp
..
..
..
Pour utiliser PCLATH, par exemple
dans un sous-progr.

Clrf PCLATH
« Les instructions « orientées bits »
Ce sont des instructions destinées à manipuler directement des
bits d’un registre particulier. Elles sont codées de la manière
suivante :
-4 bits pour l’instruction (dans l’espace resté libre par les
instructions précédentes)
-3 bits pour indiquer le numéro du bit à manipuler (bit 0 à 7
possible), et de nouveau :
-7 bits pour indiquer l’opérande.
Exemple d’instructions « orientées
bits »
Exemple

Bcf INTCON, INTF


; mettre à 0 le bit
; INTF du registre
; INTCON

Bcf STATUS, RP0


Exemple Instruction orientée bit

bsf STATUS, RP0

; RP0=0 et RP1=1,
; sélectionner bank1
Exemple

Btfsc INTCON, TOIE


; tester si
l’interruption
;TIMER0
; est autorisée ?

Btfss INTCON, T0IF


; oui, tester si
interrupt ;TIMER0 est
en cours
Les instructions générales et de contrôle
Ce sont les instructions qui manipulent des données qui sont codées
dans l’instruction directement. Nous verrons ceci plus en détail
lorsque nous parlerons des modes d’adressage. Elles sont codées de la
manière suivante :

- L’instruction est codée sur 6 bits


- Elle est suivie d’une valeur IMMEDIATE codée sur 8 bits (donc de 0 à
255).
Exemple d’instructions générales

Exemple
Movlw B’00100111’ ; w = ‘B00100111’= 0x27
Movlw addwrite ; charger adresse d'écriture
Les sauts et appels de sous-routines
Ce sont les instructions qui provoquent une rupture dans la
séquence de déroulement du programme. Elles sont codées
de la manière suivante :

- Les instructions sont codées sur 3 bits

- La destination codée sur 11 bits

Nous pouvons déjà en déduire que les sauts ne donnent


accès qu’à 2K de mémoire programme (211).
Exemple: PCLATH et les sauts directs
movlw 0x13 ; charger 0x13,
movwf PCLATH ; dans PCLATH
goto 0x112 ; sauter théoriquement en
; 0x112

Donner en binaire le contenu du PC


Voici ce que ça donne :
movlw 0x13 ; charger 0x13, soit B’10011’, donc b4=1,
; et b3=0

Remarques
Le jeu d’instructions du 16F876 est strictement identique à celui du 16F84, et, de ce
fait, présente les mêmes limitations.
Une de celle-ci, la plus gênante, est le nombre de bits qui accompagne les instructions
de saut, comme le « goto ». Rappelez-vous que les instructions de saut sont de la
forme:
Op-code + 11 bits de destination.

Or, les sauts sur 11 bits ne permettent « que » des sauts à l’intérieur d’une page de 2K
Mots. Notre processeur utilise un maximum de 8Kmots de programme, et nécessite
donc 2 bits supplémentaires pour accéder à l’intégralité de la mémoire programme. Le
schéma-bloc donnant bien une largeur de bus d’adressage de 13 bits.
Pour résumer, le saut s’effectuera à l’adresse donnée en argument complétée en poids

S-ar putea să vă placă și