• Aucun résultat trouvé

TD : PIC 16F84 (introduction)

N/A
N/A
Protected

Academic year: 2022

Partager "TD : PIC 16F84 (introduction)"

Copied!
13
0
0

Texte intégral

(1)

TD : PIC 16F84 (introduction)

Exercice 1 :

Dans un microcontrôleur PIC16F84A :

a) quel est l’élément qui sert à indiquer l’adresse de la prochaine instruction à exécuter ? b) où doit se situer le programme qui est exécuté à la mise sous tension?

c) quelle la durée d’un cycle (Tcy) pour exécuter une instruction si le PIC16F84A est piloté par un cristal de 4 MHz?

d) où doivent se situer les données utilisées par le programme?

e) quelle est la longueur d’une instruction en bits?

f) quelle est la longueur d’une donnée dans la mémoire programme?

Exercice 2 :

Expliquer le fonctionnement des instructions mov suivantes : 1. movlw k

2. movwf f 3. movf f,d

a. movf X,w b. movf X,f

Exercice 3 :

Expliquer le fonctionnement des instructions arithmétiques suivantes : 1. addlw k

2. addwf f,d

a. addwf X,w b. addwf X,f 3. sublw k 4. subwf f,d

a. subwf X,w b. subwf X,f 5. incf f,d

6. decf f,d

(2)

Exercice 4 :

1) Expliquer le fonctionnement des instructions de test sur bit suivantes : a) BTFSC f,b

b) BTFSS f,b c) DECFSZ f,d <

d) INCFSZ f,d

2) Expliquer le fonctionnement des instructions suivantes : a) GOTO k (GOTO étiquette)

b) CALL k et RETURN

3) Expliquer le fonctionnement des instructions suivantes : a) RLF f,d

b) RRF f,d c) SWAPF f,d

Exercice 5 :

1) Exécuter les instructions suivantes et donner les états successifs.

2) Exécuter les instructions suivantes et donner les états successifs.

(3)

Exercice 6 :

1) Le PORTA du schéma suivant est configuré en sortie, que doit être le contenu du registre TRISA ?

2) On désire réaliser à l’aide du PIC 16F84A un jeu de lumière qui permet de faire les séquences suivantes :

a) Donner le schéma électronique

b) comment doit-être configuré le port A ?et quel sera le contenu du registre TRISA ? c) donner la suite des données qu’il faut envoyer sur le port A pour réaliser le jeu de lumière désiré.

Exercice 7 :

Soit le montage suivant :

(visualiser les états des sorties avec des LED)

« :LED-Off :LED-ON »

(4)

On suppose que le montage réalise un compteur décimal de 0 à 9999 et que l’état du compteur est 1356.

a. comment doit-être configuré le port B ?et quel sera le contenu du registre TRISB ? b. pour afficher le 6 sur l’afficheur U, que doit-on avoir sur le port B ?

c. compléter le tableau suivant pour afficher le 5 sur l’afficheur D, le 3 sur l’afficheur C et le 1 sur l’afficheur M.

(5)

TD 2 : PIC 16F84

Exercice 1 :configuration des ports

(6)

Exercice 2 :génerateur d’un signal carré

Ecrivez un programme en assembleur pour génerrer un signal carré sur le portb0 (voir la figure ci-dessous).

Réaliser le sous programme de temporisation à base de deux boucle imbriquées et la duré de cette tempo est 250ms.

Exercice 3 : clignotement de deux leds

Titre du programme : PROG1

Ce programme fait clignoter un certain nombre de fois la LED branchée sur la sortie RB0 (bit 0 du PORTB), puis fait clignoter un certain autre nombre de fois la LED branchée sur la sortie RB1 (bit 1 du PORTB), et recommence le cycle indéfiniment.

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; DECLARATIONS DES VARIABLES +

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++

COMPT1 EQU 0X0C ; On met la variable COMPT1 à l’adresse RAM 0C.

COMPT2 EQU 0X0D ; On met la variable COMPT2 à l’adresse RAM 0D.

……… ………… ………… ; On met la variable N_FOIS à l’adresse RAM 0E.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; Programme principale +

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ORG 0005

……… STATUS, RP0 ; Accès à la BANK1 ………..…. ……….. ; PORTB en SORTIE ………. ……….. ; Retour à la BANK0

Maine1 MOVLW 2 ; On définit le nombre de cycles de la ……… N_FOIS ; première phase (ici : 2 clignotements) LED1 ………... PORTB, 0 ; LED éteinte car l’instruction

……… ……… ; Appelle le sous-programme (TEMPO).

BSF ……… ; LED allumée, car l’instruction

(7)

……….. ……… ; On appelle le sous-programme TEMPO ……… N_FOIS, 1 ; Décrémente le nombre de cycles et tester GOTO LED1 ; affectés à LED1, et si le compteur GOTO Maine2 ; n’est pas arrivé à 0, effectue un Nouveau cycle. Si par contre N_FOIS Est à 0, l’instruction « GOTO LED1 » Le programme saute à«Maine2 ».

MAIN2 MOVLW 5 ; On définit le nombre de cycles de la MOVWF N_FOIS ;deuxième phase (ici : 5 clignotements) LED2 ……….. ……….. ; LED éteinte car l’instruction

CALL TEMPO ; Appelle le sous-programme (TEMPO).

………….. ……….. ; LED allumée, car l’instruction CALL TEMPO ; On appelle à nouveau le TEMPO DECFSZ N_FOIS, 1 ; Décrémente le nombre de cycles GOTO LED2 ; affectés à LED2, et si le compteur GOTO MAIN1

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; SOUS-PROGRAMME de TEMPORISATION

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

TEMPO MOVLW 255 ; Charge COMPT2 (« grande boucle ») MOVWF ……… ;avec la valeur décimale 255.

DELAI2 MOVLW 255 ; Charge COMPT1 (« petite boucle ») MOVWF ……….. ;avec la valeur décimale 255.

DELAI1 ………….... COMPT1, 1 ; Décrémente COMPT1et - s’il n’est pas ……… DELAI1 ;à zéro - va à DELAI1

……… COMPT2, 1 ; Décrémente COMPT2, et s’il n’est pas ……… DELAI2 ;à zéro, va à DELAI2.

……… ; retour au programme principale.

END ; Fin du programme.

(8)

Exercice 4 :bac de dégraissage

Fonctionnement

:

Un chariot se déplace sur un rail et permet, en se positionnant au-dessus d'une cuve, de nettoyer des pièces contenues dans un panier en les trempant dans un bac de dégraissage.

Cycle détaillé :

Quand le chariot est en haut à gauche et que l'on appuie sur le bouton de départ du cycle (dcy), le chariot va au-dessus du bac de dégraissage.

Le panier descend alors dans ce bac où on le laisse 10 secondes.

Après cette attente, le panier remonte.

Après cela, le chariot va jusqu'à l'extrême droite où il sera déchargé.

Quand le déchargement est terminé, le système revient dans sa position de départ.

Remarque :

Le chargement et le déchargement du panier s'effectuent manuellement. Le contrôle du fait que le panier est déchargé sera donc validé par un bouton poussoir d.

1) Donner l’organnigramme de fonctionnement de ce système.

2) Ecrire le programme en assembleur : a) Donner la configuration des ports

b) Donner la configuration de TMR0 (on va utilisé les résistance pull up de portb) c) Donner le sous programme de temporisation àl’aide de TMR0

Capteur Description entrées

S1 Chariot à gauche PORTB0

S2 Charito au centre PORTB1

S3 Chariot à droite PORTB2

S4 Chariot en haut PORTB3

S5 Chariot en bas PORTB4

S6 Chariot chargé PORTB5

S7 Chariot vide PORTB6

(9)

Pré Actionneur description Sortie

KM1A Aller vers la droite PORTA0

KM1B Aller vers la gauche PORTA1

KM2A Monter le chariot PORTA2

KM2B Descentre le chariot PORTA3

(10)

1

TD 3: PIC 16F84

Exercice 1 :

 Titre du programme : PROG1

 Ce programme fait clignoter un certain nombre de fois la LED branchée sur la sortie RB0 (bit 0 du PORT B), puis fait clignoter un certain autre nombre de fois la LED branchée sur la sortie RB1 (bit 1 du Port B), et recommence le cycle indéfiniment.

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; DECLARATIONS DES VARIABLES +

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++

COMPT1 EQU 0X0C ; On met la variable COMPT1 à l’adresse RAM 0C.

COMPT2 EQU 0X0D ; On met la variable COMPT2 à l’adresse RAM 0D.

……… ………… ……… ; On met la variable N_FOIS à l’adresse RAM 0E.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; Programme principale +

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ORG 0005

……… STATUS, RP0 ; Accès à la BANK1 ………..…. ……….. ; PORTB en SORTIE ………. ……….. ; Retour à la BANK0

Maine1 MOVLW 2 ; On définit le nombre de cycles de la ……… N_FOIS ; première phase (ici : 2 clignotements) LED1 ………... PORTB, 0 ; LED éteinte car l’instruction

……… ……… ; Appelle le sous-programme (TEMPO).

BSF ……… ; LED allumée, car l’instruction

……….. ……… ; On appelle le sous-programme TEMPO ……… N_FOIS, 1 ; Décrémente le nombre de cycles et tester GOTO LED1 ; affectés à LED1, et si le compteur

GOTO Maine2 ; n’est pas arrivé à 0, effectue un Nouveau cycle. Si par contre N_FOIS Est à 0, l’instruction « GOTO LED1 »

(11)

2

Le programme saute à«Maine2 ».

MAIN2 MOVLW 5 ; On définit le nombre de cycles de la MOVWF N_FOIS ;deuxième phase (ici : 5 clignotements) LED2 ……….. ……….. ; LED éteinte car l’instruction

CALL TEMPO ; Appelle le sous-programme (TEMPO).

………….. ……….. ; LED allumée, car l’instruction CALL TEMPO ; On appelle à nouveau le TEMPO DECFSZ N_FOIS, 1 ; Décrémente le nombre de cycles GOTO LED2 ; affectés à LED2, et si le compteur GOTO MAIN1

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; SOUS-PROGRAMME de TEMPORISATION

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

TEMPO MOVLW 255 ; Charge COMPT2 (« grande boucle ») MOVWF ……… ;avec la valeur décimale 255.

DELAI2 MOVLW 255 ; Charge COMPT1 (« petite boucle ») MOVWF ……….. ;avec la valeur décimale 255.

DELAI1 ……… COMPT1, 1 ; Décrémente COMPT1et - s’il n’est pas ……… DELAI1 ;à zéro - va à DELAI1

……….. COMPT2, 1 ; Décrémente COMPT2, et s’il n’est pas ……… DELAI2 ;à zéro, va à DELAI2.

……… ; retour au programme principale.

END ; Fin du programme.

(12)

3

Exercice 2 :

 Titre du programme : PROG 2

 Ce programme fait clignoter une LED en utilisant les interruptions générées par le timer interne (TMR0).

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; DECLARATIONS +

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SAVE_W EQU 0X0C ;Déclaration de SAVE_STAT EQU 0X0D ;deux variables.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; VECTEURS +

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ORG 0000h ;Vecteur de Reset.

GOTO START

ORG ……… ;Vecteur d’interruption.

GOTO INT_VECT

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; INITIALISATIONS

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

START ORG 0005h

……….. ……… ; On passe en Page 1.

……… ………. ; PortB en sortie

MOVLW ………. ; On configure OPTION.

………. OPTION_REG .Le pré diviseur divise par 255.

…………... ……….. ;On revient en Page 0.

MOVLW ……… ;On configure INTCON.

……… INTCON ; - GIE (bit 7) à 1 ; - T0IE (bit 5) à 1

; - tous les autres bits à zéro.

CLRF TMR0 ; Timer à zéro.

CLRF PORTB ; Toutes LED éteintes.

LOOP GOTO LOOP ; Boucle introduite juste pour occuper

(13)

4

;le processeur, car le but du programme ;est d’attendre l’apparition du signal ;d’interruption.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; PROGRAMME d’INTERRUPTION

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INT_VECT MOVWF SAVE_W ;Phase de PUSH (store).

MOVF STATUS, W ;On sauve le Registre W MOVWF SAVE_STAT ;ainsi que le Registre STATUS.

BCF ………., ……… ;On met à zéro le flag ;T0IF qui passe à 1 à chaque ;débordement du TMR0 (bit 2).

BTFSC PORTB,0 GOTO LED_OFF

…………. PORTB,0 ;On allume la LED RB0.

GOTO FIN

LED_OFF …………. PORTB, 0 ; On éteint la LED RB0.

FIN MOVF SAVE_STAT, W ;Phase de POP (restore).

MOVWF STATUS ;On remet en place le MOVF SAVE_W, W ; Registre STATUS, ainsi ;que le Registre W.

……… ;Lorsqu’une interruption est générée, END ;le PIC met automatiquement à zéro le ;bit GIE du Registre INTCON pendant ;toute la durée d’exécution du ;sous-programme d’interruption

Références

Documents relatifs

 Deux nombres relatifs de signes contraires (ou différents) et de même distance à l'origine sont dits opposés.. Le nombre 5 est la distance à l'origine du nombre –5. III)

CHAP N11 Correction de la Fiche d’exercices : puissances d’un nombre relatif Ceinture blanchea.

l'interrupteur S s’ouvre pour assurer le blocage de la tension. La conversion commence, elle est réalisée en 12 T AD , à la fin, le bit GO_DONE repasse à 0, le drapeau ADIF passe à

Autrement dit : la machine doit choisir deux nombres aléatoires entiers entre 1 et 6, puis acher la somme des deux nombres

Donner le programme qui fait clignoter une LED branchée sur RA0 avec une temporisation voisine de 0.5s.. Son implantation physique commence à la position d’adresse absolue

Elles représentent 54%

De plus, l'engagement des élèves étant un facteur important de la réussite scolaire, cela nous amène à poser la question de recherche suivante : Quelles pratiques d'enseignement

1/2 Pour parcourir une même distance dans la savane africaine, l'éléphant fait 3 pas, la gazelle 15 pas, le singe 5 fois plus que la gazelle.. Le rhinocéros fait 2 fois plus de