Manipuler les ports sous C

Fermé
C_amigo - 11 mai 2010 à 04:42
c_amigo Messages postés 5 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 30 novembre 2010 - 12 mai 2010 à 01:59
Bonjour,

j'ai besoin de résoudre cet exercice:

Écrire un programme C capable de :

-Retrouver l'adresse I/O d'un port série COM1
-Initialiser le port COM1 avec les paramètres suivantes:

-Transmission à 9600 BAUDS
-Transmission 7 bits ,avec parité ,2 bits de stop

-Lire un caractère reçu sur le port COM1 et l'afficher à l'écran
-Envoyer un caractère saisi par l'utilisateur sur le port COM1


Voilà mon code :

#include<stdio.h>
#include<dos.h>

main()
{ char c;

int base=*0x00000406 ; //adresse du port COM1

outportb(base+3,0x0E); //utiliser le registre controle (@:base+3) pour initialiser les

paramètres demandés la vitesse c'est par défaut
9600 BAUDS
temp=inportb(base) ; //lecture du caractère saisi ,temp est une variable

printf("le caractère saisi est %c",temp);

printf("saisir un caractère");
scanf'("%c",c);

outportb(base,c); //envoi du caractère
}



Et je veux savoir si je peux manipuler les registres AH DX...de l'assembleur sous C?
Et si je veux modifier la vitesse de transmission ;comment faire?

S'il vous plait, j'ai besoin de votre aide pour resoudre l'exercice et corriger ce code.
(désolé pour le dérangement je suis encore débutant)

Merci infiniment,
Bonne journée

1 réponse

c_amigo Messages postés 5 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 30 novembre 2010
12 mai 2010 à 01:59
Bonjour,
l'exercice est résolu

et pour ceux qui sont intéressés voilà la solution




#include<stdio.h>
#include<dos.h>

main()
{ char c;
int temp;

int base=*0x00000400 ; //adresse du port COM1

temp=inportb(base+3);

outportb(base+3,temp|0x0E);
outportb(base+3,temp & 0xFE);
//utiliser le registre controle (@:base+3) pour initialiser les

paramètres demandés la vitesse c'est par défaut
9600 BAUDS

temp=inportb(base) ; //lecture du caractère saisi

printf("le caractère saisi est %c",temp);

printf("saisir un caractère");
scanf'("%c",&c);

outportb(base,c); //envoi du caractère

}

Bonne journée
0