Bonjour à tous j'aimerais amélioré un programme que j'ai fait pour communité avec mon GBF mais j'ai du mal a comprendre les ouvertures de port com en c .
Pourrirez-vous m'aider please en me donnant des codes sources ou des liens pour les utilisés ?
mon programme :
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<fcntl.h>
#include<io.h>
#include<errno.h>
#include<conio.h>
#define COM1 0x3f8
#define IER COM1+1
#define LCR COM1+3
#define BSRM COM1+1
#define BSRL COM1
#define RBR COM1
#define THR COM1
#define LSR COM1+5
#define MCR COM1+4
#define MSR COM1+6
#define SCR COM1+7
void init_UART(void);
void ecriture (void);
void main()
{
init_UART();
ecriture();
}
void init_UART()
{
asm{
mov al,0xff // DLAB a 1
mov dx,LCR
out dx,al
mov al,0x30 // BSRL a 2400(d)
mov dx,BSRL
out dx,al
mov al,0x00
mov dx,BSRM
out dx,al
mov al,0x03 // Reglage LCR parité 8bits, aucune parité, 1 stop
mov dx,LCR
out dx,al
mov al,0x00 // IER a 0 (pour windabe)
mov dx,IER
out dx,al
mov dx,RBR
in al,dx // Lecture pour "rien"
}
}
void ecriture (void)
{
char ordre,check,chck=1;
while(chck)
{
printf("a marche pas: %c\n",chck);
asm{
mov dx,THR
in al,dx
mov chck,al
}
}
while(ordre != 'q' && ordre != 'Q')
{
do // Buffer overflow?
{
asm{
mov dx,LSR
in al,dx
mov check,al
}
check = check & 0x40;
} while(check != 64);
ordre=getchar();
if(ordre == "@" )
ordre=0x40;
if(ordre == "A" )
ordre=0x41;
if(ordre == "B" )
ordre=0x42;
if(ordre == "C" )
ordre=0x43;
if(ordre == "D" )
ordre=0x44;
if(ordre == "E" )
ordre=0x45;
if(ordre == "F" )
ordre=0x46;
if(ordre == "G" )
ordre=0x47;
if(ordre == "H" )
ordre=0x48;
if(ordre == "I" )
ordre=0x49;
if(ordre == "J" )
ordre=0x4A;
if(ordre == "K" )
ordre=0x4B;
if(ordre == "L" )
ordre=0x4C;
if(ordre == "M" )
ordre=0x4D;
if(ordre == "N" )
ordre=0x4E;
if(ordre == "O" )
ordre=0x4F;
asm{
mov al,ordre
mov dx,COM1
out dx,al
}
sleep(1);
}
}
Merci d'avance si je me suis mal expliquer sur ce que je souhaites nésiter pas à me poser des questions .