Académique Documents
Professionnel Documents
Culture Documents
Objectives
Les objectifs de ce chapitre sont:
- Lister les avantages de la communication Série par rapport à la communication parallèle.
- Décrire les bits du début et de la fin dans un Frame de Données pour les communications
Série.
- Montrer comment initialiser les port COM avec les commandes DOS.
- Coder en langage assembleur pour les communications Série avec BIOS INT14H.
Pour longues distances, Tx: 0s et 1s signaux audio (Sinus) par modulations et vice-versa pour Rx
Il existe 2 types de Communications Série: Synchrone (plusieurs octets de données, comme les
caractères, en un temps) et Asynchrone (1 octet de données en un temps)
Il existe 2 circuits pour les Communications Série: UART (Universal Asynchrenous Receiver-
Transmitter de NS, les Ports COM d’IBM PC utilisent l’UART8050) et USART (Universal
Synchroneous-Asynchroneous Receiver-Transmitter de Intel (Le 8251).
Notions de Base
Transmission de Données
Simplex (Imprimante)
Tx Rx
Tx Rx
Duplex Complet (2 lignes)
Rx Tx
Notions de Base
Transmission Asynchrone
Cadrage des Données (Data Framing) : Difficulté pour le récepteur de comprendre les 0s et 1s
reçus à moins d’un protocole entre lui et le transmetteur. Data Framing.
Data Framing : Comment la donnée est paquetée. Combien de bits pour un caractère. C’est quoi
son début et sa fin.
Tx en dernier
Marque (Pas de transfert)
D7 D0 Tx en premier
Espace
Bit Bit Bit
Fin Fin Debut
1 Caractère ASCII (8-bits) + 1 Bit début + 2 Bits Fin (parfois 1 pair/impair parité bit) +30% Overhead
Exemple: Envoi de 5 pages de 80x25 caractères/page 5x25x80x12 = 120000 bits.
Vitesse de Transfert
bps (bits par seconde), mais aussi BAUD Terminologie du MODEM = nombre des
changements du signal par Seconde. Les 1ers IBM PC/XT 100 à 9600 bps.
Avec les PCs (P80x86) 19200 bps. Il y’a une limite de 100000 bps (Tx Asynchrone).
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
6/ 21
Notions de Base
RS232 (1960) est un standard d’ I/F pour une compatibilité
RS232 et Standards I/F E/S Série
entre des équipements de communication série.
Line Drivers
‘Receivers’
R R
MC M
P MC S S
1488 1489 O
80 2
UART Cable 2 D 1 2 3 4 5 6 7 8 9 10 11 12 13
X MC MC
(TTL) 6 RS232 E
86 1489 6 1488
M
2 2 GND 14 15 16 17 18 19 20 21 22 23 24 25
GND
Connecteur RS232 DB-25P (Male)
Note: RS232 DB-25S (Femelle)
‘1’ : -3 -25
‘0’ : +3 +25
PIN Description
1 2 3 4 5
1 DCD (Data Carrier Detect)
PIN Description
6 DSR (Data Set Ready)
2 RxD (Pour RS232 –> pin 3)
7 RTS (Request To Send) 6 7 8 9
3 TxD (Pour RS232 –> pin 2)
8 CTS (Clear To Send) Connecteur IBM PC 9-Pin
4 DTR (Data Terminal Ready)
9 RI (Ring Indicator)
5 GND (Pour RS232 –> pin 7)
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
7/ 21
Notions de Base
Autres Standards I/F E/S Série Pour des distances longues Vitesse de transmission
des RS232 diminue (100000 bps pour <= 5 pieds).
DTE (Data Terminal Équipement) Terminaux et PCs Note: Les définitions des Pins du RS232 sont
qui transmettent et reçoivent les données. par rapport à DTE
D 2 2 D D 2 2 D
T 3 3 C T 3 3 T
E 7 7 E E 7 7 E
Connection PC-Modem Connection PC-PC
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
8/ 21
Notions de Base
DOS MODE COMn:b,p,d,s (MODE COM1:24,O,8,1) 2400baud, P. Odd, 8-bits Data, 1 bit
stop
; Initialisation de COM2
MOV AH, 0 ; Initialisation du Port COM
MOV DX, 0 ; COM Numéro 1, A noter que MOV DX, 1 COM2, etc.
MOV AL, 0EF ; 9600baud, Parité ODD, 2 Stop bits, caractère 8-bits
INT 14H
; Vérifier frappe de touche et son envoi vers COM1 pour son transfert
ENCORE: MOV AH, 01 ; Vérifier la frappe de touche avec INT 16H option 01
INT 16H ; Si ZF=1 pas de frappe de touche
JZ PROCHAIN ; Si pas de frappe de touche vérifier l’état du Port COM1
MOV AH, 00 ; Sinon saisir le caractère en question avec INT 16H option 00
INT 16H ; a noter que le caractère est dans AL (INT BIOS Clavier E/S)
CMP AL, 1BH ; S’agit-il de la touche ESC
JE SORTIRAI ; Si c’est le cas sortir du programme
MOV AH, 1 ; Sinon envoi du caractère vers le COM1 avec INT14H option 01
MOV DX, 0 ; c’est bien le Port COM1
INT 14H ; Interruption (BIOS RS232 E/S)
; Vérifier le Port COM1 s’il y’a un caractère à saisir et à afficher
PROCHAIN: MOV AH, 03 ; L’état du port COM1 (Pas du Modem qui est dans AL)
MOV DX, 0 ; Il s’agit bien du Port COM1
INT 14H ; obtenir l’état du port COM (dans AH)
AND AH, 01 ; Masque tout les bits sauf D0 de l’état du Port COM1 (dans AH)
CMP AH, 01 ; Y’a-t-il un caractère (D0=1?)
JNE ENCORE ; Pas de donnée surveillance du clavier s’il y’a encore frappe
MOV AH, 02 ; Sinon saisir la donnée du COM1 avec INT 14H option 02
MOV DX, 0 ; Il s’agit bien du Port COM1
INT 14H ; Saisir la donnée (se trouvant dans AL) …
12/21
Accéder les ports COM d’IBM PC avec DOS
et BIOS
SORTIRAI: MOV AH, 4CH ; sortir vers le DOS avec l’option 4CH et INT 21H
INT 21H
MAIN ENDP
END
Version CMOS du NS16450 est le 16C450. Les 8250/8250A/16450 sont compatibles (mêmes pins)
A0 A0
A1 A1 L’UART 8250 reçoit
A2 A2 du RS232 des
P A2 A9 CS2 BAUDOUT données (un bit à
AEN CS1 la fois), enlève le
VCC CS0 ‘Frame’, la conver-
RESET MR Xin Xout RCLK
tit en 8-bits (caract-
OSCILATEUR 1.8432MHz
ère SIPO), et enfin
(/10) la transmet à la CPU.
CS0, CS1, CS2 Pour activer le circuit 8250. Dans IBM PC: CS0, CS1 ‘1’
D0-D7 Ces pins sont reliés au bus système d’IBM/PC, via le ‘Transceiver’
74LS245, activé pour les adresses E/S de 3F8H 3FFH.
SIN, SOUT Pins de données Série, connectés aux RxD et TxD du RS232, via EIA.
RTS, CTS,
DTR, DSR, Pins connectées au Modem via RS232. C’est des signaux de ‘Handshaking’
DCD, RI
Master Reset : utilisée pour vider les contenus des registres sauf ceux de la
MR
réception, transmission, et diviseur LSB et MSB.
Registre Buffer Le 8250 reçoit les bits, via Sin, rejette les bits ‘Frame’ pour former l’octet
(du Récepteur) (le caractère) en le sauvegardant dans ce registre.
D7 D6 . . . D3 D2 D1 D0
Registre de Validation
0 0 0 0 IN Err TBE RxRDY
des Interruptions
RxRDY = ‘1’ INTR vers la CPU pour lui signifier qu’un octet vient d’être reçu
via Sin
TBE = ‘1’ INTR vers la CPU pour lui signifier que le le Registre de maintien
(Buffer) est vidé et qu’il est disponible pour en recevoir un autre octet.
1 pin INTR mais
4 sources d’INTs
Err = ‘1’ INTR vers la CPU pour lui signifier qu’une erreur est détectée (parité,
framing, … ). La source d’erreur est dans le registre d’état si Err = ‘1’.
IN = ‘1’ (État du Modem) INTR vers la CPU pour lui signifier que l’une des
lignes du RS232 a changé d’état durant le transfert (Tx ou Rx).
Note: A noter que les bits D0 à D3 peuvent être masqués en mettant un ‘0’.
D3:D0 indiquent le changement d’état des signaux d’entées à partir de la dernière lecture par la CPU.
Mise à ‘1’ s’il y’a eu changement dans les signaux CTS, DSR, RI, et DCD.
D7:D4 Si TEST = ‘1’ (du registre contrôle du Modem), ces bits (CTS, DSR, RI, et DCD) sont équivalents
aux bits D3:D0 (RTS, DTR, OUT1, et OUT2) respectivement du registre contrôle du Modem.
8/ 21
Notions de Base
Si D2 = ‘1’ du registre de validation des INTs, ce registre est utilisé pour savoir quel type d’erreurs.
DR : Si = ‘1’ La donnée est prête (envoyée au Buffer de réception, après avoir enlevé les bits de
Framing) pour être prise. Ce bit est mit à ‘0’ après lecture du registre de réception.
OE : Si ‘1’ Erreur de dépassement de vitesse (OverRun), dans le cas ou la CPU est plus lente que la vitesse
de réception (l’ancien octet est remplacé par le nouveau à cause de la lenteur de la CPU qui n’a pas lu à temps).
PE : Si ‘1’ Erreur de parité sur la donnée reçue (la parité ne correspond pas à celle calculée dans le registre).
BI : Si ‘1’ Break Interrupt Si SIN est ‘0’ durant une période d’un transfert (Bit Début+ Données+Parité+Stop)
Tout comme OE, PE, FE, ce bit est mis à ‘0’ quand la CPU lit ce registre d’état.
THRE : Si ‘1’ Transmitter Hold Reg. Empty Le 8250 est prêt à recevoir un Octet à transmettre. Quand un
octet est transférer du registre de maintien vers le PISO, ce bit est mis à ‘1’. Quand la
CPU écrit un autre octet THRE est mis à ‘0’.`
Registre Eflature Ce registre n’est pas utilisé par le 8250 mais par la CPU comme
(Scratch pad reg.) registre extra pour des besoins bien spécifiques.
Registre Diviseur Ces registres contiennent les octets LSB et MSB qui
permettent de programmer la vitesse en Baud du 8250 suivant
(LSB, MSB) la formule : (fXin/16) / Vitesse_Baud
Exemple La valeur du diviseur correspondant à la vitesse 110 Baud est, avec Xin = 1.8432MHz:
Programmation:
MOV AL, 80H ; 10000000B pour DLAB=‘1’
MOV DX, 3FBH ; L’adresse du Registre du format des données (Line Control), pages 13 et 14
OUT DX, AL ; D7 = ‘1’ pour DLAB afin de programmer les registres diviseurs LSB et MSB
-principale limitation des circuits 8250/16450 pour chaque octet reçu ou transmet INT la CPU.
Ceci ne constitue pas un problème pour les anciens PCs, puisque tout les périphériques étaient lents.
Mais pas pour les PCs et les stations de travail actuels, dont la haute performance et une nécessité.
NS a conçu le 16550AF (compatible avec le 16450) possédant un buffer interne de 16 octets (au lieu de 1
pour le 16450) pour sauvegarder des blocs de données de transmission et de réception, et pour ainsi
Libérer la CPU des INTs fréquentes.
Ainsi à la transmission, la CPU peut écrire 16 octets à la fois dans un buffer de transmission. Quand ce
Buffer se vide, le 16550AF active un signal à la CPU pour lui demander un autre transfert.
Le problème des communications Asynchrones est l’OVERHEAD du framing qui peut prendre jusqu’à 50%.
Avec les communications de données Synchrones les bits de début et de fin sont remplacés par des codes de
contrôle en octets. Mais le transfert des données se fait en bloc d’octets, des 100s, au lieu d’un octet à la fois.
Chapitre 7 (Mémoires),
Chapitre 8 (Timer) et
Chapitre 9 (PIC)