Vous êtes sur la page 1sur 19

Université Hassan II de Casablanca

Faculté des Sciences Aïn-Chock


Département de Physique
MS EEAII

Microprocesseurs et Microcontrôleurs

Solution de travaux dirigés

Proposée par : Dirigée par :

El Mehdi BEN KACEM Pr. Bahloul BEN SASSI


MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 01: « Opérations arithmétiques sur octet »

Organigramme Programme

Début MOV A, #17h


ADD A, #34h
MOV 30h, A
END
A ←17h

A ←(A)+34h

30h ←(A)

Fin

Début MOV A, #FAh


ADD A, #35h
MOV 30h, A ; la case mémoire
MOV A, #1Fh ; d’@30h contient
A ←FAh A ←1Fh ADDC A, #2Fh ; la valeur 2Fh
MOV 31h, A ; la case mémoire
END ; d’@31h contient
; la valeur 4Fh
A ←(A)+35h A ←(A)+2Fh

30h ←(E0h) A ←(A)+(C)

31h ←(A)

Fin

1
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Début MOV A, 30h


ADD A, 40h
MOV 50h, A
END
A ←(30h)

A ←(A)+(40h)

50h ←(A)

Fin

Début MOV A, 30h


ADD A, 40h
MOV 50h, A
MOV A, 31h
A ←(30h) A ←(31h) ADDC A, 41h
MOV 51h, A
END

A ←(A)+(40h) A ←(A)+(41h)

50h ←(E0h) A ←(A)+(C)

51h ←(A)

Fin

2
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

MOV A, #1fh
Début MOV B, #10h
MUL AB
MOV 30h, A
MOV 31h, B
A ← 1fh
B ← 10h END

AB ← (A)×(B)

30h ←(A)
31h ←(B)

Fin

Début MOV A, 30h


MOV B, 40h
MUL AB
MOV 50h, A
A ← (30h) MOV 51h, B
B ← (40h) END

AB ← (A)×(B)

50h ←(A)
51h ←(B)

Fin

3
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

MOV A, #9fh
Début MOV B, #10h
DIV AB
MOV 30h, A
MOV 31h, B
A ← 9fh
B ← 10h END

AB ← (A)/(B)

30h ←(A)
31h ←(B)

Fin

Début MOV A, 30h


MOV B, 40h
DIV AB
MOV 50h, A
A ← (30h) MOV 51h, B
B ← (40h) END

AB ← (A)/(B)

50h ←(A)
51h ←(B)

Fin

4
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 02: « Opérations logiques sur octet »

Fonctionnement Organigramme Programme


U.A.L du processeur à 8
bits du microcontrôleur Début MOV A, #1Fh
8051 va effectuer ORL A, #91h
l’opération logique MOV 30h, A
A ←17h END
biopérande OU bit par bit
entre les deux opérandes,
dans ce cas les deux
constantes : 1Fh et 91h, A ←(A) ou 34h
puis le résultat logique de
l’opération sera récupéré
dans le registre spécifique 30h ←(A)
Acc. Ensuite on va
enregistrer le contenu de
Acc dans la cas mémoire
pontée par @30h. Fin

U.A.L du processeur à 8
bits du microcontrôleur Début MOV A, #1Fh
8051 va effectuer ANL A, #91h
l’opération logique MOV 30h, A
A ←17h END
biopérande ET bit par bit
entre les deux opérandes,
dans ce cas les deux
constantes : 1Fh et 91h, A ←(A) et 34h
puis le résultat logique de
l’opération sera récupéré
dans le registre spécifique 30h ←(A)
Acc. Ensuite on va
enregistrer le contenu de
Acc dans la cas mémoire
pontée par @30h. Fin

U.A.L du processeur à 8
bits du microcontrôleur Début MOV A, #11h
8051 va effectuer XRL A, #77h
l’opération logique MOV 30h, A
A ←17h END
biopérande OU Exclusif
bit par bit entre les deux
opérandes , dans ce cas les
deux constantes : 11h et A ←(A) xor 34h
77h , puis le résultat
logique de l’opération sera
récupéré dans le registre 30h ←(A)
spécifique Acc. Ensuite on
va enregistrer le contenu
de Acc dans la cas
mémoire pontée par Fin
@30h.

5
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 03: « Adressage indirect indexé »


Organigramme Programme
Début MOV R0, #50h
Loop : MOV @ R0, #00h
INC R0
R0 ←50h CJNE R0, #58h, Loop ; saut si
; (R0) != 58h

@R0 ←00h

R0 ←(R0)+1

R0=58h
Non

Oui

Fin

6
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 04: « Somme de deux listes »


Organigramme Programme
# Organigramme du programme principal :

Début
ORG 0000h

R0 ←50h MOV R0, #50h


R1 ←60h MOV R1, #50h
R2 ←70h MOV R2, #70h

Loop:

A ←(@R0) MOV A, @R0


A ←A+(@R1) ADD A, @R1

R3 ← (R0) MOV R3, R0

R0 ← (R2) MOV R0, R2

MOV @R0, A
@R0 ← (A)

MOV R0, R3
R0 ← (R3)

R0 ← R0 +1 INC R0
R1 ← R1 +1 INC R1
R2 ← R2 +1 INC R2

R0 =58h CJNE R0, #58h, Loop

Fin END

7
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 05: « Addition BCD »

La différence entre l’addition en hexadécimale et l’addition en BCD :

Pour effectuer une addition en hexadécimale, on représente, tout d’abord, les


deux nombres en hexadécimal, puis on effectue l’addition chiffre par chiffre à partir
du poids fort jusqu’au poids faible. Idem que l’addition en BCD, sauf que la
représentation de deux nombres sera effectuer en BCD, c’est-à-dire que chaque
chiffre décimal sera codé en binaire sur 4 bits, et le retenu sera la valeur en exés après
9 (1001) et dans ce cas on ajoute 6 (0110) pour corriger la valeur obtenu.

Organigramme Programme
Début MOV A, #00010111B
ADD A, #00110100B
DA A
A ← 0001 0111 B MOV 30h, A

A ← (A) + 0011 0100 B

Ajuster (A) en BCD

30h ← (A)

Fin

8
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 06: « Opérations booléenne »

x OU y x ET y x XOU y
x EQU 00h x EQU 00h x EQU 00h
y EQU 01h y EQU 01h y EQU 01h
z EQU 02h z EQUA 02h z EQU 02h

MOV C, x MOV C, x CPL x


ORL C, y ANL C, y MOV C, x
ANL C, y
MOV z, C MOV z, C MOV z, C

CPL x
CPL y
MOV C, x
ANL C, y

ORL C, z

MOV z, C
x.y + z ̅ .y + x. ̅
x EQU 00h x EQU 00h
y EQU 01h y EQU 01h
z EQU 02h z EQU 02h
t EQU 03h
CPL x
MOV C, x MOV C, x
ANL C, y ANL C, y
ORL C, z MOV z, C

MOV t, C CPL x
CPL y
MOV C, x
ANL C, y

ORL C, z
MOV z, C

9
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 07: « Application 1 : clignotement d’une LED – notion de temporisation -


notion de sous-programme »

Organigramme d’une temporisation Programme d’une temoporisation


; On va programmer une temporisation
de 500ms, tout en considérant que :
, càd: .
Par tentative, on trouve approximativement :
x=4 ; y=250 ; z=250.
Début DELAY
DELAY :

R0 ← x MOV R0, #004D

Loop_0 :
R1 ← y MOV R0, #004D

Loop_1 :
R2 ← z MOV R0, #004D

Loop_2 :
R2 ← R2 - 1

R2 = 0
DJNZ R2, Loop_2
Non

Oui
R1 ← R1 - 1

R1 = 0 DJNZ R1, Loop_1


Non

Oui

R0 ← R0 - 1

R0 = 0 DJNZ R0, Loop_0


Non

Oui

Fin DELAY RET

10
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Organigramme de clignotement Programme de clignotement


Cas 1 : le programme de temporisation est
intégré dans le programme de clignotement.
Début

ORG 0000h
̅̅̅̅̅̅
𝐿𝐸𝐷
LED EQU P0.0
DELAY
LOOP : CPL LED

DELAY : MOV R0, #004D


Loop_0 : MOV R0, #004D
1
Oui Loop_1 : MOV R0, #004D
Loop_2 : DJNZ R2, Loop_2
DJNZ R1, Loop_1
DJNZ R0, Loop_0
Fin
LJMP LOOP

END

Cas 2 : le programme de temporisation


est considéré comme un sous-programme.

ORG 0000h
LED EQU P0.0
LOOP : CPL LED
CALL DELAY
LJMP LOOP
END

ORG 2000h
DELAY : MOV R0, #004D
Loop_0 : MOV R0, #004D
Loop_1 : MOV R0, #004D
Loop_2 : DJNZ R2, Loop_2
DJNZ R1, Loop_1
DJNZ R0, Loop_0
RET

11
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 08: « Application 2 : clignotement d’une LED avec bouton Start»

Câblage Programme

ORG 0000h
LED EQU P3.0
START EQU P1.0

CLR LED
JB START, LOOP

LOOP : CPL LED


CALL DELAY
LJMP LOOP
END

ORG 2000h
DELAY : MOV R0, #004D
Loop_0 : MOV R0, #004D
Loop_1 : MOV R0, #004D
Loop_2 : DJNZ R2, Loop_2
DJNZ R1, Loop_1
DJNZ R0, Loop_0
RET

12
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 09: « Application 3 : Chenillard »

Câblage Organigramme Programme

MOV A, #01
LOOP : MOV P3,A
Début
CALL DELAY
RR A
AJMP LOOP
A ← 01
END

P3 ← (A)

DELAY

Décaler (A)

1
Oui

Fin

13
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 10: « Application 4 : Compteur hexadécimal – notion de comptage »

Câblage Organigramme Programme

Loop1: MOV A,#00


Loop2: MOV P3,A
Début CALL DELAY
INC A
CJNE A,#10h, Loop2
A ← 00 AJMP Loop1

P3 ← (A)

DELAY

A ← (A)+1

A = 0Fh
Non

1
Oui

Fin

14
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 11: « Application 5 : Compteur hexadécimal à deux afficheurs 7


segment »

Câblage Organigramme Programme

MOV A,#00
Début Loop: MOV P3,A
CALL DELAY
INC A
A ← 00 AJMP Loop

P3 ← (A)

DELAY

A ← (A) + 1

1
Oui

Fin

15
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 12: « Application 6 : Compteur décimale à deux afficheurs 7 segment »

Câblage Organigramme Programme

Loop1: MOV A,#00


Loop2: MOV P3,A
Début CALL DELAY
INC A
DA A
A ← 00D CJNE A,#59D, Loop2
AJMP Loop1

P3 ← (A)

DELAY

A ← (A)+1

Ajuster (A) en BCD

A = 59d
Non

1
Oui

Fin

16
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 13: « Application 7 : Transcodeur Binaire/BCD »

Algorithme Organigramme Programme


Var
X : Octet = (30h) ;
Y : Octet = (40h) ;

R0, R1 : Octet ;
R2, R3 : Octet ;
Début
R0 = X*00001111B ;
R1 = X*11110000B ;

Si (R0 <= 00001001B) Alors


R2 = R0 ;
Sinon
R2 = R0 + 00000110B ;
Finsi

Si (R2 < 00010000B) Alors

Si (R1 <= 10010000B) Alors


R3 = R1 ;
Sinon
R3 = R1+01100000B ;
Finsi

Sinon
R1 = R1 + 00010000B ;
Si (R1 <= 1001000B) Alors
R3 = R1 ;
Sinon
R3 = R1+01100000B ;
Finsi
Finsi

Fin

17
MS EEAII Microprocesseurs et Microcontrôleurs 2020/2021

Exercice 14: « Application 8 : Bouton Start/Stop – notion d’interruption»

Câblage Organigramme Programme


#Organigramme du
Programme Principale : ORG 0000H
LJMP PROG_PRL
Début
ORG 0003H
IE ← 00000001B PUSH PSW
IP ← 00000001B PUSH ACC
LJMP IT_STOP
Non NOP
P3.0 =1 Non IT_STOP :
SETB P1.0
SJMP IT_STOP
A ← 00D RET

PROG_PRL :
P0 ← (A) MOV IE, #01H
MOV IP, #01H
DELAY START :
JNB P3.0, START
COUNT:
A ← (A)+1 MOV A,#00H
STEP :
Ajuster (A) en BCD MOV P3,A
CALL DELAY
INC A
DA A
A = 59d
Non
CJNE A,#59D, STEP
AJMP COUNT
END
1
Oui

Fin

#Organigramme du sous-
programme d’interruption :
Début IT_STOP

P1.0 ← 1

Fin IT_STOP
18

Vous aimerez peut-être aussi