在我的學校我的項目是做一個簡單的程序,控制LED燈gcc編譯器中的outp()對應部分是什麼?
我的教授說,outp()在conio.h中,我知道conio.h不是標準的。 )OUTP的
例如(
//assume that port to be used is 0x378
outp(0x378,1); //making the first LED light
在此先感謝
在我的學校我的項目是做一個簡單的程序,控制LED燈gcc編譯器中的outp()對應部分是什麼?
我的教授說,outp()在conio.h中,我知道conio.h不是標準的。 )OUTP的
例如(
//assume that port to be used is 0x378
outp(0x378,1); //making the first LED light
在此先感謝
如何寫入並行端口依賴操作系統,而不是編譯器上。在Linux中,您可以打開適合您的並行端口的設備文件,該文件在PC硬件上爲/dev/lp1
,端口號爲0x0378。
然後,解釋MS docs for _outp
,我想你要與值1到並行端口寫一個字節。這只是
FILE *fp = fopen("/dev/lp1", "wb");
// check for errors, including permission denied
putc(1, fp);
你兩兩件事混淆。編譯器爲OS創建程序。您的學校項目爲DOS創建了一個程序。 outp(0x378,1);
本質上是一個DOS函數。它寫入並行端口。其他操作系統使用其他命令。
GCC是一個編譯器,定位到多個操作系統。在每個操作系統上,GCC將能夠使用特定系統頂部的頭文件。
它通常將是更復雜一點。 DOS一次運行一個程序,所以沒有端口0x378
的爭用。關於其他所有操作系統都會同時運行更多的程序,因此您首先必須弄清楚誰能得到它。
OUTP()函數製作的第一個32位版本的Windows(98/95(太在NT,2000和更高版本的Windows,他們被禁止直接存儲器存取完全的http:// www.beyondlogic.org/是一個很好的網站,可以讓那些對這些東西和舊端口硬件感興趣的人使用。例如,他們有一個驅動程序,可以在Windows XP以後的版本中使用outp()。因爲我嘗試過了,但是效果很好,我在XP機器上用並行端口做了一個聖誕節燈光閃光燈LED顯示, – Lundin
你可以,只要你有寫權限/dev/port
(root或具有寫權限某些用戶)寫/dev/port
從Linux的用戶空間做到這一點。你可以在shell中使用:
echo -en '\001' | dd of=/dev/port bs=1 count=1 skip=888
(注意888十進制是378十六進制)。我曾經用這種方式完全在shell腳本中爲Linux編寫了一個可用的並行端口驅動程序。 (這是相當緩慢的,但!)
您可以像這樣在Linux中做到這一點在C:
f = open("/dev/port", O_WRONLY);
lseek(f, 0x378, SEEK_SET);
write(f, "\01", 1);
顯然,加#include
和錯誤處理。
LED燈是什麼?在什麼平臺上? –
我的意思是將一盞LED燈連接到我的電腦的並行端口。 – nmepntgrm
啊哈。哪個平臺? –