Informatique Industrielle : Exercices corrigés microcontrolleur
Télécharger PDFObtenir 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.
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 maintenant1 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
