// Para los Ing en Electronica aqui les tengo un programa para manejar el puerto Paralelo

// El programa es para una matriz de diodos 5 x 7  (para que funcione tienes que armar un circuito //convinacional que gracias a el con el puerto paralelo puedas manipular la matriz de diodos)

#include<stdio.h>
#include<conio.h>
#include<dos.h>

int a,b,c,d,e,f,g,H,i,j;
char msg[3];
char h=10;
void cero ()
{
outportb(0x378,14); delay(h);
outportb(0x378,49); delay(h);
outportb(0x378,81); delay(h);
outportb(0x378,113);delay(h);
outportb(0x378,145);delay(h);
outportb(0x378,177);delay(h);
outportb(0x378,206);delay(h);
outportb(0x378,224);delay(h);
}

void uno ()
{
outportb(0x378,31); delay(h);
outportb(0x378,36); delay(h);
outportb(0x378,68); delay(h);
outportb(0x378,100);delay(h);
outportb(0x378,133);delay(h);
outportb(0x378,166);delay(h);
outportb(0x378,196);delay(h);
outportb(0x378,224);delay(h);
}
void dos ()
{
outportb(0x378,31); delay(h);
outportb(0x378,33); delay(h);
outportb(0x378,65); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,144);delay(h);
outportb(0x378,176);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}
void tres ()
{
outportb(0x378,31); delay(h);
outportb(0x378,48); delay(h);
outportb(0x378,80); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,144);delay(h);
outportb(0x378,176);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}
void cuatro ()
{
outportb(0x378,16); delay(h);
outportb(0x378,48); delay(h);
outportb(0x378,80); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,145);delay(h);
outportb(0x378,177);delay(h);
outportb(0x378,209);delay(h);
outportb(0x378,224);delay(h);
}
void cinco ()
{
outportb(0x378,31); delay(h);
outportb(0x378,48); delay(h);
outportb(0x378,80); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,129);delay(h);
outportb(0x378,161);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}
void seis ()
{
outportb(0x378,31); delay(h);
outportb(0x378,49); delay(h);
outportb(0x378,81); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,129);delay(h);
outportb(0x378,161);delay(h);
outportb(0x378,193);delay(h);
outportb(0x378,224);delay(h);
}
void siete ()
{
outportb(0x378,16); delay(h);
outportb(0x378,48); delay(h);
outportb(0x378,80); delay(h);
outportb(0x378,126);delay(h);
outportb(0x378,144);delay(h);
outportb(0x378,176);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}
void ocho ()
{
outportb(0x378,31); delay(h);
outportb(0x378,49); delay(h);
outportb(0x378,81); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,145);delay(h);
outportb(0x378,177);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}
void nueve ()
{
outportb(0x378,16); delay(h);
outportb(0x378,48); delay(h);
outportb(0x378,80); delay(h);
outportb(0x378,127);delay(h);
outportb(0x378,145);delay(h);
outportb(0x378,177);delay(h);
outportb(0x378,223);delay(h);
outportb(0x378,224);delay(h);
}

void funsion (int x)
{
if(x==0) cero ();
if(x==1) uno ();
if(x==2) dos ();
if(x==3) tres ();
if(x==4) cuatro ();
if(x==5) cinco ();
if(x==6) seis ();
if(x==7) siete ();
if(x==8) ocho ();
if(x==9) nueve ();
}
void main ()
{ clrscr();
printf("PRESIONE ENTER PARA SALIR");
for(a=0; !kbhit() ;a++)
{
if(a==1000) a=0;
sprintf(msg,"%d",a);
if(a<=9)
{
b= msg[0];
c= msg[1];
d= msg[2];
for(char y=0; !kbhit() ;y++)
{
if(y==6) break;
funsion (b);
funsion (c);
funsion (d); gotoxy(3,3); printf("%d %s",a,msg);
}
}
if(a>=10 & a<=99)
{
e= msg[0];
f= msg[1];
g= msg[2];
for(char y=0; !kbhit() ;y++)
{
if(y==6) break;
funsion (f);
funsion (e);
funsion (g); gotoxy(3,4); printf("%d %s",a,msg);
}
}
if(a>=100 & a<=999)
{
H= msg[0];
i= msg[1];
j= msg[2];
for(int y=0; !kbhit() ;y++)
{
if(y==6) break;
funsion (j);
funsion (i);
funsion (H); gotoxy(3,5); printf("%d %s",a,msg);
}
}

}
}