36 0 162KB
GE2
Corrigé TD 3 Exercice 1
Le microcontrôleur étant alimenté par 5 V, nous allons essayer de dimensionner la résistances R1 dans les montages cidessous, selon les valeurs normalisées données au tableau suivant :
Microcontrôleur : Source de courant
Microcontrôleur : Absorbe le courant
Une Led verte ( = 565 nm à 10 mA, VD = 2.09 V) est montée sur RA2. Calculer la résistance R1 pour avoir un courant ne dépassant pas 4 mA.
U = 5-2.09 =R1.IE ➔ R1 = 2910/4 = 727,5 En serie E12 680 < R1 < 820 → 680 en serie E12 car r = 727-680= 47 et r = 820–727 = 93 En serie E24 750 < R1 < 820 → 750 en serie E24 car r = 820–727 = 93 et r = 750–727 = 23 Exercice 2 Soit un CAN de 8 bits de résolution. Quelle sera la sensibilité (en mV) de ce CAN, pour chacune des plages de tension : a ) 0 V à +2,5 V) s1 = V1/28=2.5 / 256 = 09,77 mV b ) -2,5 V à +2,5 V s2 = V2/28=5 / 256 = 19,53 mV Exercice 3 1. Avec PORTA = 23 et PORTB = 44, évaluer les expressions suivantes : ▪ PORTA &= PORTB ➔ PORTA = PORTA & PORTB
2310 = (0001 0111)2 4410 = (0010 1100)2 0001 0111 & 0010 1100 =============== 0000 0100 = 410 ➔ PORTA = 410 ➔ PORTB = 4410
▪ PORTA ^= PORTB ➔ PORTA = PORTA ^ PORTB 2310 = (0001 0111)2 4410 = (0010 1100)2 0001 0111 ^ 0010 1100 =============== 0011 1011 = 5910 ➔ PORTA = 5910 ➔ PORTB = 4410
1
▪ PORTA = PORTA | PORTB ➔ PORTA = PORTA ^ PORTB 2310 = (0001 0111)2 4410 = (0010 1100)2 0001 0111 Or 0010 1100 =============== 0011 1111 = 6310 ➔ PORTA = 6310 ➔ PORTB = 4410 2. Avec POARTA = 16 et PORTB = 37, évaluer les expressions suivantes :
PORTA = 1610 = (0001 0000)2 PORTB = 3710 = (0010 0101)2 ▪ PORTA = PORTA >> 1 (ou PORTA >>= 1) PORTA = 0 0001 0000 Après 1 décalage DROITE PORTA = 0000 1000 = 810 et C=0 ▪ PORTA = PORTA >> 2 (ou PORTA >>= 2) PORTA = 00 0001 0000 Après 2 décalages DROITE PORTA = 0000 0100 = 410 et C=0 ▪ PORTB = PORTB *2n.
Exercice 4 Écrire un programme pour mettre tous les bits du PORTB du PIC16F84 au niveau logique 1, puis à la logique 0, et répéter ce procédé dix fois avec des retards de ½ s entre les commutations. Nous supposons l'utilisation de l’instruction for pour créer une boucle qui répète les opérations requises dix fois. 1. Proposer la version standard du programme C. Mettre tous les bits = Forcer tous les bits Par contre si on dire LIRE l’état des bits
void main () { unsigned char j ; TRISB = 0 ; for (j = 0 ; j < 10 ; j++) { PORTB = 0xFF ; Delay_ms(500) ; PORTB = 0 ; Delay_ms(500) ; } }
➔ Broches en SORTIE ➔ Broches en ENTREE
//ou 0x00 // Répéter 10 fois ou (j=1 ; j