并口定义及并口编程基础
2014-11-05 23:29
274 查看
最近想利用服务器的并口做一些东西,于是上网查了下并口定义及相关编程方法,如下:
一、接口定义说明
电脑的并口,通常是25针. 接口定义如下:
功能说明:
二、并口编程基础
这些引脚,其实就是I/O口。而且是可以控制的,以软件的方式,非常简单。
在计算机内部,对应的寄存器如下:
0x378是8bit数据寄存器的地址,对应并口针的顺序是9,8,7,6,5,4,3,2
0x379是状态寄存器,11,10,12,13,15
- - -
0x37A是控制寄存器,-
- - 并口中断允许位,17,16,14,1
也就是说PC的0x378可以用来做输入和输出,0x37A的低4位可以用来输出,0x379是输入。这样就可以用并口模拟很多时许,比如IIC、JTAG、SPI等等。
注意:上述的寄存器地址是以0x378为基地址的。如果基地址为0x3F0,那么他们的数据、状态、控制寄存器地址分别为0x3F0、0x3F1、0x3F2。(基地址缺省的是0x378,也可在BIOS里重新设置)
输入函数:int inport(int address); address就是上面的寄存器地址
输出函数:int outport(int address,int
value);
无论是DOS下编程、还是Windows下,都可用。
三、25针并口具体定义
Pin Name Dir Description
1 /STROBE -> Strobe
2 D0 -> Data Bit 0
3 D1 -> Data Bit 1
4 D2 -> Data Bit 2
5 D3 -> Data Bit 3
6 D4 -> Data Bit 4
7 D5 -> Data Bit 5
8 D6 -> Data Bit 6
9 D7 -> Data Bit 7
10 /ACK <- Acknowledge
11 BUSY <- Busy
12 PE <- Paper End
13 SEL <- Select
14 /AUTOFD -> Autofeed
15 /ERROR <- Error
16 /INIT -> Initialize
17 /SELIN -> Select In
18 GND -- Signal Ground
19 GND -- Signal Ground
20 GND -- Signal Ground
21 GND -- Signal Ground
22 GND -- Signal Ground
23 GND -- Signal Ground
24 GND -- Signal Ground
25 GND -- Signal Ground
另外 ,Linux例程如下:
经亲自测试,可以控制连接在管脚上的LED闪烁。至于模拟其他的总线或者别的控制,也就很简单了,无非是时序的问题。
一、接口定义说明
电脑的并口,通常是25针. 接口定义如下:
针 | 方向 |
2,3,4,5,6,7,8,9 | 双向 |
1,14,16,17 | 输出 |
10,11,12,13,15 | 输入 |
18,19,20,21,22,23,24,25 | 地 |
二、并口编程基础
这些引脚,其实就是I/O口。而且是可以控制的,以软件的方式,非常简单。
在计算机内部,对应的寄存器如下:
0x378是8bit数据寄存器的地址,对应并口针的顺序是9,8,7,6,5,4,3,2
0x379是状态寄存器,11,10,12,13,15
- - -
0x37A是控制寄存器,-
- - 并口中断允许位,17,16,14,1
也就是说PC的0x378可以用来做输入和输出,0x37A的低4位可以用来输出,0x379是输入。这样就可以用并口模拟很多时许,比如IIC、JTAG、SPI等等。
注意:上述的寄存器地址是以0x378为基地址的。如果基地址为0x3F0,那么他们的数据、状态、控制寄存器地址分别为0x3F0、0x3F1、0x3F2。(基地址缺省的是0x378,也可在BIOS里重新设置)
输入函数:int inport(int address); address就是上面的寄存器地址
输出函数:int outport(int address,int
value);
无论是DOS下编程、还是Windows下,都可用。
三、25针并口具体定义
Pin Name Dir Description
1 /STROBE -> Strobe
2 D0 -> Data Bit 0
3 D1 -> Data Bit 1
4 D2 -> Data Bit 2
5 D3 -> Data Bit 3
6 D4 -> Data Bit 4
7 D5 -> Data Bit 5
8 D6 -> Data Bit 6
9 D7 -> Data Bit 7
10 /ACK <- Acknowledge
11 BUSY <- Busy
12 PE <- Paper End
13 SEL <- Select
14 /AUTOFD -> Autofeed
15 /ERROR <- Error
16 /INIT -> Initialize
17 /SELIN -> Select In
18 GND -- Signal Ground
19 GND -- Signal Ground
20 GND -- Signal Ground
21 GND -- Signal Ground
22 GND -- Signal Ground
23 GND -- Signal Ground
24 GND -- Signal Ground
25 GND -- Signal Ground
针脚 | 功能 | 针脚 | 功能 |
1 | 选通端,低电平有效 | 10 | 确认,低电平有效 |
2 | 数据通道0 | 11 | 忙 |
3 | 数据通道1 | 12 | 缺纸 |
4 | 数据通道2 | 13 | 选择 |
5 | 数据通道3 | 14 | 自动换行,低电平有效 |
6 | 数据通道4 | 15 | 错误,低电平有效 |
7 | 数据通道5 | 16 | 初始化,低电平有效 |
8 | 数据通道6 | 17 | 选择输入,低电平有效 |
9 | 数据通道7 | 18-25 | 地 |
<pre name="code" class="cpp">#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main() { //open file int fd; fd=open("/dev/port",O_RDWR); if(fd<0) { perror("open file error:"); return -1; } //operate unsigned char buf[2]; while(1) { lseek(fd,0x378,SEEK_SET); buf[0]=0xff; write(fd,buf,1); sleep(1); printf("LED ON \r\n"); lseek(fd,0x378,SEEK_SET); buf[0]=0x00; write(fd,buf,1); sleep(1); } //close close(fd); return 0; }
经亲自测试,可以控制连接在管脚上的LED闪烁。至于模拟其他的总线或者别的控制,也就很简单了,无非是时序的问题。
相关文章推荐
- 并口定义及其编程基础之一:并口说明
- 并口定义及其编程基础之一:并口说明
- 并口定义及并口编程基础
- VC 串口编程基础之单工、半双工和全双工的定义和区别
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
- 第2章 Java编程基础——FAQ2.24 数组如何定义和初始化?
- 并口编程 并口定义
- 编程基础知识之常量定义
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
- 1.2编程基础之变量定义、赋值及转换
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用
- [NOI题库]1.2编程基础之变量定义、赋值及转换 题解
- 1.2编程基础之变量定义、赋值及转换
- NOI题解(1.2编程基础之变量定义、赋值及转换)
- Visual C++.NET GDI+编程基础
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- Visual C++.NET编程基础讲座之四
- ADO编程中ATL所遇到的定义问题
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分
- 编程经验点滴(一)——《C 语言中定义字符串的问题》