Cours:TpiiChenillardDouble : Différence entre versions
(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= | ||
− | + | <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 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"); | |
− | //usleep(100000); | + | val=val<<1; |
− | + | val2=val2>>1; | |
− | + | //usleep(100000); | |
− | + | } | |
− | } | + | } |
+ | //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
Sommaire
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);
}