Cours:TpiiChenillardDouble : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « {{RetourVers/TpII}} =Solution avec une boucle while= #include "commcarte.h" void printbits(unsigned char n) { int i; for (i=7;i>=0;i--) printf("%d", (n >> i ) ... »)
 
m
 
(4 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{RetourVers/TpII}}
 
{{RetourVers/TpII}}
 +
 +
=<span style="color:#FF0000;">Remarques</span>=
 +
Si vous copiez les solutions telles quelles
 +
*l'affichage se fait par défaut sur votre PC avec des printf
 +
*ne modifiez pas la fonction printbits, elle sert uniquement à faire un affichage binaire
 +
*il suffit de décommenter les lignes utiles pour faire l'affichage sur les leds de la carte
  
 
=Solution avec une boucle while=
 
=Solution avec une boucle while=
  
#include "commcarte.h"
+
<source lang="c">
void printbits(unsigned char n)
+
#include "commcarte.h"
{
+
void printbits(unsigned char n)
  int i;
+
{
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
+
  int i;
}<br>
+
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
int main()
+
}
{
+
 
  int device;
+
int main()
  //device=openParPort("/dev/parport0");
+
{
  unsigned char val,val2,cpt=0;
+
  int device;
  while (cpt<3)
+
  //device=openParPort("/dev/parport0");
  {
+
  unsigned char val,val2,cpt=0;
    cpt++;
+
  while (cpt<3)
    val=0x01;  // 0000 0001
+
  {
    val2=0x80; // 1000 0000
+
    cpt++;
    while (val)
+
    val=0x01;  // 0000 0001
    {
+
    val2=0x80; // 1000 0000
      //ecrireParPort(device,val|val2);
+
    while (val)
      printbits(val|val2);printf("\n");
+
    {
      val=val<<1;
+
      //ecrireParPort(device,val|val2);
      val2=val2>>1;
+
      printbits(val|val2);printf("\n");
       //usleep(100000);
+
      val=val<<1;
    }
+
      val2=val2>>1;
  }
+
      //usleep(100000);
  //closeParPort(device);  
+
    }
  }
+
  }
 +
  //closeParPort(device);
 +
}
 +
</source>
 +
 
 +
=Solution avec boucle for=
 +
 
 +
==multiplication/division par 2==
 +
 
 +
<source lang="c">
 +
#include "commcarte.h"
 +
void printbits(unsigned char n)
 +
{
 +
  int i;
 +
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
 +
}
 +
 
 +
int main()
 +
{
 +
  int device;
 +
  //device=openParPort("/dev/parport0");
 +
  unsigned char i,j,cpt;
 +
  for (cpt=0;cpt<3;cpt++)
 +
  {
 +
    j=0x80;  // 1000 0000
 +
    for (i=1;i>0;i*=2)
 +
    {
 +
      //ecrireParPort(device,i|j);
 +
       printbits(i|j);printf("\n");
 +
      //usleep(100000);
 +
      j=j/2;
 +
    }
 +
  }
 +
  //closeParPort(device);  
 +
}
 +
</source>
 +
 
 +
==décalage de n bits==
 +
 
 +
<source lang="c">
 +
#include "commcarte.h"
 +
void printbits(unsigned char n)
 +
{
 +
  int i;
 +
  for (i=7;i>=0;i--) printf("%d", (n >> i ) & 1);
 +
}
 +
 
 +
int main()
 +
{
 +
  int device;
 +
  //device=openParPort("/dev/parport0");
 +
  unsigned char i,j,cpt;
 +
  for (cpt=0;cpt<3;cpt++)
 +
  {
 +
    j=7;
 +
    for (i=0;i<8;i++)
 +
    {
 +
      //ecrireParPort(device,1<<i|1<<j);
 +
      printbits(1<<i|1<<j);printf("\n");
 +
      //usleep(100000);
 +
      j--;
 +
    }
 +
  }
 +
  //closeParPort(device);
 +
}
 +
</source>
  
 
{{RetourVers/TpII}}
 
{{RetourVers/TpII}}

Version actuelle datée du 18 décembre 2012 à 20:35

retour vers la page des Tps II

Remarques

Si vous copiez les solutions telles quelles

  • l'affichage se fait par défaut sur votre PC avec des printf
  • ne modifiez pas la fonction printbits, elle sert uniquement à faire un affichage binaire
  • il suffit de décommenter les lignes utiles pour faire l'affichage sur les leds de la carte

Solution avec une boucle while

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char val,val2,cpt=0;
  while (cpt<3)
  {
    cpt++;
    val=0x01;  // 0000 0001
    val2=0x80; // 1000 0000
    while (val)
    {
      //ecrireParPort(device,val|val2);
      printbits(val|val2);printf("\n");
      val=val<<1;
      val2=val2>>1;
      //usleep(100000);
    }
  }
  //closeParPort(device); 
}

Solution avec boucle for

multiplication/division par 2

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char i,j,cpt;
  for (cpt=0;cpt<3;cpt++)
  {
    j=0x80;  // 1000 0000
    for (i=1;i>0;i*=2)
    {
      //ecrireParPort(device,i|j);
       printbits(i|j);printf("\n");
      //usleep(100000);
      j=j/2;
    }
  }
  //closeParPort(device); 
}

décalage de n bits

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char i,j,cpt;
  for (cpt=0;cpt<3;cpt++)
  {
    j=7;
    for (i=0;i<8;i++)
    {
      //ecrireParPort(device,1<<i|1<<j);
      printbits(1<<i|1<<j);printf("\n");
      //usleep(100000);
      j--;
    }
  }
  //closeParPort(device); 
}

retour vers la page des Tps II