TD PIC
March 14, 2017 | Author: nawzat | Category: N/A
Short Description
Download TD PIC...
Description
TD : les microcontrôleurs PIC
1ELT
Exercice 1 : L'instruction mov dans tous ses états L'instruction mov existe sous plusieurs formes que nous nous proposons d'examiner maintenant. a) adressage Immédiat ou littéral (Immediate) C'est l'adressage est le plus facile. L'opérande se trouve directement dans le programme derrière le code de l'instruction.
Sauf spécification contraire, d vaut toujours, au choix : - 0 la destination est W et le contenu de l’emplacement mémoire n’est pas modifié. - 1 la destination est f (la lettre f) : dans ce cas le résultat est stocké dans l’emplacement mémoire.
Exemple : ; 64 octets en access RAM CBLOCK 0x0C w_temp :1 ; Zone de 1 byte montableau : 8 ; zone de 8 bytes mavariable :1 ; zone de 1 byte ENDC ; Fin de la zone ... movf mavariable ,0 ;movf mavariable ,W (mavariable) -> W
Exercice 2 : 1°) Calculer la valeur de chacune des étiquettes "w_temp", "montableau" et "mavaraible", puis assembler l'instruction movf du programme ci-dessus. 2°) On donne le contenu de la RAM correspondant à la directive.
Lycée Alkhaouarizmy
1
A.Taouni
TD : les microcontrôleurs PIC
1ELT
Quelle sera la valeur de l'étiquette mavariable (en hexadécimal) ? Une instruction movf mavariable ,w ;(mavariable) -> W est exécutée, quelle valeur est chargée dans W (W, registre de travail 8 bits) ? 3°) Assemblez l'instruction de la question 2°) 4°) On ajoute l'instruction movwf PORTA ; W -> PORTA en fin de programme. Que fait cette instruction ? Assemblez cette instruction en vous servant de l'architecture mémoire pour trouver la valeur de PORTA.
Exercice 3 : La directive utilisée pour réserver la mémoire RAM dans cet exercice est CBLOCK 0x0C ; début de la zone variables en ACCESS RAM somme_pdsfort :1 ; Zone de 1 byte somme_pdsfaible : 1 ; zone de 1 bytes compteur :1 ; zone de 1 byte moyenne :1 ; le resultat sera ici ENDC ; Fin de la zone
On donne les états (connaissance partielle : on ne connaît pas tout, mais c'est suffisant) suivants :
Exercice 4 : Écrire un programme qui transfert la valeur qui est dans "w_temp" dans la variable "mavariable". Les instructions arithmétiques du 16F84 Nous présentons les instructions qui de près ou de loin, ont un rapport avec les calculs arithmétiques.
Lycée Alkhaouarizmy
2
A.Taouni
TD : les microcontrôleurs PIC
1ELT
Exercice 5 : La directive utilisée pour réserver la mémoire RAM dans cet exercice est CBLOCK 0x0C ; début de la zone variables en ACCESS RAM data1 :1 ; zone de 1 byte data2 :1 ; le resultat sera ici ENDC ; Fin de la zone
On donne l'état (connaissance partielle : on ne connaît pas tout, mais c'est suffisant) suivant :
1°) D'après le schéma donné ci-dessus, désassembler la partie utile du code à l'aide du tableau d'instructions précédents. 2°) Exécuter ensuite les instructions que vous pouvez et donner les états successifs. Plus loin avec l'assembleur Après un reset ou un démarrage le PIC (16F84) démarre en adresse 0. L'adresse 0x004 étant réservée aux interruptions, un programme aura une structure org 0x000 ; Adresse de départ après reset goto start ; Adresse 0: initialiser ... org 0x005 ; >=5 ici start END
start est une étiquette. Tout programme se termine par la directive END. Voici un programme complet qui utilise une instruction goto facile à expliquer et présentée dans le TD suivant.
Lycée Alkhaouarizmy
3
A.Taouni
TD : les microcontrôleurs PIC
1ELT
; 64 octets en access RAM CBLOCK 0x0C ; début de la zone variables sur 16F84 w_temp :1 ; Zone de 1 byte status_temp : 1 ; zone de 1 byte mavariable : 1 ; je déclare ma variable ENDC ; Fin de la zone org 0x000 ; Adresse de départ après reset goto start; Adresse 0: initialiser org 0x005 ; après l'interruption start clrf mavariable boucle incf mavariable,1 ;incf mavariable,f ->f goto boucle END On distingue dans ce programme deux étiquettes (start et boucle), une définition symbolique des variables, un commentaire et la définition de l'origine du programme. Exercice 6 : Écrire un programme qui additionne deux valeurs en RAM ("donnee1" et "donnee2") et met le résultat dans une variable 8 bits "somme". Les tests : Nous présentons quatre instructions qu'il ne faut pas confondre. Les deux premières positionnent un bit tandis que les deux dernières testent la valeur d'un bit.
Les instructions de tests fonctionnent toujours de la même manière sur les PICs. Si le test est négatif on exécute la ligne suivante, sinon on saute une ligne. Voici un exemple dans lequel on doit exécuter une seule instruction supplémentaire si le bit vaut 1 : btfsc STATUS,C ; tester si le bit C du registre STATUS vaut 0 bsf mavariable,2 ; non (C=0), alors bit 2 de mavariable mis à 1 xxxx ; la suite du programme est ici dans les 2 cas Que faire si les traitements nécessitent plusieurs instructions ? Et bien, on combine les sauts conditionnels avec les saut inconditionnels (par exemple goto). Structure si-alors-sinon Cette structure est réalisée par deux instructions élémentaires de base btfsc et btfss : Structure for (boucle avec compteur) Lycée Alkhaouarizmy
4
A.Taouni
TD : les microcontrôleurs PIC
1ELT
On utilise l'une des deux instructions suivantes :
Voici un exemple qui utilise un compteur de boucle : ; boucler trois fois movlw 3 ; charger 3 dans w movwf compteur ; initialiser compteur movlw 0x5 ; charger 5 dans w boucle ; étiquette addwf mavariable , 1 ; ajouter 5 à ma variable decfsz compteur , 1 ; décrémenter compteur et tester sa valeur goto boucle ; si compteur pas 0, on boucle movf mavariable , 0 ; on charge la valeur obtenue dans w Exercice 7 : Structure for Si l'on sait combien de fois on exécute une boucle on peut utiliser la technique suivante :
Technique utilisée par la suite ;for (compteur=0;compteur W
Lycée Alkhaouarizmy
5
A.Taouni
View more...
Comments