📄 main.h.bak
字号:
/****************************************Copyright (c)**************************************************
** CH374做主机操作U盘读写程序
**
** 总头文件
**
** VBeat 0.2
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: Main.H
**创 建 人: 徐亦朱
**最后修改日期: 2007年9月25日
**描 述: CH374做主机操作U盘读写程序总头文件
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 徐亦朱
** 版 本: VBeat 0.1
** 日 期: 2007年9月24日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 徐亦朱
** 日 期: 2007年9月25日
** 描 述: 优化头文件
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include <stdio.h>
#include <string.h>
#include "HAL.H"
#include "HAL_BASE.C"
#include "PARA_HW.C"
//定义默认控制传输端点
#define mDiskDefaultEndp 0x00
//查询当前是否存在USB设备
#define Query374DeviceIn( ) ( ( Read374Byte( REG_INTER_FLAG ) & BIT_IF_DEV_ATTACH ) ? TRUE:FALSE )
//查询当前的USB设备使全速还是低速,返回TRUE为全速
#define Query374DevFullSpeed( ) ( ( Read374Byte( REG_SYS_INFO ) & BIT_INFO_USB_DP ) ? TRUE:FALSE )
//文件缓冲区FILE_BUF的字节数
#define FILEBUF_BYTES 2560
//磁盘缓冲区DISK_BUF的字节总数
#define DISKBUF_BYTES 2048
/* 错误码 */
// 路径处理函数 ProcessPath
#define NextContinue 0x90 //路径未处理结束
#define EndPath 0x91 //路径处理结束
// 初始化函数 Init_FAT
#define ERR_Init 0x92 //文件系统初始化错误
#define InitSuccess 0x93 //文件系统成功初始化
// FAT表信息读取计算函数 x16List
#define ERR_List 0x94 //FAT表信息读取计算错误
#define ListSuccess 0x95 //FAT表信息成功读取计算
// 目录项处理函数 xProcessDirectory/x16RootDirectory
#define ERR_Directory 0x96 //目录项操作异常传输错误
#define DirectorySuccess 0x97 //目录项操作成功
// FAT16根目录项处理函数x16RootDirectory
#define ERR_FullRoot 0x98 //根目录写满,无法创建新文件/目录
// 查可写簇函数 x16CheckClus
#define ERR_CheckClus 0x0001 //查找空簇异常传输错误
// 查找文件地址信息函数 x16CheckFile/CheckFirst16/x16CheckFile
#define ERR_Check 0x02 //查找文件异常传输错误
// 读取文件函数 x16ReadFile
#define ERR_Read 0x72 //读取文件操作异常传输错误
#define ReadSuccess 0x73 //读取文件操作成功完成
#define Clu_End 0x66 //读取一簇完成
#define File_End 0x88 //文件读取完成
// 写入文件函数 x16WriteFile
#define ERR_Write 0x74 //写入文件操作异常传输错误
#define WriteSuccess 0x75 //写入文件操作成功完成
#define ERR_FullDisk 0x76 //磁盘满,无法写入数据
// 新建文件函数 x16Creat
#define ERR_Creat 0x77 //Creat操作异常错误
#define CreatSuccess 0x78 //Creat操作成功完成
// 打开文件函数 FATOpen
#define ERR_OPEN 0x99 //Open函数没有发现可用的文件结构,返回错误
#define ERR_NOFile 0x51 //Open函数没有发现要求操作的文件,返回错误
#define OpenSuccess 0x50 //Open操作成功完成
// 关闭文件函数 FATClose
#define CloseSuccess 0x52 //Close操作成功完成
#define ERR_Close 0x53 //Close操作异常错误
// 复制文件函数 CopyFile
#define ERR_Copy 0x41 //复制操作有误
#define CopySuccess 0x40 //复制操作成功完成
/* 操作码 */
// x16List操作码
#define ModeZ1 0x00 //更新FAT表
#define ModeZ2 0x01 //查找FAT表中下个簇的值
// FATOpen操作码
#define ModeA1 0x00 //打开文件,以便读,若文件不存在则退出
#define ModeA2 0x80 //打开文件,以便写,若文件不存在则退出
#define ModeA3 0x01 //打开文件,以便读,先将文件长度截为0,如果文件不存在则退出
#define ModeA4 0x81 //打开文件,以便写,先将文件长度截为0,如果文件不存在则退出
#define ModeA5 0x82 //打开文件,以便写,向已有文件的尾部追加内容,如果文件不存在则退出
#define ModeB1 0x10 //打开文件,以便读,若文件不存在则创建之
#define ModeB2 0x90 //打开文件,以便写,若文件不存在则创建之
#define ModeB3 0x11 //打开文件,以便读,先将文件长度截为0,若文件不存在则创建之
#define ModeB4 0x91 //打开文件,以便写,先将文件长度截为0,若文件不存在则创建之
#define ModeB5 0x92 //打开文件,以便写,向已有文件的尾部追加内容,若文件不存在则创建之
#define ModeC1 0xF1 //创建目录
#define ModeC2 0xF2 //删除文件/目录
// xProcessDirectory操作码
#define ModeX1 0x00 //创建新文件
#define ModeX2 0x01 //创建新目录
#define ModeX3 0x02 //对打开的文件截0
#define ModeX4 0x03 //删除文件/目录
#define ModeX5 0x04 //更新写入日期/时间
/* FAT文件系统层数据结构及外部变量 */
// FAT类型码
#define FAT12 0x00
#define FAT16 0x01
#define FAT32 0x02
//FAT文件系统层函数牵涉到的其他变量
// 文件缓冲区FILE_BUF的字节数
#define FILEBUF_BYTES 2560
// 磁盘缓冲区DISK_BUF的字节总数
#define DISKBUF_BYTES 2048
//FAT文件系统层函数牵涉到的其他变量
UINT8 xdata DISKBUF[ DISKBUF_BYTES ] ; //磁盘缓冲区
UINT8 xdata FILEBUF[ FILEBUF_BYTES ] ; //文件缓冲区
//保存当前批量端点的同步标志
UINT8 mSaveDevEndpTog ;
//IN端点地址
UINT8 mDiskBulkInEndp ;
//OUT端点地址
UINT8 mDiskBulkOutEndp ;
//接口号
UINT8 mDiskInterfNumber ;
/*********************************************************************************************************
**
** 引用变量及函数声明
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern const UINT8C SetupGetDevDescr [ 8 ] ; //Get_Descriptor -- Device
extern UINT8 UsbDevEndpSize ;
extern void mSetBulkIn( void );
extern void mSetBulkOut( void );
extern UINT8 mClearEndpStall( UINT8 endp );
extern void HostDetectInterrupt( void );
extern void SetHostUsbAddr ( UINT8 addr );
extern void HostSetBusFree( void );
extern void HostSetBusReset( void );
extern void HostSetFullSpeed( void );
extern void HostSetLowSpeed( void );
extern void Init374Host( void );
extern UINT8 GetDeviceDescr( PUINT8 buf );
extern UINT8 GetConfigDescr( PUINT8 buf );
extern UINT8 SetUsbAddress( UINT8 addr );
extern UINT8 SetUsbConfig( UINT8 cfg );
extern UINT8 mClearEndpStall( UINT8 endp );
extern UINT8 mRequestSense( void );
extern UINT8 mDiskInquiry( PUINT8 DataBuf );
extern UINT8 mDiskCapacity( PUINT8 DataBuf );
extern UINT8 mDiskTestReady( void );
extern UINT8 FATInit( void ) ;
extern UINT8 x16ReadFile( UINT8 ReadNums, UINT8 FileNum ) ;
extern UINT8 x16WriteFile( UINT16 WriteNums, UINT8 FileNum ) ;
extern UINT8 FATOpen( const UINT8 *string, UINT8 ProcessMode ) ;
extern UINT8 FATClose( UINT8 FileNum ) ;
extern UINT8 FATCopy( const UINT8 *deststr, const UINT8 *scrstr ) ;
//单片机定时器、串行口初始化 -- 24MHz晶振, 57600bps
void mInitSTDIO( )
{
SCON = 0x50;
PCON = 0x80;
TL2 = RCAP2L = 0 - 13;
TH2 = RCAP2H = 0xFF;
T2CON = 0x34;
TI = 1;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -