
Instructions spécifiques
Voici la description des instructions qui sont liées à l'architecture des processeurs 16 bits de MICROCHIP constituant la base du micro système
FORTH.
Ces processeurs disposent de 2 plans mémoires:
- la mémoire vive dont une partie est réservée au registres SFR,
- la mémoire FLASH contenant le programme.
La mémoire vive est adressée
par un pointeur de 16 bits avec une capacité maximal de 65536 octets ou
bien 32768 mots de 16 bits. Ceci justifie le choix d'une pile de
données au format 16 bits permettant de gérer directement les adresses
de la mémoire vive. Le pointeur HERE, dédié au déclaration des différentes variables FORTH, est donc au format 16 bits.
La mémoire FLASH est adressée
par un compteur de programme 24 bits pointant les instructions de 24
bits complétées par un octet à 0 pour un format de 32 bits. Le compteur
de programme s'incrémente de 2 pour pointer l'instruction suivante. La taille maximale de la zone de programme est donc de
8388608 instructions ou bien 25165824 octets. Il faut donc ajouter des
instructions FORTH spécifiques pour manipuler la mémoire FLASH: ++, --, MEM_PRGHERE, PRGHERE, >PRGHERE, PRG@, PRG!, et PRG,.
Des instructions supplémentaires permettent la gestion des interfaces TIMER1 et UART1 utilisés par le noyau FORTH.
Vous pouvez aussi ouvrir la page
consacrée à la description détaillée de toutes
les instructions du noyau FORTH. Pour celles qui sont crées
dans les différents logiciels applicatifs, les fichiers
comportent cette description dans leurs commentaires.
n1h,n1l,n2h,n2l ++ (n1+n2)h,(n1+n2)l
Adition au format 32 bits
n1h,n1l,n2h,n2l -- (n1-n2)h,(n1-n2)l
Soustraction au format 32 bits
- IDLE -
Désactivation de l'horloge du processeur
- SLEEP -
Désactivation de toutes les horloges
- ITRX1 adresse
Adresse d'un programme de remplacement pour l'interruption de réception de l'UART1 (2 mots de 16 bits)
- TELEC adresse
Adresse de la durée en milliseconde avant la fin d'un téléchargement
- CNTITP adresse
Adresse d'un compteur d'interruptions parasites initialisé à 0 au RESET
- MEM_PRGHERE adresse
Adresse de la valeur de "PRGHERE" (2 mots de 16 bits)
- PNT_PRG adresse
Adresse d'une variable de 32 bits contenant le pointeur du bloc de mémoire FLASH en cours de modification
- PRGHERE adrh,adrl
Dépose sur la pile l'adresse de compilation
adrh,adrl >PRGHERE -
Initialise l'adresse de compilation
adrh,adrl PRG@ nh,nl
Lecture d'un mot de 24 bits de la mémoire FLASH
nh,nl,adrh,adrl PRG! -
Ecriture d'un mot de 24 bits dans la mémoire FLASH
nh,nl PRG, -
Compilation d'un mot de 24 bits
L'adresse de compilation (PRGHERE) est incrémenté de 2
- TIMER1_UART1_INIT -
Initialisation du TIMER1 et de l'UART1