< Utiliser les PIC 16F et 18F < Exercices



Exercice 1

1°) Sur combien de bits est l'adresse de destination du GOTO ? À comparer avec les 1k d'adresse mémoire du 16F84.

2°) Le PIC 16F877 possède 8k de mémoire programme et la même architecture que le 16F84 (mêmes instructions). Comment peut-on réaliser un saut de la première adresse vers la dernière ?

3°) Assembler le programme du TD 2 utilisant un GOTO.

Exercice 2

1°) On cherche à additionner deux valeurs 8 bits égales à 255 (0xFF). Quel est le résultat de la somme? Ce résultat tient-il dans une variable 8 bits ?

2°) Écrire un programme qui additionne quatre valeurs valeurs 8 bits pour mettre le résultat dans deux variables 8 bits("somme_pdsfort" et "somme_pdsfaible"). On vous donne la structure de données associée :

	CBLOCK 0x00C ; début de la zone variables
		somme_pdsfort :1     ; Zone de 1 byte 
		somme_pdsfaible : 1 	; zone de 1 bytes 
		val1 :1  ; zone de 1 byte 1ere valeur
		val2 :1  ; zone de 1 byte 2eme valeur
		val3 :1  ; zone de 1 byte 3eme valeur
		val4 :1  ; zone de 1 byte 4eme valeur
	ENDC ; Fin de la zone

Exercice 3

Utiliser les opérations de décalage pour ajouter un calcul de la moyenne pour l'exercice 2.

Exercice 4

(extraits de l'exercice 2 du Devoir Surveillé de 2010)

Structure for ... (rappel de cours)

Si l’on sait combien de fois on exécute une boucle on peut utiliser la technique suivante :

Principe
       ;for (compteur=0;compteur<5;compteur++)       
       movlw 0x5            ; charger 5 dans w 
       movwf compteur       ; initialiser compteur 
boucle                      ; étiquette 
       ;******* action 5 fois ici ***********
       decfsz compteur , f  ; décrémenter compteur et tester valeur 
       goto boucle          ; si compteur pas 0, on boucle 
       ;****** sortie de la boucle ici ***********
Fin du principe

Question

Réaliser un programme qui vient chercher six fois des valeurs (8 bits) sur le PORTB et les additionne dans une variable "Somme" (8 bits). On vous demande de gérer la somme sur 8 bits seulement sans gérer la retenue.

Indication

	movf PORTB,W		; PORTB -> W

L'instruction ci-dessus lit un registre qui s’appelle PORTB pour mettre sa valeur dans l’accumulateur W.

Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.