阅读:1009回复:3
并行口EPP的基本I/O
1. 并行口EPP的基本I/O
Ÿ 首先定义类KIoRange的一个实例,以对应EPP KIoRange m_ParPortIos; status = m_ParPortIos.Initialize( 0x378, // LPT1 Bus address TRUE, //InCpuIoSpace 8, // Device size TRUE // Map to system space ); Ÿ 下面就可以用类KIoRange的成员函数来访问EPP的寄存器了 // EPP的寄存器相对于EPP基址的偏移量 #define CONTROL 2 //对应EPP的控制寄存器(37A) #define ADDRESS 3 //对应EPP的地址寄存器(37B) #define EDATA 4 //对应EPP的扩展数据寄存器(37C) //设置控制寄存器 m_ParPortIos.outb(CONTROL,0x80); // EPP读 m_ParPortIos.outb(ADDRESS,addr); //addr是实际编程中你要访问的设备单元的地址 UCHAR data = m_DeviceIos.inb(EDATA) // EPP写 m_ParPortIos.outb(ADDRESS,addr); //addr是实际编程中要访问的设备单元的地址 m_DeviceIos.outb(EDATA,data); //data是实际要写入的数据 请问大侠们,m_DeviceIos是什么?有高分奖 |
|
最新喜欢:lily31...
|
沙发#
发布于:2002-07-25 10:47
高手都到哪儿去了,没人能帮我吗
|
|
|
板凳#
发布于:2002-07-25 10:57
下面的东西可能对你有帮助
void EPPReadByte(unsigned short addr,unsigned short *data) { …… LPT=0x378; Status=LPT+1; Control=LPT+2; EPPAddr=LPT+3; EPPData=LPT+4; /*输出地址*/ outportb(Control,0xC4); /*Disable Port Read,以及初始化nDataStrobe, nAddre ssStrobe*/ /*和nWrite */ outportb(EPPAddr,addr);/*Output address to address register,此时nAddressSt robe*/ robe*/ /*和nWrite管脚变为低电平*/ outportb(Status,1); /*确保Status寄存器的bit0清除*/ /*读入数据*/ outportb(Control,0xE4); /*Enable Port Read*/ *data=inportb(EPPData);/*读入数据,此时nDataStrobe变为低电平nWrite为高电平 */ outportb(Status,1); /*确保Status寄存器的bit0清除*/ } |
|
|
地板#
发布于:2002-07-25 11:02
谢谢楼上的朋友,分全给你,真不知\"大侠们\"哪去了
[编辑 - 7/25/02 by yunfangfan] |
|
|