📄 common.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 + -