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

📄 main.h.bak

📁 单片机读写U盘源码 基于51单片机和国产USB芯片CH374
💻 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 + -