Manipuler les ports sous C
C_amigo
-
c_amigo Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
c_amigo Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Manipuler les ports sous C
- Citez deux ports permettant de connecter directement un ordinateur à un écran (tv, vidéoprojecteur, etc.). - Guide
- Nettoyer port usb c - Accueil - Téléphones
- Free virtual serial ports - Télécharger - Émulation & Virtualisation
- Ports USB sur écran IIyama - Forum Ecran
- 2 ports HDMI mais un seul fonctionne - Forum Ecran
1 réponse
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
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