分享
 
 
 

并口与编程

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

并口即个人电脑并行接口是从简单的打印机接口发展而来。早期的并口是单向口,它只是简单的把数据

从计算机传送到打印机。随着双向并口的出现,并口的用途也越来越广泛。相较于串口它有传输快、可靠

性高,编程简单的特点。在近距离通信方面正在逐步取代串口。

由于双向并口是各制造商独自设计没有一个统一的规范。逐渐形成了如下的并口模式:

1、原始并口SPP 单向8位+双向4位

2、简单双向PS/2 双向8位

3、增强并口EPP 高速双向

4、扩展并口ECP 高速双向可靠

5、多模式口ECP+EPP 可工作于多种模式

25针接口管脚分布图

2-9 数据 D0-D7 双向

1 选通 /STB

14 自动换行 /AFD 输出

16 初始化 INIT

17 选中 /SIN

10 应答 ACK

11 忙 /BUSY

12 页尽 PE 输入

13 联机 SLCT

15 出错 ERROR

18-25 接地 GND 回线

端口地址:

3BCH-3BEH

378H-37AH

278H-27AH

其中第一个地址是基地址,即数据寄存器,第二个是状态,第三个是命令寄存器。

EPP寄存器是基址+3到+7共附加5个寄存器,ECP是基址+400H到+402H之间的寄存器

端口位分配:

状态: D7 D6 D5 D4 D3 D2 D1 D0

- - ? IRQ SIN INIT AFD STB

命令 BUSY ACK PE SLCT ERROR - - -

注意:一些早期的并口以及现在所有的并口将"?"置1可以输入数据

访问端口:主要有直接I/O及间接I/O。其中间接I/O包括BIOS,API,VXD,控件等。

直接I/O:

unsigned char InPort(unsigned short Addr)

{

unsigned char Data

asm{

mov dx,Addr

in dx,al

mov Data,al

}

return Data;

}

void OutPort(unsigned short Addr,unsigned char Data)

{

asm{

mov dx,addr

mov al,Data

out dx,al

}

}

间接I/O在此从略。

通信握手:一般使用SIN,SLCT进行联络。

从并口输出数据:

PC检测BUSY是否忙,忙则等待。发数据,置STB,检测ACK是否响应,是则清STB否则等待。

外设检测STB是否选通,是则置BUSY否则等待。读数据,处理后发ACK清忙。

从并口输入数据:将"?"置1设为输入数据的模式。

外设检测STB是否忙,忙则等待。发数据,置ACK,检测AFD是否响应,是则清ACK否则等待。

PC检测ACK是否选通,是则置STB否则等待。读数据,处理后发AFD清忙。

以下是计算机收数据的一个类:

//---------------------------------------------------------------------------

//start Paralle.h

#ifndef ParallelH

#define ParallelH

//---------------------------------------------------------------------------

class TParaComm

{

private:

short DataAddr;

short StatusAddr;

short CommandAddr;

unsigned __fastcall InPort(short Addr);

void __fastcall OutPort(unsigned char Data,short Addr);

public:

__fastcall TParaComm(int PortAddr);

void __fastcall InitComm(void);

bool __fastcall GetConect(bool Wait);

bool __fastcall ReadPort(unsigned char *Data,int Time);

};

extern TParaComm *Para;

#endif

//end Paralle.h

//start Paralle.cpp

#include "Paralle.h"

TParaComm *Para;

unsigned __fastcall TParaComm::InPort(short Addr)

{

unsigned char Temp;

asm{

MOV DX,Addr

in AL,DX

MOV Temp,AL

}

return Temp;

}

//---------------------------------------------------------------------------

void __fastcall TParaComm::OutPort(unsigned char Data,short Addr)

{

asm{

MOV DX,Addr

MOV AL,Data

out DX,AL

}

}

//---------------------------------------------------------------------------

__fastcall TParaComm::TParaComm(int PortAddr)

{

DataAddr=PortAddr;

StatusAddr=DataAddr+1;

CommandAddr=StatusAddr+1;

}

//---------------------------------------------------------------------------

void __fastcall TParaComm::InitComm(void)

{

OutPort(0xEC,CommandAddr);

}

//---------------------------------------------------------------------------

bool __fastcall TParaComm::GetConect(bool Wait)

{

unsigned char Temp;

do

{

Temp=InPort(StatusAddr);

if(!(Temp&0x10)) return true;

}while(Wait);

return false;

}

//---------------------------------------------------------------------------

bool __fastcall TParaComm::ReadPort(unsigned char *Data,int Time)

{

extern void __fastcall Sleep(int ms);//call API

unsigned char Temp,Ch;

Temp=InPort(CommandAddr);

OutPort(Temp|0x01,CommandAddr);

do

{

Ch=InPort(StatusAddr);

if(!(Ch&0x40))

{

OutPort(Temp&0xFE,CommandAddr);

*Data=InPort(DataAddr);

return true;

}

Sleep(1);

}while(--Time!=0);

OutPort(Temp&0xFE,CommandAddr);

return false;

}

//---------------------------------------------------------------------------

//end Paralle.cpp

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有