?? 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 + -