Vous êtes sur la page 1sur 17

Les entrées/sorties

numériques

Le C167 dispose de 111 entrées/sorties


numériques regroupées par port de 8 ou 16
bits.

Toutes les lignes peuvent être adressées en


entrée ou en sortie ( lignes
bidirectionnelles), individuellement ou par
paquet de 8 ou 16.

1
Les d’entrées/sorties
numériques

Configuration en sortie:
l’information est envoyée par le
microcontrôleur vers le monde
extérieur (actionneurs, moteurs).
Configuration en entrée: les
lignes sont initialisées par le
monde extérieur (capteurs) et
sont lues par le microcontrôleur.

Lignes configurées en
sortie
C167
Lignes configurées en
entrée
2
Organisation des ports
d’entrée/sortie
Le microcontrôleur C167 dispose
de:
• 1 port de 16 bits E/S (P2).
• 8 ports de 8 bits E/S (P0H, P0L,
P1H, P1L, P4, P6, P7, P8).
• 1 port de 15 bits E/S (P3).
• 1 port de 16 bits E (P5).

3
Configuration des
broches d’entrée/sortie
La configuration en entrée ou sortie des lignes
d’un port se fait par l’intermédiaire des
registres de direction (DP0,DP1,DP2,...)

Lors qu’un bit du registre de direction est


initialisé à:
1, la broche correspondante est
configurée en sortie.
0, la broche correspondante est
configurée en entrée.

Configuration en entrée du port 2:


MOV DP2,#0x0000
Configuration en sortie de la broche 1 du port
2:
BSET DP2.1

Le port 5 ne dispose pas de registre de


direction, ce port ne fonctionne qu’en
entrée. 4
Configuration en entrée
Lorsque configurées en entrée :

• Une opération de lecture du registre de données


renvoie le niveau électrique des broches du port .

• Une opération d’écriture n’a aucun effet sur les broches.

Exemple:
Un capteur est connecté à la broche 3 du port 2 et le
programme lit l’état de ce capteur. Tant que le capteur
est à l’état 1, le programme est dans une boucle
d’attente, le programme se poursuit dès que le capteur
passe à l’état 0.

AND DP2,#1111111111110111B ; la broche 3 est


;configurée en entrée.
attente:
MOV R2,P2 ; lecture du port 2 et
; copie vers R2
AND R2,#0000000000001000B ; test uniquement du bit
; 3 de R2
JMP cc_NZ, attente ; saut à « attente » si
; R2.3==1

5
Configuration en sortie
Lorsque configurées en sortie :
•Une opération d’écriture sur un bit du registre
de données entraîne le positionnement de la
broche associée.
•Une opération de lecture renvoie la dernière
valeur envoyée sur le port de sortie.

Exemple:
16 leds sont respectivement connectées aux 16
broches du port 2.
Si la broche est au niveau 0, la led est éclairée.
Si la broche est au niveau 1, la led est éteinte.

Eclairer les 8 leds connectées aux 8 broches de


poids les plus forts et éteindre les 8 leds
connectées aux 8 broches de poids les plus
faibles.
….
MOV DP2,#0FFFFH ; configuration des 16
;broches du port en sortie
6
MOV P2,#00FFH ; écriture sur le port 2
….
Configuration en sortie
Octet de sécurité

Avant de configurer une broche en sortie,


il est recommandé de fixer la valeur du
port préalablement avec une valeur
rendant inactif l’actionneur connecté à
la broche.
C’est ce qu’on appelle la valeur de
sécurité :

Exemple:
Pour un actionneur actif à l’état 1 et
connecté à la broche 7 du port 4, la
valeur de sécurité est 0:
BCLR P4.7
BSET DP4.7
Pour un actionneur actif à l’état 0 et
connecté à la broche 7 du port 4, la
valeur de sécurité est 1:
BSET P4.7
BSET DP4.7
7
Exemple
Réaliser une calculatrice à 2 fonctions:
addition et soustraction.
Les opérations sont appliquées sur 2 valeurs,
notées valA et valB, codées sur 8 bits.
Les valeurs sont transmises au
microcontrôleur par les ports P7 et P8.

Le type de l’opération est sélectionné par un


interrupteur connecté à la broche 15 de
P2.
En position 1, l’opération est une addition
(valA+valB).
En position 0, l’opération est une
soustraction (valA-valB).

Le résultat de l’opération (codé sur 8 bits) est


affiché sur 9 broches du port 2:
• la broche 12 indique par un 1 si le résultat
est valide.
• les 8 broches de poids les plus faibles
représentent la valeur du résultat si le
8
résultat est valide sinon sont à 0.
Exemple
P7 Valeur A
C167
Valeur B
P8
P2

Validité Résultat
interrupteur

• Les ports 7 et 8 sont


configurés en entrée.
• Les broches
0,1,2,3,4,5,6,7,12 de P2 sont
configurés en sortie
• La broche 15 de P2 est
configurée en entrée.
9
Exemple Programme
name calculatrice
$include(reg167.inc)

prog SECTION CODE


main PROC
GLOBAL main
assume DPP3:system
debut:
MOVB DP7,#0 ; port 7 en entree
MOVB DP8,#0 ; port 8 en entree
AND DP2,#7FFFh ; broche 15 P2 en entrée
MOV P2,#0FFFFH ; octets de sécurité
OR DP2,#10FFh ; broches 12,7,6,5,4,3,2,1,0 en sortie
boucle_lecture:
MOVB RL7,P7 ; lecture valeur A port 7
MOVB RL6,P8 ; lecture valeur B port 8
MOV R2,P2 ; lecture P2
AND R2,#8000h ; test de l'état de l'interrupteur
JMP cc_Z soustraction ; si inter=0 alors soustraction JNB P2.15, soustraction
;sinon addition
addition:
ADDB RL7,RL6
JMP cc_V,erreur ; si overflow erreur
JMP cc_UC,affiche ; sinon affichage de resultat

soustraction:
SUBB RL7,RL6
JMP cc_V,erreur ; si overflow erreur
affiche:
MOVB RH7,#10h ;
MOV P2,R7 ; valide =1 et resultat dans RL7
JMP cc_UC,boucle_lecture
erreur:
MOV R7,#0000h
MOV P2,R7 ; valide =0 et resultat =0
JMP cc_UC,boucle_lecture
main ENDP 10
prog ENDS
END
Exemple Programme
name calculatrice
$include(reg167.inc)

prog SECTION CODE


main PROC
GLOBAL main
assume DPP3:system
debut:
MOVB DP7,#0 ; port 7 en entree
MOVB DP8,#0 ; port 8 en entree
AND DP2,#7FFFh ; broche 15 P2 en entrée
MOV P2,#0FFFFH ; octets de sécurité
OR DP2,#10FFh ; broches 12,7,6,5,4,3,2,1,0 en
sortie
boucle_lecture:
MOVB RL7,P7 ; lecture valeur A port 7
MOVB RL6,P8 ; lecture valeur B port 8
MOV R2,P2 ; lecture P2
AND R2,#8000h ; test de l'état de l'interrupteur
JMP cc_Z soustraction
; si inter=0 alors soustraction
; JNB P2.15, soustraction ;sinon addition
11
Exemple Programme

JMP cc_Z soustraction


addition:
ADDB RL7,RL6
JMP cc_V,erreur ; si overflow erreur
JMP cc_UC,affiche ; sinon affichage de resultat

soustraction:
SUBB RL7,RL6
JMP cc_V,erreur ; si overflow erreur
affiche:
MOVB RH7,#10h ;
MOV P2,R7 ; valide =1 et resultat dans RL7
JMP cc_UC,boucle_lecture
erreur:
MOV R7,#0000h
MOV P2,R7 ; valide =0 et resultat =0
JMP cc_UC,boucle_lecture
main ENDP
prog ENDS
END
12
Structure de l’étage de
sortie

Lorsque configurées en sortie, la


structure de l’étage de sortie est
contrôlée par le registre de
contrôle ODPx.
• ODPx.y = 0, l’étage de sortie de
la broche y du port x est configuré
en push pull (défaut)
• ODPx.y = 1 l’étage de sortie de la
broche y du port x est configuré
en drain ouvert.

Seuls les ports P2, P3, P6, P7 ont


cette possibilité.

13
Structure de l’étage de
sortie
En montage push-pull ( état par
défaut), l’état de sortie est fixé par
l’un ou l’autre des 2 transistors.

14
Structure de l’étage de
sortie
Pour un montage drain ouvert:
le niveau 0 de la broche de sortie est
obtenu lorsque le transistor est saturé.
le niveau 1 de la broche de sortie doit
être fixé par une source extérieure
(mode haute impédance) car le
transistor est bloqué.
Pour un montage drain ouvert, il est
possible de réaliser des ET câblé entre
les sorties.

15
Niveaux logiques

Par défaut, les niveaux


électriques des broches sont
déterminés selon les niveaux
logiques TTL standard.
Sortie :
Niveau haut: Voh>= 2,4 V
Niveau bas: Vol<= 0,4 V
Entrée :
Niveau haut: Vih>= 2 V
Niveau bas: Vil< = 0,8 V

16
Fonctions alternatives
des ports d’entrée/sortie.

Chaque ligne peut être également


utilisée par le microcontrôleur
pour piloter, contrôler les
périphériques internes.

• Le port 3 est utilisé par les


unités timer, interface série et le
contrôle du bus externe et
l’horloge système.
• Le port 5 est utilisé par le CAN
Lorsqu’un port est utilisé dans ses
fonctions alternatives, il faut tout
de même configurer sa
direction.
Les fonctions spéciales des
ports seront vues lorsque l’on
abordera les périphériques.
17

Vous aimerez peut-être aussi