• Aucun résultat trouvé

Appui architectural de bas niveau pour les langages de haut niveau

Évaluation de l’unité

Activité 3 Appui architectural de bas niveau pour les langages de haut niveau

Introduction

La plupart des programmes passent par quatre étapes de la transformation : commence dans le code source stocké dans l’ordinateur et atteint le stade dans lequel ce code est exécuté sur la machine. La figure 24 illustre ces étapes de traduction, certains systèmes combinent ces étapes afin de rationaliser le processus.

Dans cette activité, nous allons voir les étapes de la traduction du langage de haut niveau à un langage de bas niveau et entrer dans le langage Assembleur.

Détails de l’activité

Le processus de traduction et de l’exécution d’un langage de haut niveau commence par un programme écrit dans un langage de haut niveau est compilé pour le programme en langage assembleur, et après l’opération, il est monté à travers un assembleur, un module objet en langage machine. L’étape suivante est effectuée par le lien - éditeur combine plusieurs modules avec les routines de la bibliothèque pour résoudre toutes les références. Enfin, le chargeur est chargé de placer le code machine dans les endroits appropriés de la mémoire, à exécuter par le processeur Figure 24.

http://amuller94.free.fr/BTSIG/Algo/Intro_fichiers/image012.jpg

Dans certains systèmes, certaines étapes sont ignorées ou combinées pour simplifier le processus. Les phases de la compilation d’un programme assembleur et illustré sur la figure 25 Cependant, le microcontrôleur ne comprend pas ces commandes écrites en mode texte. Ils doivent être traduits en langage binaire (en langage machine), et cela se fait par le programme assembleur (assembleur). La figure 25 représente ce scénario.

https://user.oc-static.com/files/264001_265000/264429.png

Programmer directement en langage machine est possible, mais il est beaucoup plus difficile que la programmation en assembleur.

En utilisant le langage assembleur, le programmeur n’écrit pas en langage machine, mais dans un langage textuel, ce qui facilite la construction des programmes. Bien qu’il soit plus facile que la programmation directe en langage machine, l’assembleur est encore l’un des moyens les plus “difficiles” à programmer, étant donné que c’est toujours un langage de programmation de «niveau inférieur».

Le fichier source Figure 25 (cette liste de commandes saisies par le programmeur) est constitué d’instructions (mnémoniques), des paramètres, des étiquettes, des commentaires et des directives, et peut être compris sont transformés en langage machine par un programme en assembleur.

Considérons chacune de ces composantes du programme.

Instruction: c’est le nom donné à une opération que le microcontrôleur peut effectuer. Par exemple, le microcontrôleur peut effectuer la somme de deux valeurs, on dit qu’il y a au moins une instruction d’addition.

Mnémonique: Une représentation textuelle d’une déclaration. Les instructions sont en fait des codes binaires, et doivent être compris par les programmeurs et devraient être représentés sous forme textuelle. Si les mnémoniques ne sont pas utilisées, nous aurions à programmer à l’aide des codes numériques assemblage difficiles à mémoriser.

Paramètres: c’est l’information manipulée par une instruction.

Directives: Ce sont des lignes qui déterminent comment le programme assembleur va fonctionner. Les directives ne créent pas d’effet direct sur le code binaire produit. Par exemple, la politique de liste détermine laquelle p = 16F877 microcontrôleur à utiliser.

Labels: Ce sont des noms donnés aux lignes de programme, et servent pour une instruction de branchement à déterminer le point où vous voulez aller dans le programme. Les étiquettes sont toujours alignées dans la colonne 0 (sans espace avant lui), tandis que les instructions doivent être écrites après une marge (en tout cas, après la colonne 0).

Les commentaires sont des passages de texte écrit après un signe de point-virgule (;). Ils sont utiles pour que nous puissions ajouter des petits rappels dans le programme, ce qui facilite la compréhension du programme et facilite son usage ultérieur. Les commentaires n’interférent pas dans la taille du programme binaire créé.

Autres termes importants:

Assembleur: Transforme un programme source dans un programme exécutable. Un exemple est MPASM, une partie de MPLAB, un outil de développement distribué par Microchip (microcontrôleurs PIC du fabricant).

Instructions

Parce qu’il est un microcontrôleur RISC, PIC offre un petit nombre d’instructions. Toutefois, nous pouvons encore diviser les instructions utilisées par la famille 16 de microcontrôleurs PIC en 6 groupes:

• La manipulation d’octets de mémoire d’instructions (B)

• Instruction de manipulation de bits de mémoire (b)

• écarts inconditionnels (Di)

• Condition de branchement (D)

• Instructions avec des valeurs constantes (K)

• Instructions de contrôle (G)

http://jl.and.free.fr/iut_licence/pic16F_1_wire_master_reset2011_fichiers/image043.gif

Instructions Paramètres

Description Type Cycles bits

d’état affectés Mnémoniques

ADDWF f, d Addition : W + F. B 1 C, DC, Z

ANDWF f, d E binaire (AND) entre W et F, bit par bit.

B 1 Z

CLRF f Effacer tous les bits de F. B 1 Z

CLRW Effacer tous les bits de W. B 1 Z

COMF f, d Complément de F (bits avec des valeurs inversées dans l’octet)

B 1 Z

DECF f, d Décrémentation de F B 1 Z

DECFSZ f, d Décrémente F et fait un saut de ligne si le résultat zéro

B,Dc 1 (2)

INCF f, d Incrémentation F B 1 Z INCFSZ f, d Incrémente F et fait un saut

de ligne si le résultat zéro

B,Dc 1 (2)

IORWF f, d OU inclusif (OR) de W avec F

B 1 Z

MOVF f, d Déplacer F (généralement utilisé pour déplacer F à W)

B 1 Z

MOVWF f Déplacer W à F B 1

NOP opération nulle. Rien à

exécuté

G 1

RLF f, d Pivote F gauche avec Carry Flag

B 1 C

RRF f, d Pivote F droite avec Carry Flag

ADDLW k Additionne une constante K à W

B 1 C,DC,Z

ANDLW k Et (and) constante logique avec W

B 1 Z

CALL k Fait un appel à un

sous-programme

Di 2

CLRWDT Efface la minuterie de chien de garde ( Watchdog Horloge )

G 1 ~TO,

~PD

GOTO k Allez. Le passage à un autre point du programme.

Di 2

IORLW k OU Inclusif (OR) avec une constante W

B 1 Z

MOVLW k Déplacer une constante pour W

B 1

RETFIE Renvoie une interruption Di 2

RETLW k Retourne à partir d’un sous-programme, le déplacement d’une constante W

B,Di 2

RETURN Retours à partir d’un sous-programme

Di 2

SLEEP Aller en mode veille G 1 ~TO,

~PD SUBLW k Soustrait une constante de

W

• 1ère colonne: instructions - Décrit les instructions utilisées par le microcontrôleur PIC16F877. Les instructions ont généralement des noms liés à leurs fonctions.

• 2e colonne: paramètres - Décrit les opérandes utilisés par l’instruction. Dans cette colonne apparaissent les lettres f, d, b, k.

Le (f) identifie que le paramètre doit être un emplacement de mémoire RAM interne (nous appellerons registres). Registraires seront expliqués bientôt et exprimé dans un tableau.

Le (d) identifie un paramètre cible, et peut être utile W ou F. W est le registre principal, et F est tout autre registraire.

Le (b) il est un paramètre d’identification d’un bit (0 à 7). Par exemple, la fonction BSF PORTD, 0 (b) 0 une valeur active, le bit le moins significatif (bit 0) du registre à PORTB.

Le (k) identifie le paramètre en question est une constante (étiquette ou valeur fixe). Par exemple, MOVLW 10, dans lequel la valeur de K est de 10, la constante déplace 10 vers le registre principal.

• 3e colonne : Description - Décrit la fonction des opérandes.

• 4ème colonne : Type - Définit le groupe où l’instruction convient. Voir la légende dans le texte ci-dessus la table.

• Colonne 5 - Cycles - Une instruction peut consommer 1 ou 2 cycles machine.

Chaque cycle de la machine, dans le cas des microcontrôleurs PIC16F8xx correspond à 4 cycles d’horloge. Par conséquent, si le cristal utilisé dans le microcontrôleur est 4MHz, 1MegaCycles se produisent par seconde, soit 1 million de cycles par seconde (utilise également jusqu’à 1mips - 1 million d’instructions par seconde). Certaines instructions, de sorte qu’il faudra 1/1000000 secondes (1 microseconde) pour être exécuté, et d’autres vont prendre deux millionièmes secondes (2 microsecondes). Certaines instructions (telles que les branches conditionnelles) peuvent prendre 1 ou 2 cycles en fonction de la condition évaluée par la déclaration.

• Colonne 6 - bit état affectée - Au départ, nous devons comprendre ce que BITS STATUS. En forme de résumé, sont des «indicateurs» existe dans la mémoire du microcontrôleur qui enregistrent des informations sur les opérations effectuées (Exemple: si la dernière opération a donné lieu à zéro ou non, s’il y avait dépassement de la valeur calculée, etc ...). Cette colonne a pour but de décrire ce que les bits d’état elles sont affectées par la déclaration. Pour en savoir plus sur ces bits d’état, pour trouver une bibliographie complémentaire.

Registres

Est le nom utilisé pour identifier un emplacement de la mémoire interne du microcontrôleur.

Pour le microcontrôleur PIC16F877, nous avons la capacité d’accès interne à 512 octets de mémoire. Chaque octet (8 bits) est un registre. Nous avons donc 512 registres. Cependant, certains de ces registres sont utilisés à des fins spécifiques, étant directement liés aux périphériques de microcontrôleur internes (tels que les convertisseurs AD, entrées et sorties numériques, configuration périphérique, etc ...), et l’autre de ces registres ne sont pas mis en œuvre physiquement (sont “trous” laissés pour de futures améliorations de conception de microcontrôleur).

D’autres registres sont appelés «registres généraux» ou «usage général des registres.” Ce sont des emplacements de mémoire qui peuvent être utilisés pour le stockage temporaire des valeurs (variables). Comme font partie de la mémoire vive de la mémoire du microcontrôleur, toutes les données stockées dans les registres sont volatils, à savoir qu’ils sont perdus lorsque vous éteignez le même.

Inscrite dans le tableau 2 enregistre les fichiers PIC16F877

Source : Tableau retrait de la fiche PIC16F877 microcontrôleur Après l’activité de lecture de répondre aux questions ci-dessous :

1. Notant le segment de programme ci-dessous et dans le tableau 1, mettre ce que signifie chaque ligne ?

2.

1 volta

2 btfss PORTA,1

3 goto deslig

4 ligado

5 movlw 0x0F

6 movwf PORTD

7 goto volta

8 deslig

9 goto volta

10 movlw 0xAA

11 movwf PORTD

12 goto volta

Conclusion

Dans cette activité, nous avons vu les phases de la mise en œuvre d’un programme écrit dans un langage de haut niveau et l’assembleur. Nous avons également vu les avantages et les inconvénients du programme vers le bas et a conclu que le principal avantage de la programmation dans le faible niveau est en mesure d’optimiser le code pour tirer le meilleur parti des caractéristiques particulières du matériel.

Le principal inconvénient est la grande disproportion entre la complexité du jeu d’instructions et qu’un programme assembleur se compose d’instructions mnémoniques, de paramètres, de directives, d’étiquettes, de commentaires.

Évaluation

Ce contenu sera évalué dans l’évaluation sommative de l’unité 3 et aura le poids de 5%.

RESUME DE L’UNITE

La mise en œuvre d’un langage de haut niveau commence par un programme écrit en haut niveau et doit être compilé pour l’assemblage, et après qu’il est assemblé par un assembleur, un module d’objet en langage machine. L’étape suivante est effectuée par le lien - éditeur combine plusieurs modules avec les routines de la bibliothèque pour résoudre toutes les références. Enfin, le chargeur est responsable de placer le code de la machine dans les emplacements de mémoire appropriés.

La compilation d’un programme assembleur traite en très peu d’étapes.

Le principal avantage de la programmation dans un langage de bas niveau est en mesure d’optimiser le code pour tirer le meilleur parti des caractéristiques particulières du matériel.

Le principal inconvénient d’un langage de bas niveau est la grande disproportion entre la complexité du jeu d’instructions.

Évaluation de l’unité

Résolvez l’exercice en utilisant PIC

Pour chacun des exercices ci-dessous, faire un nouveau programme et commenter toutes les lignes.

Utilisation de GOTO

1. Écrire sur le bit B1 ce qui est dans le bit C1 2. Écrire sur le Bit B4 ce qui est dans le bit B0 3. Écrire sur le bit C3 ce qui est dans le bit A2 4. Écrire sur le bit A4 ce qui est dans le bit A5

5. Placez sur la sortie B0 le résultat de l’opération ET logique entre A2 et B5 6. Placez sur la sortie B1 le résultat de l’opération OU logique entre A2 et B5

7. Placer sur la sortie B2 le résultat de l’opération logique OU exclusif entre A2 et B5 8. Placez sur la sortie B3 et B4 le résultat d’une opération logique NON A2, B5

Utilisation CALL

9. Convertir les exercices 5-8 pour les fonctions et utiliser le bit C0 et C1 pour choisir l’opération désirée

Utilisation des pages

10. Utilisez le programme d’exercice 9 et placer chacune des opérations dans les différentes pages de mémoire.

Compteurs

11. Mettre en place un programme qui simule un compteur. Le bit A0 est l’horloge et le compteur de sortie est affiché sur la porte C

12. Ajoutez au programme précédent la possibilité de réinitialiser par le bit A1 et utiliser le bit de A2 pour indiquer si le nombre augmente ou diminue.

13. Ajouter au programme précédent, la possibilité de bits de charge à l’aide A3, qui commence le compte avec ce qui est présent sur le port B.

Utilisation de Timers

14. Utilisez le dessus et au lieu d’utiliser le bit horloge A0 pour le programme, utilisez le résultat de la Timer0

Utilisez des Interruptions

15. Tournez le programme précédent en utilisant la possibilité d’interrompre le Timer0

16. Améliorer le programme précédent pour assurer que la charge et de réinitialisation est asynchrone et minimiser le temps au sein de la routine d’interruption.

L’utilisation de valeurs analogiques

17. Placer la porte valeur analogique A0 porte B.

18. Placer la porte C, la valeur analogique de la différence entre le port A0 et A1

En utilisant des algorithmes

19. Faire un programme qui exécute l’opération de multiplication. La valeur présente à la porte A multiplié par B est placé sur la porte C

20. Faire un programme qui effectue l’opération de l’ensemble de la division. La valeur actuelle sur le port B divisé par A est placée sur la porte C.

21. Utilisation du programme précédent, présent dans le port C le reste de la même division entière.

Directives

1. Les questions doivent être traitées individuellement.

2. Toutes les réponses doivent être placées dans un fichier texte et envoyé à l’instructeur du cours par e -mail.

Système de notation

Cette évaluation avis a un poids de 5% de la note finale.

Lectures et autres ressources

Les lectures et autres ressources de cette unité se trouvent au niveau des lectures et autres ressources du cours.

Unité 4 : Interfaçage et stratégies

Documents relatifs