ANNEXE 1
#include<conio.h>
#include<stdio.h>
#include<dos.h>
Unsigned char lu;
Char sortie=0;
Static int adr_base=0x3F8;
/*************************Configuration
***************************/
void configurer(void)
{
outport(adr_base+3,0x80);
outport(adr_base,0x0c);
outport(adr_base+1,0x00);
outport(adr_base+3,0x03);
outport(adr_base+4,0x03);
}
/******************* Lecture d'un caractère du
clavier *********************/
unsigned char lecture (void)
{
unsigned char lu;
lu=test_clavier();
if(lu==1)
{
lu=getch();
return(lu);
}
else return(0);
}
/*********************** Teste du
clavier ***********************/
unsigned char test_clavier(void)
{
if(kbhit()) return(1);
else return(0);
}
/******************** Test réception du
caractère ***********************/
int test_prêt_reception (void)
{
unsigned char lu;
lu=inportb(adr_base+5);
lu=lu&1;
if(lu!=0) return(1);
else return(0);
}
/********************Tester l'envoi du
caractère***************************/
unsigned char test_prêt_envoyer(void)
{
unsigned char lu;
lu=inportb(adr_base+5);
lu=lu&0x20;
if(lu=!0) return(1);
else
{
return(0);
}
}
/*************** Envoyer le caractère au port RS
232 ***********************/
void
envoyer(void)
{
unsigned char lu,lu1;
lu=lect_clavier();
if(lu!=0)
lu1=test_pret_envoie();
if(lu1=lu)
{
{
outportb(adr_base,lu);
if(lu==0x1b) sortie=1;
}
}
}
/**********************main************************/
void recevoir(void)
{
unsigned char lu;
lu= test_reception();
if(lu!=0)
{
lu=inportb(adr_base);
if(lu==0x1b) sortie=1;
printf("%c",lu);
}
}
ANNEXE 2
/******Programme d'émission d'un
caractère sur le port parallèle*****/
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#define PORT 0X378
/*****************Procédure de
transmission des caractères******************/
int EnvoieOctet (unsigned char Valeur)
unsigned char Retour;
outportb(PORT,Valeur&0x0F);
while(((inpportb(PORT+1)&0xF8)&128)==0);
Retour1 =((inportb(PORT+1)&0xF8)>>3)&0x0F;
outportb(PORT,(Valeur>>4)|0x10);
Retour2=while(((inportb(PORT+1)&0xF8)&128)!=0);
Retour = Retour1|Retour2;
(Valeur==Retour);
/**************************main
d'émission****************************/
void main(void)
unsigned char valeur;
clrscr();
do
{
valeur= getch();
EnvoieOctet(valeur);
printf("%c",valeur);
}while (valeur!=0x1b);
}
/****Programme de réception d'un
caractère sur le port parallèle*****/
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#define PORT 0X378
/********************Procédure de
réception des caractères*****************/
unsigned char RecOctet( void )
{
unsigned char LoNib, HiNib;
while((((inport(PORT+1)&0xF8)&128)==0));
LoNib =( (inportb(PORT+1)&0xF8) >> 3 ) & 0x0F;
outportb(PORT,LoNib);
while((( (inportb(PORT+1)&0xF8) & 128 ) != 0 ));
HiNib = ( (inportb(PORT+1)&0xF8) << 1 ) & 0xF0;
outportb(PORT,((HiNib >> 4 ) | 0x10 ));
return( LoNib | HiNib );
}
/**************************main de
réception****************************/
void main(void)
{
unsigned char valrecu;
clrscr();
do
{
valrecu=RecOctet();
printf("%c",valrecu);
} while(valrecu!=0x1b);
}
|