Pilotage des 8 sorties du port //

Contenu du snippet

les valeurs b1 a b8 correspondent a des futur bouton b1 sortie 1 b2 sortie 2 etc...., Arret sert a ressortir du programme

Source / Exemple :


#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>
#define ADRESSEBASE 0x378

int main(void)

//ouverture du dialogue sur le port db25
{
if(ioperm(ADRESSEBASE, 2, 1))
  {
   perror("Erreur d'obtention des droits");
   return(1);
  }

//lecture de la valeur actuelle sur le port db25
printf("Valeur en entree: %d\n", inb(ADRESSEBASE));
//initialisation des valeurs

      //initialisation de la valeur du port db25
int bin=0;
     //initialisation des valeurs boutons
int b1=0;
int b2=0;
int b3=0;
int b4=0;
int b5=0;
int b6=0;
int b7=0;
int b8=0;
int b9=0;
     //initialisation des valeurs datas
int d1=0;
int d2=0;
int d3=0;
int d4=0;
int d5=0;
int d6=0;
int d7=0;
int d8=0;
do{
//demande de position des boutons 0=OFF   1=ON
printf(" Bouton ON=1    Bouton OFF=0\n");
printf("Quel valeur affecte a b1:");scanf("%d", &b1);
printf("Quel valeur affecte a b2:");scanf("%d", &b2);
printf("Quel valeur affecte a b3:");scanf("%d", &b3);
printf("Quel valeur affecte a b4:");scanf("%d", &b4);
printf("Quel valeur affecte a b5:");scanf("%d", &b5);
printf("Quel valeur affecte a b6:");scanf("%d", &b6);
printf("Quel valeur affecte a b7:");scanf("%d", &b7);
printf("Quel valeur affecte a b8:");scanf("%d", &b8);
printf("Arret :");scanf("%d", &b9);
//attribution des valeurs datas  selon le bouton et sa position
if (b1 == 1)
{
 d1=1;
}
else if (b1 != 1)
{
  d1 = 0;
}
if (b2 == 1)
{
 d2=2;
}
else if (b2 != 1)
{
  d2 = 0;
}
if (b3 == 1)
{
 d3=4;
}
else if (b3 != 1)
{
  d3 = 0;
}
if (b4 == 1)
{
 d4=8;
}
else if (b4 != 1)
{
  d4 = 0;
}
if (b5 == 1)
{
 d5=16;
}
else if (b5 == 0)
{
d5 = 0;
}
if (b6 == 1)
{
 d6=32;
}
else if (b6 == 0)
{
  d6 = 0;
}
if (b7 == 1)
{
 d7=64;
}
else if (b7 == 0)
{
  d7 = 0;
}
if (b8 == 1)
{
 d8=128;
}
else if (b8 == 0)
{
  d8 = 0;
}

  bin = d1+d2+d3+d4+d5+d6+d7+d8;

outb (bin, ADRESSEBASE);

printf("Valeur en entree: %d\n", inb(ADRESSEBASE));
}
while (b9 !=1 );

if(ioperm(ADRESSEBASE, 2, 0))
  {
   perror("Erreur de fermeture");
   return(1);
  }

  return(1) ;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.