基于Linux&MacOS 开发Ai8051U

首先通过Python 安装 STCFLASH 包(基于STCGAL 开发)

python 复制代码
pip3 install stcflash

win系统就是

python 复制代码
pip install stcflash

项目地址: https://github.com/cx693/StcFlash

多的不解释自己的项目!(借鉴了STCGAL)

其次就是 SDCC 解释器

python 复制代码
macOS: brew install sdcc

linux: sudo apt-get install sdcc

SDCC 与 StcFlash 需要环境变量配置

如果需要运行STC-ISP

MacOs:https://getwhisky.app/

安装后点击点击终端获取权限如果不小心点击不允许(运行这个指令后重新打开Whisky)

bash 复制代码
tccutil reset AppleEvents

然后安装

bash 复制代码
brew install winetricks
winetricks mfc42

Liunx:https://geek-blogs.com/blog/exe-linux-run/

(其实Linux与macOS同理 底层都是UNIX)

其次就是 SDCC - 8bit的 Ai8051.h 见文章底部

安装 VsCode + pioformio

开发包无 Ai8051U34K64自定义 board

bash 复制代码
{

  "build": {

    "f_cpu": "40000000",          

    "size_iram": 1024,            

    "size_xram": 8192,            

    "size_code": 65536,          

    "size_heap": 512,             

    "mcu": "ai8051u-34k64",       

    "cpu": "mcs51"              

  },

  "frameworks": [],

  "upload": {

    "maximum_ram_size": 9216,    

    "maximum_size": 65536,        

    "protocol": "stcflash",

    "stcgal_protocol": "stc8d",

    "protocols": [

      "stcflash"

    ]

  },

  "url": "https://github.com/cx693/StcFlash",

  "vendor": "CXi",          

  "name": "Ai8051U34K64"

}

将json 放入 Users/{YourName}/.platformio/platforms/intel_mcs51/boards 命名为 Ai8051U34K64.json

注意:

platformio.ini

bash 复制代码
[env:Ai8051U34K64]

platform = intel_mcs51

board = Ai8051U34K64

; 核心:自定义上传指令(替换为你的串口/波特率)

upload_command = stcflash -p /dev/cu.usbserial-21120 -b 115200 $SOURCE

; 可选:关闭上传协议检查(避免警告)

upload_protocol = custom

测试代码点灯!

cpp 复制代码
#include "Ai8051.h"

#define FOSC                    40000000UL

void delay_ms(unsigned int ms)
{
    unsigned int i;

    do
    {
        i = FOSC / 10000;
        while (--i);
    } while (--ms);
}

/**
 * @brief 主函数:P20和P21交替闪烁
 */
void main(void)
{
    P0M1 = 0;   P0M0 = 0xff;
    P1M1 = 0;   P1M0 = 0xff;
    P2M1 = 0;   P2M0 = 0xff;
    P3M1 = 0;   P3M0 = 0xff;
    P4M1 = 0;   P4M0 = 0xff;
    P5M1 = 0;   P5M0 = 0xff;
    P6M1 = 0;   P6M0 = 0xff;
    P7M1 = 0;   P7M0 = 0xff;
	
//		P0=0XFF;	P1=0XFF;	P2=0XFF;
//		P3=0XFF;	P4=0XFF;	P5=0XFF;
	
		WTST = 0X00;
	
		delay_ms(1000);
    
    // 死循环实现持续闪烁
    while(1)
    {
        P20 = 1;  // P20引脚置高(假设接LED负极,高电平灭;若接正极则相反)
        P21 = 0;  // P21引脚置低(LED亮)
        delay_ms(500);  // 延时500毫秒
        
        P20 = 0;  // P20引脚置低(LED亮)
        P21 = 1;  // P21引脚置高(LED灭)
        delay_ms(500);  // 延时500毫秒
    }
}

编译通过后下载卡住哪里 按一下开发版的 RST 按键!

也就是这里按一次复位键!

即可烧写成功!

Ai8051.h 自己通过stc-isp导入!

Ai8051.h(sdcc版本)

cpp 复制代码
#ifndef __AI8051U_H__
#define __AI8051U_H__

/* 
 * 【核心用意】
 * VS Code 的 IntelliSense(代码智能提示)、Coverity(代码静态分析工具)
 * 本身不认识 8051 编译器(SDCC/Keil C51)的专有关键字(如 __sfr、__at、__xdata 等),
 * 会误报"未定义标识符";
 * 这段代码的作用是:仅在编辑器/静态分析工具解析代码时,为这些专有关键字提供"占位定义",
 * 既不影响实际编译,又能让编辑器正常识别这些关键字,消除假报错。
 */

/* 
 * 条件编译开关:判断当前环境是否是"编辑器解析阶段"而非"实际编译阶段"
 * __INTELLISENSE__:VS Code 内置的 IntelliSense 解析器会定义这个宏
 * __COVERITY__:Coverity 静态分析工具会定义这个宏
 * 只有在这两个工具解析代码时,才执行下面的宏定义
 */
#if defined(__INTELLISENSE__) || defined(__COVERITY__)

 /* 1. 为 8051 硬件寄存器关键字提供兼容定义 */
 /* __sfr:SDCC/Keil 中用于定义特殊功能寄存器(Special Function Register)的关键字 */
 #ifndef __sfr
  /* 编辑器解析时,将 __sfr 替换为 "volatile unsigned char":
   * - volatile:告诉编译器该变量可能被硬件修改,不要优化
   * - unsigned char:8051 寄存器都是 8 位,对应无符号字符型
   * 这样编辑器能识别 __sfr 定义的变量是合法的 8 位寄存器 */
  #define __sfr volatile unsigned char
 #endif

 /* __sbit:SDCC/Keil 中用于定义寄存器的某一位(Single Bit)的关键字 */
 #ifndef __sbit
  /* 编辑器解析时,简化为 unsigned char(实际编译时 Keil/SDCC 会有专用处理) */
  #define __sbit volatile unsigned char
 #endif

 /* __at:SDCC/Keil 中用于指定变量/寄存器绝对地址的关键字(如 __at(0x93) 表示地址 0x93) */
 #ifndef __at
  /* 编辑器解析时,忽略 __at 关键字(仅保留语法,不处理地址逻辑),
   * 因为编辑器不需要知道硬件地址,只需要识别语法合法即可 */
  #define __at(x)
 #endif

 /* 2. 为 8051 存储类型关键字提供兼容定义(8051 有哈佛架构,内存分不同区域) */
 /* __xdata:扩展外部数据存储器(外部RAM,最大64KB) */
 #ifndef __xdata
  #define __xdata  // 编辑器解析时为空宏,仅占位,不影响语法检查
 #endif

 /* __idata:内部间接寻址数据存储器(内部RAM的高128字节) */
 #ifndef __idata
  #define __idata
 #endif

 /* __data:内部直接寻址数据存储器(内部RAM的低128字节,最快) */
 #ifndef __data
  #define __data
 #endif

 /* __code:程序存储器(ROM/Flash,存储代码或常量) */
 #ifndef __code
  #define __code
 #endif

 /* __bit:位寻址变量(8051 特有的位操作类型) */
 #ifndef __bit
  #define __bit unsigned char  // 简化为 unsigned char,让编辑器识别
 #endif

 /* __near:近程寻址(对应内部RAM,短地址) */
 #ifndef __near
  #define __near
 #endif

 /* __far:远程寻址(对应外部RAM,长地址) */
 #ifndef __far
  #define __far
 #endif

 /* __banked:银行切换寻址(用于超过64KB的外部RAM,跨存储体访问) */
 #ifndef __banked
  #define __banked
 #endif

#endif  // 结束"编辑器/静态分析工具"的条件编译

/////////////////////////////////////////////////

__sfr       __at(0x80)      P0;
    __sbit  __at(0x80)      P00;
    __sbit  __at(0x81)      P01;
    __sbit  __at(0x82)      P02;
    __sbit  __at(0x83)      P03;
    __sbit  __at(0x84)      P04;
    __sbit  __at(0x85)      P05;
    __sbit  __at(0x86)      P06;
    __sbit  __at(0x87)      P07;

__sfr       __at(0x81)      SP;
__sfr       __at(0x82)      DPL;
__sfr       __at(0x83)      DPH;
__sfr       __at(0x84)      DPXL;
__sfr       __at(0x85)      SPH;

__sfr       __at(0x87)      PCON;
    #define SMOD                    0x80
    #define SMOD0                   0x40
    #define LVDF                    0x20
    #define POF                     0x10
    #define GF1                     0x08
    #define GF0                     0x04
    #define PD                      0x02
    #define IDL                     0x01

__sfr       __at(0x88)      TCON;
    __sbit  __at(0x8F)      TF1;
    __sbit  __at(0x8E)      TR1;
    __sbit  __at(0x8D)      TF0;
    __sbit  __at(0x8C)      TR0;
    __sbit  __at(0x8B)      IE1;
    __sbit  __at(0x8A)      IT1;
    __sbit  __at(0x89)      IE0;
    __sbit  __at(0x88)      IT0;

__sfr       __at(0x89)      TMOD;
    #define T1_GATE                 0x80
    #define T1_CT                   0x40
    #define T1_M1                   0x20
    #define T1_M0                   0x10
    #define T0_GATE                 0x08
    #define T0_CT                   0x04
    #define T0_M1                   0x02
    #define T0_M0                   0x01

__sfr       __at(0x8A)      TL0;
__sfr       __at(0x8B)      TL1;
__sfr       __at(0x8C)      TH0;
__sfr       __at(0x8D)      TH1;

__sfr       __at(0x8E)      AUXR;
    #define T0x12                   0x80
    #define T1x12                   0x40
    #define S1M0x6                  0x20
    #define T2R                     0x10
    #define T2_CT                   0x08
    #define T2x12                   0x04
    #define EXTRAM                  0x02
    #define S1BRT                   0x01

__sfr       __at(0x8F)      INTCLKO;
    #define EX4                     0x40
    #define EX3                     0x20
    #define EX2                     0x10
    #define T2CLKO                  0x04
    #define T1CLKO                  0x02
    #define T0CLKO                  0x01

__sfr       __at(0x90)      P1;
    __sbit  __at(0x90)      P10;
    __sbit  __at(0x91)      P11;
    __sbit  __at(0x92)      P12;
    __sbit  __at(0x93)      P13;
    __sbit  __at(0x94)      P14;
    __sbit  __at(0x95)      P15;
    __sbit  __at(0x96)      P16;
    __sbit  __at(0x97)      P17;

__sfr       __at(0x91)      P1M1;
__sfr       __at(0x92)      P1M0;
__sfr       __at(0x93)      P0M1;
__sfr       __at(0x94)      P0M0;
__sfr       __at(0x95)      P2M1;
__sfr       __at(0x96)      P2M0;

__sfr       __at(0x97)      AUXR2;
    #define RAMTINY                 0x80
    #define CPUMODE                 0x40
    #define RAMEXE                  0x20
    #define CANFD                   0x10
    #define CANSEL                  0x08
    #define CAN2EN                  0x04
    #define CANEN                   0x02
    #define LINEN                   0x01

__sfr       __at(0x98)      SCON;
    __sbit  __at(0x9F)      SM0;
    __sbit  __at(0x9E)      SM1;
    __sbit  __at(0x9D)      SM2;
    __sbit  __at(0x9C)      REN;
    __sbit  __at(0x9B)      TB8;
    __sbit  __at(0x9A)      RB8;
    __sbit  __at(0x99)      TI;
    __sbit  __at(0x98)      RI;

__sfr       __at(0x99)      SBUF;

__sfr       __at(0x9A)      S2CON;
    #define S2SM0                   0x80
    #define S2SM1                   0x40
    #define S2SM2                   0x20
    #define S2REN                   0x10
    #define S2TB8                   0x08
    #define S2RB8                   0x04
    #define S2TI                    0x02
    #define S2RI                    0x01

__sfr       __at(0x9B)      S2BUF;

__sfr       __at(0x9D)      IRCBAND;
    #define USBCKS                  0x80
    #define USBCKS2                 0x40
    #define HIRCSEL1                0x02
    #define HIRCSEL0                0x01

__sfr       __at(0x9E)      LIRTRIM;
__sfr       __at(0x9F)      IRTRIM;

__sfr       __at(0xA0)      P2;
    __sbit  __at(0xA0)      P20;
    __sbit  __at(0xA1)      P21;
    __sbit  __at(0xA2)      P22;
    __sbit  __at(0xA3)      P23;
    __sbit  __at(0xA4)      P24;
    __sbit  __at(0xA5)      P25;
    __sbit  __at(0xA6)      P26;
    __sbit  __at(0xA7)      P27;

__sfr       __at(0xA1)      BUS_SPEED;

__sfr       __at(0xA2)      P_SW1;
    #define S1_S1                   0x80
    #define S1_S0                   0x40
    #define CAN_S1                  0x20
    #define CAN_S0                  0x10
    #define SPI_S1                  0x08
    #define SPI_S0                  0x04
    #define LIN_S1                  0x02
    #define LIN_S0                  0x01

__sfr       __at(0xA6)      VRTRIM;

__sfr       __at(0xA8)      IE;
    __sbit  __at(0xAF)      EA;
    __sbit  __at(0xAE)      ELVD;
    __sbit  __at(0xAD)      EADC;
    __sbit  __at(0xAC)      ES;
    __sbit  __at(0xAB)      ET1;
    __sbit  __at(0xAA)      EX1;
    __sbit  __at(0xA9)      ET0;
    __sbit  __at(0xA8)      EX0;

__sfr       __at(0xA9)      SADDR;
__sfr       __at(0xAA)      WKTCL;
__sfr       __at(0xAB)      WKTCH;

__sfr       __at(0xAC)      S3CON;
    #define S3SM0                   0x80
    #define S3ST3                   0x40
    #define S3SM2                   0x20
    #define S3REN                   0x10
    #define S3TB8                   0x08
    #define S3RB8                   0x04
    #define S3TI                    0x02
    #define S3RI                    0x01

__sfr       __at(0xAD)      S3BUF;
__sfr       __at(0xAE)      TA;

__sfr       __at(0xAF)      IE2;
    #define EUSB                    0x80
    #define ET4                     0x40
    #define ET3                     0x20
    #define ES4                     0x10
    #define ES3                     0x08
    #define ET2                     0x04
    #define ESPI                    0x02
    #define ES2                     0x01

__sfr       __at(0xB0)      P3;
    __sbit  __at(0xB0)      P30;
    __sbit  __at(0xB1)      P31;
    __sbit  __at(0xB2)      P32;
    __sbit  __at(0xB3)      P33;
    __sbit  __at(0xB4)      P34;
    __sbit  __at(0xB5)      P35;
    __sbit  __at(0xB6)      P36;
    __sbit  __at(0xB7)      P37;

    __sbit  __at(0xB7)      RD;
    __sbit  __at(0xB6)      WR;
    __sbit  __at(0xB5)      T1;
    __sbit  __at(0xB4)      T0;
    __sbit  __at(0xB3)      INT1;
    __sbit  __at(0xB2)      INT0;
    __sbit  __at(0xB1)      TXD;
    __sbit  __at(0xB0)      RXD;

__sfr       __at(0xB1)      P3M1;
__sfr       __at(0xB2)      P3M0;
__sfr       __at(0xB3)      P4M1;
__sfr       __at(0xB4)      P4M0;

__sfr       __at(0xB5)      IP2;
    #define PUSB                    0x80
    #define PI2C                    0x40
    #define PCMP                    0x20
    #define PX4                     0x10
    #define PPWMB                   0x08
    #define PPWMA                   0x04
    #define PSPI                    0x02
    #define PS2                     0x01

__sfr       __at(0xB6)      IP2H;
    #define PUSBH                   0x80
    #define PI2CH                   0x40
    #define PCMPH                   0x20
    #define PX4H                    0x10
    #define PPWMBH                  0x08
    #define PPWMAH                  0x04
    #define PSPIH                   0x02
    #define PS2H                    0x01

__sfr       __at(0xB7)      IPH;
    #define PPCAH                   0x80
    #define PLVDH                   0x40
    #define PADCH                   0x20
    #define PSH                     0x10
    #define PT1H                    0x08
    #define PX1H                    0x04
    #define PT0H                    0x02
    #define PX0H                    0x01

__sfr       __at(0xB8)      IP;
    __sbit  __at(0xBF)      PPCA;
    __sbit  __at(0xBE)      PLVD;
    __sbit  __at(0xBD)      PADC;
    __sbit  __at(0xBC)      PS;
    __sbit  __at(0xBB)      PT1;
    __sbit  __at(0xBA)      PX1;
    __sbit  __at(0xB9)      PT0;
    __sbit  __at(0xB8)      PX0;

__sfr       __at(0xB9)      SADEN;

__sfr       __at(0xBA)      P_SW2;
    #define EAXFR                   0x80
    #define I2C_S1                  0x20
    #define I2C_S0                  0x10
    #define CMPO_S                  0x08
    #define S4_S                    0x04
    #define S3_S                    0x02
    #define S2_S                    0x01

__sfr       __at(0xBB)      P_SW3;
    #define I2S_S1                  0x80
    #define I2S_S0                  0x40
    #define S2SPI_S1                0x20
    #define S2SPI_S0                0x10
    #define S1SPI_S1                0x08
    #define S1SPI_S0                0x04
    #define CAN2_S1                 0x02
    #define CAN2_S0                 0x01

__sfr       __at(0xBC)      ADC_CONTR;
    #define ADC_POWER               0x80
    #define ADC_START               0x40
    #define ADC_FLAG                0x20
    #define ADC_EPWMT               0x10

__sfr       __at(0xBD)      ADC_RES;
__sfr       __at(0xBE)      ADC_RESL;

__sfr       __at(0xBF)      P_SW4;
    #define QSPI_S1                 0x02
    #define QSPI_S0                 0x01

__sfr       __at(0xC0)      P4;
    __sbit  __at(0xC0)      P40;
    __sbit  __at(0xC1)      P41;
    __sbit  __at(0xC2)      P42;
    __sbit  __at(0xC3)      P43;
    __sbit  __at(0xC4)      P44;
    __sbit  __at(0xC5)      P45;
    __sbit  __at(0xC6)      P46;
    __sbit  __at(0xC7)      P47;

__sfr       __at(0xC1)      WDT_CONTR;
    #define WDT_FLAG                0x80
    #define EN_WDT                  0x20
    #define CLR_WDT                 0x10
    #define IDL_WDT                 0x08

__sfr       __at(0xC2)      IAP_DATA;
__sfr       __at(0xC3)      IAP_ADDRH;
__sfr       __at(0xC4)      IAP_ADDRL;
__sfr       __at(0xC5)      IAP_CMD;
__sfr       __at(0xC6)      IAP_TRIG;

__sfr       __at(0xC7)      IAP_CONTR;
    #define IAPEN                   0x80
    #define SWBS                    0x40
    #define SWRST                   0x20
    #define CMD_FAIL                0x10
    #define SWBS2                   0x08

__sfr       __at(0xC8)      P5;
    __sbit  __at(0xC8)      P50;
    __sbit  __at(0xC9)      P51;
    __sbit  __at(0xCA)      P52;
    __sbit  __at(0xCB)      P53;
    __sbit  __at(0xCC)      P54;
    __sbit  __at(0xCD)      P55;
    __sbit  __at(0xCE)      P56;
    __sbit  __at(0xCF)      P57;

__sfr       __at(0xC9)      P5M1;
__sfr       __at(0xCA)      P5M0;
__sfr       __at(0xCB)      P6M1;
__sfr       __at(0xCC)      P6M0;

__sfr       __at(0xCD)      SPSTAT;
    #define SPIF                    0x80
    #define WCOL                    0x40

__sfr       __at(0xCE)      SPCTL;
    #define SSIG                    0x80
    #define SPEN                    0x40
    #define DORD                    0x20
    #define MSTR                    0x10
    #define CPOL                    0x08
    #define CPHA                    0x04
    #define SPR1                    0x02
    #define SPR0                    0x01

__sfr       __at(0xCF)      SPDAT;

__sfr       __at(0xD0)      PSW;
    __sbit  __at(0xD7)      CY;
    __sbit  __at(0xD6)      AC;
    __sbit  __at(0xD5)      F0;
    __sbit  __at(0xD4)      RS1;
    __sbit  __at(0xD3)      RS0;
    __sbit  __at(0xD2)      OV;
    __sbit  __at(0xD1)      F1;
    __sbit  __at(0xD0)      P;

__sfr       __at(0xD1)      PSW1;
    #define N                       0x20
    #define Z                       0x02

__sfr       __at(0xD2)      TH4;
__sfr       __at(0xD3)      TL4;
__sfr       __at(0xD4)      TH3;
__sfr       __at(0xD5)      TL3;
__sfr       __at(0xD6)      TH2;
__sfr       __at(0xD7)      TL2;

__sfr       __at(0xD2)      T4H;
__sfr       __at(0xD3)      T4L;
__sfr       __at(0xD4)      T3H;
__sfr       __at(0xD5)      T3L;
__sfr       __at(0xD6)      T2H;
__sfr       __at(0xD7)      T2L;

__sfr       __at(0xDC)      USBCLK;

__sfr       __at(0xDD)      T3T4M;
__sfr       __at(0xDD)      T4T3M;
    #define T4R                     0x80
    #define T4_CT                   0x40
    #define T4x12                   0x20
    #define T4CLKO                  0x10
    #define T3R                     0x08
    #define T3_CT                   0x04
    #define T3x12                   0x02
    #define T3CLKO                  0x01

__sfr       __at(0xDE)      ADCCFG;
    #define RESFMT                  0x20

__sfr       __at(0xDF)      IP3;
    #define PI2S                    0x08
    #define PRTC                    0x04
    #define PS4                     0x02
    #define PS3                     0x01

__sfr       __at(0xE0)      ACC;
__sfr       __at(0xE1)      P7M1;
__sfr       __at(0xE2)      P7M0;
__sfr       __at(0xE3)      DPS;

__sfr       __at(0xE6)      CMPCR1;
    #define CMPEN                   0x80
    #define CMPIF                   0x40
    #define PIE                     0x20
    #define NIE                     0x10
    #define CMPOE                   0x02
    #define CMPRES                  0x01

__sfr       __at(0xE7)      CMPCR2;
    #define INVCMPO                 0x80
    #define DISFLT                  0x40

__sfr       __at(0xE8)      P6;
    __sbit  __at(0xE8)      P60;
    __sbit  __at(0xE9)      P61;
    __sbit  __at(0xEA)      P62;
    __sbit  __at(0xEB)      P63;
    __sbit  __at(0xEC)      P64;
    __sbit  __at(0xED)      P65;
    __sbit  __at(0xEE)      P66;
    __sbit  __at(0xEF)      P67;

__sfr       __at(0xE9)      WTST;
__sfr       __at(0xEA)      CKCON;
__sfr       __at(0xEB)      MXAX;
__sfr       __at(0xEC)      USBDAT;
__sfr       __at(0xED)      DMAIR;

__sfr       __at(0xEE)      IP3H;
    #define PI2SH                   0x08
    #define PRTCH                   0x04
    #define PS4H                    0x02
    #define PS3H                    0x01

__sfr       __at(0xEF)      AUXINTIF;
    #define INT4IF                  0x40
    #define INT3IF                  0x20
    #define INT2IF                  0x10
    #define T4IF                    0x04
    #define T3IF                    0x02
    #define T2IF                    0x01

__sfr       __at(0xF0)      B;

__sfr       __at(0xF4)      USBCON;
    #define ENUSB                   0x80
    #define ENUSBRST                0x40
    #define PS2M                    0x20
    #define PUEN                    0x10
    #define PDEN                    0x08
    #define DFREC                   0x04
    #define DP                      0x02
    #define DM                      0x01

__sfr       __at(0xF5)      IAP_TPS;
__sfr       __at(0xF6)      IAP_ADDRE;

__sfr       __at(0xF8)      P7;
    __sbit  __at(0xF8)      P70;
    __sbit  __at(0xF9)      P71;
    __sbit  __at(0xFA)      P72;
    __sbit  __at(0xFB)      P73;
    __sbit  __at(0xFC)      P74;
    __sbit  __at(0xFD)      P75;
    __sbit  __at(0xFE)      P76;
    __sbit  __at(0xFF)      P77;

__sfr       __at(0xFC)      USBADR;

__sfr       __at(0xFD)      S4CON;
    #define S4SM0                   0x80
    #define S4ST4                   0x40
    #define S4SM2                   0x20
    #define S4REN                   0x10
    #define S4TB8                   0x08
    #define S4RB8                   0x04
    #define S4TI                    0x02
    #define S4RI                    0x01

__sfr       __at(0xFE)      S4BUF;

__sfr       __at(0xFF)      RSTCFG;
    #define ENLVR                   0x40
    #define P47RST                  0x10

/////////////////////////////////////////////////
//
//如下特殊功能寄存器位于扩展RAM区域
//访问这些寄存器,需先将EAXFR设置为1,才可正常读写
//    EAXFR = 1;
//或者
//    P_SW2 |= 0x80;
///////////////////////////////////////////////////

/////////////////////////////////////////////////
//7E:FF00H-7E:FFFFH
/////////////////////////////////////////////////

/////////////////////////////////////////////////
//7E:FE00H-7E:FEFFH
/////////////////////////////////////////////////



__xdata volatile unsigned char  __at(0xFE00) CLKSEL;
__xdata volatile unsigned char  __at(0xFE01) CLKDIV;
__xdata volatile unsigned char  __at(0xFE02) HIRCCR;
__xdata volatile unsigned char  __at(0xFE03) XOSCCR;
__xdata volatile unsigned char  __at(0xFE04) IRC32KCR;
__xdata volatile unsigned char  __at(0xFE05) MCLKOCR;
__xdata volatile unsigned char  __at(0xFE06) IRCDB;
__xdata volatile unsigned char  __at(0xFE07) IRC48MCR;
__xdata volatile unsigned char  __at(0xFE08) X32KCR;
__xdata volatile unsigned char  __at(0xFE0B) HSCLKDIV;

__xdata volatile unsigned char  __at(0xFE10) P0PU;
__xdata volatile unsigned char  __at(0xFE11) P1PU;
__xdata volatile unsigned char  __at(0xFE12) P2PU;
__xdata volatile unsigned char  __at(0xFE13) P3PU;
__xdata volatile unsigned char  __at(0xFE14) P4PU;
__xdata volatile unsigned char  __at(0xFE15) P5PU;
__xdata volatile unsigned char  __at(0xFE16) P6PU;
__xdata volatile unsigned char  __at(0xFE17) P7PU;
__xdata volatile unsigned char  __at(0xFE18) P0NCS;
__xdata volatile unsigned char  __at(0xFE19) P1NCS;
__xdata volatile unsigned char  __at(0xFE1A) P2NCS;
__xdata volatile unsigned char  __at(0xFE1B) P3NCS;
__xdata volatile unsigned char  __at(0xFE1C) P4NCS;
__xdata volatile unsigned char  __at(0xFE1D) P5NCS;
__xdata volatile unsigned char  __at(0xFE1E) P6NCS;
__xdata volatile unsigned char  __at(0xFE1F) P7NCS;
__xdata volatile unsigned char  __at(0xFE20) P0SR;
__xdata volatile unsigned char  __at(0xFE21) P1SR;
__xdata volatile unsigned char  __at(0xFE22) P2SR;
__xdata volatile unsigned char  __at(0xFE23) P3SR;
__xdata volatile unsigned char  __at(0xFE24) P4SR;
__xdata volatile unsigned char  __at(0xFE25) P5SR;
__xdata volatile unsigned char  __at(0xFE26) P6SR;
__xdata volatile unsigned char  __at(0xFE27) P7SR;
__xdata volatile unsigned char  __at(0xFE28) P0DR;
__xdata volatile unsigned char  __at(0xFE29) P1DR;
__xdata volatile unsigned char  __at(0xFE2A) P2DR;
__xdata volatile unsigned char  __at(0xFE2B) P3DR;
__xdata volatile unsigned char  __at(0xFE2C) P4DR;
__xdata volatile unsigned char  __at(0xFE2D) P5DR;
__xdata volatile unsigned char  __at(0xFE2E) P6DR;
__xdata volatile unsigned char  __at(0xFE2F) P7DR;
__xdata volatile unsigned char  __at(0xFE30) P0IE;
__xdata volatile unsigned char  __at(0xFE31) P1IE;
__xdata volatile unsigned char  __at(0xFE32) P2IE;
__xdata volatile unsigned char  __at(0xFE33) P3IE;
__xdata volatile unsigned char  __at(0xFE34) P4IE;
__xdata volatile unsigned char  __at(0xFE35) P5IE;
__xdata volatile unsigned char  __at(0xFE36) P6IE;
__xdata volatile unsigned char  __at(0xFE37) P7IE;
__xdata volatile unsigned char  __at(0xFE40) P0PD;
__xdata volatile unsigned char  __at(0xFE41) P1PD;
__xdata volatile unsigned char  __at(0xFE42) P2PD;
__xdata volatile unsigned char  __at(0xFE43) P3PD;
__xdata volatile unsigned char  __at(0xFE44) P4PD;
__xdata volatile unsigned char  __at(0xFE45) P5PD;
__xdata volatile unsigned char  __at(0xFE46) P6PD;
__xdata volatile unsigned char  __at(0xFE47) P7PD;
__xdata volatile unsigned char  __at(0xFE48) P0BP;
__xdata volatile unsigned char  __at(0xFE49) P1BP;
__xdata volatile unsigned char  __at(0xFE4A) P2BP;
__xdata volatile unsigned char  __at(0xFE4B) P3BP;
__xdata volatile unsigned char  __at(0xFE4C) P4BP;
__xdata volatile unsigned char  __at(0xFE4D) P5BP;
__xdata volatile unsigned char  __at(0xFE4E) P6BP;
__xdata volatile unsigned char  __at(0xFE4F) P7BP;

__xdata volatile unsigned char  __at(0xFE50) LCMIFCFG;
__xdata volatile unsigned char  __at(0xFE51) LCMIFCFG2;
__xdata volatile unsigned char  __at(0xFE52) LCMIFCR;
__xdata volatile unsigned char  __at(0xFE53) LCMIFSTA;
__xdata volatile unsigned char  __at(0xFE54) LCMIFDATL;
__xdata volatile unsigned char  __at(0xFE55) LCMIFDATH;
__xdata volatile unsigned char  __at(0xFE56) LCMIFPSCR;

__xdata volatile unsigned char  __at(0xFE60) RTCCR;
__xdata volatile unsigned char  __at(0xFE61) RTCCFG;
__xdata volatile unsigned char  __at(0xFE62) RTCIEN;
__xdata volatile unsigned char  __at(0xFE63) RTCIF;
__xdata volatile unsigned char  __at(0xFE64) ALAHOUR;
__xdata volatile unsigned char  __at(0xFE65) ALAMIN;
__xdata volatile unsigned char  __at(0xFE66) ALASEC;
__xdata volatile unsigned char  __at(0xFE67) ALASSEC;
__xdata volatile unsigned char  __at(0xFE68) INIYEAR;
__xdata volatile unsigned char  __at(0xFE69) INIMONTH;
__xdata volatile unsigned char  __at(0xFE6A) INIDAY;
__xdata volatile unsigned char  __at(0xFE6B) INIHOUR;
__xdata volatile unsigned char  __at(0xFE6C) INIMIN;
__xdata volatile unsigned char  __at(0xFE6D) INISEC;
__xdata volatile unsigned char  __at(0xFE6E) INISSEC;
__xdata volatile unsigned char  __at(0xFE6F) INIWEEK;
__xdata volatile unsigned char  __at(0xFE6F) RTCWEEK;
__xdata volatile unsigned char  __at(0xFE70) RTCYEAR;
__xdata volatile unsigned char  __at(0xFE71) RTCMONTH;
__xdata volatile unsigned char  __at(0xFE72) RTCDAY;
__xdata volatile unsigned char  __at(0xFE73) RTCHOUR;
__xdata volatile unsigned char  __at(0xFE74) RTCMIN;
__xdata volatile unsigned char  __at(0xFE75) RTCSEC;
__xdata volatile unsigned char  __at(0xFE76) RTCSSEC;

__xdata volatile unsigned char  __at(0xFE78) T11CR;
__xdata volatile unsigned char  __at(0xFE79) T11PS;
__xdata volatile unsigned char  __at(0xFE7A) T11H;
__xdata volatile unsigned char  __at(0xFE7B) T11L;

__xdata volatile unsigned char  __at(0xFE80) I2CCFG;
__xdata volatile unsigned char  __at(0xFE81) I2CMSCR;
__xdata volatile unsigned char  __at(0xFE82) I2CMSST;
__xdata volatile unsigned char  __at(0xFE83) I2CSLCR;
__xdata volatile unsigned char  __at(0xFE84) I2CSLST;
__xdata volatile unsigned char  __at(0xFE85) I2CSLADR;
__xdata volatile unsigned char  __at(0xFE86) I2CTXD;
__xdata volatile unsigned char  __at(0xFE87) I2CRXD;
__xdata volatile unsigned char  __at(0xFE88) I2CMSAUX;
__xdata volatile unsigned char  __at(0xFE89) I2CPSCR;

__xdata volatile unsigned char  __at(0xFE90) SPI_CLKDIV;
__xdata volatile unsigned char  __at(0xFE91) PWMA_CLKDIV;
__xdata volatile unsigned char  __at(0xFE92) PWMB_CLKDIV;
__xdata volatile unsigned char  __at(0xFE93) TFPU_CLKDIV;
__xdata volatile unsigned char  __at(0xFE94) I2S_CLKDIV;

__xdata volatile unsigned char  __at(0xFE99) RSTFLAG;
__xdata volatile unsigned char  __at(0xFE9A) RSTCR0;
__xdata volatile unsigned char  __at(0xFE9B) RSTCR1;
__xdata volatile unsigned char  __at(0xFE9C) RSTCR2;
__xdata volatile unsigned char  __at(0xFE9D) RSTCR3;
__xdata volatile unsigned char  __at(0xFE9E) RSTCR4;
__xdata volatile unsigned char  __at(0xFE9F) RSTCR5;

__xdata volatile unsigned char  __at(0xFEA0) TM0PS;
__xdata volatile unsigned char  __at(0xFEA1) TM1PS;
__xdata volatile unsigned char  __at(0xFEA2) TM2PS;
__xdata volatile unsigned char  __at(0xFEA3) TM3PS;
__xdata volatile unsigned char  __at(0xFEA4) TM4PS;
__xdata volatile unsigned char  __at(0xFEA8) ADCTIM;
__xdata volatile unsigned char  __at(0xFEAD) ADCEXCFG;
__xdata volatile unsigned char  __at(0xFEAE) CMPEXCFG;

__xdata volatile unsigned char  __at(0xFEB0) PWMA_ETRPS;
__xdata volatile unsigned char  __at(0xFEB1) PWMA_ENO;
__xdata volatile unsigned char  __at(0xFEB2) PWMA_PS;
__xdata volatile unsigned char  __at(0xFEB3) PWMA_IOAUX;
__xdata volatile unsigned char  __at(0xFEB4) PWMB_ETRPS;
__xdata volatile unsigned char  __at(0xFEB5) PWMB_ENO;
__xdata volatile unsigned char  __at(0xFEB6) PWMB_PS;
__xdata volatile unsigned char  __at(0xFEB7) PWMB_IOAUX;
__xdata volatile unsigned char  __at(0xFEB8) PWMA_PS2;
__xdata volatile unsigned char  __at(0xFEB9) PWMA_RCRH;
__xdata volatile unsigned char  __at(0xFEBA) PWMB_RCRH;

__xdata volatile unsigned char  __at(0xFEC0) PWMA_CR1;
__xdata volatile unsigned char  __at(0xFEC1) PWMA_CR2;
__xdata volatile unsigned char  __at(0xFEC2) PWMA_SMCR;
__xdata volatile unsigned char  __at(0xFEC3) PWMA_ETR;
__xdata volatile unsigned char  __at(0xFEC4) PWMA_IER;
__xdata volatile unsigned char  __at(0xFEC5) PWMA_SR1;
__xdata volatile unsigned char  __at(0xFEC6) PWMA_SR2;
__xdata volatile unsigned char  __at(0xFEC7) PWMA_EGR;
__xdata volatile unsigned char  __at(0xFEC8) PWMA_CCMR1;
__xdata volatile unsigned char  __at(0xFEC9) PWMA_CCMR2;
__xdata volatile unsigned char  __at(0xFECA) PWMA_CCMR3;
__xdata volatile unsigned char  __at(0xFECB) PWMA_CCMR4;
__xdata volatile unsigned char  __at(0xFECC) PWMA_CCER1;
__xdata volatile unsigned char  __at(0xFECD) PWMA_CCER2;
__xdata volatile unsigned char  __at(0xFECE) PWMA_CNTRH;
__xdata volatile unsigned char  __at(0xFECF) PWMA_CNTRL;
__xdata volatile unsigned char  __at(0xFED0) PWMA_PSCRH;
__xdata volatile unsigned char  __at(0xFED1) PWMA_PSCRL;
__xdata volatile unsigned char  __at(0xFED2) PWMA_ARRH;
__xdata volatile unsigned char  __at(0xFED3) PWMA_ARRL;
__xdata volatile unsigned char  __at(0xFED4) PWMA_RCR;
__xdata volatile unsigned char  __at(0xFED5) PWMA_CCR1H;
__xdata volatile unsigned char  __at(0xFED6) PWMA_CCR1L;
__xdata volatile unsigned char  __at(0xFED7) PWMA_CCR2H;
__xdata volatile unsigned char  __at(0xFED8) PWMA_CCR2L;
__xdata volatile unsigned char  __at(0xFED9) PWMA_CCR3H;
__xdata volatile unsigned char  __at(0xFEDA) PWMA_CCR3L;
__xdata volatile unsigned char  __at(0xFEDB) PWMA_CCR4H;
__xdata volatile unsigned char  __at(0xFEDC) PWMA_CCR4L;
__xdata volatile unsigned char  __at(0xFEDD) PWMA_BKR;
__xdata volatile unsigned char  __at(0xFEDE) PWMA_DTR;
__xdata volatile unsigned char  __at(0xFEDF) PWMA_OISR;

__xdata volatile unsigned char  __at(0xFEE0) PWMB_CR1;
__xdata volatile unsigned char  __at(0xFEE1) PWMB_CR2;
__xdata volatile unsigned char  __at(0xFEE2) PWMB_SMCR;
__xdata volatile unsigned char  __at(0xFEE3) PWMB_ETR;
__xdata volatile unsigned char  __at(0xFEE4) PWMB_IER;
__xdata volatile unsigned char  __at(0xFEE5) PWMB_SR1;
__xdata volatile unsigned char  __at(0xFEE6) PWMB_SR2;
__xdata volatile unsigned char  __at(0xFEE7) PWMB_EGR;
__xdata volatile unsigned char  __at(0xFEE8) PWMB_CCMR1;
__xdata volatile unsigned char  __at(0xFEE9) PWMB_CCMR2;
__xdata volatile unsigned char  __at(0xFEEA) PWMB_CCMR3;
__xdata volatile unsigned char  __at(0xFEEB) PWMB_CCMR4;
__xdata volatile unsigned char  __at(0xFEEC) PWMB_CCER1;
__xdata volatile unsigned char  __at(0xFEED) PWMB_CCER2;
__xdata volatile unsigned char  __at(0xFEEE) PWMB_CNTRH;
__xdata volatile unsigned char  __at(0xFEEF) PWMB_CNTRL;
__xdata volatile unsigned char  __at(0xFEF0) PWMB_PSCRH;
__xdata volatile unsigned char  __at(0xFEF1) PWMB_PSCRL;
__xdata volatile unsigned char  __at(0xFEF2) PWMB_ARRH;
__xdata volatile unsigned char  __at(0xFEF3) PWMB_ARRL;
__xdata volatile unsigned char  __at(0xFEF4) PWMB_RCR;
__xdata volatile unsigned char  __at(0xFEF5) PWMB_CCR5H;
__xdata volatile unsigned char  __at(0xFEF6) PWMB_CCR5L;
__xdata volatile unsigned char  __at(0xFEF7) PWMB_CCR6H;
__xdata volatile unsigned char  __at(0xFEF8) PWMB_CCR6L;
__xdata volatile unsigned char  __at(0xFEF9) PWMB_CCR7H;
__xdata volatile unsigned char  __at(0xFEFA) PWMB_CCR7L;
__xdata volatile unsigned char  __at(0xFEFB) PWMB_CCR8H;
__xdata volatile unsigned char  __at(0xFEFC) PWMB_CCR8L;
__xdata volatile unsigned char  __at(0xFEFD) PWMB_BKR;
__xdata volatile unsigned char  __at(0xFEFE) PWMB_DTR;
__xdata volatile unsigned char  __at(0xFEFF) PWMB_OISR;

/////////////////////////////////////////////////
//7E:FD00H-7E:FDFFH
/////////////////////////////////////////////////

__xdata volatile unsigned char  __at(0xFD00) P0INTE;
__xdata volatile unsigned char  __at(0xFD01) P1INTE;
__xdata volatile unsigned char  __at(0xFD02) P2INTE;
__xdata volatile unsigned char  __at(0xFD03) P3INTE;
__xdata volatile unsigned char  __at(0xFD04) P4INTE;
__xdata volatile unsigned char  __at(0xFD05) P5INTE;
__xdata volatile unsigned char  __at(0xFD06) P6INTE;
__xdata volatile unsigned char  __at(0xFD07) P7INTE;
__xdata volatile unsigned char  __at(0xFD10) P0INTF;
__xdata volatile unsigned char  __at(0xFD11) P1INTF;
__xdata volatile unsigned char  __at(0xFD12) P2INTF;
__xdata volatile unsigned char  __at(0xFD13) P3INTF;
__xdata volatile unsigned char  __at(0xFD14) P4INTF;
__xdata volatile unsigned char  __at(0xFD15) P5INTF;
__xdata volatile unsigned char  __at(0xFD16) P6INTF;
__xdata volatile unsigned char  __at(0xFD17) P7INTF;
__xdata volatile unsigned char  __at(0xFD20) P0IM0;
__xdata volatile unsigned char  __at(0xFD21) P1IM0;
__xdata volatile unsigned char  __at(0xFD22) P2IM0;
__xdata volatile unsigned char  __at(0xFD23) P3IM0;
__xdata volatile unsigned char  __at(0xFD24) P4IM0;
__xdata volatile unsigned char  __at(0xFD25) P5IM0;
__xdata volatile unsigned char  __at(0xFD26) P6IM0;
__xdata volatile unsigned char  __at(0xFD27) P7IM0;
__xdata volatile unsigned char  __at(0xFD30) P0IM1;
__xdata volatile unsigned char  __at(0xFD31) P1IM1;
__xdata volatile unsigned char  __at(0xFD32) P2IM1;
__xdata volatile unsigned char  __at(0xFD33) P3IM1;
__xdata volatile unsigned char  __at(0xFD34) P4IM1;
__xdata volatile unsigned char  __at(0xFD35) P5IM1;
__xdata volatile unsigned char  __at(0xFD36) P6IM1;
__xdata volatile unsigned char  __at(0xFD37) P7IM1;
__xdata volatile unsigned char  __at(0xFD40) P0WKUE;
__xdata volatile unsigned char  __at(0xFD41) P1WKUE;
__xdata volatile unsigned char  __at(0xFD42) P2WKUE;
__xdata volatile unsigned char  __at(0xFD43) P3WKUE;
__xdata volatile unsigned char  __at(0xFD44) P4WKUE;
__xdata volatile unsigned char  __at(0xFD45) P5WKUE;
__xdata volatile unsigned char  __at(0xFD46) P6WKUE;
__xdata volatile unsigned char  __at(0xFD47) P7WKUE;

__xdata volatile unsigned char  __at(0xFD50) CCAPM2;
__xdata volatile unsigned char  __at(0xFD51) CCAP2L;
__xdata volatile unsigned char  __at(0xFD52) CCAP2H;
__xdata volatile unsigned char  __at(0xFD53) PCA_PWM2;
__xdata volatile unsigned char  __at(0xFD54) CCAPM3;
__xdata volatile unsigned char  __at(0xFD55) CCAP3L;
__xdata volatile unsigned char  __at(0xFD56) CCAP3H;
__xdata volatile unsigned char  __at(0xFD57) PCA_PWM3;
__xdata volatile unsigned char  __at(0xFD58) CCAPM0;
__xdata volatile unsigned char  __at(0xFD59) CCAP0L;
__xdata volatile unsigned char  __at(0xFD5A) CCAP0H;
__xdata volatile unsigned char  __at(0xFD5B) PCA_PWM0;
__xdata volatile unsigned char  __at(0xFD5C) CCAPM1;
__xdata volatile unsigned char  __at(0xFD5D) CCAP1L;
__xdata volatile unsigned char  __at(0xFD5E) CCAP1H;
__xdata volatile unsigned char  __at(0xFD5F) PCA_PWM1;

__xdata volatile unsigned char  __at(0xFD60) PINIPL;
__xdata volatile unsigned char  __at(0xFD61) PINIPH;

__xdata volatile unsigned char  __at(0xFD64) CCON;
    #define     CF                  0x80
    #define     CR                  0x40
    #define     CCF2                0x04
    #define     CCF1                0x02
    #define     CCF0                0x01

__xdata volatile unsigned char  __at(0xFD65) CL;
__xdata volatile unsigned char  __at(0xFD66) CH;

__xdata volatile unsigned char  __at(0xFD67) CMOD;
    #define     CIDL                0x80
    #define     ECF                 0x01

__xdata volatile unsigned char  __at(0xFD70) UR1TOCR;
__xdata volatile unsigned char  __at(0xFD71) UR1TOSR;
__xdata volatile unsigned char  __at(0xFD72) UR1TOTH;
__xdata volatile unsigned char  __at(0xFD73) UR1TOTL;
__xdata volatile unsigned char  __at(0xFD74) UR2TOCR;
__xdata volatile unsigned char  __at(0xFD75) UR2TOSR;
__xdata volatile unsigned char  __at(0xFD76) UR2TOTH;
__xdata volatile unsigned char  __at(0xFD77) UR2TOTL;
__xdata volatile unsigned char  __at(0xFD78) UR3TOCR;
__xdata volatile unsigned char  __at(0xFD79) UR3TOSR;
__xdata volatile unsigned char  __at(0xFD7A) UR3TOTH;
__xdata volatile unsigned char  __at(0xFD7B) UR3TOTL;
__xdata volatile unsigned char  __at(0xFD7C) UR4TOCR;
__xdata volatile unsigned char  __at(0xFD7D) UR4TOSR;
__xdata volatile unsigned char  __at(0xFD7E) UR4TOTH;
__xdata volatile unsigned char  __at(0xFD7F) UR4TOTL;

__xdata volatile unsigned char  __at(0xFD80) SPITOCR;
__xdata volatile unsigned char  __at(0xFD81) SPITOSR;
__xdata volatile unsigned char  __at(0xFD82) SPITOTH;
__xdata volatile unsigned char  __at(0xFD83) SPITOTL;
__xdata volatile unsigned char  __at(0xFD84) I2CTOCR;
__xdata volatile unsigned char  __at(0xFD85) I2CTOSR;
__xdata volatile unsigned char  __at(0xFD86) I2CTOTH;
__xdata volatile unsigned char  __at(0xFD87) I2CTOTL;

__xdata volatile unsigned char  __at(0xFD88) UR1TOTE;
__xdata volatile unsigned char  __at(0xFD89) UR2TOTE;
__xdata volatile unsigned char  __at(0xFD8A) UR3TOTE;
__xdata volatile unsigned char  __at(0xFD8B) UR4TOTE;
__xdata volatile unsigned char  __at(0xFD8C) SPITOTE;
__xdata volatile unsigned char  __at(0xFD8D) I2CTOTE;

__xdata volatile unsigned char  __at(0xFD98) I2SCR;
__xdata volatile unsigned char  __at(0xFD99) I2SSR;
__xdata volatile unsigned char  __at(0xFD9A) I2SDRH;
__xdata volatile unsigned char  __at(0xFD9B) I2SDRL;
__xdata volatile unsigned char  __at(0xFD9C) I2SPRH;
__xdata volatile unsigned char  __at(0xFD9D) I2SPRL;
__xdata volatile unsigned char  __at(0xFD9E) I2SCFGH;
__xdata volatile unsigned char  __at(0xFD9F) I2SCFGL;
__xdata volatile unsigned char  __at(0xFDA0) I2SMD;
__xdata volatile unsigned char  __at(0xFDA1) I2SMCKDIV;

__xdata volatile unsigned char  __at(0xFDA8) CRECR;
__xdata volatile unsigned char  __at(0xFDA9) CRECNTH;
__xdata volatile unsigned char  __at(0xFDAA) CRECNTL;
__xdata volatile unsigned char  __at(0xFDAB) CRERES;

__xdata volatile unsigned char  __at(0xFDB4) S2CFG;
__xdata volatile unsigned char  __at(0xFDB5) S2ADDR;
__xdata volatile unsigned char  __at(0xFDB6) S2ADEN;
__xdata volatile unsigned char  __at(0xFDC0) USARTCR1;
__xdata volatile unsigned char  __at(0xFDC1) USARTCR2;
__xdata volatile unsigned char  __at(0xFDC2) USARTCR3;
__xdata volatile unsigned char  __at(0xFDC3) USARTCR4;
__xdata volatile unsigned char  __at(0xFDC4) USARTCR5;
__xdata volatile unsigned char  __at(0xFDC5) USARTGTR;
__xdata volatile unsigned char  __at(0xFDC6) USARTBRH;
__xdata volatile unsigned char  __at(0xFDC7) USARTBRL;
__xdata volatile unsigned char  __at(0xFDC8) USART2CR1;
__xdata volatile unsigned char  __at(0xFDC9) USART2CR2;
__xdata volatile unsigned char  __at(0xFDCA) USART2CR3;
__xdata volatile unsigned char  __at(0xFDCB) USART2CR4;
__xdata volatile unsigned char  __at(0xFDCC) USART2CR5;
__xdata volatile unsigned char  __at(0xFDCD) USART2GTR;
__xdata volatile unsigned char  __at(0xFDCE) USART2BRH;
__xdata volatile unsigned char  __at(0xFDCF) USART2BRL;

#define     CHIPID                  ( (unsigned char volatile xdata *)0xfde0)

__xdata volatile unsigned char  __at(0xFDE0) CHIPID0;
__xdata volatile unsigned char  __at(0xFDE1) CHIPID1;
__xdata volatile unsigned char  __at(0xFDE2) CHIPID2;
__xdata volatile unsigned char  __at(0xFDE3) CHIPID3;
__xdata volatile unsigned char  __at(0xFDE4) CHIPID4;
__xdata volatile unsigned char  __at(0xFDE5) CHIPID5;
__xdata volatile unsigned char  __at(0xFDE6) CHIPID6;
__xdata volatile unsigned char  __at(0xFDE7) CHIPID7;
__xdata volatile unsigned char  __at(0xFDE8) CHIPID8;
__xdata volatile unsigned char  __at(0xFDE9) CHIPID9;
__xdata volatile unsigned char  __at(0xFDEA) CHIPID10;
__xdata volatile unsigned char  __at(0xFDEB) CHIPID11;
__xdata volatile unsigned char  __at(0xFDEC) CHIPID12;
__xdata volatile unsigned char  __at(0xFDED) CHIPID13;
__xdata volatile unsigned char  __at(0xFDEE) CHIPID14;
__xdata volatile unsigned char  __at(0xFDEF) CHIPID15;
__xdata volatile unsigned char  __at(0xFDF0) CHIPID16;
__xdata volatile unsigned char  __at(0xFDF1) CHIPID17;
__xdata volatile unsigned char  __at(0xFDF2) CHIPID18;
__xdata volatile unsigned char  __at(0xFDF3) CHIPID19;
__xdata volatile unsigned char  __at(0xFDF4) CHIPID20;
__xdata volatile unsigned char  __at(0xFDF5) CHIPID21;
__xdata volatile unsigned char  __at(0xFDF6) CHIPID22;
__xdata volatile unsigned char  __at(0xFDF7) CHIPID23;
__xdata volatile unsigned char  __at(0xFDF8) CHIPID24;
__xdata volatile unsigned char  __at(0xFDF9) CHIPID25;
__xdata volatile unsigned char  __at(0xFDFA) CHIPID26;
__xdata volatile unsigned char  __at(0xFDFB) CHIPID27;
__xdata volatile unsigned char  __at(0xFDFC) CHIPID28;
__xdata volatile unsigned char  __at(0xFDFD) CHIPID29;
__xdata volatile unsigned char  __at(0xFDFE) CHIPID30;
__xdata volatile unsigned char  __at(0xFDFF) CHIPID31;

/////////////////////////////////////////////////
//7E:FC00H-7E:FCFFH
/////////////////////////////////////////////////



/////////////////////////////////////////////////
//7E:FB00H-7E:FBFFH
/////////////////////////////////////////////////

#define     CHIPIDX                  ( (unsigned char volatile xdata *)0xfbd0)

__xdata volatile unsigned char  __at(0xFBD0) CHIPIDX0;
__xdata volatile unsigned char  __at(0xFBD1) CHIPIDX1;
__xdata volatile unsigned char  __at(0xFBD2) CHIPIDX2;
__xdata volatile unsigned char  __at(0xFBD3) CHIPIDX3;
__xdata volatile unsigned char  __at(0xFBD4) CHIPIDX4;
__xdata volatile unsigned char  __at(0xFBD5) CHIPIDX5;
__xdata volatile unsigned char  __at(0xFBD6) CHIPIDX6;
__xdata volatile unsigned char  __at(0xFBD7) CHIPIDX7;
__xdata volatile unsigned char  __at(0xFBD8) CHIPIDX8;
__xdata volatile unsigned char  __at(0xFBD9) CHIPIDX9;
__xdata volatile unsigned char  __at(0xFBDA) CHIPIDX10;
__xdata volatile unsigned char  __at(0xFBDB) CHIPIDX11;
__xdata volatile unsigned char  __at(0xFBDC) CHIPIDX12;
__xdata volatile unsigned char  __at(0xFBDD) CHIPIDX13;
__xdata volatile unsigned char  __at(0xFBDE) CHIPIDX14;
__xdata volatile unsigned char  __at(0xFBDF) CHIPIDX15;
__xdata volatile unsigned char  __at(0xFBE0) CHIPIDX16;
__xdata volatile unsigned char  __at(0xFBE1) CHIPIDX17;
__xdata volatile unsigned char  __at(0xFBE2) CHIPIDX18;
__xdata volatile unsigned char  __at(0xFBE3) CHIPIDX19;
__xdata volatile unsigned char  __at(0xFBE4) CHIPIDX20;
__xdata volatile unsigned char  __at(0xFBE5) CHIPIDX21;
__xdata volatile unsigned char  __at(0xFBE6) CHIPIDX22;
__xdata volatile unsigned char  __at(0xFBE7) CHIPIDX23;
__xdata volatile unsigned char  __at(0xFBE8) CHIPIDX24;
__xdata volatile unsigned char  __at(0xFBE9) CHIPIDX25;
__xdata volatile unsigned char  __at(0xFBEA) CHIPIDX26;
__xdata volatile unsigned char  __at(0xFBEB) CHIPIDX27;
__xdata volatile unsigned char  __at(0xFBEC) CHIPIDX28;
__xdata volatile unsigned char  __at(0xFBED) CHIPIDX29;
__xdata volatile unsigned char  __at(0xFBEE) CHIPIDX30;
__xdata volatile unsigned char  __at(0xFBEF) CHIPIDX31;

__xdata volatile unsigned char  __at(0xFBF0) HSPWMA_CFG;
__xdata volatile unsigned char  __at(0xFBF1) HSPWMA_ADR;
__xdata volatile unsigned char  __at(0xFBF2) HSPWMA_DAT;
__xdata volatile unsigned char  __at(0xFBF3) HSPWMA_ADRH;

__xdata volatile unsigned char  __at(0xFBF4) HSPWMB_CFG;
__xdata volatile unsigned char  __at(0xFBF5) HSPWMB_ADR;
__xdata volatile unsigned char  __at(0xFBF6) HSPWMB_DAT;
__xdata volatile unsigned char  __at(0xFBF7) HSPWMB_ADRH;

__xdata volatile unsigned char  __at(0xFBF8) HSSPI_CFG;
__xdata volatile unsigned char  __at(0xFBF9) HSSPI_CFG2;
__xdata volatile unsigned char  __at(0xFBFA) HSSPI_STA;
__xdata volatile unsigned char  __at(0xFBFB) HSSPI_PSCR;

/////////////////////////////////////////////////
//7E:FA00H-7E:FAFFH
/////////////////////////////////////////////////

__xdata volatile unsigned char  __at(0xFA00) DMA_M2M_CFG;
__xdata volatile unsigned char  __at(0xFA01) DMA_M2M_CR;
__xdata volatile unsigned char  __at(0xFA02) DMA_M2M_STA;
__xdata volatile unsigned char  __at(0xFA03) DMA_M2M_AMT;
__xdata volatile unsigned char  __at(0xFA04) DMA_M2M_DONE;
__xdata volatile unsigned char  __at(0xFA05) DMA_M2M_TXAH;
__xdata volatile unsigned char  __at(0xFA06) DMA_M2M_TXAL;
__xdata volatile unsigned char  __at(0xFA07) DMA_M2M_RXAH;
__xdata volatile unsigned char  __at(0xFA08) DMA_M2M_RXAL;

__xdata volatile unsigned char  __at(0xFA10) DMA_ADC_CFG;
__xdata volatile unsigned char  __at(0xFA11) DMA_ADC_CR;
__xdata volatile unsigned char  __at(0xFA12) DMA_ADC_STA;
__xdata volatile unsigned char  __at(0xFA13) DMA_ADC_AMT;
__xdata volatile unsigned char  __at(0xFA14) DMA_ADC_DONE;
__xdata volatile unsigned char  __at(0xFA17) DMA_ADC_RXAH;
__xdata volatile unsigned char  __at(0xFA18) DMA_ADC_RXAL;
__xdata volatile unsigned char  __at(0xFA19) DMA_ADC_CFG2;
__xdata volatile unsigned char  __at(0xFA1A) DMA_ADC_CHSW0;
__xdata volatile unsigned char  __at(0xFA1B) DMA_ADC_CHSW1;
__xdata volatile unsigned char  __at(0xFA1E) DMA_ADC_ITVH;
__xdata volatile unsigned char  __at(0xFA1F) DMA_ADC_ITVL;

__xdata volatile unsigned char  __at(0xFA20) DMA_SPI_CFG;
__xdata volatile unsigned char  __at(0xFA21) DMA_SPI_CR;
__xdata volatile unsigned char  __at(0xFA22) DMA_SPI_STA;
__xdata volatile unsigned char  __at(0xFA23) DMA_SPI_AMT;
__xdata volatile unsigned char  __at(0xFA24) DMA_SPI_DONE;
__xdata volatile unsigned char  __at(0xFA25) DMA_SPI_TXAH;
__xdata volatile unsigned char  __at(0xFA26) DMA_SPI_TXAL;
__xdata volatile unsigned char  __at(0xFA27) DMA_SPI_RXAH;
__xdata volatile unsigned char  __at(0xFA28) DMA_SPI_RXAL;
__xdata volatile unsigned char  __at(0xFA29) DMA_SPI_CFG2;
__xdata volatile unsigned char  __at(0xFA2E) DMA_SPI_ITVH;
__xdata volatile unsigned char  __at(0xFA2F) DMA_SPI_ITVL;

__xdata volatile unsigned char  __at(0xFA30) DMA_UR1T_CFG;
__xdata volatile unsigned char  __at(0xFA31) DMA_UR1T_CR;
__xdata volatile unsigned char  __at(0xFA32) DMA_UR1T_STA;
__xdata volatile unsigned char  __at(0xFA33) DMA_UR1T_AMT;
__xdata volatile unsigned char  __at(0xFA34) DMA_UR1T_DONE;
__xdata volatile unsigned char  __at(0xFA35) DMA_UR1T_TXAH;
__xdata volatile unsigned char  __at(0xFA36) DMA_UR1T_TXAL;
__xdata volatile unsigned char  __at(0xFA38) DMA_UR1R_CFG;
__xdata volatile unsigned char  __at(0xFA39) DMA_UR1R_CR;
__xdata volatile unsigned char  __at(0xFA3A) DMA_UR1R_STA;
__xdata volatile unsigned char  __at(0xFA3B) DMA_UR1R_AMT;
__xdata volatile unsigned char  __at(0xFA3C) DMA_UR1R_DONE;
__xdata volatile unsigned char  __at(0xFA3D) DMA_UR1R_RXAH;
__xdata volatile unsigned char  __at(0xFA3E) DMA_UR1R_RXAL;

__xdata volatile unsigned char  __at(0xFA40) DMA_UR2T_CFG;
__xdata volatile unsigned char  __at(0xFA41) DMA_UR2T_CR;
__xdata volatile unsigned char  __at(0xFA42) DMA_UR2T_STA;
__xdata volatile unsigned char  __at(0xFA43) DMA_UR2T_AMT;
__xdata volatile unsigned char  __at(0xFA44) DMA_UR2T_DONE;
__xdata volatile unsigned char  __at(0xFA45) DMA_UR2T_TXAH;
__xdata volatile unsigned char  __at(0xFA46) DMA_UR2T_TXAL;
__xdata volatile unsigned char  __at(0xFA48) DMA_UR2R_CFG;
__xdata volatile unsigned char  __at(0xFA49) DMA_UR2R_CR;
__xdata volatile unsigned char  __at(0xFA4A) DMA_UR2R_STA;
__xdata volatile unsigned char  __at(0xFA4B) DMA_UR2R_AMT;
__xdata volatile unsigned char  __at(0xFA4C) DMA_UR2R_DONE;
__xdata volatile unsigned char  __at(0xFA4D) DMA_UR2R_RXAH;
__xdata volatile unsigned char  __at(0xFA4E) DMA_UR2R_RXAL;

__xdata volatile unsigned char  __at(0xFA50) DMA_UR3T_CFG;
__xdata volatile unsigned char  __at(0xFA51) DMA_UR3T_CR;
__xdata volatile unsigned char  __at(0xFA52) DMA_UR3T_STA;
__xdata volatile unsigned char  __at(0xFA53) DMA_UR3T_AMT;
__xdata volatile unsigned char  __at(0xFA54) DMA_UR3T_DONE;
__xdata volatile unsigned char  __at(0xFA55) DMA_UR3T_TXAH;
__xdata volatile unsigned char  __at(0xFA56) DMA_UR3T_TXAL;
__xdata volatile unsigned char  __at(0xFA58) DMA_UR3R_CFG;
__xdata volatile unsigned char  __at(0xFA59) DMA_UR3R_CR;
__xdata volatile unsigned char  __at(0xFA5A) DMA_UR3R_STA;
__xdata volatile unsigned char  __at(0xFA5B) DMA_UR3R_AMT;
__xdata volatile unsigned char  __at(0xFA5C) DMA_UR3R_DONE;
__xdata volatile unsigned char  __at(0xFA5D) DMA_UR3R_RXAH;
__xdata volatile unsigned char  __at(0xFA5E) DMA_UR3R_RXAL;

__xdata volatile unsigned char  __at(0xFA60) DMA_UR4T_CFG;
__xdata volatile unsigned char  __at(0xFA61) DMA_UR4T_CR;
__xdata volatile unsigned char  __at(0xFA62) DMA_UR4T_STA;
__xdata volatile unsigned char  __at(0xFA63) DMA_UR4T_AMT;
__xdata volatile unsigned char  __at(0xFA64) DMA_UR4T_DONE;
__xdata volatile unsigned char  __at(0xFA65) DMA_UR4T_TXAH;
__xdata volatile unsigned char  __at(0xFA66) DMA_UR4T_TXAL;
__xdata volatile unsigned char  __at(0xFA68) DMA_UR4R_CFG;
__xdata volatile unsigned char  __at(0xFA69) DMA_UR4R_CR;
__xdata volatile unsigned char  __at(0xFA6A) DMA_UR4R_STA;
__xdata volatile unsigned char  __at(0xFA6B) DMA_UR4R_AMT;
__xdata volatile unsigned char  __at(0xFA6C) DMA_UR4R_DONE;
__xdata volatile unsigned char  __at(0xFA6D) DMA_UR4R_RXAH;
__xdata volatile unsigned char  __at(0xFA6E) DMA_UR4R_RXAL;

__xdata volatile unsigned char  __at(0xFA70) DMA_LCM_CFG;
__xdata volatile unsigned char  __at(0xFA71) DMA_LCM_CR;
__xdata volatile unsigned char  __at(0xFA72) DMA_LCM_STA;
__xdata volatile unsigned char  __at(0xFA73) DMA_LCM_AMT;
__xdata volatile unsigned char  __at(0xFA74) DMA_LCM_DONE;
__xdata volatile unsigned char  __at(0xFA75) DMA_LCM_TXAH;
__xdata volatile unsigned char  __at(0xFA76) DMA_LCM_TXAL;
__xdata volatile unsigned char  __at(0xFA77) DMA_LCM_RXAH;
__xdata volatile unsigned char  __at(0xFA78) DMA_LCM_RXAL;
__xdata volatile unsigned char  __at(0xFA7E) DMA_LCM_ITVH;
__xdata volatile unsigned char  __at(0xFA7F) DMA_LCM_ITVL;

__xdata volatile unsigned char  __at(0xFA80) DMA_M2M_AMTH;
__xdata volatile unsigned char  __at(0xFA81) DMA_M2M_DONEH;
__xdata volatile unsigned char  __at(0xFA82) DMA_ADC_AMTH;
__xdata volatile unsigned char  __at(0xFA83) DMA_ADC_DONEH;
__xdata volatile unsigned char  __at(0xFA84) DMA_SPI_AMTH;
__xdata volatile unsigned char  __at(0xFA85) DMA_SPI_DONEH;
__xdata volatile unsigned char  __at(0xFA86) DMA_LCM_AMTH;
__xdata volatile unsigned char  __at(0xFA87) DMA_LCM_DONEH;
__xdata volatile unsigned char  __at(0xFA88) DMA_UR1T_AMTH;
__xdata volatile unsigned char  __at(0xFA89) DMA_UR1T_DONEH;
__xdata volatile unsigned char  __at(0xFA8A) DMA_UR1R_AMTH;
__xdata volatile unsigned char  __at(0xFA8B) DMA_UR1R_DONEH;
__xdata volatile unsigned char  __at(0xFA8C) DMA_UR2T_AMTH;
__xdata volatile unsigned char  __at(0xFA8D) DMA_UR2T_DONEH;
__xdata volatile unsigned char  __at(0xFA8E) DMA_UR2R_AMTH;
__xdata volatile unsigned char  __at(0xFA8F) DMA_UR2R_DONEH;
__xdata volatile unsigned char  __at(0xFA90) DMA_UR3T_AMTH;
__xdata volatile unsigned char  __at(0xFA91) DMA_UR3T_DONEH;
__xdata volatile unsigned char  __at(0xFA92) DMA_UR3R_AMTH;
__xdata volatile unsigned char  __at(0xFA93) DMA_UR3R_DONEH;
__xdata volatile unsigned char  __at(0xFA94) DMA_UR4T_AMTH;
__xdata volatile unsigned char  __at(0xFA95) DMA_UR4T_DONEH;
__xdata volatile unsigned char  __at(0xFA96) DMA_UR4R_AMTH;
__xdata volatile unsigned char  __at(0xFA97) DMA_UR4R_DONEH;

__xdata volatile unsigned char  __at(0xFA98) DMA_I2CT_CFG;
__xdata volatile unsigned char  __at(0xFA99) DMA_I2CT_CR;
__xdata volatile unsigned char  __at(0xFA9A) DMA_I2CT_STA;
__xdata volatile unsigned char  __at(0xFA9B) DMA_I2CT_AMT;
__xdata volatile unsigned char  __at(0xFA9C) DMA_I2CT_DONE;
__xdata volatile unsigned char  __at(0xFA9D) DMA_I2CT_TXAH;
__xdata volatile unsigned char  __at(0xFA9E) DMA_I2CT_TXAL;
__xdata volatile unsigned char  __at(0xFAA0) DMA_I2CR_CFG;
__xdata volatile unsigned char  __at(0xFAA1) DMA_I2CR_CR;
__xdata volatile unsigned char  __at(0xFAA2) DMA_I2CR_STA;
__xdata volatile unsigned char  __at(0xFAA3) DMA_I2CR_AMT;
__xdata volatile unsigned char  __at(0xFAA4) DMA_I2CR_DONE;
__xdata volatile unsigned char  __at(0xFAA5) DMA_I2CR_RXAH;
__xdata volatile unsigned char  __at(0xFAA6) DMA_I2CR_RXAL;

__xdata volatile unsigned char  __at(0xFAA8) DMA_I2CT_AMTH;
__xdata volatile unsigned char  __at(0xFAA9) DMA_I2CT_DONEH;
__xdata volatile unsigned char  __at(0xFAAA) DMA_I2CR_AMTH;
__xdata volatile unsigned char  __at(0xFAAB) DMA_I2CR_DONEH;
__xdata volatile unsigned char  __at(0xFAAD) DMA_I2C_CR;
__xdata volatile unsigned char  __at(0xFAAE) DMA_I2C_ST1;
__xdata volatile unsigned char  __at(0xFAAF) DMA_I2C_ST2;

__xdata volatile unsigned char  __at(0xFAB0) DMA_I2ST_CFG;
__xdata volatile unsigned char  __at(0xFAB1) DMA_I2ST_CR;
__xdata volatile unsigned char  __at(0xFAB2) DMA_I2ST_STA;
__xdata volatile unsigned char  __at(0xFAB3) DMA_I2ST_AMT;
__xdata volatile unsigned char  __at(0xFAB4) DMA_I2ST_DONE;
__xdata volatile unsigned char  __at(0xFAB5) DMA_I2ST_TXAH;
__xdata volatile unsigned char  __at(0xFAB6) DMA_I2ST_TXAL;
__xdata volatile unsigned char  __at(0xFAB8) DMA_I2SR_CFG;
__xdata volatile unsigned char  __at(0xFAB9) DMA_I2SR_CR;
__xdata volatile unsigned char  __at(0xFABA) DMA_I2SR_STA;
__xdata volatile unsigned char  __at(0xFABB) DMA_I2SR_AMT;
__xdata volatile unsigned char  __at(0xFABC) DMA_I2SR_DONE;
__xdata volatile unsigned char  __at(0xFABD) DMA_I2SR_RXAH;
__xdata volatile unsigned char  __at(0xFABE) DMA_I2SR_RXAL;

__xdata volatile unsigned char  __at(0xFAC0) DMA_I2ST_AMTH;
__xdata volatile unsigned char  __at(0xFAC1) DMA_I2ST_DONEH;
__xdata volatile unsigned char  __at(0xFAC2) DMA_I2SR_AMTH;
__xdata volatile unsigned char  __at(0xFAC3) DMA_I2SR_DONEH;
__xdata volatile unsigned char  __at(0xFAC4) DMA_I2C_ITVH;
__xdata volatile unsigned char  __at(0xFAC5) DMA_I2C_ITVL;
__xdata volatile unsigned char  __at(0xFAC6) DMA_I2S_ITVH;
__xdata volatile unsigned char  __at(0xFAC7) DMA_I2S_ITVL;
__xdata volatile unsigned char  __at(0xFAC8) DMA_UR1_ITVH;
__xdata volatile unsigned char  __at(0xFAC9) DMA_UR1_ITVL;
__xdata volatile unsigned char  __at(0xFACA) DMA_UR2_ITVH;
__xdata volatile unsigned char  __at(0xFACB) DMA_UR2_ITVL;
__xdata volatile unsigned char  __at(0xFACC) DMA_UR3_ITVH;
__xdata volatile unsigned char  __at(0xFACD) DMA_UR3_ITVL;
__xdata volatile unsigned char  __at(0xFACE) DMA_UR4_ITVH;
__xdata volatile unsigned char  __at(0xFACF) DMA_UR4_ITVL;

__xdata volatile unsigned char  __at(0xFAD0) DMA_QSPI_CFG;
__xdata volatile unsigned char  __at(0xFAD1) DMA_QSPI_CR;
__xdata volatile unsigned char  __at(0xFAD2) DMA_QSPI_STA;
__xdata volatile unsigned char  __at(0xFAD3) DMA_QSPI_AMT;
__xdata volatile unsigned char  __at(0xFAD4) DMA_QSPI_DONE;
__xdata volatile unsigned char  __at(0xFAD5) DMA_QSPI_TXAH;
__xdata volatile unsigned char  __at(0xFAD6) DMA_QSPI_TXAL;
__xdata volatile unsigned char  __at(0xFAD7) DMA_QSPI_RXAH;
__xdata volatile unsigned char  __at(0xFAD8) DMA_QSPI_RXAL;
__xdata volatile unsigned char  __at(0xFADB) DMA_QSPI_AMTH;
__xdata volatile unsigned char  __at(0xFADC) DMA_QSPI_DONEH;
__xdata volatile unsigned char  __at(0xFADE) DMA_QSPI_ITVH;
__xdata volatile unsigned char  __at(0xFADF) DMA_QSPI_ITVL;

__xdata volatile unsigned char  __at(0xFAF0) DMA_P2P_CR1;
__xdata volatile unsigned char  __at(0xFAF1) DMA_P2P_CR2;
__xdata volatile unsigned char  __at(0xFAF8) DMA_ARB_CFG;
__xdata volatile unsigned char  __at(0xFAF9) DMA_ARB_STA;

/////////////////////////////////////////////////
//7E:F900H-7E:F9FFH
/////////////////////////////////////////////////

__xdata volatile unsigned char  __at(0xF900) QSPI_CR1;
__xdata volatile unsigned char  __at(0xF901) QSPI_CR2;
__xdata volatile unsigned char  __at(0xF902) QSPI_CR3;
__xdata volatile unsigned char  __at(0xF903) QSPI_CR4;
__xdata volatile unsigned char  __at(0xF904) QSPI_DCR1;
__xdata volatile unsigned char  __at(0xF905) QSPI_DCR2;
__xdata volatile unsigned char  __at(0xF906) QSPI_SR1;
__xdata volatile unsigned char  __at(0xF907) QSPI_SR2;
__xdata volatile unsigned char  __at(0xF908) QSPI_FCR;
__xdata volatile unsigned char  __at(0xF909) QSPI_HCR1;
__xdata volatile unsigned char  __at(0xF90A) QSPI_HCR2;
__xdata volatile unsigned char  __at(0xF910) QSPI_DLR1;
__xdata volatile unsigned char  __at(0xF911) QSPI_DLR2;
__xdata volatile unsigned char  __at(0xF914) QSPI_CCR1;
__xdata volatile unsigned char  __at(0xF915) QSPI_CCR2;
__xdata volatile unsigned char  __at(0xF916) QSPI_CCR3;
__xdata volatile unsigned char  __at(0xF917) QSPI_CCR4;
__xdata volatile unsigned char  __at(0xF918) QSPI_AR1;
__xdata volatile unsigned char  __at(0xF919) QSPI_AR2;
__xdata volatile unsigned char  __at(0xF91A) QSPI_AR3;
__xdata volatile unsigned char  __at(0xF91B) QSPI_AR4;
__xdata volatile unsigned char  __at(0xF91C) QSPI_ABR;
__xdata volatile unsigned char  __at(0xF920) QSPI_DR;
__xdata volatile unsigned char  __at(0xF924) QSPI_PSMKR1;
__xdata volatile unsigned char  __at(0xF928) QSPI_PSMAR1;
__xdata volatile unsigned char  __at(0xF92C) QSPI_PIR1;
__xdata volatile unsigned char  __at(0xF92D) QSPI_PIR2;

__xdata volatile unsigned char  __at(0xF930) PWMA_ENO2;
__xdata volatile unsigned char  __at(0xF931) PWMA_IOAUX2;
__xdata volatile unsigned char  __at(0xF932) PWMA_CR3;
__xdata volatile unsigned char  __at(0xF933) PWMA_SR3;
__xdata volatile unsigned char  __at(0xF934) PWMA_CCER3;
__xdata volatile unsigned char  __at(0xF938) PWMA_CCMR1X;
__xdata volatile unsigned char  __at(0xF939) PWMA_CCMR2X;
__xdata volatile unsigned char  __at(0xF93A) PWMA_CCMR3X;
__xdata volatile unsigned char  __at(0xF93B) PWMA_CCMR4X;
__xdata volatile unsigned char  __at(0xF93C) PWMA_CCMR5;
__xdata volatile unsigned char  __at(0xF93D) PWMA_CCMR5X;
__xdata volatile unsigned char  __at(0xF93E) PWMA_CCMR6;
__xdata volatile unsigned char  __at(0xF93F) PWMA_CCMR6X;
__xdata volatile unsigned char  __at(0xF940) PWMA_CCR5H;
__xdata volatile unsigned char  __at(0xF941) PWMA_CCR5L;
__xdata volatile unsigned char  __at(0xF942) PWMA_CCR5X;
__xdata volatile unsigned char  __at(0xF943) PWMA_CCR6H;
__xdata volatile unsigned char  __at(0xF944) PWMA_CCR6L;
__xdata volatile unsigned char  __at(0xF948) PWMA_DER;
__xdata volatile unsigned char  __at(0xF949) PWMA_DBA;
__xdata volatile unsigned char  __at(0xF94A) PWMA_DBL;
__xdata volatile unsigned char  __at(0xF94B) PWMA_DMACR;

__xdata volatile unsigned char  __at(0xF980) DMA_PWMAT_CFG;
__xdata volatile unsigned char  __at(0xF981) DMA_PWMAT_CR;
__xdata volatile unsigned char  __at(0xF982) DMA_PWMAT_STA;
__xdata volatile unsigned char  __at(0xF984) DMA_PWMAT_AMTH;
__xdata volatile unsigned char  __at(0xF985) DMA_PWMAT_AMT;
__xdata volatile unsigned char  __at(0xF986) DMA_PWMAT_DONEH;
__xdata volatile unsigned char  __at(0xF987) DMA_PWMAT_DONE;
__xdata volatile unsigned char  __at(0xF988) DMA_PWMAT_TXAH;
__xdata volatile unsigned char  __at(0xF989) DMA_PWMAT_TXAL;
__xdata volatile unsigned char  __at(0xF98E) DMA_PWMA_ITVH;
__xdata volatile unsigned char  __at(0xF98F) DMA_PWMA_ITVL;

__xdata volatile unsigned char  __at(0xF990) DMA_PWMAR_CFG;
__xdata volatile unsigned char  __at(0xF991) DMA_PWMAR_CR;
__xdata volatile unsigned char  __at(0xF992) DMA_PWMAR_STA;
__xdata volatile unsigned char  __at(0xF994) DMA_PWMAR_AMTH;
__xdata volatile unsigned char  __at(0xF995) DMA_PWMAR_AMT;
__xdata volatile unsigned char  __at(0xF996) DMA_PWMAR_DONEH;
__xdata volatile unsigned char  __at(0xF997) DMA_PWMAR_DONE;
__xdata volatile unsigned char  __at(0xF998) DMA_PWMAR_RXAH;
__xdata volatile unsigned char  __at(0xF999) DMA_PWMAR_RXAL;

/////////////////////////////////////////////////
//USB Control Regiter
/////////////////////////////////////////////////

#define     USBBASE                 0
#define     FADDR                   (USBBASE + 0)
#define     UPDATE                  0x80
#define     POWER                   (USBBASE + 1)
#define     ISOUD                   0x80
#define     USBRST                  0x08
#define     USBRSU                  0x04
#define     USBSUS                  0x02
#define     ENSUS                   0x01
#define     INTRIN1                 (USBBASE + 2)
#define     EP5INIF                 0x20
#define     EP4INIF                 0x10
#define     EP3INIF                 0x08
#define     EP2INIF                 0x04
#define     EP1INIF                 0x02
#define     EP0IF                   0x01
#define     INTROUT1                (USBBASE + 4)
#define     EP5OUTIF                0x20
#define     EP4OUTIF                0x10
#define     EP3OUTIF                0x08
#define     EP2OUTIF                0x04
#define     EP1OUTIF                0x02
#define     INTRUSB                 (USBBASE + 6)
#define     SOFIF                   0x08
#define     RSTIF                   0x04
#define     RSUIF                   0x02
#define     SUSIF                   0x01
#define     INTRIN1E                (USBBASE + 7)
#define     EP5INIE                 0x20
#define     EP4INIE                 0x10
#define     EP3INIE                 0x08
#define     EP2INIE                 0x04
#define     EP1INIE                 0x02
#define     EP0IE                   0x01
#define     INTROUT1E               (USBBASE + 9)
#define     EP5OUTIE                0x20
#define     EP4OUTIE                0x10
#define     EP3OUTIE                0x08
#define     EP2OUTIE                0x04
#define     EP1OUTIE                0x02
#define     INTRUSBE                (USBBASE + 11)
#define     SOFIE                   0x08
#define     RSTIE                   0x04
#define     RSUIE                   0x02
#define     SUSIE                   0x01
#define     FRAME1                  (USBBASE + 12)
#define     FRAME2                  (USBBASE + 13)
#define     INDEX                   (USBBASE + 14)
#define     INMAXP                  (USBBASE + 16)
#define     CSR0                    (USBBASE + 17)
#define     SSUEND                  0x80
#define     SOPRDY                  0x40
#define     SDSTL                   0x20
#define     SUEND                   0x10
#define     DATEND                  0x08
#define     STSTL                   0x04
#define     IPRDY                   0x02
#define     OPRDY                   0x01
#define     INCSR1                  (USBBASE + 17)
#define     INCLRDT                 0x40
#define     INSTSTL                 0x20
#define     INSDSTL                 0x10
#define     INFLUSH                 0x08
#define     INUNDRUN                0x04
#define     INFIFONE                0x02
#define     INIPRDY                 0x01
#define     INCSR2                  (USBBASE + 18)
#define     INAUTOSET               0x80
#define     INISO                   0x40
#define     INMODEIN                0x20
#define     INMODEOUT               0x00
#define     INENDMA                 0x10
#define     INFCDT                  0x08
#define     OUTMAXP                 (USBBASE + 19)
#define     OUTCSR1                 (USBBASE + 20)
#define     OUTCLRDT                0x80
#define     OUTSTSTL                0x40
#define     OUTSDSTL                0x20
#define     OUTFLUSH                0x10
#define     OUTDATERR               0x08
#define     OUTOVRRUN               0x04
#define     OUTFIFOFUL              0x02
#define     OUTOPRDY                0x01
#define     OUTCSR2                 (USBBASE + 21)
#define     OUTAUTOCLR              0x80
#define     OUTISO                  0x40
#define     OUTENDMA                0x20
#define     OUTDMAMD                0x10
#define     COUNT0                  (USBBASE + 22)
#define     OUTCOUNT1               (USBBASE + 22)
#define     OUTCOUNT2               (USBBASE + 23)
#define     FIFO0                   (USBBASE + 32)
#define     FIFO1                   (USBBASE + 33)
#define     FIFO2                   (USBBASE + 34)
#define     FIFO3                   (USBBASE + 35)
#define     FIFO4                   (USBBASE + 36)
#define     FIFO5                   (USBBASE + 37)
#define     UTRKCTL                 (USBBASE + 48)
#define     UTRKSTS                 (USBBASE + 49)

/////////////////////////////////////////////////
//Interrupt Vector
/////////////////////////////////////////////////

#define     INT0_VECTOR             0       //0003H
#define     TMR0_VECTOR             1       //000BH
#define     INT1_VECTOR             2       //0013H
#define     TMR1_VECTOR             3       //001BH
#define     UART1_VECTOR            4       //0023H
#define     ADC_VECTOR              5       //002BH
#define     LVD_VECTOR              6       //0033H
#define     PCA_VECTOR              7       //003BH
#define     UART2_VECTOR            8       //0043H
#define     SPI_VECTOR              9       //004BH
#define     INT2_VECTOR             10      //0053H
#define     INT3_VECTOR             11      //005BH
#define     TMR2_VECTOR             12      //0063H
#define     USER_VECTOR             13      //006BH
#define     INT4_VECTOR             16      //0083H
#define     UART3_VECTOR            17      //008BH
#define     UART4_VECTOR            18      //0093H
#define     TMR3_VECTOR             19      //009BH
#define     TMR4_VECTOR             20      //00A3H
#define     CMP_VECTOR              21      //00ABH
#define     I2C_VECTOR              24      //00C3H
#define     USB_VECTOR              25      //00CBH
#define     PWMA_VECTOR             26      //00D3H
#define     PWMB_VECTOR             27      //00DBH

#define     RTC_VECTOR              36      //0123H
#define     P0INT_VECTOR            37      //012BH
#define     P1INT_VECTOR            38      //0133H
#define     P2INT_VECTOR            39      //013BH
#define     P3INT_VECTOR            40      //0143H
#define     P4INT_VECTOR            41      //014BH
#define     P5INT_VECTOR            42      //0153H
#define     P6INT_VECTOR            43      //015BH
#define     P7INT_VECTOR            44      //0163H
#define     DMA_M2M_VECTOR          47      //017BH
#define     DMA_ADC_VECTOR          48      //0183H
#define     DMA_SPI_VECTOR          49      //018BH
#define     DMA_UR1T_VECTOR         50      //0193H
#define     DMA_UR1R_VECTOR         51      //019BH
#define     DMA_UR2T_VECTOR         52      //01A3H
#define     DMA_UR2R_VECTOR         53      //01ABH
#define     DMA_UR3T_VECTOR         54      //01B3H
#define     DMA_UR3R_VECTOR         55      //01BBH
#define     DMA_UR4T_VECTOR         56      //01C3H
#define     DMA_UR4R_VECTOR         57      //01CBH
#define     DMA_LCM_VECTOR          58      //01D3H
#define     LCM_VECTOR              59      //01DBH
#define     DMA_I2CT_VECTOR         60      //01E3H
#define     DMA_I2CR_VECTOR         61      //01EBH
#define     I2S_VECTOR              62      //01F3H
#define     DMA_I2ST_VECTOR         63      //01FBH
#define     DMA_I2SR_VECTOR         64      //0203H
#define     DMA_QSPI_VECTOR         65      //020BH
#define     QSPI_VECTOR             66      //0213H
#define     TMR11_VECTOR            67      //021BH
#define     DMA_PWMAT_VECTOR        72      //0243H
#define     DMA_PWMAR_VECTOR        73      //024BH

/////////////////////////////////////////////////

#define	EAXSFR()		P_SW2 |= 0x80		/* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
#define	EAXRAM()		P_SW2 &= ~0x80		/* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */

/////////////////////////////////////////////////
#define NOP1()  _nop_()
#define NOP2()  NOP1(),NOP1()
#define NOP3()  NOP2(),NOP1()
#define NOP4()  NOP3(),NOP1()
#define NOP5()  NOP4(),NOP1()
#define NOP6()  NOP5(),NOP1()
#define NOP7()  NOP6(),NOP1()
#define NOP8()  NOP7(),NOP1()
#define NOP9()  NOP8(),NOP1()
#define NOP10() NOP9(),NOP1()
#define NOP11() NOP10(),NOP1()
#define NOP12() NOP11(),NOP1()
#define NOP13() NOP12(),NOP1()
#define NOP14() NOP13(),NOP1()
#define NOP15() NOP14(),NOP1()
#define NOP16() NOP15(),NOP1()
#define NOP17() NOP16(),NOP1()
#define NOP18() NOP17(),NOP1()
#define NOP19() NOP18(),NOP1()
#define NOP20() NOP19(),NOP1()
#define NOP21() NOP20(),NOP1()
#define NOP22() NOP21(),NOP1()
#define NOP23() NOP22(),NOP1()
#define NOP24() NOP23(),NOP1()
#define NOP25() NOP24(),NOP1()
#define NOP26() NOP25(),NOP1()
#define NOP27() NOP26(),NOP1()
#define NOP28() NOP27(),NOP1()
#define NOP29() NOP28(),NOP1()
#define NOP30() NOP29(),NOP1()
#define NOP31() NOP30(),NOP1()
#define NOP32() NOP31(),NOP1()
#define NOP33() NOP32(),NOP1()
#define NOP34() NOP33(),NOP1()
#define NOP35() NOP34(),NOP1()
#define NOP36() NOP35(),NOP1()
#define NOP37() NOP36(),NOP1()
#define NOP38() NOP37(),NOP1()
#define NOP39() NOP38(),NOP1()
#define NOP40() NOP39(),NOP1()
#define NOP(N)  NOP##N()

/////////////////////////////////////////////////


#endif
相关推荐
飞飞传输10 小时前
适配信创环境的传输系统推荐:助力企业数据安全合规传输!
大数据·运维·安全
OpsEye10 小时前
Redis 内存碎片的隐形消耗——如何用 memory purge 命令释放空间?
运维·网络·数据库·redis·缓存·内存·监控
Bigbig.10 小时前
驱动工程师面试题 - 操作系统1
linux·开发语言·面试·硬件架构
墨香幽梦客10 小时前
系统高可用(HA)方案复盘:从主备切换到负载均衡的实现
运维·负载均衡
gaize121310 小时前
服务器搭建网站:深度解析技术维护与美化标题的实践之道
运维·服务器
oMcLin10 小时前
如何在 CentOS Stream 9 上配置并优化 PostgreSQL 15,支持高并发的数据插入与快速查询?
linux·postgresql·centos
柏木乃一10 小时前
进程(11)进程替换函数详解
linux·服务器·c++·操作系统·exec
cly110 小时前
Ansible自动化(十):配置文件管理模块(lineinfile / blockinfile)
运维·自动化·ansible
TESmart碲视10 小时前
M4芯片MacBook支持多显示器吗?mac如何与KVM切换器使用。
macos·计算机外设·mst·kvm切换器·双屏kvm切换器