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

📄 ch375h.c

📁 USB 1.1 U Device for CH375 & USB 2.0 for CH375A 读写usb超精简的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//=================================================================================================
//*************************************************************************************************
// Module Name  : CH375H.C
// Device object: 
// Create date  : 2005-11-11 
// Modify date  : 2005-11-11 
// Description  : USB 1.1 Host for CH375 
//                USB 2.0 Host for CH375A 
// Author       : Li yuanzheng 
// Version      : V1.0 
//*************************************************************************************************
//=================================================================================================
// 
//-------------------------------------------------------------------------------------------------
// Includes 
//-------------------------------------------------------------------------------------------------
// 未调试过
// 

#include <regx52.h>                       // SFR declarations 

#define CH375HF_DEFINITION   1            // Definition of the assign 
#include "CH375H.H"

//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序 
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
// 
//=================================================================================================
// CH375与MCU以并口方式连接 
//=================================================================================================
// 
#if MCUConnectMode == 1 

//-------------------------------------------------------------------------------------------------
// 总线I/O 的单片机 
#if MCUBusIOMode == 1 
//-------------------------------------------------------------------------------------------------
// 
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令,最小周期为4uS,否则之前之后各延时2uS 
void xWriteCH375Cmd( UINT8 mCmd ) 
{
	mDelayuS( 2 );           // 至少延时1uS 
	CH375_CMD_PORT = mCmd;
	mDelayuS( 2 );           // 至少延时2uS 
}		

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据,最小周期为1.5uS,否则之后延时1.5uS 
void xWriteCH375Data( UINT8 mData ) 
{
	CH375_DAT_PORT = mData;
	mDelayuS( 2 );           // 至少延时2uS 
}	

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据,最小周期为1.5uS,否则之前延时1.5uS 
UINT8 xReadCH375Data( void ) 
{
	UINT8	mData;

	mDelayuS( 2 );           // 至少延时1uS 
	mData = CH375_DAT_PORT;

	return( mData );
}

//-------------------------------------------------------------------------------------------------
// 非总线I/O 的单片机 
#else
//-------------------------------------------------------------------------------------------------
// 
//-------------------------------------------------------------------------------------------------
// 由于使用通用I/O模块并口读写时序,所以进行初始化 
void CH375_PORT_INIT( void )  
{
	CH375_CS = 1;
	CH375_WR = 1;
	CH375_RD = 1;
	CH375_A0 = 0;
	PORT = 0xFF;             // 并口输入 
}

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令,最小周期为4uS,否则之前之后各延时2uS 
void xWriteCH375Cmd( UINT8 mCmd ) 
{
	mDelayuS( 2 );           // 至少延时1uS 
	PORT = mCmd;             // 向CH375的并口输出数据 
	CH375_A0 = 1;
	CH375_CS = 0;
	CH375_WR = 0;            // 输出有效写控制信号, 写CH375芯片的命令端口 
	CH375_CS = 0;            // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS 
	CH375_WR = 1;            // 输出无效的控制信号, 完成操作CH375芯片 
	CH375_CS = 1;
	CH375_A0 = 0;
	PORT = 0xFF;             // 禁止数据输出 
	mDelayuS( 2 );           // 至少延时2uS 
}		

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据,最小周期为1.5uS,否则之后延时1.5uS 
void xWriteCH375Data( UINT8 mData ) 
{
	PORT = mData;            // 向CH375的并口输出数据 
	CH375_A0 = 0;
	CH375_CS = 0;
	CH375_WR = 0;            // 输出有效写控制信号, 写CH375芯片的数据端口 
	CH375_CS = 0;            // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS 
	CH375_WR = 1;            // 输出无效的控制信号, 完成操作CH375芯片 
	CH375_CS = 1;
	PORT = 0xFF;             // 禁止数据输出 
	mDelayuS( 2 );           // 至少延时2uS 
}

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据,最小周期为1.5uS,否则之前延时1.5uS 
UINT8 xReadCH375Data( void ) 
{
	UINT8	mData;

	mDelayuS( 2 );           // 至少延时1uS 
	PORT = 0xFF;             // 输入 
	CH375_A0 = 0;
	CH375_CS = 0;
	CH375_RD = 0;            // 输出有效写控制信号, 读CH375芯片的数据端口 
	CH375_CS = 0;            // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS 
	mData = PORT;            // 从CH375的并口输入数据 
	CH375_RD = 1;            // 输出无效的控制信号, 完成操作CH375芯片 
	CH375_CS = 1;

	return( mData );
}

#endif 

//=================================================================================================
// CH375与MCU以串口方式连接 
//=================================================================================================
// 
#else 
//-------------------------------------------------------------------------------------------------
// 设置波特率和其它串口参数
// 设置串口通讯波特率,为了满足在2mS传输64字节的要求,波特率应该大于350Kbps,
// 如果串口波特率较低,不能满足在2mS传输64字节的要求,那么对于有些U盘将无法工作或者导致数据丢失
void CH375_PORT_INIT( void ) 
{
	SCON = 0xD0;             // 设置串口为9位数据 

}

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令 
void xWriteCH375Cmd( UINT8 mCmd ) 
{
	TI = 0;
	TB8 = 1;
	SBUF = mCmd;
	while ( TI == 0 );
}

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据 
void xWriteCH375Data( UINT8 mData ) 
{
	TI = 0;
	TB8 = 0;
	SBUF = mData;
	while ( TI == 0 );
}

//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据 
UINT8 xReadCH375Data( void ) 
{
	while ( RI == 0 );
	RI = 0;
	return( SBUF );
}

#endif 

//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// 自行编写的子程序,用以取代 CH375HF?.H 中的提供的默认子程序 
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
// 
//-------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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