Beispielprogramm für OPTOLCA, OPTOLCA/LC  

Testprogramm für OPTOLCA


  /*Bezeichnung:Testprogramm für OPTOLCA
**
Beschreibung:Ausgänge:
Beschreibung:8-Bit Schreiben auf port+0: Opto Out 1-8  werden gesetzt (Bit 0 - Opto1)
Beschreibung:8-Bit Schreiben auf port+1: Opto Out 9-16 werden gesetzt (Bit 0 - Opto9)
Beschreibung:16-Bit Schreiben auf port+0: Opto Out 1-16 werden gesetzt (Bit 0 - Opto1)

Beschreibung:Eingänge:
Beschreibung:Lesen von port+0: Opto-In 1 = Bit 0; Opto In 2 = Bit 1 .....
Beschreibung:Lesen von port+2: Lesen der Flip-Flop's für die Optokoppler:    
Beschreibung:     Opto-FF für Opto-In 1 = Bit 0
Beschreibung:     Flip-Flop's sind im Grundzustand 0
Beschreibung:     bei einer steigenden Flanke eines Optokopplers wird das
Beschreibung:     jeweilige Flip-Flop auf 1 gesetzt

Beschreibung:Rücksetzen eines einzelnen Flip-Flops:
Beschreibung:Schreiben der Flip-Flop Nr (von 0-15) auf port+2  (out port+2,kanal)
Beschreibung:Schreiben eines beliebigen Wertes auf port+3      (out port+3,0)
*/


#define port 0x1d0

int i;

main()
{
char c=0;
int j;

i=0;
do {
 out_test();                   /*Naechster Ausgang*/
 in_test();                    /*Eingänge anzeigen*/
 if(kbhit()) {
   c=getch();
   if(c=='0') {for(j=0;j!=16;++j) reset_ff(j);c=0;printf("%c",7);}
   }
 ++i;
 if(i>15) i=0;
}while(c=='0' || c==0);
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
out_test()
{
outp(port+2,0);                 /*Offset wieder 0*/
outpw(port,1 << i);             /*2 hoch i*/
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
in_test()
{
int j;
printf("OPTO-IN: ");
for(j=0;j<16;++j) if(get_in(j))    printf("1 "); else printf("0 ");
printf("FF-IN: ");
for(j=0;j<16;++j) if(get_in_ff(j)) printf("1 "); else printf("0 ");

printf("\n");
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
/*Holt Wert von OPTO-IN Kanal*/
get_in(int kanal)
{
return(inpw(port)&(1<<kanal));
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
/*Holt Wert von OPTO-IN FLIP-FLOP eines Kanals*/
get_in_ff(int kanal)
{
return(inpw(port+2)&(1<<kanal));
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
/*Setzt Flip-Flop von kanal (0-15) zurück)*/
reset_ff(int kanal)
{
outp(port+2,kanal);
outp(port+3,0);
}
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/