并口定义及并口编程基础
最近想利用服务器的并口做一些东西,于是上网查了下并口定义及相关编程方法,如下:
一、接口定义说明
电脑的并口,通常是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 |
地 |
另外 ,Linux例程如下:
<pre name="code" class="cpp">#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main()
{//open fileint fd;fd=open("/dev/port",O_RDWR);if(fd<0){perror("open file error:");return -1;}//operateunsigned 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);}//closeclose(fd);return 0;
}
经亲自测试,可以控制连接在管脚上的LED闪烁。至于模拟其他的总线或者别的控制,也就很简单了,无非是时序的问题。
并口定义及并口编程基础相关推荐
- oracle proc 定义宿主,oracle proc 编程基础及最小化案例
oracle proc 编程是在我的概念中是非常陌生的,学习了一天下来发现这东西真的好古老,但是依然健壮.稳定,其中间是编辑一个 .pc 的文件使用 proc 进行预处理,预处理后生成一个真正的.c文 ...
- 51单片机c语言程序控制,51单片机C语言编程基础及实例.pdf
基础知识: 51 单片机编程基础 第一节:单数码管按键显示 第二节:双数码管可调秒表 第三节:十字路口交通灯 第四节:数码管驱动 第五节:键盘驱动 第六节:低频频率计 第七节:电子表 第八节:串行口应 ...
- 品味树莓派:GPIO口定义、电气特性、启动状态等基础说明
文章目录 目录 GPIO口定义 电气特性 启动状态 总结 目录 树莓派相比成品化的电脑来说有很多独立的GPIO口可供开发使用,可以方便的实现很多实物相关的功能.本文将对树莓派开放给用户的GPIO口的针 ...
- C语言对p1口取反,单片机c语言编程基础(5页)-原创力文档
单片机的外部结构: 1. DIP40双列直插: 2. P0,P1,P2,P3四个8位准双向I/O引脚:(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20): ...
- 【嵌入式】非操作系统下GPIO口控制器及LED灯编程
非操作系统下GPIO口控制器及LED灯编程 GPIO控制器 概述 内部架构 端口寄存器 GPIO控制寄存器 GPIO数据寄存器 GPIO上拉寄存器 非操作系统LED灯闪烁 开发步骤 开发板上二极管 读 ...
- java编程一般类抽象类的定义,Java编程基础抽象类
本文主要是讲述Java编程基础-抽象类,更多Java技术知识,请登陆疯狂软件教育官网. 抽象类: 抽象:不具体,看不明白关键字abstract 抽象类的特点: 1.抽象方法只能定义在抽象类中,抽象类和 ...
- 1.2编程基础之变量定义、赋值及转换 10 Hello, World 的大小
http://noi.openjudge.cn/ch0102/10/ #include <bits/stdc++.h> using namespace std; int main( voi ...
- Python编程基础:实验5——函数定义与调用
Python编程基础:实验5--函数定义与调用 文章目录 Python编程基础:实验5--函数定义与调用 一.前言 二.我的环境 三.实验目的与要求 四.实验任务 1.程序填空 2.程序编程 五.最后 ...
- 6-3 定义并实现Book类及其__del__函数(高教社,《Python编程基础及应用》习题9-4)
图书馆里有很多的书, 请定义一个名为Book的类.该类的属性包括书名(字符串),书号(字符串),单价(浮点数):该类的构造函数接受书名,书号及单价三个参数并参成对象初始化:该类的__del__()函数 ...
最新文章
- 用python画太阳系_用 Python 动态模拟太阳系运转
- python charm下载安装教程-Python及Pycharm安装方法图文教程
- Python程序执行原理
- 学java好还是web前端好_到底是学习Java好,还是Web前端好?
- 荣耀x10max能不能升级为鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
- Android 学习 笔记_03. SQLite的使用
- WCF(一) ---- 简单调用
- mongoDB之find()
- 蓝牙学习笔记(四)——AC692x程序烧录
- python_内置字符串
- HTTP协议-HTTP权威指南
- 台式计算机鼠标应该插哪里,鼠标插在电脑哪里 鼠标的usb接口没反应如何解决...
- Oracle项目管理系统之供应商筛选及资格预审
- 【原创】从文华财经下载数据并且分析每个期货品种的贝塔值-云金杞
- 和平精英小程序服务器开小差,1个BUG存在了4年 光子通过小提示说出了无法修复的原因...
- 公司股权等比稀释是什么意思
- Apifox实战——微信的第三方小程序提审发布
- 安徽工贸职业技术学院计算机比赛,放飞青春,不负韶华!《追梦》——安徽工贸职业技术学院2019年宣传片...
- 网络系统(Java web)开发与设计项目实战——实现用户登录与注册
- VS2019下添加include和lib