Aller au contenu

Utiliser les PIC 16F et 18F/Exercices/Architecture du 16F84

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Architecture du 16F84
Image logo représentative de la faculté
Exercices no1
Leçon : Utiliser les PIC 16F et 18F
Chapitre du cours : Architecture du 16F84

Exercices de niveau 15.

Exo préc. :Sommaire
Exo suiv. :Arithmétique et assembleur
En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Architecture du 16F84
Utiliser les PIC 16F et 18F/Exercices/Architecture du 16F84
 », n'a pu être restituée correctement ci-dessus.




La partie exercice reprend la division de la partie cours. Ainsi, chaque cours aura une partie exercice qui aura un titre à peu près identique. Avant de vous lancer dans les exercices, il vous est donc fortement conseillé de lire la partie cours correspondante.

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.

adresse contenu Instruction (directive ici)
$00C
09 02 03 04 0A 0A 0B 05 09 1F 2E
CBLOCK 0x0C ; début de la zone variables
     w_temp :1      ; Zone de 1 byte 
     montableau : 8  ; zone de 8 byte
     mavariable :1 ; zone de 1 bytes     
 ENDC ; Fin de la zone

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 2 (données en hexadécimal)

[modifier | modifier le wikicode]

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 l'état (connaissance partielle : on ne connaît pas tout, mais c’est suffisant) suivant :

État du PIC16F84

1°) D'après le schéma donné ci-dessus, désassembler la partie utile du code.

2°) Exécuter ensuite les instructions que vous pouvez, et donner les états successifs.

Écrire un programme qui transfert la valeur qui est dans "w_temp" dans la variable "mavariable".