diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..209ac01
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,9 @@
+{
+ "files.associations": {
+ "type.h": "c",
+ "stc_macro.h": "c",
+ "stc_macro.H": "cpp",
+ "bsp_config_const.h": "c",
+ "stc_stc8h.h": "c"
+ }
+}
\ No newline at end of file
diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx
index 2c8a7a6..fa3f019 100644
--- a/keilp/cc_as_stc02_ps5ws.uvprojx
+++ b/keilp/cc_as_stc02_ps5ws.uvprojx
@@ -13,14 +13,14 @@
0
- stc8a8k64s4a12
- stc
-
+ STC8H8K64U Series
+ STC
+ IRAM(0-0xFF) XRAM(0-0x1FFF) IROM(0-0xFFF8) CLOCK(35000000) MODP2
-
+ "LIB\STARTUP.A51" ("Standard 8051 Startup Code")
- 0
-
+ 63364
+ STC8.H
@@ -36,8 +36,8 @@
d:\Keil\C51\BIN\
-
-
+ STC\
+ STC\
0
0
@@ -107,14 +107,14 @@
65535
-
+ S8051.DLL
-
-
-
+ DP51.DLL
+ -pDP8051
+ S8051.DLL
-
-
+ TP51.DLL
+ -p51
@@ -154,12 +154,12 @@
0
0
0
- 0
- 0
- 0
+ 1
+ 1
+ 1
0
0
- 0
+ 1
0
0
0
@@ -232,17 +232,17 @@
1
0x0
- 0x0
+ 0xfff9
0
0x0
- 0x0
+ 0x100
0
0x0
- 0x0
+ 0x2000
0
diff --git a/source/app/app_config.c b/source/app/app_config.c
index 3a19225..eab6844 100644
--- a/source/app/app_config.c
+++ b/source/app/app_config.c
@@ -84,7 +84,7 @@ void L3_iap_2_reg(void)
void L3_reg_reset(void)
{
R.p.adc_ch_status = ADC_status_ch2_Ready | ADC_status_ch3_Ready | ADC_status_ch4_Ready; //修改采集通道
- R.p.slaver_id = D_UART0_485_SLAVER_ID;
+ R.p.slaver_id = D_UART4_485_SLAVER_ID;
R.p.weight_max = 500; //500kg
R.p.lmd = 2; //2mv/v
R.p.adc_blur_mid = 1;
diff --git a/source/app/main.c b/source/app/main.c
index daf14a2..702d941 100644
--- a/source/app/main.c
+++ b/source/app/main.c
@@ -119,7 +119,7 @@ void main(void)
if(1 == s_nos_tick.t1s_heatbeart)
{
s_nos_tick.t1s_heatbeart = 0;
- LED1 ^= 1;
+ LED0 ^= 1;
}
//L1_ADS1213_main();
diff --git a/source/app/task_encrypt.c b/source/app/task_encrypt.c
index c7218ac..eb37a64 100644
--- a/source/app/task_encrypt.c
+++ b/source/app/task_encrypt.c
@@ -16,6 +16,8 @@
#include "../msp/eeprom.h"
#include "../bsp/chipid.h"
+#if(D_CODE_ENCRYPTION_TYPE == TYPE_ENCRYPTION_ENABLE)
+
struct ts_eeprom_enc eep_enc;
struct mcu_encrypt_info enc_info;
@@ -46,7 +48,6 @@ int L3_mcu_id_ok(void)
//enc_key = ((U32)eep_enc.enc_key[0] << 24) | (eep_enc.enc_key[1] << 16) | (eep_enc.enc_key[2] << 8) |(eep_enc.enc_key[3] << 0);
Lc_encrypt_id1((U8*)enc_info.mcu_enc_id, (U8*)enc_info.mcu_id, eep_enc.enc_key, MCU_ID_LEN);
-#if 1
//4.判断enc_val是否一致
for(i=0;ibuf, 8);
//L0_uart0_sendArray("abcdefgh", 8);
ph4->ok = 0;
- if(ts_modbus->slaver == R.p.slaver_id || ts_modbus->slaver == D_UART0_485_SLAVER_ID_BROADCAST) //从机
+ if(ts_modbus->slaver == R.p.slaver_id || ts_modbus->slaver == D_UART4_485_SLAVER_ID_BROADCAST) //从机
{
U16 acklen = L3_modbus_slaver_ack(ts_modbus,&s_uart0_ack);
L0_uart0_sendArray((U8*)&s_uart0_ack, acklen);
diff --git a/source/bsp/bsp_config.h b/source/bsp/bsp_config.h
index 126bc70..f787de9 100644
--- a/source/bsp/bsp_config.h
+++ b/source/bsp/bsp_config.h
@@ -7,12 +7,6 @@
/// @info YOU CAN CHANGE OR ADD THE DEFINE IF YOU NEED
/// @info 整个嵌入式项目的入口 首先是确认电路板 然后确认cpu 芯片型号 然后确认编译器 之后是软件框架 最后是应用程序
/// @info bsp_CONFIG 为其他头文件的始祖 TYPE_BOARD_xx
-///-------------------------------------------------------------------------
-/// @version 1.1
-/// @author CC
-/// @date 20180308
-/// @note
-//////////////////////////////////////////////////////////////////////////////
/// @version 5.1
/// @author CC
/// @date 20200301
@@ -44,24 +38,21 @@
#ifndef _BSP_CONFIG_H
#define _BSP_CONFIG_H
-#include
+#include
#include "../bsp/bsp_config_const.h"
#include "../clib/type.h"
#include "../clib/bit.h"
//STEP 1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TYPE_UASER_BOARD SELECT
-#define TYPE_UASER_BOARD TYPE_BOARD_WEIGH_0B
+#define TYPE_UASER_BOARD TYPE_BOARD_BFY_V4_SOP
//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TYPE_UASER_BOARD CONFIG
-#if(TYPE_UASER_BOARD == TYPE_BOARD_WEIGH_0B)
- #include
- #include "../cpu/stc_stc8hxx.h"
+#if(TYPE_UASER_BOARD == TYPE_BOARD_BFY_V4_SOP)
+ #include "../cpu/stc_stc8h.h"
#include "../cpu/stc_macro.h"
//基本配置(工作频率、时钟、看门狗、字节序)
@@ -72,40 +63,74 @@
#define D_sys_Jiffies TYPE_JIFFIES_10MS
#define D_WDT_STATUS TYPE_WDT_DISABLE //如果配置为enable,请在bsp_config.c中设置wdt溢出时间
#define D_MCU_ENDIAN TYPE_MCU_BIGENDIAN
- #define D_CODE_ENCRYPTION_TYPE TYPE_ENCRYPTION_ENABLE //是否代码加密
+ #define D_CODE_ENCRYPTION_TYPE TYPE_ENCRYPTION_DISABLE //是否代码加密
+ #define D_MCU_NAME "STC8H8K64U"
-
- #define D_MCU_NAME "STC8H3K48S4"
//存储器特殊参数地址配置
- #define D_MCU_SPEC_PARAM_CHIPID 0xBFF9
+ #define MSP_ID_LEN 7
+ #define D_MCU_SPEC_PARAM_ID_IN_RAM 0x00F1
+ #define D_MCU_SPEC_PARAM_ID_IN_ROM 0xFDF9
+ #define D_MCU_SPEC_PARAM_ID_IN_CHIPID 0xFDE0
+ #define ID_ADDR_IN_RAM ((char idata*)(D_MCU_SPEC_PARAM_ID_IN_RAM + 0x00))
+ #define ID_ADDR_IN_ROM ((char code*)(D_MCU_SPEC_PARAM_ID_IN_ROM + 0x00))
+ #define ID_ADDR_IN_CHIPID ((unsigned char volatile xdata*)(D_MCU_SPEC_PARAM_ID_IN_CHIPID + 0x00))
+
//...其他参数
//串口配置
#define D_uart0_BRT BRT_115200
#define D_uart0_SBIT SBIT_1
- #define D_PIN_UART0 PIN_UART0_Rxd_30_Txd_31
+ #define D_PIN_UART0 PIN_UART0_Rxd_30_Txd_31 //RXD, TXD
#define D_uart2_BRT BRT_115200
+ #define D_PIN_UART2 PIN_UART2_Rxd_46_Txd_47 //RXD2_2, TXD2_2
#define D_uart3_BRT BRT_115200
+ #define D_PIN_UART3 PIN_UART3_Rxd_50_Txd_51 //RXD3_2, TXD3_2
#define D_uart4_BRT BRT_115200
+ #define D_PIN_UART4 PIN_UART4_Rxd_02_Txd_03 //RXD4, TXD4
//485配置
- #define D_UART0_485_TYPE TYPE_485_SLAVER //UART0启用485
- #define D_UART0_485_SLAVER_ID_BROADCAST 0xFF //485从机总是响应0xFF消息
- #define D_UART0_485_SLAVER_ID 0x01 //板卡作为485从机 slaverId
- #define D_UART0_485_TX() P55 = 1;
- #define D_UART0_485_RX() P55 = 0;
+ #define D_UART4_485_TYPE TYPE_485_SLAVER //UART4启用485
+ #define D_UART4_485_SLAVER_ID_BROADCAST 0xFF //485从机总是响应0xFF消息
+ #define D_UART4_485_SLAVER_ID 0x01 //板卡作为485从机 slaverId
+ #define D_UART4_485_TX() P01 = 1; P00=1;
+ #define D_UART4_485_RX() P01 = 0; P00=0;
+ #define D_UART0_485_TYPE TYPE_485_NONE //UART0不启用485
#define D_UART2_485_TYPE TYPE_485_NONE //UART2不启用485
- #define D_UART3_485_TYPE TYPE_485_NONE //UART2不启用485
- #define D_UART4_485_TYPE TYPE_485_NONE //UART2不启用485
+ #define D_UART3_485_TYPE TYPE_485_NONE //UART3不启用485
//MODBUS协议配置
- #define D_MODBUS_ENABLE //MODBS启用开关,如果不使用modbus,可以注释掉本行
+ //#define D_MODBUS_ENABLE //MODBS启用开关,如果不使用modbus,可以注释掉本行
#define D_MODBUS_SPLIT_ENTRY L1_modbus_split //modbus切割函数,在tpc_modbus.c中实现,依据实际情况修改
#define D_MODBUS_REG_MAX_NUM 32 //每次最多读取/写入的寄存器数量,此处的数量要注意和 D_tp_handle_x_len 对应
//外设定义
- #define LED0 P17 //D4
- #define LED1 P54 //D4
+ #define LED0 P23 //LED5
+ //Button LED
+ //0 1 2 3 4 5 6
+ //13 12 11 10 9 8 7
+ #define BLED0 P42 //NET9
+ #define BLED1 P41 //NET10
+ #define BLED2 P37 //NET11
+ #define BLED3 P35 //NET12
+ #define BLED4 P16 //NET13
+ #define BLED5 P15 //NET14
+ #define BLED6 P14 //NET15
+ #define BLED7 P47 //NET16
+ #define BLED8 P11 //NET17
+ #define BLED9 P26 //NET18
+ #define BLED10 P25 //NET19
+ #define BLED11 P21 //NET20
+ #define BLED12 P44 //NET21
+ #define BLED13 P22 //NET22
+ //K->Key, R->ROW, C->COL
+ #define KR1 P36 //NET1
+ #define KR2 P17 //NET2
+ #define KR3 P06 //NET3
+ #define KR4 P43 //NET4
+ #define KC1 P10 //NET5
+ #define KC2 P07 //NET6
+ #define KC3 P13 //NET7
+ #define KC4 P20 //NET8
//EEP存储地址定义
#define D_EEP_SECTOR_SIZE 0x200 //每个扇区0x200==512bytes
@@ -156,8 +181,8 @@
#define D_SERVE_TIMER3 interrupt 19
#define D_SERVE_TIMER4 interrupt 20
#define D_SERVE_CMP interrupt 21
-#define D_SERVE_PWM interrupt 22
-#define D_SERVE_PWMFD interrupt 23
+// #define D_SERVE_PWM interrupt 22
+// #define D_SERVE_PWMFD interrupt 23
#define D_SERVE_I2C interrupt 24
#endif
//STEP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>MCU TYPE
@@ -75,7 +76,7 @@
#define TYPE_MCU_STC_8G 0x13
#define TYPE_MCU_STC_8H 0x14
-#define TYPE_MCU_VENDOR_TI 0x60
+#define TYPE_MCU_VENDOR_TI 0x60
#define TYPE_MCU_SHC6601 0x66
#define TYPE_MCU_LPC17xx 0x67
#define TYPE_MCU_STM32 0x68
@@ -130,12 +131,20 @@
#define MainFre_27M 27000000L
//<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>UART0 PIN
+//>>>>>>>>>>>>>>>>>>>>>>UART PIN
#define PIN_UART0_Rxd_30_Txd_31 1
#define PIN_UART0_Rxd_36_Txd_37 2
#define PIN_UART0_Rxd_16_Txd_17 3
#define PIN_UART0_Rxd_43_Txd_44 4
-//<<<<<<<<<<<<<<<<<<<<<<<<<<<.UART0 PIN
+
+#define PIN_UART2_Rxd_10_Txd_11 1
+#define PIN_UART2_Rxd_46_Txd_47 2
+
+#define PIN_UART3_Rxd_00_Txd_01 1
+#define PIN_UART3_Rxd_50_Txd_51 2
+
+#define PIN_UART4_Rxd_02_Txd_03 1
+#define PIN_UART4_Rxd_52_Txd_53 2
//>>>>>>>>>>>>>>>>>>>>>>485 Type
#define TYPE_485_NONE 0
diff --git a/source/bsp/chipid.c b/source/bsp/chipid.c
index 7df0dc3..0800da0 100644
--- a/source/bsp/chipid.c
+++ b/source/bsp/chipid.c
@@ -12,30 +12,34 @@
#include "chipid.h"
#include "../bsp/bsp_config.h"
-#define MSP_ID_LEN 7
-
-void L0_id_get(U8 *id)
+void L0_id_get_ram(U8 *id)
{
U8 i = 0;
- char *ID = (char idata *)0xf1;
for(i=0;i XDATALEN: XDATA memory size <0x0-0xFFFF>
; The length of XDATA memory in bytes.
-XDATALEN EQU 3072
+XDATALEN EQU 4096
;
; PDATASTART: PDATA memory start address <0x0-0xFFFF>
; The absolute start address of PDATA memory
diff --git a/source/cpu/stc_stc8h.h b/source/cpu/stc_stc8h.h
new file mode 100644
index 0000000..1cfcae1
--- /dev/null
+++ b/source/cpu/stc_stc8h.h
@@ -0,0 +1,1095 @@
+#ifndef __STC8H_H__
+#define __STC8H_H__
+
+/////////////////////////////////////////////////
+
+//包含本头文件后,不用另外再包含"REG51.H"
+
+sfr P0 = 0x80;
+sbit P00 = P0^0;
+sbit P01 = P0^1;
+sbit P02 = P0^2;
+sbit P03 = P0^3;
+sbit P04 = P0^4;
+sbit P05 = P0^5;
+sbit P06 = P0^6;
+sbit P07 = P0^7;
+sfr SP = 0x81;
+sfr DPL = 0x82;
+sfr DPH = 0x83;
+sfr S4CON = 0x84;
+sfr S4BUF = 0x85;
+sfr PCON = 0x87;
+sfr TCON = 0x88;
+sbit TF1 = TCON^7;
+sbit TR1 = TCON^6;
+sbit TF0 = TCON^5;
+sbit TR0 = TCON^4;
+sbit IE1 = TCON^3;
+sbit IT1 = TCON^2;
+sbit IE0 = TCON^1;
+sbit IT0 = TCON^0;
+sfr TMOD = 0x89;
+sfr TL0 = 0x8a;
+sfr TL1 = 0x8b;
+sfr TH0 = 0x8c;
+sfr TH1 = 0x8d;
+sfr AUXR = 0x8e;
+sfr INTCLKO = 0x8f;
+sfr P1 = 0x90;
+sbit P10 = P1^0;
+sbit P11 = P1^1;
+sbit P12 = P1^2;
+sbit P13 = P1^3;
+sbit P14 = P1^4;
+sbit P15 = P1^5;
+sbit P16 = P1^6;
+sbit P17 = P1^7;
+sfr P1M1 = 0x91;
+sfr P1M0 = 0x92;
+sfr P0M1 = 0x93;
+sfr P0M0 = 0x94;
+sfr P2M1 = 0x95;
+sfr P2M0 = 0x96;
+sfr SCON = 0x98;
+sbit SM0 = SCON^7;
+sbit SM1 = SCON^6;
+sbit SM2 = SCON^5;
+sbit REN = SCON^4;
+sbit TB8 = SCON^3;
+sbit RB8 = SCON^2;
+sbit TI = SCON^1;
+sbit RI = SCON^0;
+sfr SBUF = 0x99;
+sfr S2CON = 0x9a;
+sfr S2BUF = 0x9b;
+sfr IRCBAND = 0x9d;
+sfr LIRTRIM = 0x9e;
+sfr IRTRIM = 0x9f;
+sfr P2 = 0xa0;
+sbit P20 = P2^0;
+sbit P21 = P2^1;
+sbit P22 = P2^2;
+sbit P23 = P2^3;
+sbit P24 = P2^4;
+sbit P25 = P2^5;
+sbit P26 = P2^6;
+sbit P27 = P2^7;
+sfr P_SW1 = 0xa2;
+sfr IE = 0xa8;
+sbit EA = IE^7;
+sbit ELVD = IE^6;
+sbit EADC = IE^5;
+sbit ES = IE^4;
+sbit ET1 = IE^3;
+sbit EX1 = IE^2;
+sbit ET0 = IE^1;
+sbit EX0 = IE^0;
+sfr SADDR = 0xa9;
+sfr WKTCL = 0xaa;
+sfr WKTCH = 0xab;
+sfr S3CON = 0xac;
+sfr S3BUF = 0xad;
+sfr TA = 0xae;
+sfr IE2 = 0xaf;
+sfr P3 = 0xb0;
+sbit P30 = P3^0;
+sbit P31 = P3^1;
+sbit P32 = P3^2;
+sbit P33 = P3^3;
+sbit P34 = P3^4;
+sbit P35 = P3^5;
+sbit P36 = P3^6;
+sbit P37 = P3^7;
+sfr P3M1 = 0xb1;
+sfr P3M0 = 0xb2;
+sfr P4M1 = 0xb3;
+sfr P4M0 = 0xb4;
+sfr IP2 = 0xb5;
+sfr IP2H = 0xb6;
+sfr IPH = 0xb7;
+sfr IP = 0xb8;
+sbit PPCA = IP^7;
+sbit PLVD = IP^6;
+sbit PADC = IP^5;
+sbit PS = IP^4;
+sbit PT1 = IP^3;
+sbit PX1 = IP^2;
+sbit PT0 = IP^1;
+sbit PX0 = IP^0;
+sfr SADEN = 0xb9;
+sfr P_SW2 = 0xba;
+sfr ADC_CONTR = 0xbc;
+sfr ADC_RES = 0xbd;
+sfr ADC_RESL = 0xbe;
+sfr P4 = 0xc0;
+sbit P40 = P4^0;
+sbit P41 = P4^1;
+sbit P42 = P4^2;
+sbit P43 = P4^3;
+sbit P44 = P4^4;
+sbit P45 = P4^5;
+sbit P46 = P4^6;
+sbit P47 = P4^7;
+sfr WDT_CONTR = 0xc1;
+sfr IAP_DATA = 0xc2;
+sfr IAP_ADDRH = 0xc3;
+sfr IAP_ADDRL = 0xc4;
+sfr IAP_CMD = 0xc5;
+sfr IAP_TRIG = 0xc6;
+sfr IAP_CONTR = 0xc7;
+sfr P5 = 0xc8;
+sbit P50 = P5^0;
+sbit P51 = P5^1;
+sbit P52 = P5^2;
+sbit P53 = P5^3;
+sbit P54 = P5^4;
+sbit P55 = P5^5;
+sbit P56 = P5^6;
+sbit P57 = P5^7;
+sfr P5M1 = 0xc9;
+sfr P5M0 = 0xca;
+sfr P6M1 = 0xcb;
+sfr P6M0 = 0xcc;
+sfr SPSTAT = 0xcd;
+sfr SPCTL = 0xce;
+sfr SPDAT = 0xcf;
+sfr PSW = 0xd0;
+sbit CY = PSW^7;
+sbit AC = PSW^6;
+sbit F0 = PSW^5;
+sbit RS1 = PSW^4;
+sbit RS0 = PSW^3;
+sbit OV = PSW^2;
+sbit F1 = PSW^1;
+sbit P = PSW^0;
+sfr T4T3M = 0xd1;
+sfr T4H = 0xd2;
+sfr T4L = 0xd3;
+sfr T3H = 0xd4;
+sfr T3L = 0xd5;
+sfr T2H = 0xd6;
+sfr T2L = 0xd7;
+sfr USBCLK = 0xdc;
+sfr PLLCR = 0xdc;
+sfr ADCCFG = 0xde;
+sfr IP3 = 0xdf;
+sfr ACC = 0xe0;
+sfr P7M1 = 0xe1;
+sfr P7M0 = 0xe2;
+sfr DPS = 0xe3;
+sfr DPL1 = 0xe4;
+sfr DPH1 = 0xe5;
+sfr CMPCR1 = 0xe6;
+sfr CMPCR2 = 0xe7;
+sfr P6 = 0xe8;
+sbit P60 = P6^0;
+sbit P61 = P6^1;
+sbit P62 = P6^2;
+sbit P63 = P6^3;
+sbit P64 = P6^4;
+sbit P65 = P6^5;
+sbit P66 = P6^6;
+sbit P67 = P6^7;
+sfr USBDAT = 0xec;
+sfr IP3H = 0xee;
+sfr AUXINTIF = 0xef;
+sfr B = 0xf0;
+sfr USBCON = 0xf4;
+sfr IAP_TPS = 0xf5;
+sfr P7 = 0xf8;
+sbit P70 = P7^0;
+sbit P71 = P7^1;
+sbit P72 = P7^2;
+sbit P73 = P7^3;
+sbit P74 = P7^4;
+sbit P75 = P7^5;
+sbit P76 = P7^6;
+sbit P77 = P7^7;
+sfr USBADR = 0xfc;
+sfr RSTCFG = 0xff;
+
+//如下特殊功能寄存器位于扩展RAM区域
+//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写
+
+/////////////////////////////////////////////////
+//FF00H-FFFFH
+/////////////////////////////////////////////////
+
+
+
+/////////////////////////////////////////////////
+//FE00H-FEFFH
+/////////////////////////////////////////////////
+
+#define CLKSEL (*(unsigned char volatile xdata *)0xfe00)
+#define CLKDIV (*(unsigned char volatile xdata *)0xfe01)
+#define HIRCCR (*(unsigned char volatile xdata *)0xfe02)
+#define XOSCCR (*(unsigned char volatile xdata *)0xfe03)
+#define IRC32KCR (*(unsigned char volatile xdata *)0xfe04)
+#define MCLKOCR (*(unsigned char volatile xdata *)0xfe05)
+#define IRCDB (*(unsigned char volatile xdata *)0xfe06)
+#define IRC48MCR (*(unsigned char volatile xdata *)0xfe07)
+#define X32KCR (*(unsigned char volatile xdata *)0xfe08)
+#define HSCLKDIV (*(unsigned char volatile xdata *)0xfe0b)
+
+#define P0PU (*(unsigned char volatile xdata *)0xfe10)
+#define P1PU (*(unsigned char volatile xdata *)0xfe11)
+#define P2PU (*(unsigned char volatile xdata *)0xfe12)
+#define P3PU (*(unsigned char volatile xdata *)0xfe13)
+#define P4PU (*(unsigned char volatile xdata *)0xfe14)
+#define P5PU (*(unsigned char volatile xdata *)0xfe15)
+#define P6PU (*(unsigned char volatile xdata *)0xfe16)
+#define P7PU (*(unsigned char volatile xdata *)0xfe17)
+#define P0NCS (*(unsigned char volatile xdata *)0xfe18)
+#define P1NCS (*(unsigned char volatile xdata *)0xfe19)
+#define P2NCS (*(unsigned char volatile xdata *)0xfe1a)
+#define P3NCS (*(unsigned char volatile xdata *)0xfe1b)
+#define P4NCS (*(unsigned char volatile xdata *)0xfe1c)
+#define P5NCS (*(unsigned char volatile xdata *)0xfe1d)
+#define P6NCS (*(unsigned char volatile xdata *)0xfe1e)
+#define P7NCS (*(unsigned char volatile xdata *)0xfe1f)
+#define P0SR (*(unsigned char volatile xdata *)0xfe20)
+#define P1SR (*(unsigned char volatile xdata *)0xfe21)
+#define P2SR (*(unsigned char volatile xdata *)0xfe22)
+#define P3SR (*(unsigned char volatile xdata *)0xfe23)
+#define P4SR (*(unsigned char volatile xdata *)0xfe24)
+#define P5SR (*(unsigned char volatile xdata *)0xfe25)
+#define P6SR (*(unsigned char volatile xdata *)0xfe26)
+#define P7SR (*(unsigned char volatile xdata *)0xfe27)
+#define P0DR (*(unsigned char volatile xdata *)0xfe28)
+#define P1DR (*(unsigned char volatile xdata *)0xfe29)
+#define P2DR (*(unsigned char volatile xdata *)0xfe2a)
+#define P3DR (*(unsigned char volatile xdata *)0xfe2b)
+#define P4DR (*(unsigned char volatile xdata *)0xfe2c)
+#define P5DR (*(unsigned char volatile xdata *)0xfe2d)
+#define P6DR (*(unsigned char volatile xdata *)0xfe2e)
+#define P7DR (*(unsigned char volatile xdata *)0xfe2f)
+#define P0IE (*(unsigned char volatile xdata *)0xfe30)
+#define P1IE (*(unsigned char volatile xdata *)0xfe31)
+#define P2IE (*(unsigned char volatile xdata *)0xfe32)
+#define P3IE (*(unsigned char volatile xdata *)0xfe33)
+#define P4IE (*(unsigned char volatile xdata *)0xfe34)
+#define P5IE (*(unsigned char volatile xdata *)0xfe35)
+#define P6IE (*(unsigned char volatile xdata *)0xfe36)
+#define P7IE (*(unsigned char volatile xdata *)0xfe37)
+
+#define LCMIFCFG (*(unsigned char volatile xdata *)0xfe50)
+#define LCMIFCFG2 (*(unsigned char volatile xdata *)0xfe51)
+#define LCMIFCR (*(unsigned char volatile xdata *)0xfe52)
+#define LCMIFSTA (*(unsigned char volatile xdata *)0xfe53)
+#define LCMIFDATL (*(unsigned char volatile xdata *)0xfe54)
+#define LCMIFDATH (*(unsigned char volatile xdata *)0xfe55)
+
+#define RTCCR (*(unsigned char volatile xdata *)0xfe60)
+#define RTCCFG (*(unsigned char volatile xdata *)0xfe61)
+#define RTCIEN (*(unsigned char volatile xdata *)0xfe62)
+#define RTCIF (*(unsigned char volatile xdata *)0xfe63)
+#define ALAHOUR (*(unsigned char volatile xdata *)0xfe64)
+#define ALAMIN (*(unsigned char volatile xdata *)0xfe65)
+#define ALASEC (*(unsigned char volatile xdata *)0xfe66)
+#define ALASSEC (*(unsigned char volatile xdata *)0xfe67)
+#define INIYEAR (*(unsigned char volatile xdata *)0xfe68)
+#define INIMONTH (*(unsigned char volatile xdata *)0xfe69)
+#define INIDAY (*(unsigned char volatile xdata *)0xfe6a)
+#define INIHOUR (*(unsigned char volatile xdata *)0xfe6b)
+#define INIMIN (*(unsigned char volatile xdata *)0xfe6c)
+#define INISEC (*(unsigned char volatile xdata *)0xfe6d)
+#define INISSEC (*(unsigned char volatile xdata *)0xfe6e)
+#define YEAR (*(unsigned char volatile xdata *)0xfe70)
+#define MONTH (*(unsigned char volatile xdata *)0xfe71)
+#define DAY (*(unsigned char volatile xdata *)0xfe72)
+#define HOUR (*(unsigned char volatile xdata *)0xfe73)
+#define MIN (*(unsigned char volatile xdata *)0xfe74)
+#define SEC (*(unsigned char volatile xdata *)0xfe75)
+#define SSEC (*(unsigned char volatile xdata *)0xfe76)
+
+#define I2CCFG (*(unsigned char volatile xdata *)0xfe80)
+#define I2CMSCR (*(unsigned char volatile xdata *)0xfe81)
+#define I2CMSST (*(unsigned char volatile xdata *)0xfe82)
+#define I2CSLCR (*(unsigned char volatile xdata *)0xfe83)
+#define I2CSLST (*(unsigned char volatile xdata *)0xfe84)
+#define I2CSLADR (*(unsigned char volatile xdata *)0xfe85)
+#define I2CTXD (*(unsigned char volatile xdata *)0xfe86)
+#define I2CRXD (*(unsigned char volatile xdata *)0xfe87)
+#define I2CMSAUX (*(unsigned char volatile xdata *)0xfe88)
+
+#define SPFUNC (*(unsigned char volatile xdata *)0xfe98)
+#define RSTFLAG (*(unsigned char volatile xdata *)0xfe99)
+
+#define TM2PS (*(unsigned char volatile xdata *)0xfea2)
+#define TM3PS (*(unsigned char volatile xdata *)0xfea3)
+#define TM4PS (*(unsigned char volatile xdata *)0xfea4)
+#define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
+#define T3T4PIN (*(unsigned char volatile xdata *)0xfeac)
+#define ADCEXCFG (*(unsigned char volatile xdata *)0xfead)
+#define CMPEXCFG (*(unsigned char volatile xdata *)0xfeae)
+
+#define PWM1_ETRPS (*(unsigned char volatile xdata *)0xfeb0)
+#define PWM1_ENO (*(unsigned char volatile xdata *)0xfeb1)
+#define PWM1_PS (*(unsigned char volatile xdata *)0xfeb2)
+#define PWM1_IOAUX (*(unsigned char volatile xdata *)0xfeb3)
+#define PWM2_ETRPS (*(unsigned char volatile xdata *)0xfeb4)
+#define PWM2_ENO (*(unsigned char volatile xdata *)0xfeb5)
+#define PWM2_PS (*(unsigned char volatile xdata *)0xfeb6)
+#define PWM2_IOAUX (*(unsigned char volatile xdata *)0xfeb7)
+#define PWM1_CR1 (*(unsigned char volatile xdata *)0xfec0)
+#define PWM1_CR2 (*(unsigned char volatile xdata *)0xfec1)
+#define PWM1_SMCR (*(unsigned char volatile xdata *)0xfec2)
+#define PWM1_ETR (*(unsigned char volatile xdata *)0xfec3)
+#define PWM1_IER (*(unsigned char volatile xdata *)0xfec4)
+#define PWM1_SR1 (*(unsigned char volatile xdata *)0xfec5)
+#define PWM1_SR2 (*(unsigned char volatile xdata *)0xfec6)
+#define PWM1_EGR (*(unsigned char volatile xdata *)0xfec7)
+#define PWM1_CCMR1 (*(unsigned char volatile xdata *)0xfec8)
+#define PWM1_CCMR2 (*(unsigned char volatile xdata *)0xfec9)
+#define PWM1_CCMR3 (*(unsigned char volatile xdata *)0xfeca)
+#define PWM1_CCMR4 (*(unsigned char volatile xdata *)0xfecb)
+#define PWM1_CCER1 (*(unsigned char volatile xdata *)0xfecc)
+#define PWM1_CCER2 (*(unsigned char volatile xdata *)0xfecd)
+#define PWM1_CNTR (*(unsigned int volatile xdata *)0xfece)
+#define PWM1_CNTRH (*(unsigned char volatile xdata *)0xfece)
+#define PWM1_CNTRL (*(unsigned char volatile xdata *)0xfecf)
+#define PWM1_PSCR (*(unsigned int volatile xdata *)0xfed0)
+#define PWM1_PSCRH (*(unsigned char volatile xdata *)0xfed0)
+#define PWM1_PSCRL (*(unsigned char volatile xdata *)0xfed1)
+#define PWM1_ARR (*(unsigned int volatile xdata *)0xfed2)
+#define PWM1_ARRH (*(unsigned char volatile xdata *)0xfed2)
+#define PWM1_ARRL (*(unsigned char volatile xdata *)0xfed3)
+#define PWM1_RCR (*(unsigned char volatile xdata *)0xfed4)
+#define PWM1_CCR1 (*(unsigned int volatile xdata *)0xfed5)
+#define PWM1_CCR1H (*(unsigned char volatile xdata *)0xfed5)
+#define PWM1_CCR1L (*(unsigned char volatile xdata *)0xfed6)
+#define PWM1_CCR2 (*(unsigned int volatile xdata *)0xfed7)
+#define PWM1_CCR2H (*(unsigned char volatile xdata *)0xfed7)
+#define PWM1_CCR2L (*(unsigned char volatile xdata *)0xfed8)
+#define PWM1_CCR3 (*(unsigned int volatile xdata *)0xfed9)
+#define PWM1_CCR3H (*(unsigned char volatile xdata *)0xfed9)
+#define PWM1_CCR3L (*(unsigned char volatile xdata *)0xfeda)
+#define PWM1_CCR4 (*(unsigned int volatile xdata *)0xfedb)
+#define PWM1_CCR4H (*(unsigned char volatile xdata *)0xfedb)
+#define PWM1_CCR4L (*(unsigned char volatile xdata *)0xfedc)
+#define PWM1_BKR (*(unsigned char volatile xdata *)0xfedd)
+#define PWM1_DTR (*(unsigned char volatile xdata *)0xfede)
+#define PWM1_OISR (*(unsigned char volatile xdata *)0xfedf)
+#define PWM2_CR1 (*(unsigned char volatile xdata *)0xfee0)
+#define PWM2_CR2 (*(unsigned char volatile xdata *)0xfee1)
+#define PWM2_SMCR (*(unsigned char volatile xdata *)0xfee2)
+#define PWM2_ETR (*(unsigned char volatile xdata *)0xfee3)
+#define PWM2_IER (*(unsigned char volatile xdata *)0xfee4)
+#define PWM2_SR1 (*(unsigned char volatile xdata *)0xfee5)
+#define PWM2_SR2 (*(unsigned char volatile xdata *)0xfee6)
+#define PWM2_EGR (*(unsigned char volatile xdata *)0xfee7)
+#define PWM2_CCMR1 (*(unsigned char volatile xdata *)0xfee8)
+#define PWM2_CCMR2 (*(unsigned char volatile xdata *)0xfee9)
+#define PWM2_CCMR3 (*(unsigned char volatile xdata *)0xfeea)
+#define PWM2_CCMR4 (*(unsigned char volatile xdata *)0xfeeb)
+#define PWM2_CCER1 (*(unsigned char volatile xdata *)0xfeec)
+#define PWM2_CCER2 (*(unsigned char volatile xdata *)0xfeed)
+#define PWM2_CNTR (*(unsigned int volatile xdata *)0xfeee)
+#define PWM2_CNTRH (*(unsigned char volatile xdata *)0xfeee)
+#define PWM2_CNTRL (*(unsigned char volatile xdata *)0xfeef)
+#define PWM2_PSCR (*(unsigned int volatile xdata *)0xfef0)
+#define PWM2_PSCRH (*(unsigned char volatile xdata *)0xfef0)
+#define PWM2_PSCRL (*(unsigned char volatile xdata *)0xfef1)
+#define PWM2_ARR (*(unsigned int volatile xdata *)0xfef2)
+#define PWM2_ARRH (*(unsigned char volatile xdata *)0xfef2)
+#define PWM2_ARRL (*(unsigned char volatile xdata *)0xfef3)
+#define PWM2_RCR (*(unsigned char volatile xdata *)0xfef4)
+#define PWM2_CCR1 (*(unsigned int volatile xdata *)0xfef5)
+#define PWM2_CCR1H (*(unsigned char volatile xdata *)0xfef5)
+#define PWM2_CCR1L (*(unsigned char volatile xdata *)0xfef6)
+#define PWM2_CCR2 (*(unsigned int volatile xdata *)0xfef7)
+#define PWM2_CCR2H (*(unsigned char volatile xdata *)0xfef7)
+#define PWM2_CCR2L (*(unsigned char volatile xdata *)0xfef8)
+#define PWM2_CCR3 (*(unsigned int volatile xdata *)0xfef9)
+#define PWM2_CCR3H (*(unsigned char volatile xdata *)0xfef9)
+#define PWM2_CCR3L (*(unsigned char volatile xdata *)0xfefa)
+#define PWM2_CCR4 (*(unsigned int volatile xdata *)0xfefb)
+#define PWM2_CCR4H (*(unsigned char volatile xdata *)0xfefb)
+#define PWM2_CCR4L (*(unsigned char volatile xdata *)0xfefc)
+#define PWM2_BKR (*(unsigned char volatile xdata *)0xfefd)
+#define PWM2_DTR (*(unsigned char volatile xdata *)0xfefe)
+#define PWM2_OISR (*(unsigned char volatile xdata *)0xfeff)
+
+#define PWMA_ETRPS (*(unsigned char volatile xdata *)0xfeb0)
+#define PWMA_ENO (*(unsigned char volatile xdata *)0xfeb1)
+#define PWMA_PS (*(unsigned char volatile xdata *)0xfeb2)
+#define PWMA_IOAUX (*(unsigned char volatile xdata *)0xfeb3)
+#define PWMB_ETRPS (*(unsigned char volatile xdata *)0xfeb4)
+#define PWMB_ENO (*(unsigned char volatile xdata *)0xfeb5)
+#define PWMB_PS (*(unsigned char volatile xdata *)0xfeb6)
+#define PWMB_IOAUX (*(unsigned char volatile xdata *)0xfeb7)
+#define PWMA_CR1 (*(unsigned char volatile xdata *)0xfec0)
+#define PWMA_CR2 (*(unsigned char volatile xdata *)0xfec1)
+#define PWMA_SMCR (*(unsigned char volatile xdata *)0xfec2)
+#define PWMA_ETR (*(unsigned char volatile xdata *)0xfec3)
+#define PWMA_IER (*(unsigned char volatile xdata *)0xfec4)
+#define PWMA_SR1 (*(unsigned char volatile xdata *)0xfec5)
+#define PWMA_SR2 (*(unsigned char volatile xdata *)0xfec6)
+#define PWMA_EGR (*(unsigned char volatile xdata *)0xfec7)
+#define PWMA_CCMR1 (*(unsigned char volatile xdata *)0xfec8)
+#define PWMA_CCMR2 (*(unsigned char volatile xdata *)0xfec9)
+#define PWMA_CCMR3 (*(unsigned char volatile xdata *)0xfeca)
+#define PWMA_CCMR4 (*(unsigned char volatile xdata *)0xfecb)
+#define PWMA_CCER1 (*(unsigned char volatile xdata *)0xfecc)
+#define PWMA_CCER2 (*(unsigned char volatile xdata *)0xfecd)
+#define PWMA_CNTR (*(unsigned int volatile xdata *)0xfece)
+#define PWMA_CNTRH (*(unsigned char volatile xdata *)0xfece)
+#define PWMA_CNTRL (*(unsigned char volatile xdata *)0xfecf)
+#define PWMA_PSCR (*(unsigned int volatile xdata *)0xfed0)
+#define PWMA_PSCRH (*(unsigned char volatile xdata *)0xfed0)
+#define PWMA_PSCRL (*(unsigned char volatile xdata *)0xfed1)
+#define PWMA_ARR (*(unsigned int volatile xdata *)0xfed2)
+#define PWMA_ARRH (*(unsigned char volatile xdata *)0xfed2)
+#define PWMA_ARRL (*(unsigned char volatile xdata *)0xfed3)
+#define PWMA_RCR (*(unsigned char volatile xdata *)0xfed4)
+#define PWMA_CCR1 (*(unsigned int volatile xdata *)0xfed5)
+#define PWMA_CCR1H (*(unsigned char volatile xdata *)0xfed5)
+#define PWMA_CCR1L (*(unsigned char volatile xdata *)0xfed6)
+#define PWMA_CCR2 (*(unsigned int volatile xdata *)0xfed7)
+#define PWMA_CCR2H (*(unsigned char volatile xdata *)0xfed7)
+#define PWMA_CCR2L (*(unsigned char volatile xdata *)0xfed8)
+#define PWMA_CCR3 (*(unsigned int volatile xdata *)0xfed9)
+#define PWMA_CCR3H (*(unsigned char volatile xdata *)0xfed9)
+#define PWMA_CCR3L (*(unsigned char volatile xdata *)0xfeda)
+#define PWMA_CCR4 (*(unsigned int volatile xdata *)0xfedb)
+#define PWMA_CCR4H (*(unsigned char volatile xdata *)0xfedb)
+#define PWMA_CCR4L (*(unsigned char volatile xdata *)0xfedc)
+#define PWMA_BKR (*(unsigned char volatile xdata *)0xfedd)
+#define PWMA_DTR (*(unsigned char volatile xdata *)0xfede)
+#define PWMA_OISR (*(unsigned char volatile xdata *)0xfedf)
+#define PWMB_CR1 (*(unsigned char volatile xdata *)0xfee0)
+#define PWMB_CR2 (*(unsigned char volatile xdata *)0xfee1)
+#define PWMB_SMCR (*(unsigned char volatile xdata *)0xfee2)
+#define PWMB_ETR (*(unsigned char volatile xdata *)0xfee3)
+#define PWMB_IER (*(unsigned char volatile xdata *)0xfee4)
+#define PWMB_SR1 (*(unsigned char volatile xdata *)0xfee5)
+#define PWMB_SR2 (*(unsigned char volatile xdata *)0xfee6)
+#define PWMB_EGR (*(unsigned char volatile xdata *)0xfee7)
+#define PWMB_CCMR1 (*(unsigned char volatile xdata *)0xfee8)
+#define PWMB_CCMR2 (*(unsigned char volatile xdata *)0xfee9)
+#define PWMB_CCMR3 (*(unsigned char volatile xdata *)0xfeea)
+#define PWMB_CCMR4 (*(unsigned char volatile xdata *)0xfeeb)
+#define PWMB_CCER1 (*(unsigned char volatile xdata *)0xfeec)
+#define PWMB_CCER2 (*(unsigned char volatile xdata *)0xfeed)
+#define PWMB_CNTR (*(unsigned int volatile xdata *)0xfeee)
+#define PWMB_CNTRH (*(unsigned char volatile xdata *)0xfeee)
+#define PWMB_CNTRL (*(unsigned char volatile xdata *)0xfeef)
+#define PWMB_PSCR (*(unsigned int volatile xdata *)0xfef0)
+#define PWMB_PSCRH (*(unsigned char volatile xdata *)0xfef0)
+#define PWMB_PSCRL (*(unsigned char volatile xdata *)0xfef1)
+#define PWMB_ARR (*(unsigned int volatile xdata *)0xfef2)
+#define PWMB_ARRH (*(unsigned char volatile xdata *)0xfef2)
+#define PWMB_ARRL (*(unsigned char volatile xdata *)0xfef3)
+#define PWMB_RCR (*(unsigned char volatile xdata *)0xfef4)
+#define PWMB_CCR5 (*(unsigned int volatile xdata *)0xfef5)
+#define PWMB_CCR5H (*(unsigned char volatile xdata *)0xfef5)
+#define PWMB_CCR5L (*(unsigned char volatile xdata *)0xfef6)
+#define PWMB_CCR6 (*(unsigned int volatile xdata *)0xfef7)
+#define PWMB_CCR6H (*(unsigned char volatile xdata *)0xfef7)
+#define PWMB_CCR6L (*(unsigned char volatile xdata *)0xfef8)
+#define PWMB_CCR7 (*(unsigned int volatile xdata *)0xfef9)
+#define PWMB_CCR7H (*(unsigned char volatile xdata *)0xfef9)
+#define PWMB_CCR7L (*(unsigned char volatile xdata *)0xfefa)
+#define PWMB_CCR8 (*(unsigned int volatile xdata *)0xfefb)
+#define PWMB_CCR8H (*(unsigned char volatile xdata *)0xfefb)
+#define PWMB_CCR8L (*(unsigned char volatile xdata *)0xfefc)
+#define PWMB_BKR (*(unsigned char volatile xdata *)0xfefd)
+#define PWMB_DTR (*(unsigned char volatile xdata *)0xfefe)
+#define PWMB_OISR (*(unsigned char volatile xdata *)0xfeff)
+
+/////////////////////////////////////////////////
+//FD00H-FDFFH
+/////////////////////////////////////////////////
+
+#define P0INTE (*(unsigned char volatile xdata *)0xfd00)
+#define P1INTE (*(unsigned char volatile xdata *)0xfd01)
+#define P2INTE (*(unsigned char volatile xdata *)0xfd02)
+#define P3INTE (*(unsigned char volatile xdata *)0xfd03)
+#define P4INTE (*(unsigned char volatile xdata *)0xfd04)
+#define P5INTE (*(unsigned char volatile xdata *)0xfd05)
+#define P6INTE (*(unsigned char volatile xdata *)0xfd06)
+#define P7INTE (*(unsigned char volatile xdata *)0xfd07)
+#define P0INTF (*(unsigned char volatile xdata *)0xfd10)
+#define P1INTF (*(unsigned char volatile xdata *)0xfd11)
+#define P2INTF (*(unsigned char volatile xdata *)0xfd12)
+#define P3INTF (*(unsigned char volatile xdata *)0xfd13)
+#define P4INTF (*(unsigned char volatile xdata *)0xfd14)
+#define P5INTF (*(unsigned char volatile xdata *)0xfd15)
+#define P6INTF (*(unsigned char volatile xdata *)0xfd16)
+#define P7INTF (*(unsigned char volatile xdata *)0xfd17)
+#define P0IM0 (*(unsigned char volatile xdata *)0xfd20)
+#define P1IM0 (*(unsigned char volatile xdata *)0xfd21)
+#define P2IM0 (*(unsigned char volatile xdata *)0xfd22)
+#define P3IM0 (*(unsigned char volatile xdata *)0xfd23)
+#define P4IM0 (*(unsigned char volatile xdata *)0xfd24)
+#define P5IM0 (*(unsigned char volatile xdata *)0xfd25)
+#define P6IM0 (*(unsigned char volatile xdata *)0xfd26)
+#define P7IM0 (*(unsigned char volatile xdata *)0xfd27)
+#define P0IM1 (*(unsigned char volatile xdata *)0xfd30)
+#define P1IM1 (*(unsigned char volatile xdata *)0xfd31)
+#define P2IM1 (*(unsigned char volatile xdata *)0xfd32)
+#define P3IM1 (*(unsigned char volatile xdata *)0xfd33)
+#define P4IM1 (*(unsigned char volatile xdata *)0xfd34)
+#define P5IM1 (*(unsigned char volatile xdata *)0xfd35)
+#define P6IM1 (*(unsigned char volatile xdata *)0xfd36)
+#define P7IM1 (*(unsigned char volatile xdata *)0xfd37)
+#define P0WKUE (*(unsigned char volatile xdata *)0xfd40)
+#define P1WKUE (*(unsigned char volatile xdata *)0xfd41)
+#define P2WKUE (*(unsigned char volatile xdata *)0xfd42)
+#define P3WKUE (*(unsigned char volatile xdata *)0xfd43)
+#define P4WKUE (*(unsigned char volatile xdata *)0xfd44)
+#define P5WKUE (*(unsigned char volatile xdata *)0xfd45)
+#define P6WKUE (*(unsigned char volatile xdata *)0xfd46)
+#define P7WKUE (*(unsigned char volatile xdata *)0xfd47)
+
+#define PINIPL (*(unsigned char volatile xdata *)0xfd60)
+#define PINIPH (*(unsigned char volatile xdata *)0xfd61)
+
+#define CHIPID ( (unsigned char volatile xdata *)0xfde0)
+
+#define CHIPID0 (*(unsigned char volatile xdata *)0xfde0)
+#define CHIPID1 (*(unsigned char volatile xdata *)0xfde1)
+#define CHIPID2 (*(unsigned char volatile xdata *)0xfde2)
+#define CHIPID3 (*(unsigned char volatile xdata *)0xfde3)
+#define CHIPID4 (*(unsigned char volatile xdata *)0xfde4)
+#define CHIPID5 (*(unsigned char volatile xdata *)0xfde5)
+#define CHIPID6 (*(unsigned char volatile xdata *)0xfde6)
+#define CHIPID7 (*(unsigned char volatile xdata *)0xfde7)
+#define CHIPID8 (*(unsigned char volatile xdata *)0xfde8)
+#define CHIPID9 (*(unsigned char volatile xdata *)0xfde9)
+#define CHIPID10 (*(unsigned char volatile xdata *)0xfdea)
+#define CHIPID11 (*(unsigned char volatile xdata *)0xfdeb)
+#define CHIPID12 (*(unsigned char volatile xdata *)0xfdec)
+#define CHIPID13 (*(unsigned char volatile xdata *)0xfded)
+#define CHIPID14 (*(unsigned char volatile xdata *)0xfdee)
+#define CHIPID15 (*(unsigned char volatile xdata *)0xfdef)
+#define CHIPID16 (*(unsigned char volatile xdata *)0xfdf0)
+#define CHIPID17 (*(unsigned char volatile xdata *)0xfdf1)
+#define CHIPID18 (*(unsigned char volatile xdata *)0xfdf2)
+#define CHIPID19 (*(unsigned char volatile xdata *)0xfdf3)
+#define CHIPID20 (*(unsigned char volatile xdata *)0xfdf4)
+#define CHIPID21 (*(unsigned char volatile xdata *)0xfdf5)
+#define CHIPID22 (*(unsigned char volatile xdata *)0xfdf6)
+#define CHIPID23 (*(unsigned char volatile xdata *)0xfdf7)
+#define CHIPID24 (*(unsigned char volatile xdata *)0xfdf8)
+#define CHIPID25 (*(unsigned char volatile xdata *)0xfdf9)
+#define CHIPID26 (*(unsigned char volatile xdata *)0xfdfa)
+#define CHIPID27 (*(unsigned char volatile xdata *)0xfdfb)
+#define CHIPID28 (*(unsigned char volatile xdata *)0xfdfc)
+#define CHIPID29 (*(unsigned char volatile xdata *)0xfdfd)
+#define CHIPID30 (*(unsigned char volatile xdata *)0xfdfe)
+#define CHIPID31 (*(unsigned char volatile xdata *)0xfdff)
+
+/////////////////////////////////////////////////
+//FC00H-FCFFH
+/////////////////////////////////////////////////
+
+#define MD3 (*(unsigned char volatile xdata *)0xfcf0)
+#define MD2 (*(unsigned char volatile xdata *)0xfcf1)
+#define MD1 (*(unsigned char volatile xdata *)0xfcf2)
+#define MD0 (*(unsigned char volatile xdata *)0xfcf3)
+#define MD5 (*(unsigned char volatile xdata *)0xfcf4)
+#define MD4 (*(unsigned char volatile xdata *)0xfcf5)
+#define ARCON (*(unsigned char volatile xdata *)0xfcf6)
+#define OPCON (*(unsigned char volatile xdata *)0xfcf7)
+
+/////////////////////////////////////////////////
+//FB00H-FBFFH
+/////////////////////////////////////////////////
+
+#define COMEN (*(unsigned char volatile xdata *)0xfb00)
+#define SEGENL (*(unsigned char volatile xdata *)0xfb01)
+#define SEGENH (*(unsigned char volatile xdata *)0xfb02)
+#define LEDCTRL (*(unsigned char volatile xdata *)0xfb03)
+#define LEDCKS (*(unsigned char volatile xdata *)0xfb04)
+#define COM0_DA_L (*(unsigned char volatile xdata *)0xfb10)
+#define COM1_DA_L (*(unsigned char volatile xdata *)0xfb11)
+#define COM2_DA_L (*(unsigned char volatile xdata *)0xfb12)
+#define COM3_DA_L (*(unsigned char volatile xdata *)0xfb13)
+#define COM4_DA_L (*(unsigned char volatile xdata *)0xfb14)
+#define COM5_DA_L (*(unsigned char volatile xdata *)0xfb15)
+#define COM6_DA_L (*(unsigned char volatile xdata *)0xfb16)
+#define COM7_DA_L (*(unsigned char volatile xdata *)0xfb17)
+#define COM0_DA_H (*(unsigned char volatile xdata *)0xfb18)
+#define COM1_DA_H (*(unsigned char volatile xdata *)0xfb19)
+#define COM2_DA_H (*(unsigned char volatile xdata *)0xfb1a)
+#define COM3_DA_H (*(unsigned char volatile xdata *)0xfb1b)
+#define COM4_DA_H (*(unsigned char volatile xdata *)0xfb1c)
+#define COM5_DA_H (*(unsigned char volatile xdata *)0xfb1d)
+#define COM6_DA_H (*(unsigned char volatile xdata *)0xfb1e)
+#define COM7_DA_H (*(unsigned char volatile xdata *)0xfb1f)
+#define COM0_DC_L (*(unsigned char volatile xdata *)0xfb20)
+#define COM1_DC_L (*(unsigned char volatile xdata *)0xfb21)
+#define COM2_DC_L (*(unsigned char volatile xdata *)0xfb22)
+#define COM3_DC_L (*(unsigned char volatile xdata *)0xfb23)
+#define COM4_DC_L (*(unsigned char volatile xdata *)0xfb24)
+#define COM5_DC_L (*(unsigned char volatile xdata *)0xfb25)
+#define COM6_DC_L (*(unsigned char volatile xdata *)0xfb26)
+#define COM7_DC_L (*(unsigned char volatile xdata *)0xfb27)
+#define COM0_DC_H (*(unsigned char volatile xdata *)0xfb28)
+#define COM1_DC_H (*(unsigned char volatile xdata *)0xfb29)
+#define COM2_DC_H (*(unsigned char volatile xdata *)0xfb2a)
+#define COM3_DC_H (*(unsigned char volatile xdata *)0xfb2b)
+#define COM4_DC_H (*(unsigned char volatile xdata *)0xfb2c)
+#define COM5_DC_H (*(unsigned char volatile xdata *)0xfb2d)
+#define COM6_DC_H (*(unsigned char volatile xdata *)0xfb2e)
+#define COM7_DC_H (*(unsigned char volatile xdata *)0xfb2f)
+
+#define TSCHEN1 (*(unsigned char volatile xdata *)0xfb40)
+#define TSCHEN2 (*(unsigned char volatile xdata *)0xfb41)
+#define TSCFG1 (*(unsigned char volatile xdata *)0xfb42)
+#define TSCFG2 (*(unsigned char volatile xdata *)0xfb43)
+#define TSWUTC (*(unsigned char volatile xdata *)0xfb44)
+#define TSCTRL (*(unsigned char volatile xdata *)0xfb45)
+#define TSSTA1 (*(unsigned char volatile xdata *)0xfb46)
+#define TSSTA2 (*(unsigned char volatile xdata *)0xfb47)
+#define TSRT (*(unsigned char volatile xdata *)0xfb48)
+#define TSDAT (*(unsigned int volatile xdata *)0xfb49)
+#define TSDATH (*(unsigned char volatile xdata *)0xfb49)
+#define TSDATL (*(unsigned char volatile xdata *)0xfb4A)
+#define TSTH00 (*(unsigned int volatile xdata *)0xfb50)
+#define TSTH00H (*(unsigned char volatile xdata *)0xfb50)
+#define TSTH00L (*(unsigned char volatile xdata *)0xfb51)
+#define TSTH01 (*(unsigned int volatile xdata *)0xfb52)
+#define TSTH01H (*(unsigned char volatile xdata *)0xfb52)
+#define TSTH01L (*(unsigned char volatile xdata *)0xfb53)
+#define TSTH02 (*(unsigned int volatile xdata *)0xfb54)
+#define TSTH02H (*(unsigned char volatile xdata *)0xfb54)
+#define TSTH02L (*(unsigned char volatile xdata *)0xfb55)
+#define TSTH03 (*(unsigned int volatile xdata *)0xfb56)
+#define TSTH03H (*(unsigned char volatile xdata *)0xfb56)
+#define TSTH03L (*(unsigned char volatile xdata *)0xfb57)
+#define TSTH04 (*(unsigned int volatile xdata *)0xfb58)
+#define TSTH04H (*(unsigned char volatile xdata *)0xfb58)
+#define TSTH04L (*(unsigned char volatile xdata *)0xfb59)
+#define TSTH05 (*(unsigned int volatile xdata *)0xfb5a)
+#define TSTH05H (*(unsigned char volatile xdata *)0xfb5a)
+#define TSTH05L (*(unsigned char volatile xdata *)0xfb5b)
+#define TSTH06 (*(unsigned int volatile xdata *)0xfb5c)
+#define TSTH06H (*(unsigned char volatile xdata *)0xfb5c)
+#define TSTH06L (*(unsigned char volatile xdata *)0xfb5d)
+#define TSTH07 (*(unsigned int volatile xdata *)0xfb5e)
+#define TSTH07H (*(unsigned char volatile xdata *)0xfb5e)
+#define TSTH07L (*(unsigned char volatile xdata *)0xfb5f)
+#define TSTH08 (*(unsigned int volatile xdata *)0xfb60)
+#define TSTH08H (*(unsigned char volatile xdata *)0xfb60)
+#define TSTH08L (*(unsigned char volatile xdata *)0xfb61)
+#define TSTH09 (*(unsigned int volatile xdata *)0xfb62)
+#define TSTH09H (*(unsigned char volatile xdata *)0xfb62)
+#define TSTH09L (*(unsigned char volatile xdata *)0xfb63)
+#define TSTH10 (*(unsigned int volatile xdata *)0xfb64)
+#define TSTH10H (*(unsigned char volatile xdata *)0xfb64)
+#define TSTH10L (*(unsigned char volatile xdata *)0xfb65)
+#define TSTH11 (*(unsigned int volatile xdata *)0xfb66)
+#define TSTH11H (*(unsigned char volatile xdata *)0xfb66)
+#define TSTH11L (*(unsigned char volatile xdata *)0xfb67)
+#define TSTH12 (*(unsigned int volatile xdata *)0xfb68)
+#define TSTH12H (*(unsigned char volatile xdata *)0xfb68)
+#define TSTH12L (*(unsigned char volatile xdata *)0xfb69)
+#define TSTH13 (*(unsigned int volatile xdata *)0xfb6a)
+#define TSTH13H (*(unsigned char volatile xdata *)0xfb6a)
+#define TSTH13L (*(unsigned char volatile xdata *)0xfb6b)
+#define TSTH14 (*(unsigned int volatile xdata *)0xfb6c)
+#define TSTH14H (*(unsigned char volatile xdata *)0xfb6c)
+#define TSTH14L (*(unsigned char volatile xdata *)0xfb6d)
+#define TSTH15 (*(unsigned int volatile xdata *)0xfb6e)
+#define TSTH15H (*(unsigned char volatile xdata *)0xfb6e)
+#define TSTH15L (*(unsigned char volatile xdata *)0xfb6f)
+
+#define LCDCFG (*(unsigned char volatile xdata *)0xfb80)
+#define LCDCFG2 (*(unsigned char volatile xdata *)0xfb81)
+#define DBLEN (*(unsigned char volatile xdata *)0xfb82)
+#define COMLENL (*(unsigned char volatile xdata *)0xfb83)
+#define COMLENM (*(unsigned char volatile xdata *)0xfb84)
+#define COMLENH (*(unsigned char volatile xdata *)0xfb85)
+#define BLINKRATE (*(unsigned char volatile xdata *)0xfb86)
+#define LCDCR (*(unsigned char volatile xdata *)0xfb87)
+#define COMON (*(unsigned char volatile xdata *)0xfb88)
+#define SEGON1 (*(unsigned char volatile xdata *)0xfb8a)
+#define SEGON2 (*(unsigned char volatile xdata *)0xfb8b)
+#define SEGON3 (*(unsigned char volatile xdata *)0xfb8c)
+#define SEGON4 (*(unsigned char volatile xdata *)0xfb8d)
+#define SEGON5 (*(unsigned char volatile xdata *)0xfb8e)
+#define C0SEGV0 (*(unsigned char volatile xdata *)0xfb90)
+#define C0SEGV1 (*(unsigned char volatile xdata *)0xfb91)
+#define C0SEGV2 (*(unsigned char volatile xdata *)0xfb92)
+#define C0SEGV3 (*(unsigned char volatile xdata *)0xfb93)
+#define C0SEGV4 (*(unsigned char volatile xdata *)0xfb94)
+#define C1SEGV0 (*(unsigned char volatile xdata *)0xfb98)
+#define C1SEGV1 (*(unsigned char volatile xdata *)0xfb99)
+#define C1SEGV2 (*(unsigned char volatile xdata *)0xfb9a)
+#define C1SEGV3 (*(unsigned char volatile xdata *)0xfb9b)
+#define C1SEGV4 (*(unsigned char volatile xdata *)0xfb9c)
+#define C2SEGV0 (*(unsigned char volatile xdata *)0xfba0)
+#define C2SEGV1 (*(unsigned char volatile xdata *)0xfba1)
+#define C2SEGV2 (*(unsigned char volatile xdata *)0xfba2)
+#define C2SEGV3 (*(unsigned char volatile xdata *)0xfba3)
+#define C2SEGV4 (*(unsigned char volatile xdata *)0xfba4)
+#define C3SEGV0 (*(unsigned char volatile xdata *)0xfba8)
+#define C3SEGV1 (*(unsigned char volatile xdata *)0xfba9)
+#define C3SEGV2 (*(unsigned char volatile xdata *)0xfbaa)
+#define C3SEGV3 (*(unsigned char volatile xdata *)0xfbab)
+#define C3SEGV4 (*(unsigned char volatile xdata *)0xfbac)
+
+#define HSPWMA_CFG (*(unsigned char volatile xdata *)0xfbf0)
+#define HSPWMA_ADR (*(unsigned char volatile xdata *)0xfbf1)
+#define HSPWMA_DAT (*(unsigned char volatile xdata *)0xfbf2)
+
+#define HSPWMB_CFG (*(unsigned char volatile xdata *)0xfbf4)
+#define HSPWMB_ADR (*(unsigned char volatile xdata *)0xfbf5)
+#define HSPWMB_DAT (*(unsigned char volatile xdata *)0xfbf6)
+
+/////////////////////////////////////////////////
+//FA00H-FAFFH
+/////////////////////////////////////////////////
+
+#define DMA_M2M_CFG (*(unsigned char volatile xdata *)0xfa00)
+#define DMA_M2M_CR (*(unsigned char volatile xdata *)0xfa01)
+#define DMA_M2M_STA (*(unsigned char volatile xdata *)0xfa02)
+#define DMA_M2M_AMT (*(unsigned char volatile xdata *)0xfa03)
+#define DMA_M2M_DONE (*(unsigned char volatile xdata *)0xfa04)
+#define DMA_M2M_TXAH (*(unsigned char volatile xdata *)0xfa05)
+#define DMA_M2M_TXAL (*(unsigned char volatile xdata *)0xfa06)
+#define DMA_M2M_RXAH (*(unsigned char volatile xdata *)0xfa07)
+#define DMA_M2M_RXAL (*(unsigned char volatile xdata *)0xfa08)
+
+#define DMA_ADC_CFG (*(unsigned char volatile xdata *)0xfa10)
+#define DMA_ADC_CR (*(unsigned char volatile xdata *)0xfa11)
+#define DMA_ADC_STA (*(unsigned char volatile xdata *)0xfa12)
+#define DMA_ADC_RXA (*(unsigned int volatile xdata *)0xfa17)
+#define DMA_ADC_RXAH (*(unsigned char volatile xdata *)0xfa17)
+#define DMA_ADC_RXAL (*(unsigned char volatile xdata *)0xfa18)
+#define DMA_ADC_CFG2 (*(unsigned char volatile xdata *)0xfa19)
+#define DMA_ADC_CHSW0 (*(unsigned char volatile xdata *)0xfa1a)
+#define DMA_ADC_CHSW1 (*(unsigned char volatile xdata *)0xfa1b)
+
+#define DMA_SPI_CFG (*(unsigned char volatile xdata *)0xfa20)
+#define DMA_SPI_CR (*(unsigned char volatile xdata *)0xfa21)
+#define DMA_SPI_STA (*(unsigned char volatile xdata *)0xfa22)
+#define DMA_SPI_AMT (*(unsigned char volatile xdata *)0xfa23)
+#define DMA_SPI_DONE (*(unsigned char volatile xdata *)0xfa24)
+#define DMA_SPI_TXA (*(unsigned int volatile xdata *)0xfa25)
+#define DMA_SPI_TXAH (*(unsigned char volatile xdata *)0xfa25)
+#define DMA_SPI_TXAL (*(unsigned char volatile xdata *)0xfa26)
+#define DMA_SPI_RXA (*(unsigned int volatile xdata *)0xfa27)
+#define DMA_SPI_RXAH (*(unsigned char volatile xdata *)0xfa27)
+#define DMA_SPI_RXAL (*(unsigned char volatile xdata *)0xfa28)
+#define DMA_SPI_CFG2 (*(unsigned char volatile xdata *)0xfa29)
+
+#define DMA_UR1T_CFG (*(unsigned char volatile xdata *)0xfa30)
+#define DMA_UR1T_CR (*(unsigned char volatile xdata *)0xfa31)
+#define DMA_UR1T_STA (*(unsigned char volatile xdata *)0xfa32)
+#define DMA_UR1T_AMT (*(unsigned char volatile xdata *)0xfa33)
+#define DMA_UR1T_DONE (*(unsigned char volatile xdata *)0xfa34)
+#define DMA_UR1T_TXA (*(unsigned int volatile xdata *)0xfa35)
+#define DMA_UR1T_TXAH (*(unsigned char volatile xdata *)0xfa35)
+#define DMA_UR1T_TXAL (*(unsigned char volatile xdata *)0xfa36)
+#define DMA_UR1R_CFG (*(unsigned char volatile xdata *)0xfa38)
+#define DMA_UR1R_CR (*(unsigned char volatile xdata *)0xfa39)
+#define DMA_UR1R_STA (*(unsigned char volatile xdata *)0xfa3a)
+#define DMA_UR1R_AMT (*(unsigned char volatile xdata *)0xfa3b)
+#define DMA_UR1R_DONE (*(unsigned char volatile xdata *)0xfa3c)
+#define DMA_UR1R_RXA (*(unsigned int volatile xdata *)0xfa3d)
+#define DMA_UR1R_RXAH (*(unsigned char volatile xdata *)0xfa3d)
+#define DMA_UR1R_RXAL (*(unsigned char volatile xdata *)0xfa3e)
+
+#define DMA_UR2T_CFG (*(unsigned char volatile xdata *)0xfa40)
+#define DMA_UR2T_CR (*(unsigned char volatile xdata *)0xfa41)
+#define DMA_UR2T_STA (*(unsigned char volatile xdata *)0xfa42)
+#define DMA_UR2T_AMT (*(unsigned char volatile xdata *)0xfa43)
+#define DMA_UR2T_DONE (*(unsigned char volatile xdata *)0xfa44)
+#define DMA_UR2T_TXA (*(unsigned int volatile xdata *)0xfa45)
+#define DMA_UR2T_TXAH (*(unsigned char volatile xdata *)0xfa45)
+#define DMA_UR2T_TXAL (*(unsigned char volatile xdata *)0xfa46)
+#define DMA_UR2R_CFG (*(unsigned char volatile xdata *)0xfa48)
+#define DMA_UR2R_CR (*(unsigned char volatile xdata *)0xfa49)
+#define DMA_UR2R_STA (*(unsigned char volatile xdata *)0xfa4a)
+#define DMA_UR2R_AMT (*(unsigned char volatile xdata *)0xfa4b)
+#define DMA_UR2R_DONE (*(unsigned char volatile xdata *)0xfa4c)
+#define DMA_UR2R_RXA (*(unsigned int volatile xdata *)0xfa4d)
+#define DMA_UR2R_RXAH (*(unsigned char volatile xdata *)0xfa4d)
+#define DMA_UR2R_RXAL (*(unsigned char volatile xdata *)0xfa4e)
+
+#define DMA_UR3T_CFG (*(unsigned char volatile xdata *)0xfa50)
+#define DMA_UR3T_CR (*(unsigned char volatile xdata *)0xfa51)
+#define DMA_UR3T_STA (*(unsigned char volatile xdata *)0xfa52)
+#define DMA_UR3T_AMT (*(unsigned char volatile xdata *)0xfa53)
+#define DMA_UR3T_DONE (*(unsigned char volatile xdata *)0xfa54)
+#define DMA_UR3T_TXA (*(unsigned int volatile xdata *)0xfa55)
+#define DMA_UR3T_TXAH (*(unsigned char volatile xdata *)0xfa55)
+#define DMA_UR3T_TXAL (*(unsigned char volatile xdata *)0xfa56)
+#define DMA_UR3R_CFG (*(unsigned char volatile xdata *)0xfa58)
+#define DMA_UR3R_CR (*(unsigned char volatile xdata *)0xfa59)
+#define DMA_UR3R_STA (*(unsigned char volatile xdata *)0xfa5a)
+#define DMA_UR3R_AMT (*(unsigned char volatile xdata *)0xfa5b)
+#define DMA_UR3R_DONE (*(unsigned char volatile xdata *)0xfa5c)
+#define DMA_UR3R_RXA (*(unsigned int volatile xdata *)0xfa5d)
+#define DMA_UR3R_RXAH (*(unsigned char volatile xdata *)0xfa5d)
+#define DMA_UR3R_RXAL (*(unsigned char volatile xdata *)0xfa5e)
+
+#define DMA_UR4T_CFG (*(unsigned char volatile xdata *)0xfa60)
+#define DMA_UR4T_CR (*(unsigned char volatile xdata *)0xfa61)
+#define DMA_UR4T_STA (*(unsigned char volatile xdata *)0xfa62)
+#define DMA_UR4T_AMT (*(unsigned char volatile xdata *)0xfa63)
+#define DMA_UR4T_DONE (*(unsigned char volatile xdata *)0xfa64)
+#define DMA_UR4T_TXA (*(unsigned int volatile xdata *)0xfa65)
+#define DMA_UR4T_TXAH (*(unsigned char volatile xdata *)0xfa65)
+#define DMA_UR4T_TXAL (*(unsigned char volatile xdata *)0xfa66)
+#define DMA_UR4R_CFG (*(unsigned char volatile xdata *)0xfa68)
+#define DMA_UR4R_CR (*(unsigned char volatile xdata *)0xfa69)
+#define DMA_UR4R_STA (*(unsigned char volatile xdata *)0xfa6a)
+#define DMA_UR4R_AMT (*(unsigned char volatile xdata *)0xfa6b)
+#define DMA_UR4R_DONE (*(unsigned char volatile xdata *)0xfa6c)
+#define DMA_UR4R_RXA (*(unsigned int volatile xdata *)0xfa6d)
+#define DMA_UR4R_RXAH (*(unsigned char volatile xdata *)0xfa6d)
+#define DMA_UR4R_RXAL (*(unsigned char volatile xdata *)0xfa6e)
+
+#define DMA_LCM_CFG (*(unsigned char volatile xdata *)0xfa70)
+#define DMA_LCM_CR (*(unsigned char volatile xdata *)0xfa71)
+#define DMA_LCM_STA (*(unsigned char volatile xdata *)0xfa72)
+#define DMA_LCM_AMT (*(unsigned char volatile xdata *)0xfa73)
+#define DMA_LCM_DONE (*(unsigned char volatile xdata *)0xfa74)
+#define DMA_LCM_TXA (*(unsigned int volatile xdata *)0xfa75)
+#define DMA_LCM_TXAH (*(unsigned char volatile xdata *)0xfa75)
+#define DMA_LCM_TXAL (*(unsigned char volatile xdata *)0xfa76)
+#define DMA_LCM_RXA (*(unsigned int volatile xdata *)0xfa77)
+#define DMA_LCM_RXAH (*(unsigned char volatile xdata *)0xfa77)
+#define DMA_LCM_RXAL (*(unsigned char volatile xdata *)0xfa78)
+
+/////////////////////////////////////////////////
+//USB Control Regiter
+/////////////////////////////////////////////////
+
+//sfr USBCLK = 0xdc;
+//sfr USBDAT = 0xec;
+//sfr USBCON = 0xf4;
+//sfr USBADR = 0xfc;
+
+//使用方法:
+// char dat;
+//
+// READ_USB(CSR0, dat); //读USB寄存器
+// WRITE_USB(FADDR, 0x00); //写USB寄存器
+
+#define READ_USB(reg, dat) \
+ { \
+ while (USBADR & 0x80); \
+ USBADR = (reg) | 0x80; \
+ while (USBADR & 0x80); \
+ (dat) = USBDAT; \
+ }
+
+#define WRITE_USB(reg, dat) \
+ { \
+ while (USBADR & 0x80); \
+ USBADR = (reg) & 0x7f; \
+ USBDAT = (dat); \
+ }
+
+#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 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 TKSU_VECTOR 35 //011BH
+#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 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(N) NOP##N()
+
+
+/////////////////////////////////////////////////
+
+#endif
+
diff --git a/source/cpu/stc_stc8hxx.h b/source/cpu/stc_stc8hxx.h
index a279eea..c32fd43 100644
--- a/source/cpu/stc_stc8hxx.h
+++ b/source/cpu/stc_stc8hxx.h
@@ -3,7 +3,7 @@
/////////////////////////////////////////////////
-//ͷļ,ٰ"REG51.H"
+//������ͷ�ļ���,���������ٰ���"REG51.H"
sfr P0 = 0x80;
sbit P00 = P0^0;
@@ -192,8 +192,8 @@ sfr P7 = 0xf8;
sfr USBADR = 0xfc;
sfr RSTCFG = 0xff;
-//ܼĴλչRAM
-//ЩĴ,ȽP_SW2BIT7Ϊ1,ſд
+//��������ܼĴ���λ����չRAM����
+//������Щ�Ĵ���,���Ƚ�P_SW2��BIT7����Ϊ1,�ſ�������д
/////////////////////////////////////////////////
//FF00H-FFFFH