www.pudn.com > MP3DIY.rar > userdefine.h


#include  
#include  
#include  
#include  
//================================ debug I/O =================================================== 
sbit   DbgP10	= P1^0;          /* Verify I/O Port 0 : */ 
sbit   DbgP11   = P1^1;          /* Verify I/O Port 1 : */ 
sbit   DbgP12   = P1^2;          /* Verify I/O Port 2 : */ 
sbit   DbgP13   = P1^3;          /* Verify I/O Port 3 : */ 
sbit   DbgP14   = P1^4;          /* Verify I/O Port 4 : */ 
//----For System Debug -- 
sbit   DbgP30	= P3^0;          /* Verify I/O Port 0 : */ 
sbit   DbgP31   = P3^1;          /* Verify I/O Port 1 : */ 
//================================= type define ==================================================== 
#define BIT									bit 
#define BYTE								unsigned char //liuzhp 
#define U8                                  unsigned char //liuzhp 
#define U16	                                unsigned short//liuzhp 
#define U32                                 unsigned long//liuzhp 
#define FALSE                               0 
#define TRUE                                1 
#define FAIL                                1 
#define SUCCESS                             0 
#define true								TRUE 
#define false         						FALSE 
#define USING_0			using 0 
#define USING_1			using 1 
#define USING_2			using 2 
#define USING_3			using 3 
#define INTERRUPT_0		interrupt 0 
#define INTERRUPT_1		interrupt 1 
#define INTERRUPT_3		interrupt 3 
#define ON		1 
#define OFF		0 
 
 
//======================================== Warning Battery Value ========================= 
#define MIN_BATTERYVALUE		0x55//1.0V 
#define K_REC_MINBATTERYVALUE	0x5f//1.1V 
//================================ IO config================================================ 
#define IOREG_MUX_PIN_VALUE                 0x62 
#define IOREG_GPIOOE_6_0_VALUE              0xfe 
#define IOREG_P1OESEL_VALUE                 0xfd 
#define IOREG_P3OESEL_VALUE                 0x3f 
 
//================================ LCD RESET PIN ============================================ 
#define		POWER_CTRL_HIGH		User_Write_GPIO(User_Read_GPIO() | 0x02)//GPIO1 for power control 
#define		POWER_CTRL_LOW		User_Write_GPIO(User_Read_GPIO() & 0xfd)//GPIO1 for power control 
//=================================== USER DIR TOTAL NUMBER ================================= 
#define  K_USER_DIR_NUM                     1 
//=================================== PRINT INFO ============================================ 
#define DbgPrint 		                    printf 
#define HSTPrint 		                    printf 
//================================== MAX VOLUME ============================================== 
#define K_DSP_VolumeMax                     63 
//================================== define event ============================================= 
#define SHORT_KEY_FF_EVENT                  (U8)0x01 
#define SHORT_KEY_FR_EVENT                  (U8)0x02 
#define SHORT_KEY_PLAY_EVENT                (U8)0x03 
#define SHORT_KEY_VOLUP_EVENT               (U8)0x04 
#define SHORT_KEY_VOLDOWN_EVENT             (U8)0x05 
#define SHORT_KEY_MODE_EVENT                (U8)0x06 
#define SHORT_KEY_EQ_EVENT                  (U8)0x07 
#define SHORT_KEY_STOP_EVENT                (U8)0x08 
 
#define LONG_KEY_FF_EVENT                   (U8)0x11 
#define LONG_KEY_FR_EVENT                   (U8)0x12 
#define LONG_KEY_PLAY_EVENT                 (U8)0x13 
#define LONG_KEY_VOLUP_EVENT                (U8)0x14 
#define LONG_KEY_VOLDOWN_EVENT              (U8)0x15 
#define LONG_KEY_MODE_EVENT                 (U8)0x16 
#define LONG_KEY_EQ_EVENT                   (U8)0x17 
#define LONG_KEY_STOP_EVENT                 (U8)0x18 
 
#define LONG_KEY_FF_RELEASE_EVENT           (U8)0x31 
#define LONG_KEY_FR_RELEASE_EVENT           (U8)0x32 
#define LONG_KEY_PLAY_RELEASE_EVENT         (U8)0x33 
#define LONG_KEY_VOLUP_RELEASE_EVENT        (U8)0x34 
#define LONG_KEY_VOLDOWN_RELEASE_EVENT      (U8)0x35 
#define LONG_KEY_MODE_RELEASE_EVENT         (U8)0x36 
#define LONG_KEY_EQ_RELEASE_EVENT           (U8)0x37 
#define LONG_KEY_STOP_RELEASE_EVENT         (U8)0x38 
#define NULL_KEY                            (U8)0x00 
//======================================== INTERRUPT ===================================== 
#define SECONDTIMER_VALUE 32 
#define MINUTETIMER_VALUE 60 
#define KEY_NONEKEY 0 
#define REPEATKEY_DELAYVALUE 16 
#define MIN_REPEATKEYDELAY 20 
#define MAX_REPEATKEYDELAY 32 
#define BASETIMERX4_VALUE 4//lyh add 
 
//============================================================================================= 
#define KDSP_MP3_MODE       	0x00 
#define KDSP_WMA_MODE       	0x03 
#define KDSP_DVRE_MODE      	0x04    // DVR Encode Mode 
#define KDSP_DVRD_MODE      	0x05    // DVR Decode Mode 
//=============================================================================================== 
#define   BackLightOn           DbgP10 = 0; 
#define   BackLightOff          DbgP10 = 1; 
//=================================== UI SYSTEM STATE DEFINE ================================   
#define     SYSTEM_STATE0_IDLE             0x01 
#define     SYSTEM_STATE1_PLAYING          0x02 
#define     STATE_FF                       0x03 
#define     STATE_FR                       0x04 
#define     STATE_PLAY_PAUSE               0x05 
#define     STATE_DVRE_PAUSE               0x06 
#define     STATE_RECORD                   0x07 
#define     STATE_FileMenu                 0x08 
#define     STATE_WaitDEL                  0x09 
#define     STATE_WaitFormat               0x0a 
#define     STATE_FLASHFULL_OR_LOWBATT     0x0b 
#define     STATE_SLEEP                    0x0c 
 
 
#define     STATE_FM_Raido_Idle            0x11 
#define     STATE_FM_AutoSearchUp          0x12 
#define     STATE_FM_AutoSearchDown        0x13 
#define 	STATE_FM_PresentChannel	       0x14	 
//============================================ UI DEFINE ==================================================== 
//======================================== USER TIMER DEFINE ============================= 
 
#define REP_NO_MODE	0 
#define REP_1_MODE	1 
#define REP_ALL_MODE	2 
#define REP_RANDOM_MODE 3 
#define REP_DEMO_MODE	4 
 
#define PLAY_ALL	0 
#define PLAY_FAVORITE	1 
 
#define FM_AUTO_SEARCH	0 
#define FM_MANUAL_SEARCH 1 
#define FM_PRESET_SEARCH 2 
 
//======================menu status========================================= 
#define S_Null                0               //0 
#define S_MMode               1 
#define S_PMode               2 
#define S_Eq                  3 
#define S_Del                 4 
#define S_Set                 5 
#define S_Info                6 
 
#define S_Mode_Mu             7 
#define S_Mode_Vo             8 
 
#define S_PMode_NOREP         9 
#define S_PMode_REP1          10 
#define S_PMode_REPA          11 
#define S_PMode_Random        12 
#define S_PMode_Intro         13 
 
#define S_EQ_Norm             14 
#define S_EQ_DBB              15 
#define S_EQ_Jazz             16 
#define S_EQ_Disc             17 
#define S_EQ_POP              18 
#define S_EQ_Clas             19 
#define S_EQ_SURROUND         20 
 
 
#define S_VSP_Norm              21 
#define S_VSP_Slow1             22 
#define S_VSP_Slow2             23 
#define S_VSP_Speed1            24 
#define S_VSP_Speed2            25 
 
#define S_Set_Backlit           26 
#define S_Set_Contrast          27 
#define S_Set_Idletime          28 
#define S_Set_Language          29 
#define S_Set_Default           30 
 
#define S_Set_Backlit_10        31 
#define S_Set_Backlit_20        32 
#define S_Set_Backlit_30        33 
#define S_Set_Backlit_60        34  
#define S_Set_Backlit_Prem      35 
#define S_Set_Backlit_Off       36 
 
#define S_Set_Contrast_0        37 
#define S_Set_Contrast_1        38 
#define S_Set_Contrast_2        39 
#define S_Set_Contrast_3        40 
#define S_Set_Contrast_4        41 
#define S_Set_Contrast_5        42 
#define S_Set_Contrast_6        43 
#define S_Set_Contrast_7        44 
#define S_Set_Contrast_8        45 
#define S_Set_Contrast_9        46 
 
#define S_Set_Idletime_Off      47 
#define S_Set_Idletime_10       48 
#define S_Set_Idletime_30       49 
#define S_Set_Idletime_60       50 
#define S_Set_Idletime_Prem     51 
 
#define S_Del_One               52 
#define S_Del_All               53 
 
#define S_Set_Language_ENG      54 
#define S_Set_Language_CHN      55 
#define S_Set_Language_BIG      56 
#define S_Set_Language_JAP      57 
#define S_Set_Language_Ger      58 
 
#define S_Info_TotalMemory      59 
#define S_Info_FreeMemory       60 
#define S_Info_FWVersion        61 
 
#define S_Disk_FMTConfirm       62 
#define S_Disk_FMTCancel        63 
 
#define S_Mode_Record           64 
#define S_Select_RecWave        65 
#define S_Select_RecASF         66 
 
#define S_Disp_TotalMemory      67 
#define S_Disp_FreeMemory       68 
#define S_Disp_FWVersion        69 
 
#define S_PlayList_All		    70 
#define S_PlayList_Favorite	    71 
 
#define S_Mode_FM               72 
 
#define S_FM_BackMode           73 
#define S_FM_AutoSearch         74 
#define S_FM_ManualSearch       75 
#define S_FM_PresetSearch       76 
#define S_FM_Channel            77 
#define S_FM_Stereo             78 
#define S_FM_Mono               79 
#define S_FM_Sensitivity        80 
#define S_FM_Sensitivity_Hi     81 
#define S_FM_Sensitivity_Low    82 
 
//#define S_EQ_SURROUND          82  
//#define S_EQ_UNSURROUND        83  
#define S_Del_Disk_FORMATProg   83 
#define S_Del_Disk_DELProg      84 
 
//------------------------------ Periphal clk  ----------------------------------- 
#define PERIPH_IDLE           0x00 
#define PERIPH_UINORMALDSP    0x01 
#define PERIPH_PLAYWMA        0x02 
#define PERIPH_USB            0x04 
 
//==================================== LOCK ====================================================== 
#define 	LockPin_Locked   	  		DbgP11 
//=================================== LCD SET =============================================== 
#define SSD1815_Serial_Option 
 
sbit SSD1815_RST= P1^0; 
sbit SSD1815_CS	= P1^1;//CS 
sbit SSD1815_DC	= P1^2;//A0 
sbit SSD1815_SCLK = P1^3;//SCLK 
sbit SSD1815_SData = P1^4;//DSAT 
 
#define Set_SSD1815_RST_Pin  SSD1815_RST=1//same as power control 
#define Clear_SSD1815_RST_Pin  SSD1815_RST=0//same as power control 
#define Set_SSD1815_DC_Pin  SSD1815_DC = 1 
#define Clear_SSD1815_DC_Pin  SSD1815_DC = 0 
#define Set_SSD1815_CS_Pin  SSD1815_CS = 1 
#define Clear_SSD1815_CS_Pin  SSD1815_CS = 0 
#define Set_SSD1815_SCLK_Pin  SSD1815_SCLK = 1 
#define Clear_SSD1815_SCLK_Pin  SSD1815_SCLK = 0 
#define Set_SSD1815_SData_Pin  SSD1815_SData = 1 
#define Clear_SSD1815_SData_Pin  SSD1815_SData = 0 
#define IsChar 0 
#define IsWord 1 
 
//*******************************************以下定义建议用户不要修改*************************** 
//=======USER_Set_SYSInformation(U8 tc_SetInfType,U16 tc_SetInfData)输入参数================= 
#define SYSI_COPYBACK             0x00 
#define SYSI_CREATE_DATE          0x01 
#define SYSI_CREATE_TIME          0x02 
//==================================== EQ value ============================================= 
#define EQNormal                            0//EQ 
#define EQDbb                               1 
#define EQJazz                              2 
#define EQDisc                              3 
#define EQPop                               4 
#define EQClass                             5 
//===================================== FILE TYPE =============================================== 
#define AUDIO_FILE_TYPE_MP3         0x00 
#define AUDIO_FILE_TYPE_WMA         0x01 
#define AUDIO_FILE_TYPE_WMV         0x02 
#define AUDIO_FILE_TYPE_WAV         0x03 
#define AUDIO_FILE_TYPE_ASF         0x04 
//==================================== HZK TYPE ========================================================== 
#define Language_English                    (U8)0 
#define Language_GB2312                     (U8)1 
#define Language_Big5                       (U8)2 
#define Language_Japanese                   (U8)3 
#define Language_German                     (U8)4 
//=================================== STORAGE ERROR STATUS ============================================= 
//以下为gc_DOS_ErrorStatus可能出现错误值,为0值表示正常 
#define DOS_END_OF_FILE                     0x01 
#define DOS_CLUSTER_LINK_ERR                0x02 
#define DOS_ERROR_DISK_FULL			        0x03 
#define	DOS_ERROR_ROOTDIR_FULL		        0x04 
 
#define DOS_UNKNOW_FILESYSTEM_ERR           0x81 
#define DOS_READ_MBS_ERR                    0x82 
#define DOS_READ_PBS_ERR                    0x83 
#define DOS_MBS_MARK_ERR                    0x84 
#define DOS_PBS_MARK_ERR                    0x85 
#define DOS_FAT_ERR                         0x86 
#define DOS_READ_FAT1_ERR                   0x87 
#define DOS_READ_FAT2_ERR                   0x88 
#define DOS_PARTITIONSIZE_ERR               0x89 
#define STORAGE_INIT_ERROR                  0xff  
 
//================================== AB POINT SET VALUE ========================================== 
#define	K_CLEAR_AB_POINT                    2 
#define	K_SET_A_POINT                       0 
#define	K_SET_B_POINT                       1 
#define	K_GOTO_A_POINT                      3 
 
//================================== STORAGE TYPE ================================================ 
#define CURRENT_MEDIA_NAND                  0x00 
#define CURRENT_MEDIA_SMC                   0x01 
#define CURRENT_MEDIA_MMC                   0x02 
#define CURRENT_MEDIA_SD                    0x03 
#define CURRENT_MEDIA_CF                    0x04 
 
//================================== FIND FDB PARAMETER ========================================== 
#define  K_COUNTER_FILENUM                  0 
#define  K_TIME_FINDFDB                     1 
#define  K_NAME_FINDFDB                     2 
#define  K_ORDER_FINDFDB                    3 
#define  K_SPECIFIC_LONG_FILENAME           4 
#define  K_SPECIFIC_SHORT_FILENAME          5 
#define  K_SPECIFIC_STARTCLUSTER            6 
#define  K_SPECIFIC_FILESIZE                7 
#define  K_FIND_FREE_FDB                    8 
#define  K_FIND_LAST_FDB					9 
#define	 K_FIND_DIR_EXTNAME					10 
//=================================== USER RESERVEBLOCK DEFINE ============================= 
#define RESERVEBLOCK_FILETYPE_UITAB         0x00 
#define RESERVEBLOCK_FILETYPE_USERDATA      0x01 
#define RESERVEBLOCK_FILETYPE_DSPIMPMDATA   0x02 
#define RESERVEBLOCK_FILETYPE_BSRAM         0x03 
#define RESERVEBLOCK_ISP_FILE				0x04 
//==================================== LRC BUFFER LENGTH ==================================== 
#define Support_LRCFile 
#define	LRC_DISPLAY_LYRICS_CHARNUMBER 		100 
//-------------------------------------- DSP.C ----------------------------------- 
#define K_MCU_HISPEED                       0 //24MHz 
#define K_MCU_LOWSPEED                      1 //6MHz	 
#define K_MCU_FMMODE_SPEED                  2 //375KHz 
//-------------------------------------------------------------------------------- 
//----------------------------------------------------------------------------- 
#define NO_USB                              0x00 
#define USB_PHY_CONNECT                     0x01 
#define USB_REMOVE                          0x02 
#define USB_STAND_BY                        0x03 
#define USB_READ                            0x04 
#define USB_WRITE                           0x05 
#define USB_SUSPEND							0x06 
//--------------------------- ATTRIBUTE ---------------------------------------------------------- 
#define D_RDONLY		0x01 
#define D_HIDDEN		0x02 
#define D_SYSTEM		0x04 
#define D_LABEL			0x08 
#define D_DIR			0x10 
#define D_ARCH			0x20 
#define D_ALL			0x3f 
//--------------------------- ACCESS ------------------------------------------------------------- 
#define O_RDONLY		0x0001 
#define O_WRONLY		0x0002 
#define	O_RDWR			0x0003 
#define	O_CREAT			0x0004 
#define	O_TRUNC			0x0008 
//==================================== FILE HANDLE STRUCT =================================== 
typedef struct  //用作打开的文件的全局变量 
{ 
	U32 dw_File_StartCluster;//当前文件(目录)的第一个簇链值。 
	U32 dw_File_TotalSize;//当前文件的总文件大小,以字节为单位。 
	U32 dw_File_CurrentCluster;//当前文件的当前簇链值,也即文件指针所在的簇链值。 
	U32 dw_File_DataPoint;//当前文件的指针,以字节为单位。 
	U32 dw_FDB_StartCluster;//FDB表的第一个cluster值。(保留变量) 
	U32 dw_LongFDB_LogAdd1;//所要记长档名的上两个扇区地址 
	U32 dw_LongFDB_LogAdd0;//所要记长档名的上一个扇区地址 
	U32 dw_FDB_Cluster;//短档名FDB所在的簇链值。 
	U32 dw_FDB_LogAdd;//短档名FDB所在逻辑sector的值,以sector为单位。(可//以支持到137Gbytes的媒体容量). 
	U16 w_FDB_Offset;//短档名FDB所在逻辑sector的偏移量,以字节为单位。 
	U8	c_FileType; 
}File_FCB; 
 
//==================================== SYSTEM STATE STRUCT ======================================== 
typedef struct //系统状态结构 
{ 
	U8 c_Mode;//播放或录音模式 
	U8 c_OperationState;//操作状态:停止、暂停、活动(播放或录音)、快进、快退 
	U8 c_FileHandle;//文件句柄 
	U16 w_BitRate;//比特率大小 
}System_Struct; 
//=================================== VARIABLE STRUCT ============================================ 
typedef union 
{ 
	U16 w_Data; 
	U8  c_Data[2]; 
}IntToByte; 
 
//=================================== FS INFO STRUCT ============================================= 
typedef struct f_info  
{	 
	U8 f_name[260];	 
	U8 f_attrib;	 
	U16  f_time;	 
	U16  f_date;	 
	U32 f_size; 
}; 
//================================================================================================= 
//================================================================================================ 
struct _diskfree_t  
{         
	U32 total_clusters;  /*总共簇个数*/       
 	U32 avail_clusters;  /*可用簇个数*/       
  	U16 sectors_per_cluster; /*每个簇扇区数*/       
    U16 bytes_per_sector;/*每个扇区字节数*/ 
}; 
 
///////////////////////////////////// 
#define K_CARD_TYPE  0x01 
#define K_CARD_TOTAL  0x01 
//////////////////////////////////