Exercices corrigés microcontrolleur - informatique industrie

Informatique Industrielle : Exercices corrigés microcontrolleur

Télécharger PDF

Obtenir le pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur!

Vous souhaitez maîtriser les microprocesseurs et Microcontrôleurs ? Ne cherchez plus, nous avons le pack parfait pour vous.

pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur

Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, des travaux pratiques (TP) et des projets.

Obtenir le pack maintenant

1 Réaliser un feu tournant qui commence a partir de la valeur stocké à l'@ 40h

ORG 100H

MOV A,#20hboucle: MOV P1, A

RL A

sjmp boucle

END 100H

Lire le port P0 et l'afficher sur P1

ORG 100H

MOV A,P0boucle: MOV A,P0

MOV P1,A

MOV P1,A

;on l'ecris deux fois pour eviter le retard

sjmp boucle

END 100H Lire le port P0 et l'afficher sur P1 ,seulement sur les bits du poids faible

ORG 100H

MOV A,P0boucle: MOV A,P0

ANL A,#00001111b ; ANL = ET logique

MOV P1,A

MOV P1,A

;on l'ecris deux fois pour eviter le retard

sjmp boucle

END 100H On veut charger le contenue do port P0 dans la case d'@ 40h le contenue est ensuite additionné à la valeur 22h et affiché sur le port P1

ORG 100Hdebut: MOV R0,#40h

MOV A,P0

MOV @R0,A

ADD A,#22h

MOV P1,A

sjmp debut

END 100H On veut ecrire l'alphabet sur la mémoire de a à z ,à partir de l'@ 40h

ORG 100Hdebut: MOV R0,#40h

MOV A,#'a'boucle: MOV @R0,A

INC A

INC R0 CJNE A,#'z'+1,boucle

;CJNE : Comparer jump if not equal

sjmp debut

END 100H deux leds represente la validité d'un code entré sur le port P0 (00.....FFh) le code Vrai = 55h

si code valide led0 s'allume

si code invalide led7 s'allume

ORG 100Hdebut: MOV A,P0

CJNE A,#55h,invalide

MOV P1,#10000000b

sjmp debut

invalide:

MOV P1,#00000001b sjmp début END 100H Emission d'un caracetere

ORG 100h 2

LCALL INIT

MOV A,#'X'

MOV SBUF,A

Fin: SJMP Fin

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1

MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s (baud)

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET END 100h Emission de l'alphabet de A à Z

ORG 100h

MOV A,#'A'Boucle: LCALL INIT

MOV SBUF,A

INC A

CJNE A,#'Z'+1,Boucle

Fin: SJMP Fin

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1

MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s (baud)

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET END 100h Ecrire votre nom dans la mémoire lire le nom ecris sur la console

ORG 100h

LCALL INIT

MOV DPTR,#0000h

MOV A,#'A'

MOVX @DPTR,A

INC DPTR,

MOV A,#'N'

MOVX @DPTR,A

INC DPTR,

MOV A,#'A'

MOVX @DPTR,A

INC DPTR,

MOV A,#'S'

MOVX @DPTR,A

INC DPTR,

MOV A,#'S'

MOVX @DPTR,A

INC DPTR,

MOV A,#13h ;caractere 13h pour marquer la fin du mot

MOVX @DPTR,A

MOV DPTR,#0000hBoucle: MOVX A,@DPTR

MOVX A,@DPTR

MOV SBUF,A

INC DPTR

CJNE A,#13h,Boucle

Fin: SJMP Fin

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1 3 MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET END 100h Ecrire un caractère dans le registre A a partir du clavier

ORG 0H

LJMP 100h

ORG 80H

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1

MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s (baud)

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET RECP: MOV A,SBUFRET EMET: MOV SBUF,ARET ORG 100H

LCALL INIT

LCALL RECP

Fin: SJMP Fin

END 100H On veut enregistrer une chaine tapée au clavier sur la mémoire externe à partir de l'@ 0000H

ORG 0H

LJMP 100h

ORG 80H

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1

MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s (baud)

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET RECP: MOV A,SBUFRET EMET: MOV SBUF,ARET ORG 100H

LCALL INIT

MOV DPTR,#0000h

Boucle: LCALL RECP

MOVX @DPTR,A

INC DPTR

CJNE A,#'/',Boucle

Fin: SJMP Fin

END 100H On veut afficher le message tapé au clavier sur la console - remplire la mémoire a partir de l'@ 0000h - renvoyer le texte de la mémoire vers la console

ORG 0H

LJMP 100h

ORG 80H

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1

MOV TH1,#0FDh

; choisir la vitesse de transmission 9600bits/s (baud)

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET RECP: MOV A,SBUFRET EMET: MOV SBUF,ARET ORG 100H

LCALL INIT

MOV DPTR,#0000h

Boucle: LCALL RECP

MOVX @DPTR,A

INC DPTR 4

CJNE A,#'/',Boucle

MOV DPTR,#0000H

Boucle2:MOVX A,@DPTR

LCALL EMET

INC DPTR

CJNE A,#'/',Boucle2

Fin: SJMP Fin

END 100H Exercice : Selon le caractére tapé au clavier - 'C' ou 'c' : compteur binaire 00 --------> FF - 'D' ou 'd' : compteur binaire FF --------> 00 Le résultat sera visible sur les ports P1 et P3 (LED's et Bar display)

ORG 0H

LJMP 100h

ORG 80H

INIT: MOV TMOD,#20h

; choisir le mode 1 timer 1 MOV TH1,#0FDh ; choisir la vitesse de transmission 9600bits/s

MOV SCON,#52h

; Mode 1 RS232

SETB TR1RET ORG 100H

LCALL INIT

Boucle: MOV A,SBUF

;Lecture du caractere saisie

MOV R1,A

SUBB A,#0FFh

JZ Boucle

;vérifier si un caractere est saisie, sinon écouter le clavier

MOV A,R1

SUBB A,#'C'

JZ COMPT

;tester le caractère saisie avec 'C' et 'c' et 'D' et 'd'

MOV A,R1

SUBB A,#'c'

JZ COMPT

MOV A,R1

SUBB A,#'D'

JZ DCMPT

MOV A,R1

SUBB A,#'d'

JZ DCMPT COMPT: MOV P1,#00h

;initialiser le LED's et le bar display à 00h puis les incrémenter

MOV P3,#00h

Boucle2:

INC P1

INC P3

SJMP Boucle2

DCMPT: MOV P1,#0FFh

;initialiser le LED's et le Bar display à 0FFh puis les décrémenter

MOV P3,#0FFh

Boucle3:

DEC P1

DEC P3

SJMP Boucle3

Fin: SJMP Fin

END 100H

END 100h Application : régulation du niveau d'eau dans un bassin

ORG 100hET1: MOV A,P0

ANL A,#00000001b

; tester si P1 = 00000001b

V0 allumé ?

CJNE A,#00000001b,ET1

MOV P1,#00000001b5 MOV P1,#00000001b

MOV P3,#50

ET2: ;INC P3

;Remplissage

MOV A,P3; ADD A,#05

; incrémentation

MOV P3,A; MOV A,P3

CJNE A,#70,ET2

MOV P1,0

MOV P1,0ET3: MOV P1,#00010000b

MOV P1,#00000000b

MOV A,P0

ANL A,#00000010b

CJNE A,#02,ET3ET4: MOV P1,#10000000b

DEC P3

;MOV A,P3; ;SBB A,#05

; décrementation

;MOV P3,A; MOV A,P3

CJNE A,#50,ET4

MOV P1,0

SJMP ET1

END 100h adressage_indirect_exemple ORG 100hDEBUT: ;MOV DPTR,#2000H

MOV R0,#82h

MOV A,#00h

MOV @R0,A

MOV R0,#83h

MOV A,#20h

MOV @R0,A

MOV A,#'A'

MOVX @DPTR,A

sjmp DEBUT

END 100h Ecrire l'alphabet de 'A' a 'Z' dans la mémoire externe a partir de l'@ 3000h

org 100hfin: MOV DPTR,#3000H

MOV A,#'A'boucle: MOVX @DPTR,A

INC DPTR

INC A,

CJNE A,#'Z'+1,boucle

SJMP fin

end 100h 1) suivant les valeurs X lus sur le port P0 le Microcontroleur charge la mémoire externe par les valeurs suivantes a partir de l'@ 4000h 4000h

X X+10h X+20h ...

X+60h 2) Le système affiche les valeurs sur le port P1 séparées par une temporisation

org 100h 6debut: MOV A,P0

MOV DPTR,#0000H

MOV R0,#07hboucle: MOVX @DPTR,A

MOV P1,A

MOV P1,A

INC DPTR

ADD A,#10h

DEC R0

LCALL Tempo

CJNE R0,#00h,boucle

SJMP debut

Tempo: MOV R4,#08h

ET1: MOV R5,#0FFh

ET2: MOV R6,#0FFh

ET3: MOV R7,#0FFh

ET4: DJNZ R7,ET4

;DJNZ décrémenter et comparer si égal à 0

DJNZ R6,ET3

DJNZ R5,ET2

DJNZ R4,ET1RET end 100h

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2