< Utiliser les PIC 16F et 18F < Exercices



Exercice 1

Modifier le premier exemple du « suivant le cas faire ... » pour que ce que l’on doive faire se trouve dans des sous-programmes. On rappelle ce programme donné dans la partie cours :

	CBLOCK 0x00    ; début de la zone variables en ACCESS RAM
		w_temp :1       ; Zone de 1 byte 
		status_temp : 1 ; zone de 1 byte 
		Choix : 1  ; je déclare ma variable 
	ENDC            ; Fin de la zone 
	...
;si Choix=0 faire le sous programme spgm0 si Choix=1 faire spgm1
	; Choix contient ici une valeur <=N
	movlw 0x0
	subwf Choix,w		;Choix - W -> W
	btfsc STATUS,Z		;Z=1 si = 0 et on saute
	goto spgm0
	movlw 0x1
	subwf Choix,w		;Choix - W -> W
	btfsc STATUS,Z		;Z=1 si = 0 et on saute
	goto spgm1
	...
	movlw 0xN
	subwf Choix,w		;Choix - W -> W
	btfsc STATUS,Z		;Z=1 si = 0 et on saute
	goto spgmN
	; erreur ici !!!
suite
	....

spgm0		;code ici
	goto suite
	....

Le fait que les choix se font sur une instruction complique un peu la situation.

Modifier le programme en utilisant une technique similaire aux tableaux en mémoire programme.

Exercice 2

Écrire un programme qui lit sans arrêt le PORTB pour le mettre dans Choix et qui suivant la valeur décimale (1, 2, 4, 8, 16, 32, 64, 128) appelle un des sous programme do, re, mi, fa, sol, la, si et do2. On ne vous demande pas de détailler les sous-programmes .

Exercice 3

Écrire un programme qui, suivant la valeur présente en PORTB soit fait la somme des cases d'un tableau de 4 cases, soit calcule la moyenne de ces cases, soit cherche le maximum du tableau.

Exercice 4 (18F)

On suppose qu'en PORTB se trouvent des valeurs positives (octets) provenant de l'extérieur du PIC (18FXXXX). Les détails sur la façon dont cela peut marcher ne nous intéressent pas ici. Faire un programme qui fait sans arrêt l'acquisition de 4 de ces valeurs, fait la somme et divise par 4 le résultat pour le ranger dans une variable moyenne.

Exercice 5

1) On suppose qu'en PORTB se trouvent des valeurs (octets) provenant de l'extérieur du PIC (16F84). Les détails sur la façon dont cela peut marcher ne nous intéressent pas ici. Faire un programme qui fait l'acquisition de 4 de ces valeurs et les stocke dans un tableau. Ensuite on calculera la somme de ces 4 cases divisée par 4 et le résultat sera rangé à l'adresse $14.

2) Modifier ce programme pour qu’il calcule le maximum des 4 valeurs du tableau et le range en mémoire à la suite du tableau.

3) Modifier ce programme pour que le passage d'un tableau de 4 cases à un tableau de 10 (ou autre) cases se fasse seulement par la changement d'une seule valeur dans votre programme.

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.