Vous êtes sur la page 1sur 2

Ingénieur de Conception en Télécommunications

INGC1
2019-2020
TD Architecture des calculateurs

1) Quelle est la différence entre les instructions PORTC = 0x00 et DDRC = 0x00 ?
2) Ecrire un code pour faire basculer toutes les lignes du port A toutes les 200ms.
3) Ecrire un code pour faire basculer les lignes 2 et 5 du port D toutes les 200ms.
4) Quelle différence existe t’il entre les instructions DDRK = 0x3A et DDRK |= 0x3A ?
Et entre PORTK |= 0x0F et PORTK = 0x0F ?
5) Que fait l’instruction PORTK &= ~0x0F ?
6) On exécute la séquence d’instructions suivante : DDRB = 0x2F ; PORTB |= 0x28 ; PORTB &= ~0x07 ;
Quel est alors le contenu du registre PINB ?
Est-il possible d’obtenir le résultat des 2 instructions PORTB |= 0x28 ; PORTB &= ~0x07 ; avec une seule
instruction ? laquelle ?
7) On considère un bouton poussoir BP relié à la ligne PB2 et une led verte reliée à la ligne PB5 (en logique
inverse); configurer convenablement les deux lignes PB2 et PB5. On souhaite que la led verte clignote
indéfiniment tant que le bouton poussoir BP est appuyé ; proposer une séquence d’instructions permettant
d’atteindre ce résultat.
8) On considère les deux fonctions suivantes où S1 et S4 sont des boutons poussoirs :
void version1(void) void version2(void)
{ {
if (((PINE & S4) != 0) && ((PINK & S1) == 0)) while (((PINE & S4) != 0) && ((PINK & S1) == 0))
{ {
PORTF |= led_bleue; PORTF |= led_bleue;
_delay_ms(500); _delay_ms(500);
PORTF &= ~led_bleue; PORTF &= ~led_bleue;
_delay_ms(500); _delay_ms(500);
} }

if (((PINE & S4) == 0) && ((PINK & S1) != 0)) while (((PINE & S4) == 0) && ((PINK & S1) != 0))
{ {
PORTF |= led_verte; PORTF |= led_verte;
_delay_ms(500); _delay_ms(500);
PORTF &= ~led_verte; PORTF &= ~led_verte;
_delay_ms(500); _delay_ms(500);
} }

if (((PINE & S4) == 0) && ((PINK & S1) == 0)) while (((PINE & S4) == 0) && ((PINK & S1) == 0))
{ {
PORTF |= led_blanche; PORTF |= led_blanche;
_delay_ms(500); _delay_ms(500);
PORTF &= ~led_blanche; PORTF &= ~led_blanche;
_delay_ms(500); _delay_ms(500);
} }
_delay_ms(5000); _delay_ms(5000);
} }
Que se passe t’il lors de l’exécution de ces 2 fonctions ?
9) On souhaite manipuler un groupe de 5 Leds {rouge(PF0), jaune(PF2), verte (PF5), blanche(PF6),
bleue(PF7)} en logique inverse à partir de 3 boutons (S1, S2 et S3) connectés sur une carte à base de
Atmega2560.
a. Déterminer les masques pour les 5 Leds et les 3 boutons.
b. Expliquer comment effectuer la configuration des 3 boutons S1(PK2), S2(PB4) et S3(PC6) avec
des résistances de tirage à Vcc (Rpullup).
c. Ecrire une fonction init_ports() qui effectue la configuration de l’Atmega2560 pour les 5 Leds.
d. Ecrire une fonction init_boutons() qui effectue la configuration de l’Atmega2560 pour les 3
boutons (sans interruption, avec résistances de tirage à Vcc).
Ingénieur de Conception en Télécommunications
INGC1
2019-2020
TD Architecture des calculateurs

e. Ecrire une fonction init_Leds() qui :


i. Allume toutes les 5 Leds et les garde ainsi pendant 5s.
ii. Après ces 5 secondes, éteint chaque seconde dans l’ordre la led rouge, la Led jaune, la
Led verte, la Led blanche et enfin la Led bleue.
f. Ecrire une fonction groupe_Leds() qui :
i. A chaque appui du bouton S1 (le bouton ne reste pas appuyé), allume une des 5 Leds
pendant que les 4 autres sont éteintes (1er appui : Led rouge, 2nd appui : Led jaune, 3ème
appui : Led verte, 4ème appui : Led blanche, 5ème appui : Led bleue, 6ème appui : le cycle
recommence).
ii. A chaque appui du bouton S2 (le bouton ne reste pas appuyé), la Led qui était allumée
(suite à l’appui de S1) se met à clignoter tant que S1 n’est pas appuyé de nouveau.
iii. A chaque appui du bouton S3 (le bouton ne reste pas appuyé), on obtient un effet
chenillard (voir NB) qui perdure tant que le bouton S1 n’est pas appuyé de nouveau. Si
S1 est appuyé, la led qui était allumée au a) se rallume et les situations a), b) ou c)
peuvent survenir de nouveau.

NB: Effet chenillard: une led est allumée par exemple 200ms pendant que les autres sont éteintes, puis elle s’éteint et la
suivante s’allume et ainsi de suite et le cycle recommence.

Vous aimerez peut-être aussi