PROGRAMOVY PŘÍSTUP PRO RUZNÉ PROGRAMOVACÍ JAZYKY PRO MS-DOS. _________________________________________________________________ - Zápis dat na LPT port **************************** Turbo Pascal 7.0 ------------------ Uses Dos; Var addr:word; data:byte; e:integer; Begin addr:=MemW[$0040:$0008]; Val(ParamStr(1),data,e); Port[addr]:=data; End. Pro určení adresy portu je zde využito reprezentace pro BIOS, kde addr:=MemW[$0040:$0008] reprezentuje LPT1 a adresa addr:=MemW[$0040:$000A]; by reprezentovala port LPT2. Assembler: ---------------------- MOV DX,0378H MOV AL,n OUT DX,AL ,kde n značí vysílaná data (bajt) na LPT1 (0x378). BASIC: ---------------------- OUT &H378, N ,kde n značí vysílaná data (bajt) na LPT1 (0x378). Programovací jazyk C: ---------------------- outp(0x378,n); nebo outportb(0x378,n); kde n značí vysílaná data (bajt) na LPT1 (0x378). Pro C program je ale nutné uvést deklaraci promenných a knihoven. Následující příklad je pro překladač Borland C++ 3.1 #include #include #include /********************************************/ /*This program set the parallel port outputs*/ /********************************************/ void main (void) { clrscr(); /* clear screen */ outportb(0x378,0xff); /* output the data to parallel port */ getch(); /* wait for keypress before exiting */ } PRO ŘÍZENÍ LPT POD OS LINUX a programovací jazyk C //////////////////////////////////////////////////// #include #include #include #include #define base 0x378 /* printer port base address */ #define value 255 /* numeric value to send to printer port */ main(int argc, char **argv) { if (ioperm(base,1,1)) fprintf(stderr, "Couldn't get the port at %x\n", base), exit(1); outb(value, base); } Pokud tento zdrojový kód je uložen do například do souboru lpt_test.c, může být zkompilován příkazem: gcc -O lpt_test.c -o lpt_test --------------------------------------------------------------------- - Čtení dat z LPT portu **************************** Assembler: ----------------------------------- MOV DX,0379H IN AL,DX Výsledná hodnota registru je v akoumulátoru AL. BASIC: ------------------------------------ N = INP(&H379); ,kde N je výsledná přečtená hodnota z registru. Programovac jazyk C: ------------------------------------- in = inportb(0x379); nebo in = inp(0x379); ,kde v proměnné in je výskedná přečtená hodnota. Deklaraci proměnných lze provést podle dříve uvedeného programu pro výpis hodnoty pro překladač Borland C++ 3.1.