⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hw_acces.c

📁 isp1160_pci_usb_host_MP100.rar USB主机设备程序~!
💻 C
字号:
#include		<stdio.h>
#include		<dos.h>
#include		<conio.h>

#include		"hc_comm.h"
#include		"hw_acces.h"

unsigned int	g_ISA_base_address;
unsigned int	g_1161_command_address;
unsigned int	g_1161_data_address;

unsigned int	get_ISA_base_address( void );

unsigned int get_ISA_base_address( void )
{
	return ( g_ISA_base_address );
}


void read_register_burst_char( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	unsigned short	tmp;
	int				i;
	int				odd;

	odd		= length & 0x0001;

	if ( odd )
		length	&= ~0x1;

	disable();

	outport( g_1161_command_address, register_address );

	for ( i = 0; i < length; i += 2 )
	{
		tmp		= inport( g_1161_data_address );

		*(data + i + 1)		= tmp >> 8;
		*(data + i + 0)		= tmp & 0x00FF;
	}


	if ( odd )
	{
		tmp		= inport( g_1161_data_address );

		*(data + i + 0)		= tmp & 0x00FF;
	}

	enable();
}



void write_register_burst_char( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	unsigned short	tmp;
	int				i;

	register_address	+= 0x80;

	disable();

	outport( g_1161_command_address, register_address );

	for ( i = 0; i < length; i += 2 )
	{

		tmp		= (*(data + i + 1) << 8) | *(data + i);		/*  swap bytes  */
		outport( g_1161_data_address, tmp );
	}

	enable();
}


void read_register_burst_int( unsigned short register_address, unsigned char *data, unsigned short length  )
{
	int		i;

	disable();

	outport( g_1161_command_address, register_address );
	
	for ( i = 0; i < length; i++ )
		*data++		= inport( g_1161_data_address );

	enable();
}


void write_register_burst_int( unsigned short register_address, unsigned short *data, unsigned short length  )
{
	int		i;

	register_address	+= 0x80;

	disable();

	outport( g_1161_command_address, register_address );

	for ( i = 0; i < length; i++ )
		outport( g_1161_data_address, *data++ );

	enable();
}


unsigned long read_register32( unsigned short register_address )
{
	unsigned long tmp;
	unsigned long tmp_l;

	disable();

	outport( g_1161_command_address, register_address );

	tmp_l	 = inport( g_1161_data_address );

	tmp		 = inport( g_1161_data_address );

	tmp=(tmp<<16)|tmp_l    ;

	enable();

	return ( tmp );
}


void write_register32( unsigned short register_address, unsigned long value )
{
	register_address	+= 0x80;

	disable();

	outport( g_1161_command_address, register_address );
	
	outport( g_1161_data_address, (unsigned short)(value & 0x0000FFFF) );
	outport( g_1161_data_address, (unsigned short)(value >> 16)        );

	enable();
}


unsigned short read_register16( unsigned short register_address )
{
	unsigned short	tmp;

	disable();

	outport( g_1161_command_address, register_address );
	tmp	= inport( g_1161_data_address );
	
	enable();

	return ( tmp );
}


void write_register16( unsigned short register_address, unsigned short value )
{
	register_address	+= 0x80;
	
	disable();

	outport( g_1161_command_address, register_address );
	outport( g_1161_data_address,    value            );

	enable();
}


void write_register0( unsigned short register_address )
{
	register_address	+= 0x80;

	disable();

	outport( g_1161_command_address, register_address );

	enable();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -