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

📄 common.h

📁 51环境下的FAT及FAT32文件系统源码
💻 H
字号:
#include "reg51.h"
#include "ABSACC.H"

#define OLD_CHIP     // if using old chip, make this definition
#define NULL		0
#define TRUE   		1
#define FALSE  		0
#define BYTE unsigned char
#define WORD unsigned short

#define SECT_LEN	512
					   
// Disable all interrupts
#define DISABLE_INTERRUPTS		EA = 0
// Enable all interrupts
#define ENABLE_INTERRUPTS		EA = 1
#define BUFFER_LENGTH	512

typedef unsigned char       UINT8;
typedef unsigned short      UINT16;
typedef unsigned long       UINT32;

typedef union {
    struct 
    {
        UINT8    Type;
        UINT8    Index;
    } Descriptor;

    struct 
    {
        UINT8 tx0;  // MSB for 8051 Keil C
        UINT8 tx1;   
        UINT8 endp;   
        UINT8 c0;   // LSB for 8051 Keil C
    } chars;
 
    struct 
    {
        UINT8 c3;  // MSB for 8051 Keil C
        UINT8 c2;   
        UINT8 c1;   
        UINT8 c0;   // LSB for 8051 Keil C
    } chars0;

    struct
    {
        UINT16 i1;    // MSW for 8051 keil C
        UINT16 i0;    // LSW for 8051 Keil C
    } ints;

    UINT32 u0;

} FLEXI_INT32;

typedef union  {
    struct 
    {
        UINT8 c1;   // MSB for 8051 Keil C
        UINT8 c0;   // LSB for 8051 Keil C
    } chars;

    UINT16 i0;
} FLEXI_INT16, *pFLEXI_INT16;

typedef struct _XXG_FLAGS
{
	unsigned char bTimer        :1;
	unsigned char bIN_ISR		:1;
	unsigned char bCOM_ERR		:1;
	unsigned char bTimeout		:1;
	unsigned char bData1		:1;
	unsigned char bUartInDone	:1;
	unsigned char bMassDevice	:1;
	unsigned char bToggle       :1;

	unsigned char SLAVE_IS_ATTACHED	:1;
	unsigned char SLAVE_REMOVED	:1;
	unsigned char SLAVE_FOUND	:1;	// Slave USB device found
	unsigned char SLAVE_ENUMERATED	:1;	// slave USB device enumeration done
	unsigned char SLAVE_ONLINE	:1;
	unsigned char SLAVE_STALLED     :1;
	unsigned char TIMEOUT_ERR	:1; 	// timeout error during data endpoint transfer
	unsigned char DATA_STOP		:1;	// device unplugged during data transfer
} XXGFLAGS;

typedef struct
{
	unsigned int sector;
	unsigned char offset;
} DIR_IDX, *pDIR_IDX;

/*----------------------------------------------------
 *    Register Definitions
 *----------------------------------------------------
 */
//mp3 registers' address definition
#define InData         XBYTE[0xF400]
#define Mp3Ctrl        XBYTE[0xF401]
#define Voffset        XBYTE[0xF402]
#define Volume         XBYTE[0xF403]
#define Mode           XBYTE[0xF404]
#define Mp3Stat        XBYTE[0xF405]
#define Mp3Inf         XBYTE[0xF406]
#define Alarm          XBYTE[0xF407]
#define AlarmEn        XBYTE[0xF408]
#define AlarmTest      XBYTE[0xF409]
#define Playmode       XBYTE[0xF40A]

//usb  registers' address definition
#define SieCtrl        XBYTE[0xF800]
#define SieStat0       XBYTE[0xF801]
#define SieStat1       XBYTE[0xF802]
#define TxCtrl         XBYTE[0xF803]
#define TxEpnum        XBYTE[0xF804]
#define TxAddr         XBYTE[0xF805]
#define TxPktlen       XBYTE[0xF806]
#define XferCnt        XBYTE[0xF807]
#define Ualarm         XBYTE[0xF808]
#define UalarmEn       XBYTE[0xF809]
#define UalarmTest     XBYTE[0xF80A]
#define BufSel         XBYTE[0xF80B]
#define BufRst         XBYTE[0xF80C]
#define BufStatusAddr  XBYTE[0xF80D]
#define BufAddr        XBYTE[0xF80E]
#define Scratch        XBYTE[0xF80F]
//
// ava110 User SFRs
// extra GPIO port
sfr P4 = 0xA1;
// port output enable force
sfr P0_DDR = 0xA2;
sfr P1_DDR = 0xA3;
sfr P2_DDR = 0xA4;
sfr P3_DDR = 0xA5;
sfr P4_DDR = 0xA6;
// port pull-up/down
sfr P_PU = 0xA7;
sfr P_PD = 0xA9;
// watchdog timer
sfr WDT = 0xAA;
// SPI port
sfr SPI_DATA= 0x91;
sfr SPI_CTL0= 0x92;
sfr SPI_CTL1= 0x93;
sfr SPI_STA0= 0x94;
// SD interface
sfr SD_CTL0= 0x95;
sfr SD_STA0= 0x96;
sfr SD_STA1= 0x97;

// The following defines bit maps for serial and spi port
// control & status masks
// serial port control
#define SCON_SLOW  0x10
#define SCON_FAST  0x50
#define SCON_9BIT  0x80
// serial port status
#define SCON_RXINT 0x1
#define SCON_TXINT 0x2
// SPI control 0
#define SPI_LSB    0x1
#define SPI_CPOL   0x2
#define SPI_CPHA   0x4
#define SPI_MST    0x8
#define SPI_TIE    0x10
#define SPI_RIE    0x20
#define SPI_EN     0x40
#define SPI_SSOEN  0x80
// SPI control 1
#define SPI_3M     0x0
#define SPI_1P5M   0x1
#define SPI_750K   0x2
#define SPI_375K   0x3
#define SPI_188K   0x4
#define SPI_94K    0x5
#define SPI_47K    0x6
#define SPI_23K    0x7 
// SPI status
#define SPI_SPTEF  0x1
#define SPI_RRDY   0x2
#define SPI_WERR   0x4
#define SPI_RERR   0x8
// SD control
#define SD_64B     0x0
#define SD_128B    0x1
#define SD_256B    0x2
#define SD_512B    0x3
#define SD_WR      0x40
#define SD_EN      0x80
// SD status 0

// SD status 1
#define SD_SDERR   0x1
#define SD_SDINT   0x2
#define SD_CMDEND  0x4

#define SD_DETECT  0x4

// Buffer Control
#ifdef OLD_CHIP
	#define MCU2MP3    0x03
	#define USB2MP3    0x13
#else
	#define MCU2MP3    0x02
    #define USB2MP3    0x12
#endif
#define USB2MCU    0x10
#define MCU2USB    0x01
#define USBFLSH    0x14

// function prototypes
unsigned short WordSwap(unsigned short input);
void DelayMs(unsigned int nFactor);
void DelayUs(unsigned char nFactor);
unsigned long SwapINT32(unsigned long dData);
unsigned char SendUart(unsigned char *pUsrBuf, unsigned int num);



⌨️ 快捷键说明

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