在我的学校我的项目是做一个简单的程序,控制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
啊哈。哪个平台? –