Académique Documents
Professionnel Documents
Culture Documents
00000111
Pour mettre à 0 le PC3 par exemple le mot de commande est :
00000110
II-1 ) Exemple d'application en mode 0 :
Exemple 1 :
On donne le schéma de la figure 1,
A/ on veut écrire un programme qui permet de faire clignoter les diodes Led
. Jusqu'à l'appui sur SW0
B ) On veut écrire un programme qui affiche les chiffres de 0 à 15 sur les 7
segments.
C ) On veut écrire un programme qui permet de faire clignoter les diodes
paires si on appuie sur SW0 et les diodes impaires si on appuie sur SW1
81/105
On suppose que les adresses des ports est comme suit :
Port A : 300H
Port B : 302H
Port C : 304H
Registre de commande : 306H
A /Pour faire clignoter les diodes led il faut envoyer une fois 0FH puis
effectuer une temporisation puis envoyer 00H et effectuer une
temporisation voici l'organigramme qui assure ce fonctionnement :
82/105
Le programme est le suivant :
Donnee SEGMENT
Code SEGMENT
MOV DS,AX
MOV AL,Mot_com ; configurer les ports en sorties
OUT Reg_com,AL
83/105
CALL Tempo ; temporisation
MOV AL,Diode_etainte ; D3D2D1D0 = 0H led etainte
OUT PortA,AL
CMP AL,01H
JNZ Debut
MOV AX,4C00H
INT 21H
Prog endp
Temp2: NOP
NOP
NOP
NOP
LOOP Temp2
POP CX
LOOP Temp1
RET Code
ends
End prog
84/105
Le programme qui réalise cette opération :
Donnee SEGMENT
Donnee ENDS
Code SEGMENT
Prog Proc
MOV AX,donnee ; pointer le data segment
MOV DS,AX
85/105
OUT Reg_com,AL
XOR BX,BX
OUT portB,al
JNZ DEBUT
MOV AX,4C00H
INT 21H
Prog endp
Tempo : MOV CX,7FFFH ; Effectuer une temporisation
MOV CX,7FFFH
Temp2: NOP NOP NOP NOP
LOOP Temp2
Code ends
End prog
86/105
Remarque :
Le battement signifie qu'on allume la diode puis on l'éteint une seule fois
car dans notre cas il faut toujours lire les switches car l'utilisateur peut
changer l'état des switches à tout moment.
Le programme de l'application est le suivant :
Donnee SEGMENT
Donnee ENDS
Code SEGMENT
Prog Proc
MOV AX,donnee ; pointer le data segment
MOV DS,AX
87/105
MOV AL,Mot_com ; configurer les ports en sorties
OUT Reg_com,AL
DEBUT: IN AL,PortC
AND AL,03H
CMP AL,01
CMP AL,02
JZ Diode_impaire ; si SW=1 alors battement impaire
JMP DEBUT
MOV AL,00H
OUT PortA,AL
JMP DEBUT
Diode_impaire : MOV AL,0AH ; Battement des diodes impaire
OUT PortA,AL
OUT PortA,AL
MOV AX,4C00H
INT 21H
Prog endp
MOV CX,7FFFH
Temp2: NOP
NOP
NOP
NOP
LOOP Temp2
POP CX
88/105
LOOP Temp1
RET
Code ends
End prog
Exemples 2 :
On donne le schéma de la figure suivante :
On suppose que les adresses des ports est donner comme suit :
Port A : 300H
Port B : 302H
Port C : 304H
Registre de commande : 306
Donner l'organigramme ainsi que le programme qui permet de générer le
signal suivant :
89/105
Donnee SEGMENT
Donnee ENDS
Code SEGMENT
Prog Proc
MOV DS,AX
OUT Reg_com,AL
DEBUT1: XOR AL,AL
DEBUT2:OUT PORTA,AL
JNZ DEBUT2
JMP DEBUT1
Prog endp
MOV CX,7FFFH
90/105
Temp2: NOP
NOP
NOP
NOP
LOOP Temp2
POP CX
LOOP Temp1
RET
Code ends
End prog
Exemple 3 :
Pour commander un afficheur LCD 16*2 ( 16 caractères , 2 lignes ) on
propose le schéma du montage suivant :
91/105
Enfin Rd/Rw : c'est pour donner l'ordre de lecture ou écriture sur LCD.
Parmis les commandes on trouve :
Exemple de programme qui affiche le message ‘bonjour iset n' sur LCD
Avant de commencer le programme il faut déterminer les mots qu'il faut
envoyer au portB pour valider une donnée ou valider une commande d'où
le tableau suivant :
On suppose que les adresses des ports est donner comme suit :
Port A : 300H
Port B : 302H
Port C : 304H
Registre de commande : 306H
Le programme est comme suit :
Donnee SEGMENT
Donnee ENDS
Code SEGMENT
92/105
Prog Proc
MOV AX,donnee ; pointer le data segment
MOV DS,AX
DEBUT :
INC SI
LOOP DEBUT
OUT PortC,AL
CALL Vali_commande ; Validation de l'effacement
OUT PortC,AL
CALL Vali_commande ; Valide le HOME
OUT PortC,AL
CALL Vali_commande ; valide le mode d'écriture.
RET
Vali_commande :
MOV AL,04 ; Sous programme validation
MOV AL,00
OUT PortB,AL
RET
Vali_donnée :
MOV AL,01
OUT PortB,AL
93/105
RET
MOV AX,4C00H
INT 21H
Prog endp
Les différentes phases sont les suivantes (en mode avancement par un
pas):
94/105
Les différentes phases sont les suivantes (en mode avancement par demi
pas):
95/105
La commande des phases du moteur pas à pas bipolaire a aimant
permanent est donnée par le tableau suivant :
D'où le programme par exemple qui fait tourner le moteur pas à pas de 90°
: On suppose que les adresses des ports est donner comme suit :
Port A : 300H
Port B : 302H
Port C : 304H
Registre de commande : 306H
1 pas = 0.9°
A+ est connecté avec PA0
B+ est connecté avec PA1
A- est connecté avec PA2
B- est connecté avec PA3
Le programme est comme suit :
Donnee SEGMENT
Phase db 03H, 06H, 0CH, 09H, 03H, 06H, 0CH, 09H
Donnee ENDS
96/105
Code SEGMENT
Assume CS : code, DS :donnee
Prog Proc
OUT Reg_com, AL
MOV CX, 100 ; 100 * 0.9° = 90°
INC SI
CMP SI,7
JNZ DEBUT2
LOOP DEBUT1
Code ENDS
END PROG
97/105