Vous êtes sur la page 1sur 9

Décalage à droite et décalage à gauche

Rappel :

En assembleur

1. RLF f,d : Rotation logique à gauche (décalage circulaire à gauche) de la variable stockée à l’adresse f. Résultat dans f si d = 1 ou dans w si d = 0.

f . Résultat dans f si d = 1 ou dans w si d = 0.

2. RRF f,d : Rotation logique à droite (décalage circulaire à droite) de la variable stockée à l’adresse f. Résultat dans f si d = 1 ou dans w si d = 0.

f . Résultat dans f si d = 1 ou dans w si d = 0.

En mikroC

1. X = X<<1 : un décalage simple (non rotatif) à gauche

X<<1 : un décalage simple (non rotatif) à gauche 2. X = X>>1 : un décalage

2. X = X>>1 : un décalage simple (non rotatif) à droite

2. X = X>>1 : un décalage simple (non rotatif) à droite N. ROUSSAFI electroussafi.ueuo.com Décalages

Introduction :

Dans les exercices suivants, on va utiliser le montage suivant :

les exercices suivants, on va utiliser le montage suivant : Pour les programmes en assembleur on

Pour les programmes en assembleur on va utiliser la structure suivante :

les programmes en assembleur on va utiliser la structure suivante : N. ROUSSAFI electroussafi.ueuo.com Décalages
electroussafi.ueuo.com 3/9 Remarque : On peut modifier le délai en modifiant les valeurs qu’on donne cptr1,

Remarque :

On peut modifier le délai en modifiant les valeurs qu’on donne cptr1, cptr2 et cptr3.

Exercice 1

On désire réaliser le jeu de lumière suivant :

C

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

LEDS

 

0

0

0

0

0

0

0

0

1

0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1

0

0

0

0

0

0

0

1

0

0 0 0 0 0 0 0 1 0

0

0

0

0

0

0

1

0

0

0 0 0 0 0 0 1 0 0

0

0

0

0

0

1

0

0

0

0 0 0 0 0 1 0 0 0

0

0

0

0

1

0

0

0

0

0 0 0 0 1 0 0 0 0

0

0

0

1

0

0

0

0

0

0 0 0 1 0 0 0 0 0

0

0

1

0

0

0

0

0

0

0 0 1 0 0 0 0 0 0

0

1

0

0

0

0

0

0

0

0 1 0 0 0 0 0 0 0
                   

1

0

0

0

0

0

0

0

0

1 0 0 0 0 0 0 0 0

1 → led allumée

0 → led éteinte

La dernière ligne n’est pas affichée. Mais, elle peut être utilisée pour la programmation.

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC

Exercice 2

On désire réaliser le jeu de lumière suivant :

C

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

LEDS

 

0

1

0

0

0

0

0

0

0

0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0

0

0

1

0

0

0

0

0

0

0 0 1 0 0 0 0 0 0

0

0

0

1

0

0

0

0

0

0 0 0 1 0 0 0 0 0

0

0

0

0

1

0

0

0

0

0 0 0 0 1 0 0 0 0

0

0

0

0

0

1

0

0

0

0 0 0 0 0 1 0 0 0

0

0

0

0

0

0

1

0

0

0 0 0 0 0 0 1 0 0

0

0

0

0

0

0

0

1

0

0 0 0 0 0 0 0 1 0

0

0

0

0

0

0

0

0

1

0 0 0 0 0 0 0 0 1
                   

1

0

0

0

0

0

0

0

0

1 0 0 0 0 0 0 0 0

1 → led allumée

0 → led éteinte

La dernière ligne n’est pas affichée. Mais, elle peut être utilisée pour la programmation.

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC

Exercice 3

On désire réaliser le jeu de lumière qui regroupe les 2 jeux précédents selon le tableau suivant :

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

 

0

0

0

0

0

0

0

1

0 0 0 0 0 0 0 1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

1

0

0 0 0 0 0 0 1 0

1 → led allumée

0 → led éteinte

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC

Exercice 4

On désire réaliser le jeu de lumière suivant :

C

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

 

0

0

0

0

0

0

0

0

0

0 0 0 0 0 0 0 0 0

0

0

0

0

0

0

0

0

1

 

0

0

0

0

0

0

0

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

0 1 1 1 1 1 1 1 1

1

1

1

1

1

1

1

1

1

1 → led allumée

0 → led éteinte

La dernière ligne n’est pas affichée. Mais, elle peut être utilisée pour la programmation.

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC

Exercice 5

On désire réaliser le jeu de lumière suivant :

C

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

C RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

 

0

1

1

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

1

1

 

1

0

0

0

0

0

0

0

0

1 → led allumée

0 → led atteinte

La dernière ligne n’est pas affichée. Mais, elle peut être utilisée pour la programmation.

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC

Exercice 6

On désire réaliser le jeu de lumière qui regroupe les 2 jeux précédents selon le tableau suivant :

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

 

0

0

0

0

0

0

0

0

0 0 0 0 0 0 0 0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

0

0

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

1

1

1

1

0

0

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

 

1 → led allumée

0 → led atteinte

1. Ecrire un programme en assembleur

2. Ecrire un programme en mikroC