A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
oktatas:programozas:c:portkezeles [2017/10/02 20:29] |
oktatas:programozas:c:portkezeles [2019/08/21 17:55] (aktuális) admin létrehozva |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
+ | [[oktatas:programozás:c|< C]] | ||
+ | |||
+ | ====== Portkezelés ====== | ||
+ | ===== GCC ===== | ||
+ | |||
+ | |||
+ | |||
+ | <code c portkezeles.c> | ||
+ | #include <sys/io.h> | ||
+ | | ||
+ | main() | ||
+ | { | ||
+ | int ertek; | ||
+ | int lab1, lab2, lab3, lab4, lab5, lab6, lab7, lab8, | ||
+ | | ||
+ | //Ellenőrizzük írható-e a port (jog) | ||
+ | if(ioperm(0x378, 3, 1)) | ||
+ | { | ||
+ | printf("Nincs jogod a portot írni\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | | ||
+ | /* Ha lab1 = 1, akkor a lab1 be van kapcsolva. 0 esetén ki */ | ||
+ | lab1 = 0; //Kikapcsolva | ||
+ | lab2 = 1; //Bekapcsolva | ||
+ | lab3 = lab4 = lab5 = lab6 = lab7 = lab8 = 0; //Mind kikapcsolva | ||
+ | | ||
+ | ertek = lab1*1 + lab2*2 + lab3*4 + lab4*8 + lab5*16 + lab6*32 + lab7* 64 + lab8*128; | ||
+ | | ||
+ | //A 0x378-as portra írjuk az értéket. | ||
+ | outb(ertek, 0x378); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== Turbo vagy Borland C (DOS) ===== | ||
+ | output(portcím, adat); | ||