STC8H系列单片机STC8H_H头文件功能注释

#ifndef     __STC8H_H__        // 条件编译:如果未定义__STC8H_H__宏
#define     __STC8H_H__        // 则定义该宏,防止头文件被重复包含

/

//包含本头文件后,不用另外再包含”REG51.H”  // 提示:本头文件已包含基本寄存器定义

sfr         P0          =           0x80;  // 定义特殊功能寄存器P0,地址为0x80
sbit        P00         =           P0^0;  // 定义P0.0引脚,即P0寄存器的第0位
sbit        P01         =           P0^1;  // 定义P0.1引脚,即P0寄存器的第1位
sbit        P02         =           P0^2;  // 定义P0.2引脚,即P0寄存器的第2位
sbit        P03         =           P0^3;  // 定义P0.3引脚,即P0寄存器的第3位
sbit        P04         =           P0^4;  // 定义P0.4引脚,即P0寄存器的第4位
sbit        P05         =           P0^5;  // 定义P0.5引脚,即P0寄存器的第5位
sbit        P06         =           P0^6;  // 定义P0.6引脚,即P0寄存器的第6位
sbit        P07         =           P0^7;  // 定义P0.7引脚,即P0寄存器的第7位

sfr         SP          =           0x81;  // 堆栈指针寄存器,用于管理堆栈地址
sfr         DPL         =           0x82;  // 数据指针低位寄存器,与DPH共同组成16位数据指针
sfr         DPH         =           0x83;  // 数据指针高位寄存器,与DPL共同组成16位数据指针

sfr         S4CON       =           0x84;  // 串口4控制寄存器,用于配置串口4的工作模式
sfr         S4BUF       =           0x85;  // 串口4数据缓冲寄存器,用于存放串口4收发的数据
sfr         PCON        =           0x87;  // 电源控制寄存器,用于配置单片机的电源模式和波特率倍增

sfr         TCON        =           0x88;  // 定时器/计数器控制寄存器
sbit        TF1         =           TCON^7; // 定时器1溢出标志位
sbit        TR1         =           TCON^6; // 定时器1运行控制位
sbit        TF0         =           TCON^5; // 定时器0溢出标志位
sbit        TR0         =           TCON^4; // 定时器0运行控制位

sbit        IE1         =           TCON^3; // 外部中断1请求标志
sbit        IT1         =           TCON^2; // 外部中断1触发方式控制位
sbit        IE0         =           TCON^1; // 外部中断0请求标志
sbit        IT0         =           TCON^0; // 外部中断0触发方式控制位

sfr         TMOD        =           0x89;  // 定时器/计数器模式控制寄存器,用于配置定时器工作模式
sfr         TL0         =           0x8a;  // 定时器0低位寄存器,存放定时器0的初始值
sfr         TL1         =           0x8b;  // 定时器1低位寄存器,存放定时器1的初始值
sfr         TH0         =           0x8c;  // 定时器0高位寄存器,存放定时器0的初始值
sfr         TH1         =           0x8d;  // 定时器1高位寄存器,存放定时器1的初始值
sfr         AUXR        =           0x8e;  // 辅助寄存器,用于配置一些辅助功能
sfr         INTCLKO     =           0x8f;  // 中断和时钟输出控制寄存器,用于配置中断和时钟输出

sfr         P1          =           0x90;  // 定义P1端口寄存器,地址为0x90
sbit        P10         =           P1^0;  // 定义P1.0引脚,即P1寄存器的第0位
sbit        P11         =           P1^1;  // 定义P1.1引脚,即P1寄存器的第1位
sbit        P12         =           P1^2;  // 定义P1.2引脚,即P1寄存器的第2位
sbit        P13         =           P1^3;  // 定义P1.3引脚,即P1寄存器的第3位
sbit        P14         =           P1^4;  // 定义P1.4引脚,即P1寄存器的第4位
sbit        P15         =           P1^5;  // 定义P1.5引脚,即P1寄存器的第5位
sbit        P16         =           P1^6;  // 定义P1.6引脚,即P1寄存器的第6位
sbit        P17         =           P1^7;  // 定义P1.7引脚,即P1寄存器的第7位

sfr         P1M1        =           0x91;  // P1端口模式寄存器1,用于配置P1口各引脚的工作模式
sfr         P1M0        =           0x92;  // P1端口模式寄存器0,与P1M1共同决定P1口引脚模式

sfr         P0M1        =           0x93;  // P0端口模式寄存器1,用于配置P0口各引脚的工作模式
sfr         P0M0        =           0x94;  // P0端口模式寄存器0,与P0M1共同决定P0口引脚模式

sfr         P2M1        =           0x95;  // P2端口模式寄存器1,用于配置P2口各引脚的工作模式
sfr         P2M0        =           0x96;  // P2端口模式寄存器0,与P2M1共同决定P2口引脚模式

sfr         SCON        =           0x98;  // 串口1控制寄存器,用于配置串口1的工作模式和状态
sbit        SM0         =           SCON^7; // 串口1模式选择位0
sbit        SM1         =           SCON^6; // 串口1模式选择位1
sbit        SM2         =           SCON^5; // 串口1多机通信控制位
sbit        REN         =           SCON^4; // 串口1接收使能位
sbit        TB8         =           SCON^3; // 串口1发送数据位8
sbit        RB8         =           SCON^2; // 串口1接收数据位8
sbit        TI          =           SCON^1; // 串口1发送中断标志
sbit        RI          =           SCON^0; // 串口1接收中断标志

sfr         SBUF        =           0x99;  // 串口1数据缓冲寄存器,用于存放串口1收发的数据
sfr         S2CON       =           0x9a;  // 串口2控制寄存器,用于配置串口2的工作模式和状态
sfr         S2BUF       =           0x9b;  // 串口2数据缓冲寄存器,用于存放串口2收发的数据

sfr         IRCBAND     =           0x9d;  // 内部RC振荡器频段控制寄存器,用于选择内部时钟的工作频段
sfr         LIRTRIM     =           0x9e;  // 低频内部RC振荡器微调寄存器,用于精确调整低频内部时钟
sfr         IRTRIM      =           0x9f;  // 内部RC振荡器微调寄存器,用于精确调整内部主时钟

sfr         P2          =           0xa0;  // 定义P2端口寄存器,地址为0xa0
sbit        P20         =           P2^0;  // 定义P2.0引脚,即P2寄存器的第0位
sbit        P21         =           P2^1;  // 定义P2.1引脚,即P2寄存器的第1位
sbit        P22         =           P2^2;  // 定义P2.2引脚,即P2寄存器的第2位
sbit        P23         =           P2^3;  // 定义P2.3引脚,即P2寄存器的第3位
sbit        P24         =           P2^4;  // 定义P2.4引脚,即P2寄存器的第4位
sbit        P25         =           P2^5;  // 定义P2.5引脚,即P2寄存器的第5位
sbit        P26         =           P2^6;  // 定义P2.6引脚,即P2寄存器的第6位
sbit        P27         =           P2^7;  // 定义P2.7引脚,即P2寄存器的第7位

sfr         P_SW1       =           0xa2;  // 外设端口切换寄存器1,用于切换UART、SPI等外设的IO口映射

sfr         IE          =           0xa8;  // 中断使能寄存器,控制所有中断的开启和关闭
sbit        EA          =           IE^7;  // 全局中断使能位,1=开启所有中断,0=关闭所有中断
sbit        ELVD        =           IE^6;  // 低压检测中断使能位
sbit        EADC        =           IE^5;  // ADC转换完成中断使能位
sbit        ES          =           IE^4;  // 串口1(UART1)中断使能位
sbit        ET1         =           IE^3;  // 定时器1中断使能位
sbit        EX1         =           IE^2;  // 外部中断1使能位
sbit        ET0         =           IE^1;  // 定时器0中断使能位
sbit        EX0         =           IE^0;  // 外部中断0使能位

sfr         SADDR       =           0xa9;  // 串口1从机地址寄存器,用于多机通信
sfr         WKTCL       =           0xaa;  // 看门狗定时器低8位寄存器,用于配置看门狗定时时间
sfr         WKTCH       =           0xab;  // 看门狗定时器高8位寄存器,用于配置看门狗定时时间
sfr         S3CON       =           0xac;  // 串口3控制寄存器,用于配置串口3的工作模式和状态
sfr         S3BUF       =           0xad;  // 串口3数据缓冲寄存器,用于存放串口3收发的数据
sfr         TA          =           0xae;  // 特殊功能寄存器访问授权键,用于解锁某些特殊寄存器
sfr         IE2         =           0xaf;  // 中断使能寄存器2,控制额外中断源的开启和关闭

sfr         P3          =           0xb0;  // 定义P3端口寄存器,地址为0xb0
sbit        P30         =           P3^0;  // 定义P3.0引脚(RXD/UART1接收端)
sbit        P31         =           P3^1;  // 定义P3.1引脚(TXD/UART1发送端)
sbit        P32         =           P3^2;  // 定义P3.2引脚(INT0/外部中断0)
sbit        P33         =           P3^3;  // 定义P3.3引脚(INT1/外部中断1)
sbit        P34         =           P3^4;  // 定义P3.4引脚(T0/定时器0外部输入)
sbit        P35         =           P3^5;  // 定义P3.5引脚(T1/定时器1外部输入)
sbit        P36         =           P3^6;  // 定义P3.6引脚(WR/外部数据存储器写选通)
sbit        P37         =           P3^7;  // 定义P3.7引脚(RD/外部数据存储器读选通)

sfr         P3M1        =           0xb1;  // P3端口模式寄存器1,配置P3口各引脚工作模式
sfr         P3M0        =           0xb2;  // P3端口模式寄存器0,与P3M1共同决定P3口引脚模式

sfr         P4M1        =           0xb3;  // P4端口模式寄存器1,配置P4口各引脚工作模式
sfr         P4M0        =           0xb4;  // P4端口模式寄存器0,与P4M1共同决定P4口引脚模式

sfr         IP2         =           0xb5;  // 中断优先级控制寄存器2(低8位)
sfr         IP2H        =           0xb6;  // 中断优先级控制寄存器2(高8位)
sfr         IPH         =           0xb7;  // 中断优先级控制寄存器高8位
sfr         IP          =           0xb8;  // 中断优先级控制寄存器低8位
sbit        PPCA        =           IP^7;  // PCA模块中断优先级控制位
sbit        PLVD        =           IP^6;  // 低压检测中断优先级控制位
sbit        PADC        =           IP^5;  // ADC转换中断优先级控制位
sbit        PS          =           IP^4;  // 串口1中断优先级控制位
sbit        PT1         =           IP^3;  // 定时器1中断优先级控制位
sbit        PX1         =           IP^2;  // 外部中断1优先级控制位
sbit        PT0         =           IP^1;  // 定时器0中断优先级控制位
sbit        PX0         =           IP^0;  // 外部中断0优先级控制位

sfr         SADEN       =           0xb9;  // 串口1从机地址掩码寄存器,用于多机通信
sfr         P_SW2       =           0xba;  // 外设端口切换寄存器2,控制部分外设的IO口映射
sfr         ADC_CONTR   =           0xbc;  // ADC控制寄存器,配置ADC工作模式和启动转换
sfr         ADC_RES     =           0xbd;  // ADC转换结果高8位寄存器
sfr         ADC_RESL    =           0xbe;  // ADC转换结果低2位寄存器

sfr         P4          =           0xc0;  // 定义P4端口寄存器,地址为0xc0
sbit        P40         =           P4^0;  // 定义P4.0引脚
sbit        P41         =           P4^1;  // 定义P4.1引脚
sbit        P42         =           P4^2;  // 定义P4.2引脚
sbit        P43         =           P4^3;  // 定义P4.3引脚
sbit        P44         =           P4^4;  // 定义P4.4引脚
sbit        P45         =           P4^5;  // 定义P4.5引脚(通常用作外部中断2)
sbit        P46         =           P4^6;  // 定义P4.6引脚(通常用作外部中断3)
sbit        P47         =           P4^7;  // 定义P4.7引脚

sfr         WDT_CONTR   =           0xc1;  // 看门狗定时器控制寄存器

sfr         IAP_DATA    =           0xc2;  // ISP/IAP数据寄存器,用于Flash数据读写
sfr         IAP_ADDRH   =           0xc3;  // ISP/IAP地址高8位寄存器
sfr         IAP_ADDRL   =           0xc4;  // ISP/IAP地址低8位寄存器
sfr         IAP_CMD     =           0xc5;  // ISP/IAP命令寄存器
sfr         IAP_TRIG    =           0xc6;  // ISP/IAP触发寄存器,写入特定序列触发命令
sfr         IAP_CONTR   =           0xc7;  // ISP/IAP控制寄存器

sfr         P5          =           0xc8;  // 定义P5端口寄存器,地址为0xc8
sbit        P50         =           P5^0;  // 定义P5.0引脚(部分型号用作XTAL2/外部晶振输出)
sbit        P51         =           P5^1;  // 定义P5.1引脚(部分型号用作XTAL1/外部晶振输入)
sbit        P52         =           P5^2;  // 定义P5.2引脚(部分型号用作RST/复位输入)
sbit        P53         =           P5^3;  // 定义P5.3引脚(部分型号用作ALE/PROG/地址锁存使能)
sbit        P54         =           P5^4;  // 定义P5.4引脚(部分型号用作PSEN/外部程序存储器读选通)
sbit        P55         =           P5^5;  // 定义P5.5引脚(部分型号用作EA/VPP/外部程序存储器选择)
sbit        P56         =           P5^6;  // 定义P5.6引脚(部分型号用作ADC10/第10通道ADC输入)
sbit        P57         =           P5^7;  // 定义P5.7引脚(部分型号用作ADC11/第11通道ADC输入)

sfr         P5M1        =           0xc9;  // P5端口模式寄存器1,配置P5口各引脚工作模式
sfr         P5M0        =           0xca;  // P5端口模式寄存器0,与P5M1共同决定P5口引脚模式

sfr         P6M1        =           0xcb;  // P6端口模式寄存器1,配置P6口各引脚工作模式
sfr         P6M0        =           0xcc;  // P6端口模式寄存器0,与P6M1共同决定P6口引脚模式

sfr         SPSTAT      =           0xcd;  // SPI状态寄存器,指示SPI通信状态
sfr         SPCTL       =           0xce;  // SPI控制寄存器,配置SPI工作模式
sfr         SPDAT       =           0xcf;  // SPI数据寄存器,存放SPI发送/接收的数据
sfr         PSW         =           0xd0;  // 程序状态字寄存器,保存CPU状态信息
sbit        CY          =           PSW^7;  // 进位标志位,用于算术运算进位/借位
sbit        AC          =           PSW^6;  // 辅助进位标志位,用于BCD码运算
sbit        F0          =           PSW^5;  // 用户标志位0,可由用户自定义使用
sbit        RS1         =           PSW^4;  // 寄存器组选择位1
sbit        RS0         =           PSW^3;  // 寄存器组选择位0
sbit        OV          =           PSW^2;  // 溢出标志位,用于带符号数运算
sbit        F1          =           PSW^1;  // 用户标志位1,可由用户自定义使用
sbit        P           =           PSW^0;  // 奇偶校验标志位,反映累加器A中1的个数奇偶性

sfr         T4T3M       =           0xd1;  // 定时器3/4模式控制寄存器
sfr         T4H         =           0xd2;  // 定时器4高8位寄存器
sfr         T4L         =           0xd3;  // 定时器4低8位寄存器
sfr         T3H         =           0xd4;  // 定时器3高8位寄存器
sfr         T3L         =           0xd5;  // 定时器3低8位寄存器
sfr         T2H         =           0xd6;  // 定时器2高8位寄存器
sfr         T2L         =           0xd7;  // 定时器2低8位寄存器

sfr         USBCLK      =           0xdc;  // USB时钟控制寄存器(重复定义,与PLLCR地址冲突)
sfr         PLLCR       =           0xdc;  // 锁相环控制寄存器,配置系统时钟倍频
sfr         ADCCFG      =           0xde;  // ADC配置寄存器

sfr         IP3         =           0xdf;  // 中断优先级控制寄存器3

sfr         ACC         =           0xe0;  // 累加器寄存器,8051核心寄存器之一

sfr         P7M1        =           0xe1;  // P7端口模式寄存器1,配置P7口各引脚工作模式
sfr         P7M0        =           0xe2;  // P7端口模式寄存器0,与P7M1共同决定P7口引脚模式

sfr         DPS         =           0xe3;  // 数据指针选择寄存器,选择使用DPTR0还是DPTR1
sfr         DPL1        =           0xe4;  // 数据指针1低位寄存器
sfr         DPH1        =           0xe5;  // 数据指针1高位寄存器

sfr         CMPCR1      =           0xe6;  // 比较器控制寄存器1
sfr         CMPCR2      =           0xe7;  // 比较器控制寄存器2

sfr         P6          =           0xe8;  // 定义P6端口寄存器,地址为0xe8
sbit        P60         =           P6^0;  // 定义P6.0引脚
sbit        P61         =           P6^1;  // 定义P6.1引脚
sbit        P62         =           P6^2;  // 定义P6.2引脚
sbit        P63         =           P6^3;  // 定义P6.3引脚
sbit        P64         =           P6^4;  // 定义P6.4引脚
sbit        P65         =           P6^5;  // 定义P6.5引脚
sbit        P66         =           P6^6;  // 定义P6.6引脚
sbit        P67         =           P6^7;  // 定义P6.7引脚

/* USB控制器相关寄存器 */
sfr         USBDAT      =           0xec;   /* USB数据寄存器 – 用于USB数据的读写操作 */

/* 中断相关寄存器 */
sfr         IP3H        =           0xee;   /* 中断优先级控制寄存器3高8位 – 用于设置高级中断优先级 */
sfr         AUXINTIF    =           0xef;   /* 辅助中断标志寄存器 – 包含各种辅助功能的中断标志位 */

/* 通用寄存器 */
sfr         B           =           0xf0;   /* B寄存器 – 8051架构中的通用寄存器,常用于乘除法运算 */

/* USB控制器相关寄存器 */
sfr         USBCON      =           0xf4;   /* USB控制寄存器 – 配置USB工作模式和状态控制 */

/* 通用寄存器 */
sfr         IAP_TPS     =           0xf5;   /* IAP时间参数寄存器 – 用于设置IAP(在应用编程)操作的时序参数 */

/* I/O端口定义 */
sfr         P7          =           0xf8;   /* 端口7寄存器 – 8位I/O端口,可单独访问每个引脚 */
sbit        P70         =           P7^0;   /* 端口7第0位 – 可单独操作的I/O引脚 */
sbit        P71         =           P7^1;   /* 端口7第1位 – 可单独操作的I/O引脚 */
sbit        P72         =           P7^2;   /* 端口7第2位 – 可单独操作的I/O引脚 */
sbit        P73         =           P7^3;   /* 端口7第3位 – 可单独操作的I/O引脚 */
sbit        P74         =           P7^4;   /* 端口7第4位 – 可单独操作的I/O引脚 */
sbit        P75         =           P7^5;   /* 端口7第5位 – 可单独操作的I/O引脚 */
sbit        P76         =           P7^6;   /* 端口7第6位 – 可单独操作的I/O引脚 */
sbit        P77         =           P7^7;   /* 端口7第7位 – 可单独操作的I/O引脚 */

/**
 * USB地址寄存器 (USB Address Register)
 * 地址: 0xFC
 * 功能: 用于配置USB端点地址和控制USB数据传输的地址相关操作
 * 说明: 通过该寄存器可以设置USB设备的地址,影响USB通信的目标地址
 */
sfr         USBADR      =           0xfc;

/**
 * 复位配置寄存器 (Reset Configuration Register)
 * 地址: 0xFF
 * 功能: 控制和配置单片机的复位源和复位行为
 * 说明: 可以设置哪些事件会触发复位,以及复位后的系统状态
 */
sfr         RSTCFG      =           0xff;

//如下特殊功能寄存器位于扩展RAM区域
//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写

/
//FF00H-FFFFH
/

/
//FE00H-FEFFH
/

/* 时钟源选择寄存器 */
#define     CLKSEL                  (*(unsigned char volatile xdata *)0xfe00)
/* 功能:选择系统主时钟源及配置相关时钟输出
 * 位定义:
 *   BIT7-BIT6: 主时钟源选择 (00=内部高精度IRC, 01=外部晶体, 10=32KHz振荡器, 11=保留)
 *   BIT5: 时钟输出使能位
 *   BIT4-BIT0: 时钟分频系数设置
 */

/* 时钟分频寄存器 */
#define     CLKDIV                  (*(unsigned char volatile xdata *)0xfe01)
/* 功能:设置系统时钟分频系数
 * 取值范围:0-255
 * 系统时钟 = 时钟源频率 / (CLKDIV + 1)
 */

/* 内部高精度RC振荡器控制寄存器 */
#define     HIRCCR                  (*(unsigned char volatile xdata *)0xfe02)
/* 功能:控制内部高精度RC振荡器(通常为24-33MHz)
 * 位定义:
 *   BIT7: HIRC使能位 (1=使能, 0=禁用)
 *   BIT6: HIRC就绪标志位 (1=就绪, 0=未就绪)
 *   BIT5: HIRC频率微调方向
 *   BIT4-BIT0: HIRC频率微调值
 */

/* 外部晶振控制寄存器 */
#define     XOSCCR                  (*(unsigned char volatile xdata *)0xfe03)
/* 功能:控制外部晶振(XTAL)工作
 * 位定义:
 *   BIT7: XOSC使能位 (1=使能, 0=禁用)
 *   BIT6: XOSC就绪标志位 (1=就绪, 0=未就绪)
 *   BIT5: 外部时钟输入模式选择
 *   BIT4-BIT3: 晶振启动增益控制
 *   BIT2-BIT0: 保留
 */

/* 32KHz内部RC振荡器控制寄存器 */
#define     IRC32KCR                (*(unsigned char volatile xdata *)0xfe04)
/* 功能:控制内部32KHz RC振荡器
 * 位定义:
 *   BIT7: IRC32K使能位 (1=使能, 0=禁用)
 *   BIT6: IRC32K就绪标志位 (1=就绪, 0=未就绪)
 *   BIT5-BIT0: IRC32K频率微调值
 */

/* 主时钟输出控制寄存器 */
#define     MCLKOCR                 (*(unsigned char volatile xdata *)0xfe05)
/* 功能:控制主时钟输出(MCLKO)引脚
 * 位定义:
 *   BIT7: MCLKO输出使能位
 *   BIT6-BIT4: 输出时钟源选择
 *   BIT3-BIT0: 输出时钟分频系数
 */

/* 内部RC振荡器数据缓冲区 */
#define     IRCDB                   (*(unsigned char volatile xdata *)0xfe06)
/* 功能:存储内部RC振荡器的校准数据
 * 说明:通常由ISP编程时自动写入,用户一般不需要修改
 */

/* 48MHz内部RC振荡器控制寄存器 */
#define     IRC48MCR                (*(unsigned char volatile xdata *)0xfe07)
/* 功能:控制内部48MHz RC振荡器(用于USB等高速通信)
 * 位定义:
 *   BIT7: IRC48M使能位 (1=使能, 0=禁用)
 *   BIT6: IRC48M就绪标志位 (1=就绪, 0=未就绪)
 *   BIT5: IRC48M频率微调方向
 *   BIT4-BIT0: IRC48M频率微调值
 */

/* 32.768KHz外部晶振控制寄存器 */
#define     X32KCR                  (*(unsigned char volatile xdata *)0xfe08)
/* 功能:控制外部32.768KHz晶振(通常用于RTC)
 * 位定义:
 *   BIT7: X32K使能位 (1=使能, 0=禁用)
 *   BIT6: X32K就绪标志位 (1=就绪, 0=未就绪)
 *   BIT5: X32K低功耗模式
 *   BIT4-BIT0: 保留
 */

/* 高速时钟分频寄存器 */
#define     HSCLKDIV                (*(unsigned char volatile xdata *)0xfe0b)
/* 功能:设置高速外设时钟分频系数
 * 说明:用于USB、SPI等高速外设的时钟分频
 */

/* 端口0上拉电阻控制寄存器 */
#define     P0PU                    (*(unsigned char volatile xdata *)0xfe10)
/* 功能:控制P0端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P0.7上拉控制 (1=使能上拉, 0=禁用上拉)
 *   BIT6: P0.6上拉控制
 *   …
 *   BIT0: P0.0上拉控制
 */

/* 端口1上拉电阻控制寄存器 */
#define     P1PU                    (*(unsigned char volatile xdata *)0xfe11)
/* 功能:控制P1端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P1.7上拉控制
 *   …
 *   BIT0: P1.0上拉控制
 */

/* 端口2上拉电阻控制寄存器 */
#define     P2PU                    (*(unsigned char volatile xdata *)0xfe12)
/* 功能:控制P2端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P2.7上拉控制
 *   …
 *   BIT0: P2.0上拉控制
 */

/* 端口3上拉电阻控制寄存器 */
#define     P3PU                    (*(unsigned char volatile xdata *)0xfe13)
/* 功能:控制P3端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P3.7上拉控制
 *   …
 *   BIT0: P3.0上拉控制
 */

/* 端口4上拉电阻控制寄存器 */
#define     P4PU                    (*(unsigned char volatile xdata *)0xfe14)
/* 功能:控制P4端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P4.7上拉控制
 *   …
 *   BIT0: P4.0上拉控制
 */

/* 端口5上拉电阻控制寄存器 */
#define     P5PU                    (*(unsigned char volatile xdata *)0xfe15)
/* 功能:控制P5端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P5.7上拉控制
 *   …
 *   BIT0: P5.0上拉控制
 */

/* 端口6上拉电阻控制寄存器 */
#define     P6PU                    (*(unsigned char volatile xdata *)0xfe16)
/* 功能:控制P6端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P6.7上拉控制
 *   …
 *   BIT0: P6.0上拉控制
 */

/* 端口7上拉电阻控制寄存器 */
#define     P7PU                    (*(unsigned char volatile xdata *)0xfe17)
/* 功能:控制P7端口各引脚的内部上拉电阻
 * 位定义:
 *   BIT7: P7.7上拉控制
 *   …
 *   BIT0: P7.0上拉控制
 */

/* 使用说明:
 * 1. 当引脚配置为输入模式时,启用上拉可防止引脚浮空
 * 2. 对于推挽输出模式,上拉设置无效
 * 3. 外部已连接上拉电阻的情况下,可禁用内部上拉避免冲突
 * 4. 低功耗应用中,未使用的引脚建议禁用上拉以降低功耗
 */

/* 端口0开漏输出控制寄存器 */
#define     P0NCS                   (*(unsigned char volatile xdata *)0xfe18)
/* 功能:控制P0端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P0.7开漏控制 (1=开漏输出, 0=推挽/准双向)
 *   BIT6: P0.6开漏控制
 *   …
 *   BIT0: P0.0开漏控制
 * 说明:开漏输出模式下,引脚只能输出低电平或高阻态,需外部上拉电阻
 */

/* 端口1开漏输出控制寄存器 */
#define     P1NCS                   (*(unsigned char volatile xdata *)0xfe19)
/* 功能:控制P1端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P1.7开漏控制
 *   …
 *   BIT0: P1.0开漏控制
 */

/* 端口2开漏输出控制寄存器 */
#define     P2NCS                   (*(unsigned char volatile xdata *)0xfe1a)
/* 功能:控制P2端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P2.7开漏控制
 *   …
 *   BIT0: P2.0开漏控制
 */

/* 端口3开漏输出控制寄存器 */
#define     P3NCS                   (*(unsigned char volatile xdata *)0xfe1b)
/* 功能:控制P3端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P3.7开漏控制
 *   …
 *   BIT0: P3.0开漏控制
 */

/* 端口4开漏输出控制寄存器 */
#define     P4NCS                   (*(unsigned char volatile xdata *)0xfe1c)
/* 功能:控制P4端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P4.7开漏控制
 *   …
 *   BIT0: P4.0开漏控制
 */

/* 端口5开漏输出控制寄存器 */
#define     P5NCS                   (*(unsigned char volatile xdata *)0xfe1d)
/* 功能:控制P5端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P5.7开漏控制
 *   …
 *   BIT0: P5.0开漏控制
 */

/* 端口6开漏输出控制寄存器 */
#define     P6NCS                   (*(unsigned char volatile xdata *)0xfe1e)
/* 功能:控制P6端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P6.7开漏控制
 *   …
 *   BIT0: P6.0开漏控制
 */

/* 端口7开漏输出控制寄存器 */
#define     P7NCS                   (*(unsigned char volatile xdata *)0xfe1f)
/* 功能:控制P7端口各引脚的开漏输出模式
 * 位定义:
 *   BIT7: P7.7开漏控制
 *   …
 *   BIT0: P7.0开漏控制
 */

/* 使用说明:
 * 1. 开漏输出模式常用于I2C、SMBus等需要线与功能的总线接口
 * 2. 配置为开漏模式后,需外部上拉电阻才能实现高电平输出
 * 3. 开漏输出高阻态时,引脚电平由外部电路决定
 * 4. 需配合端口模式寄存器(PnM1/PnM0)共同配置I/O模式
 */

/* 端口0输出速度控制寄存器 */
#define     P0SR                    (*(unsigned char volatile xdata *)0xfe20)
/* 功能:控制P0端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P0.7输出速度控制 (00=低速, 01=中速, 10=高速, 11=超高速)
 *   BIT5-BIT4: P0.6输出速度控制
 *   …
 *   BIT1-BIT0: P0.0输出速度控制
 * 说明:较高的输出速度可提高信号上升/下降沿速率,但会增加EMI和功耗
 */

/* 端口1输出速度控制寄存器 */
#define     P1SR                    (*(unsigned char volatile xdata *)0xfe21)
/* 功能:控制P1端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P1.7输出速度控制
 *   …
 *   BIT1-BIT0: P1.0输出速度控制
 */

/* 端口2输出速度控制寄存器 */
#define     P2SR                    (*(unsigned char volatile xdata *)0xfe22)
/* 功能:控制P2端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P2.7输出速度控制
 *   …
 *   BIT1-BIT0: P2.0输出速度控制
 */

/* 端口3输出速度控制寄存器 */
#define     P3SR                    (*(unsigned char volatile xdata *)0xfe23)
/* 功能:控制P3端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P3.7输出速度控制
 *   …
 *   BIT1-BIT0: P3.0输出速度控制
 */

/* 端口4输出速度控制寄存器 */
#define     P4SR                    (*(unsigned char volatile xdata *)0xfe24)
/* 功能:控制P4端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P4.7输出速度控制
 *   …
 *   BIT1-BIT0: P4.0输出速度控制
 */

/* 端口5输出速度控制寄存器 */
#define     P5SR                    (*(unsigned char volatile xdata *)0xfe25)
/* 功能:控制P5端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P5.7输出速度控制
 *   …
 *   BIT1-BIT0: P5.0输出速度控制
 */

/* 端口6输出速度控制寄存器 */
#define     P6SR                    (*(unsigned char volatile xdata *)0xfe26)
/* 功能:控制P6端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P6.7输出速度控制
 *   …
 *   BIT1-BIT0: P6.0输出速度控制
 */

/* 端口7输出速度控制寄存器 */
#define     P7SR                    (*(unsigned char volatile xdata *)0xfe27)
/* 功能:控制P7端口各引脚的输出驱动速度
 * 位定义:
 *   BIT7-BIT6: P7.7输出速度控制
 *   …
 *   BIT1-BIT0: P7.0输出速度控制
 */

/* 使用说明:
 * 1. 高速模式适用于高频信号传输,但可能增加电磁干扰
 * 2. 低速模式可降低功耗和EMI,适合低频或对噪声敏感的应用
 * 3. 每个引脚可独立配置输出速度,以优化系统性能
 * 4. 对于容性负载或长线驱动,建议提高输出速度以保证信号质量
 */

/* 端口0驱动能力控制寄存器 */
#define     P0DR                    (*(unsigned char volatile xdata *)0xfe28)
/* 功能:控制P0端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P0.7驱动能力控制 (1=强驱动, 0=标准驱动)
 *   BIT6: P0.6驱动能力控制
 *   …
 *   BIT0: P0.0驱动能力控制
 * 说明:强驱动模式可提供更大的输出电流,适用于驱动LED等负载
 */

/* 端口1驱动能力控制寄存器 */
#define     P1DR                    (*(unsigned char volatile xdata *)0xfe29)
/* 功能:控制P1端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P1.7驱动能力控制
 *   …
 *   BIT0: P1.0驱动能力控制
 */

/* 端口2驱动能力控制寄存器 */
#define     P2DR                    (*(unsigned char volatile xdata *)0xfe2a)
/* 功能:控制P2端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P2.7驱动能力控制
 *   …
 *   BIT0: P2.0驱动能力控制
 */

/* 端口3驱动能力控制寄存器 */
#define     P3DR                    (*(unsigned char volatile xdata *)0xfe2b)
/* 功能:控制P3端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P3.7驱动能力控制
 *   …
 *   BIT0: P3.0驱动能力控制
 */

/* 端口4驱动能力控制寄存器 */
#define     P4DR                    (*(unsigned char volatile xdata *)0xfe2c)
/* 功能:控制P4端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P4.7驱动能力控制
 *   …
 *   BIT0: P4.0驱动能力控制
 */

/* 端口5驱动能力控制寄存器 */
#define     P5DR                    (*(unsigned char volatile xdata *)0xfe2d)
/* 功能:控制P5端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P5.7驱动能力控制
 *   …
 *   BIT0: P5.0驱动能力控制
 */

/* 端口6驱动能力控制寄存器 */
#define     P6DR                    (*(unsigned char volatile xdata *)0xfe2e)
/* 功能:控制P6端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P6.7驱动能力控制
 *   …
 *   BIT0: P6.0驱动能力控制
 */

/* 端口7驱动能力控制寄存器 */
#define     P7DR                    (*(unsigned char volatile xdata *)0xfe2f)
/* 功能:控制P7端口各引脚的输出驱动电流能力
 * 位定义:
 *   BIT7: P7.7驱动能力控制
 *   …
 *   BIT0: P7.0驱动能力控制
 */

/* 使用说明:
 * 1. 强驱动模式可提供更大的拉/灌电流能力(典型值约20mA)
 * 2. 标准驱动模式适合常规数字信号传输(典型值约8mA)
 * 3. 所有引脚默认处于标准驱动模式
 * 4. 过多使用强驱动模式可能增加系统功耗和电磁干扰
 * 5. 驱动LED等大功率负载时,建议使用外部驱动电路
 */

/* 端口0中断使能控制寄存器 */
#define     P0IE                    (*(unsigned char volatile xdata *)0xfe30)
/* 功能:控制P0端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P0.7中断使能 (1=使能, 0=禁用)
 *   BIT6: P0.6中断使能
 *   …
 *   BIT0: P0.0中断使能
 * 说明:配合PIOIF寄存器使用,需设置相应的中断触发方式
 */

/* 端口1中断使能控制寄存器 */
#define     P1IE                    (*(unsigned char volatile xdata *)0xfe31)
/* 功能:控制P1端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P1.7中断使能
 *   …
 *   BIT0: P1.0中断使能
 */

/* 端口2中断使能控制寄存器 */
#define     P2IE                    (*(unsigned char volatile xdata *)0xfe32)
/* 功能:控制P2端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P2.7中断使能
 *   …
 *   BIT0: P2.0中断使能
 */

/* 端口3中断使能控制寄存器 */
#define     P3IE                    (*(unsigned char volatile xdata *)0xfe33)
/* 功能:控制P3端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P3.7中断使能
 *   …
 *   BIT0: P3.0中断使能
 */

/* 端口4中断使能控制寄存器 */
#define     P4IE                    (*(unsigned char volatile xdata *)0xfe34)
/* 功能:控制P4端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P4.7中断使能
 *   …
 *   BIT0: P4.0中断使能
 */

/* 端口5中断使能控制寄存器 */
#define     P5IE                    (*(unsigned char volatile xdata *)0xfe35)
/* 功能:控制P5端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P5.7中断使能
 *   …
 *   BIT0: P5.0中断使能
 */

/* 端口6中断使能控制寄存器 */
#define     P6IE                    (*(unsigned char volatile xdata *)0xfe36)
/* 功能:控制P6端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P6.7中断使能
 *   …
 *   BIT0: P6.0中断使能
 */

/* 端口7中断使能控制寄存器 */
#define     P7IE                    (*(unsigned char volatile xdata *)0xfe37)
/* 功能:控制P7端口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P7.7中断使能
 *   …
 *   BIT0: P7.0中断使能
 */

/* 使用说明:
 * 1. 需配合PIOCR寄存器设置中断触发方式(上升沿/下降沿/双边沿/低电平)
 * 2. 中断标志位位于PIOIF寄存器中,中断处理后需手动清除
 * 3. 所有引脚默认禁用中断
 * 4. 外部中断优先级由PIPO和PIPH寄存器共同控制
 * 5. 低电平触发的中断需在中断处理函数中确保引脚电平恢复高电平
 */

/* LCD接口配置寄存器 */
#define     LCMIFCFG                (*(unsigned char volatile xdata *)0xfe50)
/* 功能:配置LCD接口的基本工作模式和参数
 * 位定义:
 *   BIT7-BIT6: 接口类型选择 (00=8080并行, 01=SPI, 10=I2C, 11=保留)
 *   BIT5: 数据传输方向控制 (1=双向, 0=单向)
 *   BIT4: 自动刷新使能
 *   BIT3-BIT2: 数据宽度设置 (00=8位, 01=16位, 10=9位, 11=保留)
 *   BIT1: 帧同步信号极性
 *   BIT0: 时钟信号极性
 */

/* LCD接口配置寄存器2 */
#define     LCMIFCFG2               (*(unsigned char volatile xdata *)0xfe51)
/* 功能:配置LCD接口的高级参数
 * 位定义:
 *   BIT7: 硬件流控制使能
 *   BIT6: 双缓冲模式使能
 *   BIT5: 自动地址递增模式
 *   BIT4: 数据端对齐方式
 *   BIT3: 帧同步信号使能
 *   BIT2: 行同步信号极性
 *   BIT1: 像素时钟分频系数选择
 *   BIT0: 保留
 */

/* LCD接口控制寄存器 */
#define     LCMIFCR                 (*(unsigned char volatile xdata *)0xfe52)
/* 功能:控制LCD接口的操作和状态
 * 位定义:
 *   BIT7: 接口使能位 (1=使能, 0=禁用)
 *   BIT6: 开始数据传输
 *   BIT5: 复位接口
 *   BIT4: 暂停传输
 *   BIT3: 清空中断标志
 *   BIT2: DMA传输使能
 *   BIT1: 自动刷新开始
 *   BIT0: 自动刷新停止
 */

/* LCD接口状态寄存器 */
#define     LCMIFSTA                (*(unsigned char volatile xdata *)0xfe53)
/* 功能:反映LCD接口当前的工作状态
 * 位定义:
 *   BIT7: 接口忙标志 (1=忙, 0=空闲)
 *   BIT6: 传输完成标志
 *   BIT5: 数据就绪标志
 *   BIT4: FIFO溢出标志
 *   BIT3: FIFO欠载标志
 *   BIT2: 帧错误标志
 *   BIT1: 行错误标志
 *   BIT0: 奇偶校验错误标志
 */

/* LCD接口数据寄存器低字节 */
#define     LCMIFDATL               (*(unsigned char volatile xdata *)0xfe54)
/* 功能:存储发送到LCD的数据的低8位
 * 说明:
 *   – 当数据宽度为8位时,直接存储数据
 *   – 当数据宽度为16位时,存储低字节数据
 *   – 写操作:向LCD发送数据
 *   – 读操作:从LCD接收数据
 */

/* LCD接口数据寄存器高字节 */
#define     LCMIFDATH               (*(unsigned char volatile xdata *)0xfe55)
/* 功能:存储发送到LCD的数据的高8位
 * 说明:
 *   – 仅在16位数据宽度模式下有效
 *   – 写操作:向LCD发送数据
 *   – 读操作:从LCD接收数据
 */

/* 使用说明:
 * 1. 使用LCD接口前需先配置LCMIFCFG和LCMIFCFG2寄存器
 * 2. 使能接口后通过LCMIFCR控制数据传输
 * 3. 读取LCMIFSTA可获取接口当前状态
 * 4. 数据传输通过LCMIFDATL和LCMIFDATH寄存器进行
 * 5. 不同LCD控制器可能需要不同的时序和通信协议配置
 */

/* RTC控制寄存器 */
#define     RTCCR                   (*(unsigned char volatile xdata *)0xfe60)
/* 功能:控制RTC的工作模式和时钟源
 * 位定义:
 *   BIT7: RTC使能位 (1=使能RTC, 0=禁用)
 *   BIT6: 闹钟中断使能
 *   BIT5: 秒中断使能
 *   BIT4: 亚秒中断使能
 *   BIT3: 时钟源选择 (0=内部32KHz RC, 1=外部32.768KHz晶振)
 *   BIT2: 夏令时使能
 *   BIT1: RTC复位
 *   BIT0: 保留
 */

/* RTC配置寄存器 */
#define     RTCCFG                  (*(unsigned char volatile xdata *)0xfe61)
/* 功能:配置RTC的工作参数
 * 位定义:
 *   BIT7-BIT6: 时间格式选择 (00=24小时制, 01=12小时制AM, 10=12小时制PM)
 *   BIT5: 日期格式选择 (0=公历, 1=农历)
 *   BIT4: 闹钟匹配模式 (0=精确匹配, 1=忽略秒匹配)
 *   BIT3-BIT0: 亚秒分频系数 (0-15, 对应1/128s ~ 1/8192s)
 */

/* RTC中断使能寄存器 */
#define     RTCIEN                  (*(unsigned char volatile xdata *)0xfe62)
/* 功能:使能RTC相关中断
 * 位定义:
 *   BIT7: 保留
 *   BIT6: 闹钟中断使能
 *   BIT5: 秒中断使能
 *   BIT4: 亚秒中断使能
 *   BIT3-BIT0: 保留
 */

/* RTC中断标志寄存器 */
#define     RTCIF                   (*(unsigned char volatile xdata *)0xfe63)
/* 功能:记录RTC中断事件
 * 位定义:
 *   BIT7: 保留
 *   BIT6: 闹钟中断标志 (置1时触发中断,需软件清零)
 *   BIT5: 秒中断标志
 *   BIT4: 亚秒中断标志
 *   BIT3-BIT0: 保留
 */

/* 闹钟小时寄存器 (BCD码) */
#define     ALAHOUR                 (*(unsigned char volatile xdata *)0xfe64)
/* 功能:设置闹钟小时值 (00-23或01-12,取决于RTCCFG设置) */

/* 闹钟分钟寄存器 (BCD码) */
#define     ALAMIN                  (*(unsigned char volatile xdata *)0xfe65)
/* 功能:设置闹钟分钟值 (00-59) */

/* 闹钟秒寄存器 (BCD码) */
#define     ALASEC                  (*(unsigned char volatile xdata *)0xfe66)
/* 功能:设置闹钟秒值 (00-59) */

/* 闹钟亚秒寄存器 (BCD码) */
#define     ALASSEC                 (*(unsigned char volatile xdata *)0xfe67)
/* 功能:设置闹钟亚秒值 (00-99,取决于亚秒分频系数) */

/* 初始化年份寄存器 (BCD码,2000-2099对应00-99) */
#define     INIYEAR                 (*(unsigned char volatile xdata *)0xfe68)
/* 功能:设置RTC初始年份值 */

/* 初始化月份寄存器 (BCD码,01-12) */
#define     INIMONTH                (*(unsigned char volatile xdata *)0xfe69)
/* 功能:设置RTC初始月份值 */

/* 初始化日期寄存器 (BCD码,01-31) */
#define     INIDAY                  (*(unsigned char volatile xdata *)0xfe6a)
/* 功能:设置RTC初始日期值 */

/* 初始化小时寄存器 (BCD码,00-23或01-12) */
#define     INIHOUR                 (*(unsigned char volatile xdata *)0xfe6b)
/* 功能:设置RTC初始小时值 */

/* 初始化分钟寄存器 (BCD码,00-59) */
#define     INIMIN                  (*(unsigned char volatile xdata *)0xfe6c)
/* 功能:设置RTC初始分钟值 */

/* 初始化秒寄存器 (BCD码,00-59) */
#define     INISEC                  (*(unsigned char volatile xdata *)0xfe6d)
/* 功能:设置RTC初始秒值 */

/* 初始化亚秒寄存器 (BCD码,00-99) */
#define     INISSEC                 (*(unsigned char volatile xdata *)0xfe6e)
/* 功能:设置RTC初始亚秒值 */

/* 当前年份寄存器 (BCD码,2000-2099对应00-99) */
#define     YEAR                    (*(unsigned char volatile xdata *)0xfe70)
/* 功能:读取/设置RTC当前年份值 */

/* 当前月份寄存器 (BCD码,01-12) */
#define     MONTH                   (*(unsigned char volatile xdata *)0xfe71)
/* 功能:读取/设置RTC当前月份值 */

/* 当前日期寄存器 (BCD码,01-31) */
#define     DAY                     (*(unsigned char volatile xdata *)0xfe72)
/* 功能:读取/设置RTC当前日期值 */

/* 当前小时寄存器 (BCD码,00-23或01-12) */
#define     HOUR                    (*(unsigned char volatile xdata *)0xfe73)
/* 功能:读取/设置RTC当前小时值 */

/* 当前分钟寄存器 (BCD码,00-59) */
#define     MIN                     (*(unsigned char volatile xdata *)0xfe74)
/* 功能:读取/设置RTC当前分钟值 */

/* 当前秒寄存器 (BCD码,00-59) */
#define     SEC                     (*(unsigned char volatile xdata *)0xfe75)
/* 功能:读取/设置RTC当前秒值 */

/* 当前亚秒寄存器 (BCD码,00-99) */
#define     SSEC                    (*(unsigned char volatile xdata *)0xfe76)
/* 功能:读取RTC当前亚秒值(仅支持读取,自动递增) */

/* 使用说明:
 * 1. RTC默认使用内部32KHz RC振荡器,如需更高精度需外接32.768KHz晶振并配置RTCCR BIT3=1
 * 2. 所有时间/日期寄存器均为BCD码格式,例如十进制23应存储为0x23而非0x17
 * 3. 初始化RTC时,需先通过INI系列寄存器设置初始值,再使能RTCCR BIT7启动RTC
 * 4. 闹钟中断触发后,需手动清除RTCIF对应标志位
 * 5. 亚秒计数器的分辨率由RTCCFG BIT3-BIT0决定,例如分频系数为15时,亚秒精度为1/8192秒
 * 6. 低功耗模式下建议保持RTC运行,可通过电源控制寄存器配置独立供电
 */

/* I²C配置寄存器 */
#define     I2CCFG                  (*(unsigned char volatile xdata *)0xfe80)
/* 功能:配置I²C总线的基本工作模式和参数
 * 位定义:
 *   BIT7: I²C使能位 (1=使能, 0=禁用)
 *   BIT6: 主模式使能 (1=主模式, 0=从模式)
 *   BIT5: 时钟拉伸使能
 *   BIT4: 中断使能
 *   BIT3-BIT0: I²C时钟分频系数 (系统时钟/[(I2CCFG[3:0]+1)*2])
 */

/* I²C主机控制寄存器 */
#define     I2CMSCR                 (*(unsigned char volatile xdata *)0xfe81)
/* 功能:控制I²C主机的操作
 * 位定义:
 *   BIT7: 发送开始信号
 *   BIT6: 发送停止信号
 *   BIT5: 发送ACK (1=发送ACK, 0=发送NACK)
 *   BIT4: 接收使能
 *   BIT3: 发送使能
 *   BIT2: 清除中断标志
 *   BIT1: 软件复位I²C主机
 *   BIT0: 保留
 */

/* I²C主机状态寄存器 */
#define     I2CMSST                 (*(unsigned char volatile xdata *)0xfe82)
/* 功能:反映I²C主机当前的工作状态
 * 位定义:
 *   BIT7: 总线忙标志 (1=总线忙, 0=总线空闲)
 *   BIT6: 接收数据就绪
 *   BIT5: 发送缓冲区空
 *   BIT4: 仲裁丢失
 *   BIT3: 地址匹配成功
 *   BIT2: 接收到ACK
 *   BIT1: 超时标志
 *   BIT0: 中断标志
 */

/* I²C从机控制寄存器 */
#define     I2CSLCR                 (*(unsigned char volatile xdata *)0xfe83)
/* 功能:控制I²C从机的操作
 * 位定义:
 *   BIT7: 从机使能
 *   BIT6: 通用呼叫地址响应使能
 *   BIT5: 接收使能
 *   BIT4: 发送使能
 *   BIT3: 自动应答使能
 *   BIT2: 清除中断标志
 *   BIT1: 软件复位I²C从机
 *   BIT0: 保留
 */

/* I²C从机状态寄存器 */
#define     I2CSLST                 (*(unsigned char volatile xdata *)0xfe84)
/* 功能:反映I²C从机当前的工作状态
 * 位定义:
 *   BIT7: 从机忙标志
 *   BIT6: 接收数据就绪
 *   BIT5: 发送缓冲区空
 *   BIT4: 通用呼叫地址匹配
 *   BIT3: 自己地址匹配
 *   BIT2: 接收到START信号
 *   BIT1: 接收到STOP信号
 *   BIT0: 中断标志
 */

/* I²C从机地址寄存器 */
#define     I2CSLADR                (*(unsigned char volatile xdata *)0xfe85)
/* 功能:设置I²C从机的设备地址
 * 位定义:
 *   BIT7-BIT1: 从机7位地址
 *   BIT0: 通用呼叫地址使能位 (1=响应通用呼叫, 0=忽略)
 */

/* I²C发送数据寄存器 */
#define     I2CTXD                  (*(unsigned char volatile xdata *)0xfe86)
/* 功能:存储要通过I²C发送的数据
 * 说明:写操作时,数据被存入发送缓冲区
 */

/* I²C接收数据寄存器 */
#define     I2CRXD                  (*(unsigned char volatile xdata *)0xfe87)
/* 功能:存储从I²C总线上接收到的数据
 * 说明:读操作时,从接收缓冲区读取数据
 */

/* I²C主机辅助寄存器 */
#define     I2CMSAUX                (*(unsigned char volatile xdata *)0xfe88)
/* 功能:提供I²C主机的高级控制功能
 * 位定义:
 *   BIT7: 快速模式使能 (1=400kHz, 0=100kHz)
 *   BIT6: 增强型时钟控制
 *   BIT5: 时钟延长超时使能
 *   BIT4: 超时值选择
 *   BIT3-BIT0: 保留
 */

/* 使用说明:
 * 1. 作为主机时,需先配置I2CCFG、I2CMSCR,然后通过I2CTXD发送数据
 * 2. 作为从机时,需先配置I2CSLADR、I2CSLCR,然后监听总线
 * 3. 数据传输完成后,需通过状态寄存器检查传输状态
 * 4. 建议在中断服务程序中处理I²C通信,提高响应速度
 * 5. 多个从设备可通过不同的I2CSLADR值进行区分
 */

/* 特殊外设功能选择寄存器 */
#define     SPFUNC                  (*(unsigned char volatile xdata *)0xfe98)
/* 功能:配置外设引脚复用功能
 * 位定义:
 *   BIT7-BIT6: UART0引脚选择 (00=P3.0/P3.1, 01=P1.6/P1.7, 10=P5.0/P5.1)
 *   BIT5-BIT4: UART1引脚选择 (00=P3.6/P3.7, 01=P1.0/P1.1, 10=P4.3/P4.4)
 *   BIT3:     SPI引脚选择 (0=P1.2~P1.5, 1=P3.0~P3.3)
 *   BIT2:     I2C引脚选择 (0=P1.4/P1.5, 1=P3.2/P3.3)
 *   BIT1-BIT0: CCP/PWM引脚组选择
 */

/* 复位标志寄存器 */
#define     RSTFLAG                 (*(unsigned char volatile xdata *)0xfe99)
/* 功能:指示系统复位原因
 * 位定义:
 *   BIT7: 上电复位标志 (POR)
 *   BIT6: 外部复位标志 (EXTRST)
 *   BIT5: 看门狗复位标志 (WDRST)
 *   BIT4: 软件复位标志 (SWRST)
 *   BIT3: 掉电唤醒复位标志 (PWURST)
 *   BIT2: 低压检测复位标志 (LVRST)
 *   BIT1: 时钟丢失复位标志 (CLKLRST)
 *   BIT0: 保留
 * 说明:复位后需软件清零相应标志位
 */

/* 定时器预分频寄存器 */
#define     TM2PS                   (*(unsigned char volatile xdata *)0xfea2)
/* 功能:配置定时器2的预分频系数
 * 取值范围:0-255,实际分频值为TM2PS+1
 */

#define     TM3PS                   (*(unsigned char volatile xdata *)0xfea3)
/* 功能:配置定时器3的预分频系数
 * 取值范围:0-255,实际分频值为TM3PS+1
 */

#define     TM4PS                   (*(unsigned char volatile xdata *)0xfea4)
/* 功能:配置定时器4的预分频系数
 * 取值范围:0-255,实际分频值为TM4PS+1
 */

/* ADC采样时间控制寄存器 */
#define     ADCTIM                  (*(unsigned char volatile xdata *)0xfea8)
/* 功能:配置ADC采样保持时间
 * 位定义:
 *   BIT7-BIT4: 采样时间调整 (0-15个时钟周期)
 *   BIT3-BIT0: 保持时间调整 (0-15个时钟周期)
 */

/* 定时器3/4引脚控制寄存器 */
#define     T3T4PIN                 (*(unsigned char volatile xdata *)0xfeac)
/* 功能:配置定时器3/4的外部引脚功能
 * 位定义:
 *   BIT7: T3CLK引脚选择 (0=P3.5, 1=P1.7)
 *   BIT6: T3OUT引脚选择 (0=P3.4, 1=P1.6)
 *   BIT5: T4CLK引脚选择 (0=P3.3, 1=P1.5)
 *   BIT4: T4OUT引脚选择 (0=P3.2, 1=P1.4)
 *   BIT3-BIT0: 保留
 */

/* ADC扩展配置寄存器 */
#define     ADCEXCFG                (*(unsigned char volatile xdata *)0xfead)
/* 功能:配置ADC的扩展功能
 * 位定义:
 *   BIT7: ADC连续转换模式使能
 *   BIT6: ADC采样结果右对齐 (0=左对齐, 1=右对齐)
 *   BIT5: ADC内部参考电压使能
 *   BIT4: ADC通道自动扫描使能
 *   BIT3-BIT0: ADC转换时钟分频系数
 */

/* 比较器扩展配置寄存器 */
#define     CMPEXCFG                (*(unsigned char volatile xdata *)0xfeae)
/* 功能:配置比较器的扩展功能
 * 位定义:
 *   BIT7: 比较器输出反相
 *   BIT6: 比较器中断边沿选择 (0=上升沿, 1=下降沿)
 *   BIT5: 比较器迟滞功能使能
 *   BIT4: 比较器高速模式使能
 *   BIT3-BIT0: 比较器正端输入选择
 */

/* PWM1外部触发预分频寄存器 */
#define     PWM1_ETRPS              (*(unsigned char volatile xdata *)0xfeb0)
/* 功能:设置外部触发信号的预分频系数
 * 位定义:BIT7-BIT0:预分频系数(0-255,对应分频值为ETRPS+1)
 * 说明:用于对外部触发信号(如定时器触发)进行分频,降低触发频率 */

/* PWM1输出使能寄存器 */
#define     PWM1_ENO                (*(unsigned char volatile xdata *)0xfeb1)
/* 功能:使能PWM1各通道的输出
 * 位定义:
 *   BIT7: 通道4输出使能 (1=使能, 0=禁用)
 *   BIT6: 通道3输出使能
 *   BIT5: 通道2输出使能
 *   BIT4: 通道1输出使能
 *   BIT3-BIT0: 保留
 */

/* PWM1预分频寄存器 */
#define     PWM1_PS                 (*(unsigned char volatile xdata *)0xfeb2)
/* 功能:设置PWM1计数器的预分频系数
 * 位定义:BIT7-BIT0:预分频系数(0-255,系统时钟/(PS+1)为计数器时钟) */

/* PWM1引脚复用寄存器 */
#define     PWM1_IOAUX              (*(unsigned char volatile xdata *)0xfeb3)
/* 功能:选择PWM1各通道的输出引脚
 * 位定义:
 *   BIT7-BIT6: 通道4引脚选择 (00=P1.0, 01=P3.0, 10=P5.0, 11=保留)
 *   BIT5-BIT4: 通道3引脚选择
 *   BIT3-BIT2: 通道2引脚选择
 *   BIT1-BIT0: 通道1引脚选择
 */

/* PWM2外部触发预分频寄存器 */
#define     PWM2_ETRPS              (*(unsigned char volatile xdata *)0xfeb4)
/* 功能:设置PWM2外部触发信号的预分频系数
 * 位定义:BIT7-BIT0:预分频系数(0-255,实际分频值=ETRPS+1)
 * 说明:用于对外部触发信号(如定时器触发脉冲)进行分频,降低触发频率 */

/* PWM2输出使能寄存器 */
#define     PWM2_ENO                (*(unsigned char volatile xdata *)0xfeb5)
/* 功能:独立使能PWM2各通道的输出信号
 * 位定义:
 *   BIT7: 通道4输出使能 (1=使能PWM2通道4输出, 0=禁用)
 *   BIT6: 通道3输出使能
 *   BIT5: 通道2输出使能
 *   BIT4: 通道1输出使能
 *   BIT3-BIT0: 保留(未使用)
 * 示例:使能通道1和通道2输出 -> PWM2_ENO |= 0x30; */

/* PWM2预分频寄存器 */
#define     PWM2_PS                 (*(unsigned char volatile xdata *)0xfeb6)
/* 功能:设置PWM2计数器的时钟预分频系数
 * 位定义:BIT7-BIT0:预分频系数(0-255)
 * 公式:计数器时钟频率 = 系统时钟 / (PWM2_PS + 1)
 * 例:系统时钟48MHz,PWM2_PS=7,则计数器时钟=48MHz/8=6MHz */

/* PWM2引脚复用寄存器 */
#define     PWM2_IOAUX              (*(unsigned char volatile xdata *)0xfeb7)
/* 功能:选择PWM2各通道的输出引脚(支持多引脚复用)
 * 位定义:
 *   BIT7-BIT6: 通道4引脚选择 (00=P1.1, 01=P3.1, 10=P5.1, 11=保留)
 *   BIT5-BIT4: 通道3引脚选择 (00=P1.3, 01=P3.3, 10=P5.3, 11=保留)
 *   BIT3-BIT2: 通道2引脚选择 (00=P1.2, 01=P3.2, 10=P5.2, 11=保留)
 *   BIT1-BIT0: 通道1引脚选择 (00=P1.0, 01=P3.0, 10=P5.0, 11=保留)
 * 说明:需根据硬件电路选择对应引脚,避免引脚冲突 */

/* PWM1控制寄存器1 */
#define     PWM1_CR1                (*(unsigned char volatile xdata *)0xfec0)
/* 功能:配置PWM1的工作模式和计数方向
 * 位定义:
 *   BIT7: 计数器模式 (0=向上计数, 1=向下计数)
 *   BIT6: 自动重装载预装载使能 (1=使能ARR预装载)
 *   BIT5: 重复计数器使能 (1=使能RCR重复计数)
 *   BIT4: 中心对齐模式使能 (1=中央对齐模式)
 *   BIT3-BIT0: 保留
 */

/* PWM1控制寄存器2 */
#define     PWM1_CR2                (*(unsigned char volatile xdata *)0xfec1)
/* 功能:配置PWM1的输出模式和触发功能
 * 位定义:
 *   BIT7: 主输出使能 (1=使能所有通道输出)
 *   BIT6: 触发输出使能 (1=使能触发信号输出)
 *   BIT5-BIT4: 触发源选择 (00=无触发, 01=外部触发1, 10=外部触发2, 11=保留)
 *   BIT3-BIT0: 保留
 */

/* PWM1同步控制寄存器 */
#define     PWM1_SMCR               (*(unsigned char volatile xdata *)0xfec2)
/* 功能:配置PWM1的同步模式和外部触发
 * 位定义:
 *   BIT7-BIT5: 同步模式选择 (000=无同步, 001=复位模式, 010=门控模式, 011=触发模式)
 *   BIT4-BIT0: 外部触发极性和分频设置
 */

/* PWM1外部触发寄存器 */
#define     PWM1_ETR                (*(unsigned char volatile xdata *)0xfec3)
/* 功能:配置外部触发信号的滤波和极性
 * 位定义:
 *   BIT7-BIT4: 触发信号滤波周期 (0-15个时钟周期)
 *   BIT3: 触发信号极性 (0=上升沿, 1=下降沿)
 *   BIT2-BIT0: 保留
 */

/* PWM1中断使能寄存器 */
#define     PWM1_IER                (*(unsigned char volatile xdata *)0xfec4)
/* 功能:使能PWM1相关中断
 * 位定义:
 *   BIT7: 刹车中断使能
 *   BIT6: 溢出中断使能
 *   BIT5: 触发中断使能
 *   BIT4: 比较中断使能(通道4)
 *   BIT3: 比较中断使能(通道3)
 *   BIT2: 比较中断使能(通道2)
 *   BIT1: 比较中断使能(通道1)
 *   BIT0: 保留
 */

/* PWM1状态寄存器1 */
#define     PWM1_SR1                (*(unsigned char volatile xdata *)0xfec5)
/* 功能:记录PWM1的状态标志
 * 位定义:
 *   BIT7: 刹车事件标志
 *   BIT6: 计数器溢出标志
 *   BIT5: 触发事件标志
 *   BIT4: 通道4比较匹配标志
 *   BIT3: 通道3比较匹配标志
 *   BIT2: 通道2比较匹配标志
 *   BIT1: 通道1比较匹配标志
 *   BIT0: 保留
 * 说明:中断标志需软件清零 */

/* PWM1状态寄存器2 */
#define     PWM1_SR2                (*(unsigned char volatile xdata *)0xfec6)
/* 功能:记录PWM1的辅助状态标志(如触发源状态)
 * 位定义:BIT7-BIT0: 保留或触发源状态指示 */

/* PWM1事件生成寄存器 */
#define     PWM1_EGR                (*(unsigned char volatile xdata *)0xfec7)
/* 功能:手动生成PWM1事件(如软件复位计数器)
 * 位定义:
 *   BIT7: 生成刹车事件
 *   BIT6: 生成计数器溢出事件
 *   BIT5: 生成触发事件
 *   BIT4: 通道4强制比较匹配
 *   BIT3: 通道3强制比较匹配
 *   BIT2: 通道2强制比较匹配
 *   BIT1: 通道1强制比较匹配
 *   BIT0: 保留
 * 说明:写1生效,硬件自动清0 */

/* PWM1捕获/比较模式寄存器1-4(16位寄存器,分高低字节) */
#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)
/* 功能:配置通道1-4的工作模式(PWM模式、输入捕获等)
 * 位定义(以CCMR1为例,对应通道1):
 *   BIT7-BIT4: 输出模式(0011=PWM模式1, 0111=PWM模式2)
 *   BIT3: 输出极性(0=高电平有效, 1=低电平有效)
 *   BIT2-BIT0: 预装载使能(1=使能CCR预装载)
 */

/* PWM1捕获/比较使能寄存器1-2 */
#define     PWM1_CCER1              (*(unsigned char volatile xdata *)0xfecc)
#define     PWM1_CCER2              (*(unsigned char volatile xdata *)0xfecd)
/* 功能:使能通道1-4的输出并配置极性
 * 位定义(以CCER1为例,对应通道1):
 *   BIT3: 通道1输出使能 (1=使能, 0=禁用)
 *   BIT2: 通道1输出极性(0=正常, 1=反相)
 *   BIT1-BIT0: 保留(输入捕获相关位)
 */

/* PWM1计数器(16位,分高低字节) */
#define     PWM1_CNTR               (*(unsigned  int volatile xdata *)0xfece)
#define     PWM1_CNTRH              (*(unsigned char volatile xdata *)0xfece)
#define     PWM1_CNTRL              (*(unsigned char volatile xdata *)0xfecf)
/* 功能:PWM1计数器当前值,向上/向下计数时自动更新 */

/* PWM1预分频器(16位,分高低字节) */
#define     PWM1_PSCR               (*(unsigned  int volatile xdata *)0xfed0)
#define     PWM1_PSCRH              (*(unsigned char volatile xdata *)0xfed0)
#define     PWM1_PSCRL              (*(unsigned char volatile xdata *)0xfed1)
/* 功能:设置计数器时钟分频系数(PSCR+1为实际分频值) */

/* PWM1自动重装载寄存器(16位,分高低字节) */
#define     PWM1_ARR                (*(unsigned  int volatile xdata *)0xfed2)
#define     PWM1_ARRH               (*(unsigned char volatile xdata *)0xfed2)
#define     PWM1_ARRL               (*(unsigned char volatile xdata *)0xfed3)
/* 功能:设置PWM周期(ARR+1为计数器最大值) */

/* PWM1重复计数器寄存器 */
#define     PWM1_RCR                (*(unsigned char volatile xdata *)0xfed4)
/* 功能:设置PWM重复计数次数(0-255,用于多周期同步) */

/* PWM1捕获/比较寄存器1-4(16位,分高低字节,存储占空比数值) */
#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)
/* 功能:设置通道1-4的占空比(CCR值与ARR比较决定输出电平) */

/* PWM1刹车和死区寄存器 */
#define     PWM1_BKR                (*(unsigned char volatile xdata *)0xfedd)
/* 功能:配置刹车功能和死区时间
 * 位定义:
 *   BIT7: 刹车输入使能 (1=使能外部刹车信号)
 *   BIT6-BIT4: 死区时间设置(0-7,对应0.5μs~3.5μs)
 *   BIT3: 紧急停止模式(1=所有通道强制低电平)
 *   BIT2-BIT0: 保留
 */

/* PWM1数字滤波和触发寄存器 */
#define     PWM1_DTR                (*(unsigned char volatile xdata *)0xfede)
/* 功能:配置数字滤波参数和触发延迟
 * 位定义:BIT7-BIT0: 保留或滤波周期设置 */

/* PWM1输出空闲状态寄存器 */
#define     PWM1_OISR               (*(unsigned char volatile xdata *)0xfedf)
/* 功能:设置PWM空闲时的输出状态(如计数器溢出时的电平)
 * 位定义:BIT7-BIT0: 各通道空闲状态(0=低电平, 1=高电平) */

/* PWM2控制寄存器1 */
#define     PWM2_CR1                (*(unsigned char volatile xdata *)0xfee0)
/* 功能:配置PWM2的核心工作模式
 * 位定义:
 *   BIT7: ARPE(自动重装载预装载使能)
 *         1=使能ARR寄存器预装载功能(写ARR后需更新事件生效)
 *         0=直接更新ARR寄存器
 *   BIT6: CMS(中央对齐模式选择)
 *         00=向上计数模式, 01=向下计数模式, 10/11=中央对齐模式(计数器上下计数)
 *   BIT5: DIR(计数方向)
 *         0=向上计数, 1=向下计数(仅非中央对齐模式有效)
 *   BIT4: CEN(计数器使能)
 *         1=使能PWM2计数器开始计数, 0=停止计数
 *   BIT3-BIT0: 保留
 */

/* PWM2控制寄存器2 */
#define     PWM2_CR2                (*(unsigned char volatile xdata *)0xfee1)
/* 功能:配置PWM2的输出与触发功能
 * 位定义:
 *   BIT7: MOE(主输出使能)
 *         1=使能所有通道PWM输出, 0=强制所有通道为空闲状态
 *   BIT6: OSSI(单脉冲模式)
 *         1=计数器在触发后仅产生一个脉冲, 0=连续计数模式
 *   BIT5-BIT4: TS(触发选择)
 *         00=无触发, 01=外部触发1, 10=外部触发2, 11=保留
 *   BIT3: CCPC(互补通道预装载使能)
 *         1=使能互补通道输出的预装载功能
 *   BIT2-BIT0: 保留
 */

/* PWM2同步控制寄存器 */
#define     PWM2_SMCR               (*(unsigned char volatile xdata *)0xfee2)
/* 功能:配置PWM2的从模式与外部触发
 * 位定义:
 *   BIT7-BIT5: SMS(从模式选择)
 *         000=无从模式, 001=复位模式(触发信号复位计数器),
 *         010=门控模式(触发信号控制计数启停), 011=触发模式(触发信号使能计数)
 *   BIT4-BIT0: ETR[4:0](外部触发输入配置)
 *         BIT4=ETP(触发极性, 0=上升沿, 1=下降沿),
 *         BIT3-BIT0=ETF[3:0](触发信号滤波周期, 0-15个时钟周期)
 */

/* PWM2外部触发寄存器 */
#define     PWM2_ETR                (*(unsigned char volatile xdata *)0xfee3)
/* 功能:外部触发信号的滤波与分频控制
 * 位定义:
 *   BIT7-BIT4: ETF[7:4](扩展滤波参数, 具体功能依芯片而定)
 *   BIT3-BIT0: ETD[3:0](外部触发分频系数, 0=不分频, 1=2分频, …, 15=16分频)
 */

/* PWM2中断使能寄存器 */
#define     PWM2_IER                (*(unsigned char volatile xdata *)0xfee4)
/* 功能:使能PWM2相关中断
 * 位定义:
 *   BIT7: BIE(刹车中断使能)
 *   BIT6: UIE(更新中断使能, 计数器溢出或ARR更新时触发)
 *   BIT5: TIE(触发中断使能, 外部触发事件发生时触发)
 *   BIT4: CC4IE(通道4比较中断使能)
 *   BIT3: CC3IE(通道3比较中断使能)
 *   BIT2: CC2IE(通道2比较中断使能)
 *   BIT1: CC1IE(通道1比较中断使能)
 *   BIT0: 保留
 */

/* PWM2状态寄存器1 */
#define     PWM2_SR1                (*(unsigned char volatile xdata *)0xfee5)
/* 功能:记录PWM2的主要状态标志
 * 位定义:
 *   BIT7: BIF(刹车中断标志, 刹车信号有效时置1)
 *   BIT6: UIF(更新中断标志, 计数器溢出或ARR更新时置1)
 *   BIT5: TIF(触发中断标志, 外部触发事件发生时置1)
 *   BIT4: CC4IF(通道4比较匹配标志, 计数器值=CCR4时置1)
 *   BIT3: CC3IF(通道3比较匹配标志)
 *   BIT2: CC2IF(通道2比较匹配标志)
 *   BIT1: CC1IF(通道1比较匹配标志)
 *   BIT0: 保留
 * 说明:中断标志需软件写0清除(部分芯片通过写EGR寄存器清除)
 */

/* PWM2状态寄存器2 */
#define     PWM2_SR2                (*(unsigned char volatile xdata *)0xfee6)
/* 功能:记录PWM2的辅助状态(如触发源状态、死区状态等)
 * 位定义:由芯片硬件定义,通常为只读标志位,具体功能需参考数据手册
 */

/* PWM2事件生成寄存器 */
#define     PWM2_EGR                (*(unsigned char volatile xdata *)0xfee7)
/* 功能:手动生成PWM2控制事件
 * 位定义:
 *   BIT7: BGR(生成刹车事件, 强制所有通道进入刹车状态)
 *   BIT6: UG(生成更新事件, 强制计数器复位并更新ARR/CCR)
 *   BIT5: TRG(生成触发事件, 模拟外部触发信号)
 *   BIT4: CC4G(通道4强制比较匹配, 立即触发比较中断)
 *   BIT3: CC3G(通道3强制比较匹配)
 *   BIT2: CC2G(通道2强制比较匹配)
 *   BIT1: CC1G(通道1强制比较匹配)
 *   BIT0: 保留
 * 说明:写1生效,硬件自动清0
 */

/* PWM2通道1捕获/比较模式寄存器 */
#define     PWM2_CCMR1              (*(unsigned char volatile xdata *)0xfee8)
/* 功能:配置通道1的工作模式(PWM模式、输入捕获、输出比较)
 * 位定义(高4位为OC1M[3:0],低4位为OC1PE/IC1F等):
 *   BIT7-BIT4: OC1M[3:0] – 输出模式选择
 *     0011 = PWM模式1(计数器向上计数时,计数值<CCR1则输出高电平,否则低电平)
 *     0111 = PWM模式2(计数器向上计数时,计数值<CCR1则输出低电平,否则高电平)
 *     其他值 = 输入捕获或输出比较模式(具体见数据手册)
 *   BIT3: OC1PE – 输出比较预装载使能
 *     1=使能CCR1预装载(写CCR1需触发更新事件生效)
 *     0=直接更新CCR1
 *   BIT2-BIT0: IC1F[2:0] – 输入捕获滤波参数(仅输入捕获模式有效)
 */

/* PWM2通道2捕获/比较模式寄存器 */
#define     PWM2_CCMR2              (*(unsigned char volatile xdata *)0xfee9)
/* 功能:配置通道2的工作模式(与通道1逻辑相同)
 * 位定义:BIT7-BIT4=OC2M[3:0](PWM模式选择),BIT3=OC2PE(预装载使能)
 */

/* PWM2通道3捕获/比较模式寄存器 */
#define     PWM2_CCMR3              (*(unsigned char volatile xdata *)0xfeea)
/* 功能:配置通道3的工作模式(与通道1逻辑相同)
 * 位定义:BIT7-BIT4=OC3M[3:0](PWM模式选择),BIT3=OC3PE(预装载使能)
 */

/* PWM2通道4捕获/比较模式寄存器 */
#define     PWM2_CCMR4              (*(unsigned char volatile xdata *)0xfeeb)
/* 功能:配置通道4的工作模式(与通道1逻辑相同)
 * 位定义:BIT7-BIT4=OC4M[3:0](PWM模式选择),BIT3=OC4PE(预装载使能)
 */

/* PWM2通道1-2捕获/比较使能寄存器 */
#define     PWM2_CCER1              (*(unsigned char volatile xdata *)0xfeec)
/* 功能:控制通道1和通道2的输出使能及极性
 * 位定义:
 *   BIT3: CC2E – 通道2输出使能(1=使能PWM输出,0=禁用)
 *   BIT2: CC2P – 通道2输出极性(0=高电平有效,1=低电平有效)
 *   BIT1: CC1E – 通道1输出使能(1=使能PWM输出,0=禁用)
 *   BIT0: CC1P – 通道1输出极性(0=高电平有效,1=低电平有效)
 */

/* PWM2通道3-4捕获/比较使能寄存器 */
#define     PWM2_CCER2              (*(unsigned char volatile xdata *)0xfeed)
/* 功能:控制通道3和通道4的输出使能及极性
 * 位定义:
 *   BIT3: CC4E – 通道4输出使能(1=使能PWM输出,0=禁用)
 *   BIT2: CC4P – 通道4输出极性(0=高电平有效,1=低电平有效)
 *   BIT1: CC3E – 通道3输出使能(1=使能PWM输出,0=禁用)
 *   BIT0: CC3P – 通道3输出极性(0=高电平有效,1=低电平有效)
 */

/* PWM2计数器(16位,可通过高低字节访问) */
#define     PWM2_CNTR               (*(unsigned  int volatile xdata *)0xfeee)
#define     PWM2_CNTRH              (*(unsigned char volatile xdata *)0xfeee)
#define     PWM2_CNTRL              (*(unsigned char volatile xdata *)0xfeef)
/* 功能:
 * – 存储计数器当前值,根据CR1设置的计数模式(向上/向下/中央对齐)自动递增或递减
 * – 中央对齐模式下,计数器从0到ARR递增,再从ARR到0递减,循环往复
 * – 向上计数模式下,计数器从0到ARR递增,达到ARR后产生更新事件(UIF标志置1)
 * 操作建议:
 * – 读取时先读CNTRH再读CNTRL,确保数据一致性
 * – 写入时先写CNTRL再写CNTRH(或直接写入16位值)
 */

/* PWM2预分频寄存器(16位,用于对系统时钟分频生成计数器时钟) */
#define     PWM2_PSCR               (*(unsigned  int volatile xdata *)0xfef0)
/* 功能:
 * – 16位寄存器,用于设置PWM2模块的预分频系数
 * – 分频公式:计数器时钟频率 = 系统时钟频率 / (PSCR值 + 1)
 * – 取值范围:0x0000 ~ 0xFFFF(对应分频系数1~65536)
 * 说明:
 * – 通过分频系统时钟,间接控制PWM波形的周期和频率
 * – 高8位存储于地址0xFEF0(PSCRH),低8位存储于地址0xFEF1(PSCRL)
 */

/* PWM2预分频寄存器高8位 */
#define     PWM2_PSCRH              (*(unsigned char volatile xdata *)0xfef0)
/* 功能:存储预分频值的高8位(BIT15-BIT8) */

/* PWM2预分频寄存器低8位 */
#define     PWM2_PSCRL              (*(unsigned char volatile xdata *)0xfef1)
/* 功能:存储预分频值的低8位(BIT7-BIT0) */

/* PWM2自动重装载寄存器(16位,决定PWM周期) */
#define     PWM2_ARR                (*(unsigned  int volatile xdata *)0xfef2)
/* 功能:
 * – 存储计数器的自动重装载值,决定PWM波形的周期
 * – 当计数器值达到ARR时,计数器归零并重新计数
 * – 周期计算公式:
 *   PWM周期 = (ARR值 + 1) / 计数器时钟频率
 * 说明:
 * – 高8位存储于地址0xFEF2(ARRH),低8位存储于地址0xFEF3(ARRL)
 * – 需配合预分频寄存器(PSCR)共同控制PWM频率
 */

/* PWM2自动重装载寄存器高8位 */
#define     PWM2_ARRH               (*(unsigned char volatile xdata *)0xfef2)
/* 功能:存储自动重装载值的高8位(BIT15-BIT8) */

/* PWM2自动重装载寄存器低8位 */
#define     PWM2_ARRL               (*(unsigned char volatile xdata *)0xfef3)
/* 功能:存储自动重装载值的低8位(BIT7-BIT0) */

/* PWM2重复计数器(8位,控制更新事件频率) */
#define     PWM2_RCR                (*(unsigned char volatile xdata *)0xfef4)
/* 功能:
 * – 设置计数器溢出多少次后才触发更新事件(UIF标志置1)
 * – 重复次数范围:0~255(默认值0,表示每次溢出均触发更新)
 * – 实际触发次数 = RCR值 + 1
 * 应用场景:
 * – 用于需要多周期同步的应用(如电机多步控制、LED呼吸灯分段调节)
 * – 减少更新事件中断频率,降低CPU负担
 */
/* PWM2通道1捕获/比较寄存器(16位,控制通道1的PWM占空比) */
#define     PWM2_CCR1               (*(unsigned  int volatile xdata *)0xfef5)
/* 功能:
 * – 存储通道1的比较值,决定PWM波形的占空比
 * – 当计数器值等于CCR1时,触发相应的输出动作(如电平翻转)
 * – 占空比计算公式:
 *   占空比 = CCR1值 / (ARR值 + 1) * 100%
 * 说明:
 * – 高8位存储于地址0xFEF5(CCR1H),低8位存储于地址0xFEF6(CCR1L)
 * – 需配合自动重装载寄存器(ARR)共同控制PWM波形
 */

/* PWM2通道1捕获/比较寄存器高8位 */
#define     PWM2_CCR1H              (*(unsigned char volatile xdata *)0xfef5)
/* 功能:存储通道1比较值的高8位(BIT15-BIT8) */

/* PWM2通道1捕获/比较寄存器低8位 */
#define     PWM2_CCR1L              (*(unsigned char volatile xdata *)0xfef6)
/* 功能:存储通道1比较值的低8位(BIT7-BIT0) */

/* PWM2通道2捕获/比较寄存器(16位,控制通道2的PWM占空比) */
#define     PWM2_CCR2               (*(unsigned  int volatile xdata *)0xfef7)
/* 功能:与CCR1类似,控制通道2的PWM占空比 */

/* PWM2通道2捕获/比较寄存器高8位 */
#define     PWM2_CCR2H              (*(unsigned char volatile xdata *)0xfef7)
/* 功能:存储通道2比较值的高8位 */

/* PWM2通道2捕获/比较寄存器低8位 */
#define     PWM2_CCR2L              (*(unsigned char volatile xdata *)0xfef8)
/* 功能:存储通道2比较值的低8位 */

/* PWM2通道3捕获/比较寄存器(16位,控制通道3的PWM占空比) */
#define     PWM2_CCR3               (*(unsigned  int volatile xdata *)0xfef9)
/* 功能:与CCR1类似,控制通道3的PWM占空比 */

/* PWM2通道3捕获/比较寄存器高8位 */
#define     PWM2_CCR3H              (*(unsigned char volatile xdata *)0xfef9)
/* 功能:存储通道3比较值的高8位 */

/* PWM2通道3捕获/比较寄存器低8位 */
#define     PWM2_CCR3L              (*(unsigned char volatile xdata *)0xfefa)
/* 功能:存储通道3比较值的低8位 */

/* PWM2通道4捕获/比较寄存器(16位,控制通道4的PWM占空比) */
#define     PWM2_CCR4               (*(unsigned  int volatile xdata *)0xfefb)
/* 功能:与CCR1类似,控制通道4的PWM占空比 */

/* PWM2通道4捕获/比较寄存器高8位 */
#define     PWM2_CCR4H              (*(unsigned char volatile xdata *)0xfefb)
/* 功能:存储通道4比较值的高8位 */

/* PWM2通道4捕获/比较寄存器低8位 */
#define     PWM2_CCR4L              (*(unsigned char volatile xdata *)0xfefc)
/* 功能:存储通道4比较值的低8位 */

/* PWM2刹车寄存器(8位,控制PWM输出的紧急停止功能) */
#define     PWM2_BKR                (*(unsigned char volatile xdata *)0xfefd)
/* 功能:
 * – 实现PWM输出的紧急刹车功能(如故障保护)
 * – 当刹车输入有效时,所有PWM输出被强制为预设的安全状态
 * 关键位定义:
 *   BIT7: MOE(主输出使能)
 *     1=使能所有通道的PWM输出,0=禁止所有输出(强制为空闲状态)
 *   BIT6: OSSI(空闲状态选择)
 *     1=当计数器未使能时,输出强制为空闲状态
 *   BIT5: OSSR(运行模式下的空闲状态选择)
 *     1=当刹车激活时,输出强制为空闲状态
 *   BIT4: BKE(刹车输入使能)
 *     1=使能刹车输入功能,0=禁用刹车功能
 *   BIT3: BKP(刹车输入极性)
 *     0=低电平触发刹车,1=高电平触发刹车
 */

/* PWM2死区时间寄存器(8位,配置互补输出的死区时间) */
#define     PWM2_DTR                (*(unsigned char volatile xdata *)0xfefe)
/* 功能:
 * – 配置互补PWM输出之间的死区时间(防止上下桥臂直通)
 * – 适用于H桥、半桥等功率驱动电路
 * 关键位定义:
 *   BIT7-BIT5: DTG[7:5](死区时间生成器位)
 *     与BIT4-BIT0共同构成死区时间值
 *   BIT4-BIT0: DTG[4:0](死区时间生成器位)
 *     死区时间计算:DT = DTR值 × T_CNT
 *     (T_CNT为计数器时钟周期)
 */

/* PWM2输出状态寄存器(8位,反映当前PWM输出状态) */
#define     PWM2_OISR               (*(unsigned char volatile xdata *)0xfeff)
/* 功能:
 * – 读取当前PWM输出的状态信息(如刹车激活状态、输出使能状态)
 * – 部分位为只读,反映硬件实际状态
 * 关键位定义:
 *   BIT7: BIF(刹车中断标志)
 *     1=刹车事件触发,需软件清零
 *   BIT6: OIS4(通道4输出状态)
 *     0=通道4输出禁用,1=通道4输出使能
 *   BIT5: OIS3(通道3输出状态)
 *     0=通道3输出禁用,1=通道3输出使能
 *   BIT4: OIS2(通道2输出状态)
 *     0=通道2输出禁用,1=通道2输出使能
 *   BIT3: OIS1(通道1输出状态)
 *     0=通道1输出禁用,1=通道1输出使能
 */

/* PWMA外部触发预分频寄存器(8位,配置外部触发信号分频) */
#define     PWMA_ETRPS              (*(unsigned char volatile xdata *)0xfeb0)
/* 功能:
 * – 配置外部触发信号(ETR)的预分频系数
 * – 分频后信号用于同步或触发PWM计数器
 * 关键位定义:
 *   BIT7-BIT4: 保留
 *   BIT3-BIT0: ETRPS[3:0](外部触发预分频系数)
 *     0000: 不分频
 *     0001: 2分频
 *     0010: 4分频
 *     …
 *     1111: 16分频
 */

/* PWMA输出使能寄存器(8位,控制各通道PWM输出使能) */
#define     PWMA_ENO                (*(unsigned char volatile xdata *)0xfeb1)
/* 功能:
 * – 独立控制PWMA各通道的PWM输出使能
 * 关键位定义:
 *   BIT7: ENO7(通道7输出使能)
 *     1=使能通道7输出,0=禁止输出
 *   BIT6: ENO6(通道6输出使能)
 *   …
 *   BIT1: ENO1(通道1输出使能)
 *   BIT0: ENO0(通道0输出使能)
 */

/* PWMA预分频寄存器(8位,配置PWM时钟分频) */
#define     PWMA_PS                 (*(unsigned char volatile xdata *)0xfeb2)
/* 功能:
 * – 配置PWMA模块的主预分频系数
 * – 分频后时钟作为PWM计数器的时钟源
 * 计算公式:
 *   PWM时钟 = 系统时钟 / (PS值 + 1)
 */

/* PWMA I/O辅助控制寄存器(8位,配置PWM引脚附加功能) */
#define     PWMA_IOAUX              (*(unsigned char volatile xdata *)0xfeb3)
/* 功能:
 * – 配置PWM输出引脚的附加功能(如引脚复用、极性反转等)
 * 关键位定义:
 *   BIT7-BIT4: 保留
 *   BIT3: IOAUX3(通道3附加功能控制)
 *     0=正常功能,1=附加功能(依芯片而定)
 *   …
 *   BIT0: IOAUX0(通道0附加功能控制)
 */

/* PWMB外部触发预分频寄存器(8位,配置外部触发信号分频) */
#define     PWMB_ETRPS              (*(unsigned char volatile xdata *)0xfeb4)
/* 功能:与PWMA_ETRPS类似,控制PWMB模块的外部触发信号分频 */

/* PWMB输出使能寄存器(8位,控制各通道PWM输出使能) */
#define     PWMB_ENO                (*(unsigned char volatile xdata *)0xfeb5)
/* 功能:与PWMA_ENO类似,控制PWMB模块各通道的PWM输出使能 */

/* PWMB预分频寄存器(8位,配置PWM时钟分频) */
#define     PWMB_PS                 (*(unsigned char volatile xdata *)0xfeb6)
/* 功能:与PWMA_PS类似,配置PWMB模块的主预分频系数 */

/* PWMB I/O辅助控制寄存器(8位,配置PWMB引脚附加功能) */
#define     PWMB_IOAUX              (*(unsigned char volatile xdata *)0xfeb7)
/* 功能:
 * – 配置PWMB输出引脚的附加功能(如引脚复用、极性反转等)
 * 关键位定义:
 *   BIT7-BIT4: 保留
 *   BIT3: IOAUX3(通道3附加功能控制)
 *     0=正常功能,1=附加功能(依芯片而定)
 *   …
 *   BIT0: IOAUX0(通道0附加功能控制)
 */

/* PWMA控制寄存器1(8位,基本控制功能) */
#define     PWMA_CR1                (*(unsigned char volatile xdata *)0xfec0)
/* 功能:
 * – 配置PWMA的基本工作模式(如计数方向、使能计数器)
 * 关键位定义:
 *   BIT7: CMS[1:0](中央对齐模式选择)
 *     00=边沿对齐模式,01=中央对齐模式1,10=中央对齐模式2,11=中央对齐模式3
 *   BIT6: DIR(计数方向)
 *     0=向上计数,1=向下计数(边沿对齐模式下有效)
 *   BIT5: OPMS(单脉冲模式)
 *     1=单脉冲模式,计数器在触发后运行一个周期
 *   BIT4: ARPE(自动重装载预装载使能)
 *     1=ARR值写入后需触发更新事件生效,0=立即生效
 *   BIT3: CKD(时钟分频因子)
 *     0=不分频,1=2分频,2=4分频
 *   BIT0: CEN(计数器使能)
 *     1=启动计数器,0=停止计数器
 */

/* PWMA控制寄存器2(8位,辅助控制功能) */
#define     PWMA_CR2                (*(unsigned char volatile xdata *)0xfec1)
/* 功能:
 * – 配置PWMA的高级控制功能(如触发输出、主模式选择)
 * 关键位定义:
 *   BIT7: TI1S(触发输入选择)
 *     0=触发输入来自ETR,1=触发输入来自TI1
 *   BIT6-BIT4: MMS(主模式选择)
 *     配置PWM如何作为主定时器触发其他从定时器
 *   BIT3: CCDS(捕获/比较DMA选择)
 *     1=捕获/比较事件触发DMA请求
 */

/* PWMA同步控制寄存器(8位,配置定时器同步模式) */
#define     PWMA_SMCR               (*(unsigned char volatile xdata *)0xfec2)
/* 功能:
 * – 配置PWMA的同步模式(如主/从模式、触发源选择)
 * 关键位定义:
 *   BIT7-BIT4: SMS[3:0](同步模式选择)
 *     0000=冻结模式,0001=外部时钟模式1,…
 *   BIT3-BIT0: TS[3:0](触发源选择)
 *     选择触发输入源(如ETR、TI1、TI2等)
 */

/* PWMA外部触发寄存器(8位,配置外部触发信号) */
#define     PWMA_ETR                (*(unsigned char volatile xdata *)0xfec3)
/* 功能:
 * – 配置外部触发输入信号(ETR)的滤波、极性和分频
 * 关键位定义:
 *   BIT7: ETP(外部触发极性)
 *     0=上升沿触发,1=下降沿触发
 *   BIT6: ECE(外部时钟使能)
 *     1=使能外部时钟模式2
 *   BIT5-BIT4: ETF[1:0](外部触发滤波)
 *     配置滤波采样周期和窗口大小
 */

/* PWMA中断使能寄存器(8位,控制中断使能) */
#define     PWMA_IER                (*(unsigned char volatile xdata *)0xfec4)
/* 功能:
 * – 使能/禁止PWMA各种事件的中断请求
 * 关键位定义:
 *   BIT7: TIE(触发中断使能)
 *     1=使能触发事件中断
 *   BIT6: COMIE(互补输出模式中断使能)
 *   BIT5: CC4IE(通道4捕获/比较中断使能)
 *   …
 *   BIT0: UIER(更新中断使能)
 *     1=使能计数器更新事件中断
 */

/* PWMA状态寄存器1(8位,反映各种事件状态) */
#define     PWMA_SR1                (*(unsigned char volatile xdata *)0xfec5)
/* 功能:
 * – 反映PWMA各种事件的状态标志
 * 关键位定义:
 *   BIT7: TIF(触发中断标志)
 *     1=触发事件发生
 *   BIT6: COMIF(互补输出模式中断标志)
 *   BIT5: CC4IF(通道4捕获/比较中断标志)
 *   …
 *   BIT0: UIF(更新中断标志)
 *     1=计数器更新事件发生
 */

/* PWMA状态寄存器2(8位,反映附加事件状态) */
#define     PWMA_SR2                (*(unsigned char volatile xdata *)0xfec6)
/* 功能:
 * – 反映PWMA附加事件的状态标志
 * 关键位定义:
 *   BIT2: BIF(刹车中断标志)
 *     1=刹车事件发生
 *   BIT1: OIF(溢出中断标志)
 *     1=计数器溢出事件发生
 */

/* PWMA事件生成寄存器(8位,手动触发事件) */
#define     PWMA_EGR                (*(unsigned char volatile xdata *)0xfec7)
/* 功能:
 * – 手动触发PWMA各种事件(用于初始化或强制更新)
 * 关键位定义:
 *   BIT7: TG(触发生成)
 *     1=生成触发事件(软件触发)
 *   BIT6: COMG(互补输出模式生成)
 *   BIT5: CC4G(通道4捕获/比较生成)
 *   …
 *   BIT0: UG(更新生成)
 *     1=强制生成更新事件,重置计数器和预装载寄存器
 */

/* PWMA通道1捕获/比较模式寄存器(8位,配置通道1工作模式) */
#define     PWMA_CCMR1              (*(unsigned char volatile xdata *)0xfec8)
/* 功能:
 * – 配置通道1的捕获/比较模式(如PWM模式、输入捕获模式)
 * 关键位定义:
 *   BIT7: OC1PE(输出比较预装载使能)
 *     1=CCR1值写入后需触发更新事件生效,0=立即生效
 *   BIT6-BIT4: OC1M[2:0](输出比较模式)
 *     011=冻结模式,110=PWM模式1,111=PWM模式2
 *   BIT3: CC1S[1:0](捕获/比较选择)
 *     00=输出模式,01=输入模式(IC1映射到TI1)
 */

/* PWMA通道2捕获/比较模式寄存器(8位,配置通道2工作模式) */
#define     PWMA_CCMR2              (*(unsigned char volatile xdata *)0xfec9)
/* 功能:与CCMR1类似,配置通道2的捕获/比较模式 */

/* PWMA通道3捕获/比较模式寄存器(8位,配置通道3工作模式) */
#define     PWMA_CCMR3              (*(unsigned char volatile xdata *)0xfeca)
/* 功能:与CCMR1类似,配置通道3的捕获/比较模式 */

/* PWMA通道4捕获/比较模式寄存器(8位,配置通道4工作模式) */
#define     PWMA_CCMR4              (*(unsigned char volatile xdata *)0xfecb)
/* 功能:与CCMR1类似,配置通道4的捕获/比较模式 */

/* PWMA通道1-4捕获/比较使能寄存器1(8位,控制通道1-4输出使能与极性) */
#define     PWMA_CCER1              (*(unsigned char volatile xdata *)0xfecc)
/* 功能:
 * – 控制通道1-4的输出使能、输出极性及捕获触发边沿
 * 关键位定义:
 *   BIT3: CC1P(通道1输出极性)
 *     0=高电平有效,1=低电平有效
 *   BIT2: CC1NP(通道1互补输出极性)
 *   BIT1: CC1E(通道1输出使能)
 *     1=使能输出,0=禁止输出
 *   BIT0: CC1NE(通道1互补输出使能)
 */

/* PWMA通道5-8捕获/比较使能寄存器2(8位,控制通道5-8输出使能与极性) */
#define     PWMA_CCER2              (*(unsigned char volatile xdata *)0xfecd)
/* 功能:与CCER1类似,控制通道5-8的输出使能与极性 */

/* PWMA计数器(16位,存储当前计数值) */
#define     PWMA_CNTR               (*(unsigned  int volatile xdata *)0xfece)
/* 功能:
 * – 存储PWMA当前的计数值,随计数器时钟递增/递减
 * 说明:
 * – 高8位存储于地址0xFECE(CNTRH),低8位存储于地址0xFECF(CNTRL)
 * – 读取时需先读高字节再读低字节,确保数据一致性
 */

/* PWMA计数器高8位 */
#define     PWMA_CNTRH              (*(unsigned char volatile xdata *)0xfece)
/* 功能:存储计数器值的高8位(BIT15-BIT8) */

/* PWMA计数器低8位 */
#define     PWMA_CNTRL              (*(unsigned char volatile xdata *)0xfecf)
/* 功能:存储计数器值的低8位(BIT7-BIT0) */

/* PWMA预分频寄存器(16位,配置计数器时钟分频) */
#define     PWMA_PSCR               (*(unsigned  int volatile xdata *)0xfed0)
/* 功能:
 * – 配置计数器时钟的预分频系数
 * – 分频后时钟作为计数器的计数时钟
 * 计算公式:
 *   计数器时钟 = 系统时钟 / (PSCR值 + 1)
 * 说明:
 * – 高8位存储于地址0xFED0(PSCRH),低8位存储于地址0xFED1(PSCRL)
 */

/* PWMA预分频寄存器高8位 */
#define     PWMA_PSCRH              (*(unsigned char volatile xdata *)0xfed0)
/* 功能:存储预分频值的高8位(BIT15-BIT8) */

/* PWMA预分频寄存器低8位 */
#define     PWMA_PSCRL              (*(unsigned char volatile xdata *)0xfed1)
/* 功能:存储预分频值的低8位(BIT7-BIT0) */

/* PWMA自动重装载寄存器(16位,决定PWM周期) */
#define     PWMA_ARR                (*(unsigned  int volatile xdata *)0xfed2)
/* 功能:
 * – 存储计数器的自动重装载值,决定PWM波形的周期
 * – 当计数器值达到ARR时,计数器归零并重新计数
 * 计算公式:
 *   PWM周期 = (ARR值 + 1) / 计数器时钟频率
 * 说明:
 * – 高8位存储于地址0xFED2(ARRH),低8位存储于地址0xFED3(ARRL)
 * – 若ARPE=1(CR1寄存器),修改ARR后需触发更新事件才生效
 */

/* PWMA自动重装载寄存器高8位 */
#define     PWMA_ARRH               (*(unsigned char volatile xdata *)0xfed2)
/* 功能:存储自动重装载值的高8位(BIT15-BIT8) */

/* PWMA自动重装载寄存器低8位 */
#define     PWMA_ARRL               (*(unsigned char volatile xdata *)0xfed3)
/* 功能:存储自动重装载值的低8位(BIT7-BIT0) */

/* PWMA重复计数器(8位,控制更新事件频率) */
#define     PWMA_RCR                (*(unsigned char volatile xdata *)0xfed4)
/* 功能:
 * – 设置计数器溢出多少次后才触发更新事件(UIF标志置1)
 * – 实际触发次数 = RCR值 + 1
 * 应用场景:
 * – 减少更新事件中断频率,降低CPU负担
 * – 实现多周期同步控制(如多相电机驱动)
 */

/* PWMA通道1捕获/比较寄存器(16位,控制通道1的PWM占空比) */
#define     PWMA_CCR1               (*(unsigned  int volatile xdata *)0xfed5)
/* 功能:
 * – 存储通道1的比较值,决定PWM波形的占空比
 * – 当计数器值等于CCR1时,触发相应的输出动作
 * 计算公式:
 *   占空比 = CCR1值 / (ARR值 + 1) * 100%
 * 说明:
 * – 高8位存储于地址0xFED5(CCR1H),低8位存储于地址0xFED6(CCR1L)
 * – 若OC1PE=1(CCMR1寄存器),修改CCR1后需触发更新事件才生效
 */

/* PWMA通道1捕获/比较寄存器高8位 */
#define     PWMA_CCR1H              (*(unsigned char volatile xdata *)0xfed5)
/* 功能:存储通道1比较值的高8位(BIT15-BIT8) */

/* PWMA通道1捕获/比较寄存器低8位 */
#define     PWMA_CCR1L              (*(unsigned char volatile xdata *)0xfed6)
/* 功能:存储通道1比较值的低8位(BIT7-BIT0) */

/* PWMA通道2捕获/比较寄存器(16位,控制通道2的PWM占空比) */
#define     PWMA_CCR2               (*(unsigned  int volatile xdata *)0xfed7)
/* 功能:与CCR1类似,控制通道2的PWM占空比 */

/* PWMA通道2捕获/比较寄存器高8位 */
#define     PWMA_CCR2H              (*(unsigned char volatile xdata *)0xfed7)
/* 功能:存储通道2比较值的高8位 */

/* PWMA通道2捕获/比较寄存器低8位 */
#define     PWMA_CCR2L              (*(unsigned char volatile xdata *)0xfed8)
/* 功能:存储通道2比较值的低8位 */

/* PWMA通道3捕获/比较寄存器(16位,控制通道3的PWM占空比) */
#define     PWMA_CCR3               (*(unsigned  int volatile xdata *)0xfed9)
/* 功能:与CCR1类似,控制通道3的PWM占空比 */

/* PWMA通道3捕获/比较寄存器高8位 */
#define     PWMA_CCR3H              (*(unsigned char volatile xdata *)0xfed9)
/* 功能:存储通道3比较值的高8位 */

/* PWMA通道3捕获/比较寄存器低8位 */
#define     PWMA_CCR3L              (*(unsigned char volatile xdata *)0xfeda)
/* 功能:存储通道3比较值的低8位 */

/* PWMA通道4捕获/比较寄存器(16位,控制通道4的PWM占空比) */
#define     PWMA_CCR4               (*(unsigned  int volatile xdata *)0xfedb)
/* 功能:与CCR1类似,控制通道4的PWM占空比 */

/* PWMA通道4捕获/比较寄存器高8位 */
#define     PWMA_CCR4H              (*(unsigned char volatile xdata *)0xfedb)
/* 功能:存储通道4比较值的高8位 */

/* PWMA通道4捕获/比较寄存器低8位 */
#define     PWMA_CCR4L              (*(unsigned char volatile xdata *)0xfedc)
/* 功能:存储通道4比较值的低8位 */

/* PWMA刹车寄存器(8位,控制PWM输出的紧急停止功能) */
#define     PWMA_BKR                (*(unsigned char volatile xdata *)0xfedd)
/* 功能:
 * – 实现PWM输出的紧急刹车功能(如故障保护)
 * – 当刹车输入有效时,所有PWM输出被强制为预设的安全状态
 * 关键位定义:
 *   BIT7: MOE(主输出使能)
 *     1=使能所有通道的PWM输出,0=禁止所有输出
 *   BIT6: OSSI(空闲状态选择)
 *     1=当计数器未使能时,输出强制为空闲状态
 *   BIT5: OSSR(运行模式下的空闲状态选择)
 *     1=当刹车激活时,输出强制为空闲状态
 *   BIT4: BKE(刹车输入使能)
 *     1=使能刹车输入功能
 *   BIT3: BKP(刹车输入极性)
 *     0=低电平触发刹车,1=高电平触发刹车
 */

/* PWMA死区时间寄存器(8位,配置互补输出的死区时间) */
#define     PWMA_DTR                (*(unsigned char volatile xdata *)0xfede)
/* 功能:
 * – 配置互补PWM输出之间的死区时间(防止上下桥臂直通)
 * – 适用于H桥、半桥等功率驱动电路
 * 关键位定义:
 *   BIT7-BIT5: DTG[7:5](死区时间生成器位)
 *   BIT4-BIT0: DTG[4:0](死区时间生成器位)
 *     死区时间 = DTR值 × 定时器时钟周期
 */

/* PWMA输出状态寄存器(8位,反映当前PWM输出状态) */
#define     PWMA_OISR               (*(unsigned char volatile xdata *)0xfedf)
/* 功能:
 * – 读取当前PWM输出的状态信息(如刹车激活状态)
 * 关键位定义:
 *   BIT7: BIF(刹车中断标志)
 *     1=刹车事件触发,需软件清零
 *   BIT6-BIT3: 保留
 *   BIT2: OIS2(通道2输出状态)
 *     0=输出禁用,1=输出使能
 *   BIT1: OIS1(通道1输出状态)
 *   BIT0: OIS0(通道0输出状态)
 */

/* PWMB控制寄存器1(8位,基本控制功能) */
#define     PWMB_CR1                (*(unsigned char volatile xdata *)0xfee0)
/* 功能:
 * – 配置PWMB的基本工作模式(如计数方向、使能计数器)
 * 关键位定义:
 *   BIT7: CMS[1:0](中央对齐模式选择)
 *     00=边沿对齐模式,01=中央对齐模式1,…
 *   BIT6: DIR(计数方向)
 *     0=向上计数,1=向下计数
 *   BIT5: OPMS(单脉冲模式)
 *     1=单脉冲模式,计数器在触发后运行一个周期
 *   BIT0: CEN(计数器使能)
 *     1=启动计数器,0=停止计数器
 */

/* PWMB控制寄存器2(8位,辅助控制功能) */
#define     PWMB_CR2                (*(unsigned char volatile xdata *)0xfee1)
/* 功能:
 * – 配置PWMB的高级控制功能(如触发输出、主模式选择)
 * 关键位定义:
 *   BIT7: TI1S(触发输入选择)
 *     0=触发输入来自ETR,1=触发输入来自TI1
 *   BIT6-BIT4: MMS(主模式选择)
 *     配置PWM如何作为主定时器触发其他从定时器
 */

/* PWMB同步控制寄存器(8位,配置定时器同步模式) */
#define     PWMB_SMCR               (*(unsigned char volatile xdata *)0xfee2)
/* 功能:
 * – 配置PWMB的同步模式(如主/从模式、触发源选择)
 * 关键位定义:
 *   BIT7-BIT4: SMS[3:0](同步模式选择)
 *     0000=冻结模式,0001=外部时钟模式1,…
 *   BIT3-BIT0: TS[3:0](触发源选择)
 *     选择触发输入源(如ETR、TI1、TI2等)
 */

/* PWMB外部触发寄存器(8位,配置外部触发信号) */
#define     PWMB_ETR                (*(unsigned char volatile xdata *)0xfee3)
/* 功能:
 * – 配置外部触发输入信号(ETR)的滤波、极性和分频
 * 关键位定义:
 *   BIT7: ETP(外部触发极性)
 *     0=上升沿触发,1=下降沿触发
 *   BIT6: ECE(外部时钟使能)
 *     1=使能外部时钟模式2
 */

/* PWMB中断使能寄存器(8位,控制中断使能) */
#define     PWMB_IER                (*(unsigned char volatile xdata *)0xfee4)
/* 功能:
 * – 使能/禁止PWMB各种事件的中断请求
 * 关键位定义:
 *   BIT7: TIE(触发中断使能)
 *     1=使能触发事件中断
 *   BIT6: COMIE(互补输出模式中断使能)
 *   BIT5: CC4IE(通道4捕获/比较中断使能)
 *   BIT0: UIER(更新中断使能)
 *     1=使能计数器更新事件中断
 */

/* PWMB状态寄存器1(8位,反映各种事件状态) */
#define     PWMB_SR1                (*(unsigned char volatile xdata *)0xfee5)
/* 功能:
 * – 反映PWMB各种事件的状态标志
 * 关键位定义:
 *   BIT7: TIF(触发中断标志)
 *     1=触发事件发生
 *   BIT6: COMIF(互补输出模式中断标志)
 *   BIT5: CC4IF(通道4捕获/比较中断标志)
 *   BIT0: UIF(更新中断标志)
 *     1=计数器更新事件发生
 */

/* PWMB状态寄存器2(8位,反映附加事件状态) */
#define     PWMB_SR2                (*(unsigned char volatile xdata *)0xfee6)
/* 功能:
 * – 反映PWMB附加事件的状态标志
 * 关键位定义:
 *   BIT2: BIF(刹车中断标志)
 *     1=刹车事件发生
 *   BIT1: OIF(溢出中断标志)
 *     1=计数器溢出事件发生
 */

/* PWMB事件生成寄存器(8位,手动触发事件) */
#define     PWMB_EGR                (*(unsigned char volatile xdata *)0xfee7)
/* 功能:
 * – 手动触发PWMB各种事件(用于初始化或强制更新)
 * 关键位定义:
 *   BIT7: TG(触发生成)
 *     1=生成触发事件(软件触发)
 *   BIT6: COMG(互补输出模式生成)
 *   BIT5: CC4G(通道4捕获/比较生成)
 *   BIT0: UG(更新生成)
 *     1=强制生成更新事件,重置计数器和预装载寄存器
 */

/* PWMB通道1捕获/比较模式寄存器(8位,配置通道1工作模式) */
#define     PWMB_CCMR1              (*(unsigned char volatile xdata *)0xfee8)
/* 功能:
 * – 配置通道1的捕获/比较模式(如PWM模式、输入捕获模式)
 * 关键位定义:
 *   BIT7: OC1PE(输出比较预装载使能)
 *     1=CCR1值写入后需触发更新事件生效,0=立即生效
 *   BIT6-BIT4: OC1M[2:0](输出比较模式)
 *     011=冻结模式,110=PWM模式1,111=PWM模式2
 *   BIT3: CC1S[1:0](捕获/比较选择)
 *     00=输出模式,01=输入模式(IC1映射到TI1)
 */

/* PWMB通道2捕获/比较模式寄存器(8位,配置通道2工作模式) */
#define     PWMB_CCMR2              (*(unsigned char volatile xdata *)0xfee9)
/* 功能:与CCMR1类似,配置通道2的捕获/比较模式 */

/* PWMB通道3捕获/比较模式寄存器(8位,配置通道3工作模式) */
#define     PWMB_CCMR3              (*(unsigned char volatile xdata *)0xfeea)
/* 功能:与CCMR1类似,配置通道3的捕获/比较模式 */

/* PWMB通道4捕获/比较模式寄存器(8位,配置通道4工作模式) */
#define     PWMB_CCMR4              (*(unsigned char volatile xdata *)0xfeeb)
/* 功能:与CCMR1类似,配置通道4的捕获/比较模式 */

/* PWMB通道1-4捕获/比较使能寄存器1(8位,控制通道1-4输出使能与极性) */
#define     PWMB_CCER1              (*(unsigned char volatile xdata *)0xfeec)
/* 功能:
 * – 控制通道1-4的输出使能、输出极性及捕获触发边沿
 * 关键位定义:
 *   BIT3: CC1P(通道1输出极性)
 *     0=高电平有效,1=低电平有效
 *   BIT1: CC1E(通道1输出使能)
 *     1=使能输出,0=禁止输出
 */

/* PWMB通道5-8捕获/比较使能寄存器2(8位,控制通道5-8输出使能与极性) */
#define     PWMB_CCER2              (*(unsigned char volatile xdata *)0xfeed)
/* 功能:与CCER1类似,控制通道5-8的输出使能与极性 */

/* PWMB计数器(16位,存储当前计数值) */
#define     PWMB_CNTR               (*(unsigned  int volatile xdata *)0xfeee)
/* 功能:
 * – 存储PWMB当前的计数值,随计数器时钟递增/递减
 * 说明:
 * – 高8位存储于地址0xFEEE(CNTRH),低8位存储于地址0xFEFF(CNTRL)
 */

/* PWMB计数器高8位 */
#define     PWMB_CNTRH              (*(unsigned char volatile xdata *)0xfeee)
/* 功能:存储计数器值的高8位(BIT15-BIT8) */

/* PWMB计数器低8位 */
#define     PWMB_CNTRL              (*(unsigned char volatile xdata *)0xfeef)
/* 功能:存储计数器值的低8位(BIT7-BIT0) */

/* PWMB预分频寄存器(16位,配置计数器时钟分频) */
#define     PWMB_PSCR               (*(unsigned  int volatile xdata *)0xfef0)
/* 功能:
 * – 配置计数器时钟的预分频系数
 * – 分频后时钟作为计数器的计数时钟
 * 计算公式:
 *   计数器时钟 = 系统时钟 / (PSCR值 + 1)
 * 说明:
 * – 高8位存储于地址0xFEF0(PSCRH),低8位存储于地址0xFEF1(PSCRL)
 */

/* PWMB预分频寄存器高8位 */
#define     PWMB_PSCRH              (*(unsigned char volatile xdata *)0xfef0)
/* 功能:存储预分频值的高8位(BIT15-BIT8) */

/* PWMB预分频寄存器低8位 */
#define     PWMB_PSCRL              (*(unsigned char volatile xdata *)0xfef1)
/* 功能:存储预分频值的低8位(BIT7-BIT0) */

/* PWMB自动重装载寄存器(16位,决定PWM周期) */
#define     PWMB_ARR                (*(unsigned  int volatile xdata *)0xfef2)
/* 功能:
 * – 存储计数器的自动重装载值,决定PWM波形的周期
 * – 当计数器值达到ARR时,计数器归零并重新计数
 * 计算公式:
 *   PWM周期 = (ARR值 + 1) / 计数器时钟频率
 * 说明:
 * – 高8位存储于地址0xFEF2(ARRH),低8位存储于地址0xFEF3(ARRL)
 * – 若ARPE=1(CR1寄存器),修改ARR后需触发更新事件才生效
 */

/* PWMB自动重装载寄存器高8位 */
#define     PWMB_ARRH               (*(unsigned char volatile xdata *)0xfef2)
/* 功能:存储自动重装载值的高8位(BIT15-BIT8) */

/* PWMB自动重装载寄存器低8位 */
#define     PWMB_ARRL               (*(unsigned char volatile xdata *)0xfef3)
/* 功能:存储自动重装载值的低8位(BIT7-BIT0) */

/* PWMB重复计数器(8位,控制更新事件频率) */
#define     PWMB_RCR                (*(unsigned char volatile xdata *)0xfef4)
/* 功能:
 * – 设置计数器溢出多少次后才触发更新事件(UIF标志置1)
 * – 实际触发次数 = RCR值 + 1
 * 应用场景:
 * – 减少更新事件中断频率,降低CPU负担
 * – 实现多周期同步控制(如多相电机驱动)
 */

/* PWMB通道5捕获/比较寄存器(16位,控制通道5的PWM占空比) */
#define     PWMB_CCR5               (*(unsigned  int volatile xdata *)0xfef5)
/* 功能:
 * – 存储通道5的比较值,决定PWM波形的占空比
 * – 当计数器值等于CCR5时,触发相应的输出动作
 * 计算公式:
 *   占空比 = CCR5值 / (ARR值 + 1) * 100%
 * 说明:
 * – 高8位存储于地址0xFEF5(CCR5H),低8位存储于地址0xFEF6(CCR5L)
 * – 若OC5PE=1(CCMR5寄存器),修改CCR5后需触发更新事件才生效
 */

/* PWMB通道5捕获/比较寄存器高8位 */
#define     PWMB_CCR5H              (*(unsigned char volatile xdata *)0xfef5)
/* 功能:存储通道5比较值的高8位(BIT15-BIT8) */

/* PWMB通道5捕获/比较寄存器低8位 */
#define     PWMB_CCR5L              (*(unsigned char volatile xdata *)0xfef6)
/* 功能:存储通道5比较值的低8位(BIT7-BIT0) */

/* PWMB通道6捕获/比较寄存器(16位,控制通道6的PWM占空比) */
#define     PWMB_CCR6               (*(unsigned  int volatile xdata *)0xfef7)
/* 功能:与CCR5类似,控制通道6的PWM占空比 */

/* PWMB通道6捕获/比较寄存器高8位 */
#define     PWMB_CCR6H              (*(unsigned char volatile xdata *)0xfef7)
/* 功能:存储通道6比较值的高8位 */

/* PWMB通道6捕获/比较寄存器低8位 */
#define     PWMB_CCR6L              (*(unsigned char volatile xdata *)0xfef8)
/* 功能:存储通道6比较值的低8位 */

/* PWMB通道7捕获/比较寄存器(16位,控制通道7的PWM占空比) */
#define     PWMB_CCR7               (*(unsigned  int volatile xdata *)0xfef9)
/* 功能:与CCR5类似,控制通道7的PWM占空比 */

/* PWMB通道7捕获/比较寄存器高8位 */
#define     PWMB_CCR7H              (*(unsigned char volatile xdata *)0xfef9)
/* 功能:存储通道7比较值的高8位 */

/* PWMB通道7捕获/比较寄存器低8位 */
#define     PWMB_CCR7L              (*(unsigned char volatile xdata *)0xfefa)
/* 功能:存储通道7比较值的低8位 */

/* PWMB通道8捕获/比较寄存器(16位,控制通道8的PWM占空比) */
#define     PWMB_CCR8               (*(unsigned  int volatile xdata *)0xfefb)
/* 功能:与CCR5类似,控制通道8的PWM占空比 */

/* PWMB通道8捕获/比较寄存器高8位 */
#define     PWMB_CCR8H              (*(unsigned char volatile xdata *)0xfefb)
/* 功能:存储通道8比较值的高8位 */

/* PWMB通道8捕获/比较寄存器低8位 */
#define     PWMB_CCR8L              (*(unsigned char volatile xdata *)0xfefc)
/* 功能:存储通道8比较值的低8位 */

/* PWMB刹车寄存器(8位,控制PWM输出的紧急停止功能) */
#define     PWMB_BKR                (*(unsigned char volatile xdata *)0xfefd)
/* 功能:
 * – 实现PWM输出的紧急刹车功能(如故障保护)
 * – 当刹车输入有效时,所有PWM输出被强制为预设的安全状态
 * 关键位定义:
 *   BIT7: MOE(主输出使能)
 *     1=使能所有通道的PWM输出,0=禁止所有输出
 *   BIT6: OSSI(空闲状态选择)
 *     1=当计数器未使能时,输出强制为空闲状态
 *   BIT4: BKE(刹车输入使能)
 *     1=使能刹车输入功能
 *   BIT3: BKP(刹车输入极性)
 *     0=低电平触发刹车,1=高电平触发刹车
 */

/* PWMB死区时间寄存器(8位,配置互补输出的死区时间) */
#define     PWMB_DTR                (*(unsigned char volatile xdata *)0xfefe)
/* 功能:
 * – 配置互补PWM输出之间的死区时间(防止上下桥臂直通)
 * – 适用于H桥、半桥等功率驱动电路
 * 关键位定义:
 *   BIT7-BIT0: DTG[7:0](死区时间生成器位)
 *     死区时间 = DTR值 × 定时器时钟周期
 */

/* PWMB输出状态寄存器(8位,反映当前PWM输出状态) */
#define     PWMB_OISR               (*(unsigned char volatile xdata *)0xfeff)
/* 功能:
 * – 读取当前PWM输出的状态信息(如刹车激活状态)
 * 关键位定义:
 *   BIT7: BIF(刹车中断标志)
 *     1=刹车事件触发,需软件清零
 *   BIT2: OIS2(通道2输出状态)
 *     0=输出禁用,1=输出使能
 *   BIT1: OIS1(通道1输出状态)
 *   BIT0: OIS0(通道0输出状态)
 */

/
//FD00H-FDFFH
/

/* P0口中断使能寄存器(8位,控制P0.0~P0.7的中断使能) */
#define     P0INTE                  (*(unsigned char volatile xdata *)0xfd00)
/* 功能:
 * – 控制P0口各引脚的外部中断使能
 * 位定义:
 *   BIT7: P0.7中断使能位(1=使能,0=禁止)
 *   BIT6: P0.6中断使能位
 *   …
 *   BIT0: P0.0中断使能位
 */

/* P1口中断使能寄存器(8位,控制P1.0~P1.7的中断使能) */
#define     P1INTE                  (*(unsigned char volatile xdata *)0xfd01)
/* 功能:与P0INTE类似,控制P1口各引脚的外部中断使能 */

/* P2口中断使能寄存器(8位,控制P2.0~P2.7的中断使能) */
#define     P2INTE                  (*(unsigned char volatile xdata *)0xfd02)
/* 功能:与P0INTE类似,控制P2口各引脚的外部中断使能 */

/* P3口中断使能寄存器(8位,控制P3.0~P3.7的中断使能) */
#define     P3INTE                  (*(unsigned char volatile xdata *)0xfd03)
/* 功能:与P0INTE类似,控制P3口各引脚的外部中断使能 */

/* P4口中断使能寄存器(8位,控制P4.0~P4.7的中断使能) */
#define     P4INTE                  (*(unsigned char volatile xdata *)0xfd04)
/* 功能:与P0INTE类似,控制P4口各引脚的外部中断使能 */

/* P5口中断使能寄存器(8位,控制P5.0~P5.7的中断使能) */
#define     P5INTE                  (*(unsigned char volatile xdata *)0xfd05)
/* 功能:与P0INTE类似,控制P5口各引脚的外部中断使能 */

/* P6口中断使能寄存器(8位,控制P6.0~P6.7的中断使能) */
#define     P6INTE                  (*(unsigned char volatile xdata *)0xfd06)
/* 功能:与P0INTE类似,控制P6口各引脚的外部中断使能 */

/* P7口中断使能寄存器(8位,控制P7.0~P7.7的中断使能) */
#define     P7INTE                  (*(unsigned char volatile xdata *)0xfd07)
/* 功能:与P0INTE类似,控制P7口各引脚的外部中断使能 */

/* P0口中断标志寄存器(8位,反映P0.0~P0.7的中断标志) */
#define     P0INTF                  (*(unsigned char volatile xdata *)0xfd10)
/* 功能:
 * – 反映P0口各引脚的中断触发状态
 * 位定义:
 *   BIT7: P0.7中断标志位(1=触发,需软件清零)
 *   BIT6: P0.6中断标志位
 *   …
 *   BIT0: P0.0中断标志位
 */

/* P1口中断标志寄存器(8位,反映P1.0~P1.7的中断标志) */
#define     P1INTF                  (*(unsigned char volatile xdata *)0xfd11)
/* 功能:与P0INTF类似,反映P1口各引脚的中断触发状态 */

/* P2口中断标志寄存器(8位,反映P2.0~P2.7的中断标志) */
#define     P2INTF                  (*(unsigned char volatile xdata *)0xfd12)
/* 功能:与P0INTF类似,反映P2口各引脚的中断触发状态 */

/* P3口中断标志寄存器(8位,反映P3.0~P3.7的中断标志) */
#define     P3INTF                  (*(unsigned char volatile xdata *)0xfd13)
/* 功能:与P0INTF类似,反映P3口各引脚的中断触发状态 */

/* P4口中断标志寄存器(8位,反映P4.0~P4.7的中断标志) */
#define     P4INTF                  (*(unsigned char volatile xdata *)0xfd14)
/* 功能:与P0INTF类似,反映P4口各引脚的中断触发状态 */

/* P5口中断标志寄存器(8位,反映P5.0~P5.7的中断标志) */
#define     P5INTF                  (*(unsigned char volatile xdata *)0xfd15)
/* 功能:与P0INTF类似,反映P5口各引脚的中断触发状态 */

/* P6口中断标志寄存器(8位,反映P6.0~P6.7的中断标志) */
#define     P6INTF                  (*(unsigned char volatile xdata *)0xfd16)
/* 功能:与P0INTF类似,反映P6口各引脚的中断触发状态 */

/* P7口中断标志寄存器(8位,反映P7.0~P7.7的中断标志) */
#define     P7INTF                  (*(unsigned char volatile xdata *)0xfd17)
/* 功能:与P0INTF类似,反映P7口各引脚的中断触发状态 */

/* P0口中断模式控制寄存器0(8位,控制P0.0~P0.7的中断触发模式低4位) */
#define     P0IM0                   (*(unsigned char volatile xdata *)0xfd20)
/* 功能:
 * – 配置P0口各引脚的中断触发模式(低4位)
 * 位定义:
 *   BIT7-BIT4: P0.7中断模式控制位[3:0]
 *   BIT3-BIT0: P0.3中断模式控制位[3:0]
 */

/* P1口中断模式控制寄存器0(8位,控制P1.0~P1.7的中断触发模式低4位) */
#define     P1IM0                   (*(unsigned char volatile xdata *)0xfd21)
/* 功能:与P0IM0类似,控制P1口各引脚的中断触发模式低4位 */

/* P2口中断模式控制寄存器0(8位,控制P2.0~P2.7的中断触发模式低4位) */
#define     P2IM0                   (*(unsigned char volatile xdata *)0xfd22)
/* 功能:与P0IM0类似,控制P2口各引脚的中断触发模式低4位 */

/* P3口中断模式控制寄存器0(8位,控制P3.0~P3.7的中断触发模式低4位) */
#define     P3IM0                   (*(unsigned char volatile xdata *)0xfd23)
/* 功能:与P0IM0类似,控制P3口各引脚的中断触发模式低4位 */

/* P4口中断模式控制寄存器0(8位,控制P4.0~P4.7的中断触发模式低4位) */
#define     P4IM0                   (*(unsigned char volatile xdata *)0xfd24)
/* 功能:与P0IM0类似,控制P4口各引脚的中断触发模式低4位 */

/* P5口中断模式控制寄存器0(8位,控制P5.0~P5.7的中断触发模式低4位) */
#define     P5IM0                   (*(unsigned char volatile xdata *)0xfd25)
/* 功能:与P0IM0类似,控制P5口各引脚的中断触发模式低4位 */

/* P6口中断模式控制寄存器0(8位,控制P6.0~P6.7的中断触发模式低4位) */
#define     P6IM0                   (*(unsigned char volatile xdata *)0xfd26)
/* 功能:与P0IM0类似,控制P6口各引脚的中断触发模式低4位 */

/* P7口中断模式控制寄存器0(8位,控制P7.0~P7.7的中断触发模式低4位) */
#define     P7IM0                   (*(unsigned char volatile xdata *)0xfd27)
/* 功能:与P0IM0类似,控制P7口各引脚的中断触发模式低4位 */

/* P0口中断模式控制寄存器1(8位,控制P0.0~P0.7的中断触发模式高4位) */
#define     P0IM1                   (*(unsigned char volatile xdata *)0xfd30)
/* 功能:
 * – 配置P0口各引脚的中断触发模式(高4位)
 * 位定义:
 *   BIT7-BIT4: P0.7中断模式控制位[7:4]
 *   BIT3-BIT0: P0.3中断模式控制位[7:4]
 */

/* P1口中断模式控制寄存器1(8位,控制P1.0~P1.7的中断触发模式高4位) */
#define     P1IM1                   (*(unsigned char volatile xdata *)0xfd31)
/* 功能:与P0IM1类似,控制P1口各引脚的中断触发模式高4位 */

/* P2口中断模式控制寄存器1(8位,控制P2.0~P2.7的中断触发模式高4位) */
#define     P2IM1                   (*(unsigned char volatile xdata *)0xfd32)
/* 功能:与P0IM1类似,控制P2口各引脚的中断触发模式高4位 */

/* P3口中断模式控制寄存器1(8位,控制P3.0~P3.7的中断触发模式高4位) */
#define     P3IM1                   (*(unsigned char volatile xdata *)0xfd33)
/* 功能:与P0IM1类似,控制P3口各引脚的中断触发模式高4位 */

/* P4口中断模式控制寄存器1(8位,控制P4.0~P4.7的中断触发模式高4位) */
#define     P4IM1                   (*(unsigned char volatile xdata *)0xfd34)
/* 功能:与P0IM1类似,控制P4口各引脚的中断触发模式高4位 */

/* P5口中断模式控制寄存器1(8位,控制P5.0~P5.7的中断触发模式高4位) */
#define     P5IM1                   (*(unsigned char volatile xdata *)0xfd35)
/* 功能:与P0IM1类似,控制P5口各引脚的中断触发模式高4位 */

/* P6口中断模式控制寄存器1(8位,控制P6.0~P6.7的中断触发模式高4位) */
#define     P6IM1                   (*(unsigned char volatile xdata *)0xfd36)
/* 功能:与P0IM1类似,控制P6口各引脚的中断触发模式高4位 */

/* P7口中断模式控制寄存器1(8位,控制P7.0~P7.7的中断触发模式高4位) */
#define     P7IM1                   (*(unsigned char volatile xdata *)0xfd37)
/* 功能:与P0IM1类似,控制P7口各引脚的中断触发模式高4位 */

/* P0口唤醒使能寄存器(8位,控制P0.0~P0.7的低功耗唤醒功能) */
#define     P0WKUE                  (*(unsigned char volatile xdata *)0xfd40)
/* 功能:
 * – 控制P0口各引脚在低功耗模式(如停机模式、空闲模式)下的唤醒功能
 * 位定义:
 *   BIT7: P0.7唤醒使能位(1=使能唤醒,0=禁止唤醒)
 *   BIT6: P0.6唤醒使能位
 *   …
 *   BIT0: P0.0唤醒使能位
 */

/* P1口唤醒使能寄存器(8位,控制P1.0~P1.7的低功耗唤醒功能) */
#define     P1WKUE                  (*(unsigned char volatile xdata *)0xfd41)
/* 功能:与P0WKUE类似,控制P1口各引脚的低功耗唤醒功能 */

/* P2口唤醒使能寄存器(8位,控制P2.0~P2.7的低功耗唤醒功能) */
#define     P2WKUE                  (*(unsigned char volatile xdata *)0xfd42)
/* 功能:与P0WKUE类似,控制P2口各引脚的低功耗唤醒功能 */

/* P3口唤醒使能寄存器(8位,控制P3.0~P3.7的低功耗唤醒功能) */
#define     P3WKUE                  (*(unsigned char volatile xdata *)0xfd43)
/* 功能:与P0WKUE类似,控制P3口各引脚的低功耗唤醒功能 */

/* P4口唤醒使能寄存器(8位,控制P4.0~P4.7的低功耗唤醒功能) */
#define     P4WKUE                  (*(unsigned char volatile xdata *)0xfd44)
/* 功能:与P0WKUE类似,控制P4口各引脚的低功耗唤醒功能 */

/* P5口唤醒使能寄存器(8位,控制P5.0~P5.7的低功耗唤醒功能) */
#define     P5WKUE                  (*(unsigned char volatile xdata *)0xfd45)
/* 功能:与P0WKUE类似,控制P5口各引脚的低功耗唤醒功能 */

/* P6口唤醒使能寄存器(8位,控制P6.0~P6.7的低功耗唤醒功能) */
#define     P6WKUE                  (*(unsigned char volatile xdata *)0xfd46)
/* 功能:与P0WKUE类似,控制P6口各引脚的低功耗唤醒功能 */

/* P7口唤醒使能寄存器(8位,控制P7.0~P7.7的低功耗唤醒功能) */
#define     P7WKUE                  (*(unsigned char volatile xdata *)0xfd47)
/* 功能:与P0WKUE类似,控制P7口各引脚的低功耗唤醒功能 */

/* I/O口中断优先级低位寄存器(8位,控制P0~P7口中断的低4位优先级) */
#define     PINIPL                  (*(unsigned char volatile xdata *)0xfd60)
/* 功能:
 * – 配置P0~P7口各中断的优先级(低4位)
 * 位定义:
 *   BIT7-BIT4: P7口中断优先级控制位[3:0]
 *   BIT3-BIT0: P3口中断优先级控制位[3:0]
 */

/* I/O口中断优先级高位寄存器(8位,控制P0~P7口中断的高4位优先级) */
#define     PINIPH                  (*(unsigned char volatile xdata *)0xfd61)
/* 功能:
 * – 配置P0~P7口各中断的优先级(高4位)
 * 位定义:
 *   BIT7-BIT4: P7口中断优先级控制位[7:4]
 *   BIT3-BIT0: P3口中断优先级控制位[7:4]
 */

/* CRC使能与控制寄存器(8位,配置CRC功能参数) */
#define     CRECR                   (*(unsigned char volatile xdata *)0xfda8)
/* 功能:
 * – 控制CRC计算模块的使能、工作模式及操作
 * 关键位定义:
 *   BIT7: CRCEN(CRC使能位)
 *     1=使能CRC计算,0=禁止CRC计算
 *   BIT6: CRCRST(CRC重置位)
 *     1=重置CRC计算单元,写入1后自动清零
 *   BIT5: CRCSEL(CRC多项式选择)
 *     0=CRC-8,1=CRC-16,2=CRC-32(具体编码需参考手册)
 *   BIT4: CRCDIR(数据输入方向)
 *     0=MSB优先,1=LSB优先
 *   BIT3: CRCINI(初始值选择)
 *     0=使用默认初始值,1=使用自定义初始值(由CRCIN寄存器设置)
 */

/* CRC计数器高位(8位,存储CRC计算结果的高8位) */
#define     CRECNTH                 (*(unsigned char volatile xdata *)0xfda9)
/* 功能:
 * – 存储CRC计算结果的高8位数据
 * – 对于CRC-8,此寄存器无效
 * – 对于CRC-16,存储结果的高8位(BIT15-BIT8)
 * – 对于CRC-32,存储结果的第24-31位
 */

/* CRC计数器低位(8位,存储CRC计算结果的低8位) */
#define     CRECNTL                 (*(unsigned char volatile xdata *)0xfdaa)
/* 功能:
 * – 存储CRC计算结果的低8位数据
 * – 对于CRC-8,存储完整结果(BIT7-BIT0)
 * – 对于CRC-16,存储结果的低8位(BIT7-BIT0)
 * – 对于CRC-32,存储结果的第0-7位
 */

/* CRC结果扩展寄存器(8位,存储CRC计算结果的中间8位) */
#define     CRERES                  (*(unsigned char volatile xdata *)0xfdab)
/* 功能:
 * – 存储CRC计算结果的中间8位数据(仅用于CRC-32)
 * – 存储结果的第8-15位(BIT15-BIT8)
 * – 对于CRC-8和CRC-16,此寄存器无效
 */

/**
 * 芯片ID寄存器访问指针
 * 地址: 0xFDE0-0xFDEF (共16字节)
 * 访问方式: 声明为xdata存储器类型,表示外部数据存储器
 *           声明为volatile,表示该地址内容可能意外改变
 *           声明为unsigned char,表示按字节访问
 */
#define     CHIPID                  ( (unsigned char volatile xdata *)0xfde0)

/* 芯片ID寄存器组(32字节,256位唯一标识符) */
#define     CHIPID0                 (*(unsigned char volatile xdata *)0xfde0)
/* 功能:
 * – 存储芯片唯一标识符的第1字节
 * – 每颗芯片的完整ID由CHIPID0~CHIPID31共32字节组成
 */

#define     CHIPID1                 (*(unsigned char volatile xdata *)0xfde1)
/* 功能:存储芯片唯一标识符的第2字节 */

#define     CHIPID2                 (*(unsigned char volatile xdata *)0xfde2)
/* 功能:存储芯片唯一标识符的第3字节 */

#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)
/* 功能:存储芯片唯一标识符的第31字节 */

#define     CHIPID31                (*(unsigned char volatile xdata *)0xfdff)
/* 功能:存储芯片唯一标识符的第32字节 */

/
//FC00H-FCFFH
/

/* ADC数据寄存器3(8位,存储ADC转换结果的高字节部分) */
#define     MD3                     (*(unsigned char volatile xdata *)0xfcf0)
/* 功能:
 * – 存储ADC转换结果的高8位数据
 * – 与MD2、MD1、MD0共同组成完整的ADC转换值
 * 说明:
 * – 具体数据位分配与ADC分辨率有关(如12位、14位等)
 * – 需结合ARCON寄存器配置确定有效位
 */

/* ADC数据寄存器2(8位,存储ADC转换结果的中间高字节部分) */
#define     MD2                     (*(unsigned char volatile xdata *)0xfcf1)
/* 功能:存储ADC转换结果的中间高字节数据 */

/* ADC数据寄存器1(8位,存储ADC转换结果的中间低字节部分) */
#define     MD1                     (*(unsigned char volatile xdata *)0xfcf2)
/* 功能:存储ADC转换结果的中间低字节数据 */

/* ADC数据寄存器0(8位,存储ADC转换结果的低字节部分) */
#define     MD0                     (*(unsigned char volatile xdata *)0xfcf3)
/* 功能:存储ADC转换结果的低8位数据 */

/* ADC数据寄存器5(8位,存储增强型ADC数据或状态信息) */
#define     MD5                     (*(unsigned char volatile xdata *)0xfcf4)
/* 功能:
 * – 存储增强型ADC功能的数据或状态信息
 * – 可能包含转换精度、参考电压状态等
 */

/* ADC数据寄存器4(8位,存储增强型ADC数据或控制信息) */
#define     MD4                     (*(unsigned char volatile xdata *)0xfcf5)
/* 功能:
 * – 存储增强型ADC功能的数据或控制信息
 * – 可能用于配置过采样、滤波等高级功能
 */

/* ADC参考电压与转换控制寄存器(8位,配置ADC参考电压和转换模式) */
#define     ARCON                   (*(unsigned char volatile xdata *)0xfcf6)
/* 功能:
 * – 配置ADC参考电压源、转换位数、启动转换等
 * 关键位定义:
 *   BIT7: ADC_POWER(ADC电源控制)
 *     1=开启ADC电源,0=关闭ADC电源
 *   BIT6: ADC_START(ADC转换启动)
 *     1=启动单次转换,自动清零
 *   BIT5: ADC_FLAG(ADC转换完成标志)
 *     1=转换完成,需软件清零
 *   BIT4-BIT2: ADC_CHS[2:0](ADC通道选择)
 *     000~111=选择ADC0~ADC7通道
 *   BIT1-BIT0: ADC_RES[1:0](ADC分辨率选择)
 *     00=8位,01=10位,10=12位,11=14位
 */

/* ADC操作控制寄存器(8位,配置ADC操作模式和特性) */
#define     OPCON                   (*(unsigned char volatile xdata *)0xfcf7)
/* 功能:
 * – 配置ADC的操作模式、采样时间、中断使能等
 * 关键位定义:
 *   BIT7: ADC_INT_EN(ADC中断使能)
 *     1=使能ADC转换完成中断,0=禁止
 *   BIT6: ADC_FS(ADC采样频率选择)
 *     0=低速采样,1=高速采样
 *   BIT5: ADC_OSM(ADC过采样模式)
 *     1=启用过采样,提高分辨率
 *   BIT4: ADC_TRIG_MODE(ADC触发模式)
 *     0=软件触发,1=外部触发
 *   BIT3: ADC_EXT_TRIG(外部触发极性)
 *     0=上升沿触发,1=下降沿触发
 */

/
//FB00H-FBFFH
/

/* 公共端使能寄存器(8位,控制8个公共端的使能) */
#define     COMEN                   (*(unsigned char volatile xdata *)0xfb00)
/* 功能:
 * – 控制8个数码管公共端(COM0~COM7)的使能状态
 * 位定义:
 *   BIT7: COM7使能位(1=使能,0=禁止)
 *   BIT6: COM6使能位
 *   …
 *   BIT0: COM0使能位
 */

/* 段显示使能低寄存器(8位,控制低8位段的显示使能) */
#define     SEGENL                  (*(unsigned char volatile xdata *)0xfb01)
/* 功能:
 * – 控制数码管各段(如A、B、C等)的显示使能(低8位)
 * 位定义:
 *   BIT7: SEG7使能位
 *   …
 *   BIT0: SEG0使能位
 */

/* 段显示使能高寄存器(8位,控制高8位段的显示使能) */
#define     SEGENH                  (*(unsigned char volatile xdata *)0xfb02)
/* 功能:
 * – 控制数码管各段(如A、B、C等)的显示使能(高8位)
 * 位定义:
 *   BIT7: SEG15使能位
 *   …
 *   BIT0: SEG8使能位
 */

/* LED显示控制寄存器(8位,配置显示模式和特性) */
#define     LEDCTRL                 (*(unsigned char volatile xdata *)0xfb03)
/* 功能:
 * – 配置LED显示的基本工作模式和特性
 * 关键位定义:
 *   BIT7: LED_EN(LED显示总使能)
 *     1=使能LED显示,0=禁止
 *   BIT6: LED_MODE(显示模式选择)
 *     0=静态显示,1=动态扫描显示
 *   BIT5: REFRESH_RATE(刷新速率控制)
 *     0=低速刷新,1=高速刷新
 *   BIT4: INVERT(显示取反控制)
 *     1=段输出取反
 */

/* LED时钟选择寄存器(8位,配置显示时钟源和分频) */
#define     LEDCKS                  (*(unsigned char volatile xdata *)0xfb04)
/* 功能:
 * – 配置LED显示的时钟源和分频系数
 * 关键位定义:
 *   BIT7-BIT6: CLOCK_SRC(时钟源选择)
 *     00=内部RC时钟,01=系统时钟,10=外部时钟
 *   BIT5-BIT0: DIVIDER(分频系数)
 *     设置时钟分频值,控制扫描频率
 */

/* COM0段数据低字节寄存器(8位,存储COM0的段数据低8位) */
#define     COM0_DA_L               (*(unsigned char volatile xdata *)0xfb10)
/* 功能:
 * – 存储COM0公共端对应的段显示数据低8位
 */

/* COM1段数据低字节寄存器(8位,存储COM1的段数据低8位) */
#define     COM1_DA_L               (*(unsigned char volatile xdata *)0xfb11)
/* 功能:存储COM1公共端对应的段显示数据低8位 */

#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)

/* COM7段数据高字节寄存器(8位,存储COM7的段数据高8位) */
#define     COM7_DA_H               (*(unsigned char volatile xdata *)0xfb1f)
/* 功能:存储COM7公共端对应的段显示数据高8位 */

/* COM0段数据对比度低字节寄存器(8位,存储COM0的对比度数据低8位) */
#define     COM0_DC_L               (*(unsigned char volatile xdata *)0xfb20)
/* 功能:
 * – 存储COM0公共端对应的段显示对比度数据低8位
 * – 用于PWM调光控制
 */

/* COM1段数据对比度低字节寄存器(8位,存储COM1的对比度数据低8位) */
#define     COM1_DC_L               (*(unsigned char volatile xdata *)0xfb21)
/* 功能:存储COM1公共端对应的段显示对比度数据低8位 */

#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)

/* COM7段数据对比度高字节寄存器(8位,存储COM7的对比度数据高8位) */
#define     COM7_DC_H               (*(unsigned char volatile xdata *)0xfb2f)
/* 功能:存储COM7公共端对应的段显示对比度数据高8位 */

/* 触摸通道使能寄存器1(8位,控制触摸通道0~7的使能) */
#define     TSCHEN1                 (*(unsigned char volatile xdata *)0xfb40)
/* 功能:
 * – 独立控制触摸通道0~7的使能状态
 * 位定义:
 *   BIT7: CH7_EN(通道7使能)
 *   BIT6: CH6_EN(通道6使能)
 *   …
 *   BIT0: CH0_EN(通道0使能)
 */

/* 触摸通道使能寄存器2(8位,控制触摸通道8~15的使能) */
#define     TSCHEN2                 (*(unsigned char volatile xdata *)0xfb41)
/* 功能:
 * – 独立控制触摸通道8~15的使能状态
 * 位定义:
 *   BIT7: CH15_EN(通道15使能)
 *   …
 *   BIT0: CH8_EN(通道8使能)
 */

/* 触摸配置寄存器1(8位,配置触摸检测参数) */
#define     TSCFG1                  (*(unsigned char volatile xdata *)0xfb42)
/* 功能:
 * – 设置触摸检测的基准阈值、采样周期等
 * 关键位定义:
 *   BIT7-BIT4: BASE_TH[3:0](基准阈值高4位)
 *   BIT3-BIT0: SAMPLE_CNT[3:0](采样次数)
 */

/* 触摸配置寄存器2(8位,配置触摸检测模式) */
#define     TSCFG2                  (*(unsigned char volatile xdata *)0xfb43)
/* 功能:
 * – 配置触摸检测的工作模式和灵敏度
 * 关键位定义:
 *   BIT7: AUTO_CAL(自动校准使能)
 *   BIT6: CONT_SCAN(连续扫描模式)
 *   BIT5-BIT4: SENSITIVITY[1:0](灵敏度等级)
 *   BIT3-BIT0: CH_GROUP[3:0](通道分组选择)
 */

/* 触摸唤醒时间配置寄存器(8位,设置触摸唤醒延迟时间) */
#define     TSWUTC                  (*(unsigned char volatile xdata *)0xfb44)
/* 功能:
 * – 设置从低功耗模式唤醒后到开始触摸检测的延迟时间
 * – 单位:系统时钟周期(需结合时钟频率计算实际时间)
 */

/* 触摸控制寄存器(8位,启动检测和中断控制) */
#define     TSCTRL                  (*(unsigned char volatile xdata *)0xfb45)
/* 功能:
 * – 控制触摸检测的启动、停止及中断功能
 * 关键位定义:
 *   BIT7: TS_EN(触摸模块总使能)
 *   BIT6: TS_START(启动单次检测)
 *   BIT5: TS_INT_EN(中断使能)
 *   BIT4: TS_INT_FLAG(中断标志,检测完成后置1)
 */

/* 触摸状态寄存器1(8位,反映通道0~7的检测状态) */
#define     TSSTA1                  (*(unsigned char volatile xdata *)0xfb46)
/* 功能:
 * – 显示触摸通道0~7的检测结果
 * 位定义:
 *   BIT7: CH7_DET(通道7检测到触摸)
 *   …
 *   BIT0: CH0_DET(通道0检测到触摸)
 */

/* 触摸状态寄存器2(8位,反映通道8~15的检测状态) */
#define     TSSTA2                  (*(unsigned char volatile xdata *)0xfb47)
/* 功能:显示触摸通道8~15的检测结果 */

/* 触摸结果寄存器(8位,存储当前检测的原始结果) */
#define     TSRT                    (*(unsigned char volatile xdata *)0xfb48)
/* 功能:
 * – 存储触摸检测的原始数据(如充放电时间、电容变化值)
 * – 需结合通道配置解析具体含义
 */

/* 触摸数据寄存器(16位,存储校准后的数据) */
#define     TSDAT                   (*(unsigned int  volatile xdata *)0xfb49)
#define     TSDATH                  (*(unsigned char volatile xdata *)0xfb49)  // 高8位
#define     TSDATL                  (*(unsigned char volatile xdata *)0xfb4A)  // 低8位
/* 功能:
 * – 存储校准后的触摸数据(如归一化后的电容值)
 * – 16位数据,高字节和低字节可独立访问
 */

/* 触摸通道0阈值寄存器(16位,设置通道0的触摸阈值) */
#define     TSTH00                  (*(unsigned int  volatile xdata *)0xfb50)
#define     TSTH00H                 (*(unsigned char volatile xdata *)0xfb50)  // 高8位
#define     TSTH00L                 (*(unsigned char volatile xdata *)0xfb51)  // 低8位
/* 功能:设置通道0的触摸检测阈值(超过该值视为触摸有效) */

#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)

/* LCD基本配置寄存器(8位,设置显示模式与偏置电压) */
#define     LCDCFG                  (*(unsigned char volatile xdata *)0xfb80)
/* 功能:
 * – 配置LCD的显示模式、偏置系数、对比度等基础参数
 * 关键位定义:
 *   BIT7-BIT6: BIAS[1:0](偏置电压选择)
 *     00=1/2偏置, 01=1/3偏置, 10=1/4偏置, 11=自定义偏置
 *   BIT5-BIT4: MODE[1:0](显示模式)
 *     00=静态显示, 01=4COM动态显示, 10=8COM动态显示, 11=16COM动态显示
 *   BIT3: CONTRAST(对比度调节,仅适用于静态模式)
 *   BIT2: FLASH_EN(闪烁功能使能)
 *   BIT1-BIT0: FREQ[1:0](显示时钟频率选择)
 */

/* LCD扩展配置寄存器(8位,设置驱动方式与扫描参数) */
#define     LCDCFG2                 (*(unsigned char volatile xdata *)0xfb81)
/* 功能:
 * – 配置LCD的驱动方式、扫描周期、占空比等
 * 关键位定义:
 *   BIT7: DRIVE_MODE(0=普通驱动, 1=低功耗驱动)
 *   BIT6-BIT4: DUTY[2:0](占空比选择,如1/2、1/3等)
 *   BIT3-BIT0: SCAN_CYCLE[3:0](扫描周期倍数)
 */

/* 显示缓冲区长度寄存器(8位,设置显示数据缓冲区大小) */
#define     DBLEN                   (*(unsigned char volatile xdata *)0xfb82)
/* 功能:
 * – 设置LCD显示数据缓冲区的长度(以字节为单位)
 * – 需与COM端口数量匹配(如4COM模式下缓冲区长度为4字节)
 */

/* 公共端长度寄存器组(24位,设置COM端口数量) */
#define     COMLENL                 (*(unsigned char volatile xdata *)0xfb83)  // 低8位
#define     COMLENM                 (*(unsigned char volatile xdata *)0xfb84)  // 中8位
#define     COMLENH                 (*(unsigned char volatile xdata *)0xfb85)  // 高8位
/* 功能:
 * – 联合设置LCD的公共端(COM)数量(1~16个)
 * – 例如:COMLEN=4表示4个COM端口(动态扫描模式)
 */

/* 闪烁速率寄存器(8位,设置显示内容闪烁频率) */
#define     BLINKRATE               (*(unsigned char volatile xdata *)0xfb86)
/* 功能:
 * – 配置闪烁频率(单位:Hz)
 * – 计算公式:闪烁频率 = 系统时钟 / (BLINKRATE值 + 1) / 256
 */

/* LCD控制寄存器(8位,启动/停止显示及清屏) */
#define     LCDCR                   (*(unsigned char volatile xdata *)0xfb87)
/* 功能:
 * – 控制LCD的运行状态
 * 关键位定义:
 *   BIT7: LCD_EN(显示使能,1=开启显示)
 *   BIT6: LCD_CLR(清屏命令,写入1后自动清零)
 *   BIT5: LCD_FLD(帧同步信号输出使能)
 */

/* 公共端使能寄存器(8位,独立控制COM端口使能) */
#define     COMON                   (*(unsigned char volatile xdata *)0xfb88)
/* 功能:
 * – 使能/禁止各个COM端口(仅动态模式有效)
 * 位定义:
 *   BIT7: COM7_EN, BIT6: COM6_EN, …, BIT0: COM0_EN
 */

/* 段使能寄存器组(5个8位寄存器,控制SEG段输出) */
#define     SEGON1                  (*(unsigned char volatile xdata *)0xfb8a)  // SEG0~SEG7
#define     SEGON2                  (*(unsigned char volatile xdata *)0xfb8b)  // SEG8~SEG15
#define     SEGON3                  (*(unsigned char volatile xdata *)0xfb8c)  // SEG16~SEG23
#define     SEGON4                  (*(unsigned char volatile xdata *)0xfb8d)  // SEG24~SEG31
#define     SEGON5                  (*(unsigned char volatile xdata *)0xfb8e)  // SEG32~SEG39
/* 功能:
 * – 独立使能各个段输出(1=使能对应段,0=禁止)
 * – 例如:SEGON1的BIT0对应SEG0的使能状态
 */

/* 公共端0段数据寄存器组(5字节,存储COM0对应的段数据) */
#define     C0SEGV0                 (*(unsigned char volatile xdata *)0xfb90)  // 段0~7数据
#define     C0SEGV1                 (*(unsigned char volatile xdata *)0xfb91)  // 段8~15数据
#define     C0SEGV2                 (*(unsigned char volatile xdata *)0xfb92)  // 段16~23数据
#define     C0SEGV3                 (*(unsigned char volatile xdata *)0xfb93)  // 段24~31数据
#define     C0SEGV4                 (*(unsigned char volatile xdata *)0xfb94)  // 段32~39数据
/* 功能:
 * – 存储每个COM端口对应的段显示数据(动态模式下)
 * – 每个寄存器的每一位对应一个段(BIT0=SEG0,BIT1=SEG1,依此类推)
 */

 /* 公共端1~3段数据寄存器组(结构与C0SEGV类似,地址递增) */
 /* 功能:与C0SEGV系列寄存器类似,对应不同COM端口的段数据 */
#define     C1SEGV0                 (*(unsigned char volatile xdata *)0xfb98)  // COM1段数据
#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)  // COM2段数据
#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)  // COM3段数据
#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)

/* 高速PWM模块A配置寄存器(8位,控制HSPWMA的工作模式与参数) */
#define     HSPWMA_CFG              (*(unsigned char volatile xdata *)0xfbf0)
/* 功能:
 * – 配置HSPWMA的使能状态、工作模式、时钟源及分频系数
 * 关键位定义:
 *   BIT7: HSPWMA_EN(模块使能)
 *     1=使能HSPWMA,0=禁止
 *   BIT6-BIT5: MODE[1:0](工作模式选择)
 *     00=边沿对齐模式, 01=中心对齐模式, 10=互补输出模式, 11=单脉冲模式
 *   BIT4-BIT3: CLK_SRC[1:0](时钟源选择)
 *     00=系统时钟, 01=外部时钟, 10=PWM定时器时钟, 11=保留
 *   BIT2-BIT0: PRESCALE[2:0](预分频系数)
 *     0=不分频, 1=2分频, …, 7=16分频
 */

/* 高速PWM模块A地址寄存器(8位,选择操作通道或寄存器地址) */
#define     HSPWMA_ADR              (*(unsigned char volatile xdata *)0xfbf1)
/* 功能:
 * – 选择HSPWMA的操作目标(通道或配置寄存器)
 * 位定义:
 *   BIT7-BIT4: RESERVED(保留)
 *   BIT3-BIT0: CH_SEL[3:0](通道选择,0~15通道)
 */

/* 高速PWM模块A数据寄存器(8位,存储PWM占空比或配置数据) */
#define     HSPWMA_DAT              (*(unsigned char volatile xdata *)0xfbf2)
/* 功能:
 * – 根据HSPWMA_ADR指定的通道或寄存器,写入占空比数据或配置参数
 * – 8位数据范围:0~255(对应占空比0%~100%)
 */

/* 高速PWM模块B配置寄存器(8位,控制HSPWMB的工作模式与参数) */
#define     HSPWMB_CFG              (*(unsigned char volatile xdata *)0xfbf4)
/* 功能:与HSPWMA_CFG类似,控制HSPWMB模块的参数 */

/* 高速PWM模块B地址寄存器(8位,选择HSPWMB的操作通道) */
#define     HSPWMB_ADR              (*(unsigned char volatile xdata *)0xfbf5)
/* 功能:与HSPWMA_ADR类似,选择HSPWMB的目标通道(0~15通道) */

/* 高速PWM模块B数据寄存器(8位,存储HSPWMB的占空比数据) */
#define     HSPWMB_DAT              (*(unsigned char volatile xdata *)0xfbf6)
/* 功能:与HSPWMA_DAT类似,写入对应通道的占空比数据 */

/
//FA00H-FAFFH
/

/* DMA内存到内存传输配置寄存器(8位,设置传输参数) */
#define     DMA_M2M_CFG             (*(unsigned char volatile xdata *)0xfa00)
/* 功能:
 * – 配置DMA内存到内存(M2M)传输的工作模式、数据宽度、自动重装等
 * 关键位定义:
 *   BIT7: AUTO_RELOAD(自动重装模式)
 *     1=传输完成后自动重新启动,0=单次传输
 *   BIT6-BIT5: DATA_WIDTH[1:0](数据宽度选择)
 *     00=字节(8位), 01=半字(16位), 10=字(32位), 11=保留
 *   BIT4: TRANS_DIR(传输方向)
 *     0=内存到内存(M2M), 1=外设到内存(仅示意,具体需参考手册)
 *   BIT3: SRC_INC(源地址自增)
 *     1=每次传输后源地址递增,0=固定源地址
 *   BIT2: DST_INC(目标地址自增)
 *     1=每次传输后目标地址递增,0=固定目标地址
 *   BIT1-BIT0: RESERVED(保留位,写0)
 */

/* DMA内存到内存控制寄存器(8位,启动/停止传输及中断控制) */
#define     DMA_M2M_CR              (*(unsigned char volatile xdata *)0xfa01)
/* 功能:
 * – 控制DMA传输的启停、中断使能
 * 关键位定义:
 *   BIT7: DMA_EN(DMA使能)
 *     1=使能DMA模块,0=禁止
 *   BIT6: TX_START(传输启动)
 *     1=启动传输(自动清零)
 *   BIT5: RX_START(接收启动,仅M2M模式有效)
 *   BIT4: INT_EN(中断使能)
 *     1=传输完成后触发中断
 *   BIT3-BIT0: RESERVED(保留位,写0)
 */

/* DMA内存到内存状态寄存器(8位,显示传输状态) */
#define     DMA_M2M_STA             (*(unsigned char volatile xdata *)0xfa02)
/* 功能:
 * – 反映DMA传输的当前状态
 * 关键位定义:
 *   BIT7: BUSY(传输忙标志)
 *     1=正在传输,0=空闲
 *   BIT6: TX_DONE(发送完成标志)
 *     1=发送通道传输完成(需软件清零)
 *   BIT5: RX_DONE(接收完成标志,仅M2M有效)
 *   BIT4: ERROR(传输错误标志)
 *     1=发生错误(如地址越界)
 *   BIT3-BIT0: RESERVED(保留位)
 */

/* DMA内存到内存传输计数寄存器(8位,设置/读取剩余传输次数) */
#define     DMA_M2M_AMT             (*(unsigned char volatile xdata *)0xfa03)
/* 功能:
 * – 存储剩余传输次数(每次传输后递减)
 * – 范围:0~255(0表示256次传输)
 */

/* DMA内存到内存完成标志寄存器(8位,快速查询完成状态) */
#define     DMA_M2M_DONE            (*(unsigned char volatile xdata *)0xfa04)
/* 功能:
 * – 快速获取所有通道的传输完成状态
 * 位定义:
 *   BIT7: CH7_DONE, …, BIT0: CH0_DONE(1=通道传输完成)
 */

/* DMA发送地址寄存器高8位(32位地址的高字节) */
#define     DMA_M2M_TXAH            (*(unsigned char volatile xdata *)0xfa05)
/* 功能:存储发送源地址的高8位(BIT23-BIT16) */

/* DMA发送地址寄存器低8位(32位地址的低字节) */
#define     DMA_M2M_TXAL            (*(unsigned char volatile xdata *)0xfa06)
/* 功能:存储发送源地址的低8位(BIT7-BIT0) */

/* DMA接收地址寄存器高8位(32位地址的高字节) */
#define     DMA_M2M_RXAH            (*(unsigned char volatile xdata *)0xfa07)
/* 功能:存储接收目标地址的高8位(BIT23-BIT16) */

/* DMA接收地址寄存器低8位(32位地址的低字节) */
#define     DMA_M2M_RXAL            (*(unsigned char volatile xdata *)0xfa08)
/* 功能:存储接收目标地址的低8位(BIT7-BIT0) */

/* DMA ADC配置寄存器(8位,设置DMA与ADC协同工作参数) */
#define     DMA_ADC_CFG             (*(unsigned char volatile xdata *)0xfa10)
/* 功能:
 * – 配置ADC数据的DMA传输模式、触发源、数据宽度等
 * 关键位定义:
 *   BIT7: TRIG_SRC(触发源选择)
 *     0=软件触发, 1=ADC转换完成触发
 *   BIT6-BIT5: DATA_WIDTH[1:0](数据宽度)
 *     00=8位, 01=12位(右对齐), 10=12位(左对齐), 11=16位
 *   BIT4: AUTO_TRANS(自动传输模式)
 *     1=ADC每次转换完成后自动触发DMA传输
 *   BIT3: SRC_INC(源地址自增,ADC数据寄存器固定,故通常为0)
 *   BIT2: DST_INC(目标地址自增,1=每次传输后地址递增)
 *   BIT1-BIT0: CH_SEL[1:0](ADC通道选择,00=CH0, 01=CH1, …, 11=CH3)
 */

/* DMA ADC控制寄存器(8位,启动传输及中断控制) */
#define     DMA_ADC_CR              (*(unsigned char volatile xdata *)0xfa11)
/* 功能:
 * – 控制DMA传输的启停、中断使能
 * 关键位定义:
 *   BIT7: DMA_EN(DMA使能)
 *     1=使能DMA通道, 0=禁止
 *   BIT6: TX_START(软件触发传输,自动清零)
 *   BIT5: INT_EN(传输完成中断使能)
 *   BIT4: FIFO_EN(FIFO模式使能,需硬件FIFO支持)
 *   BIT3-BIT0: RESERVED(保留,写0)
 */

/* DMA ADC状态寄存器(8位,显示传输状态) */
#define     DMA_ADC_STA             (*(unsigned char volatile xdata *)0xfa12)
/* 功能:
 * – 反映DMA传输状态及ADC转换状态
 * 关键位定义:
 *   BIT7: BUSY(传输忙标志,1=正在传输)
 *   BIT6: TX_DONE(传输完成标志,1=完成,需软件清零)
 *   BIT5: ADC_BUSY(ADC转换忙标志,1=ADC正在转换)
 *   BIT4: ERROR(传输错误标志,1=地址越界或参数错误)
 *   BIT3-BIT0: RESERVED(保留)
 */

/* DMA ADC接收地址寄存器(16位,存储ADC数据目标地址) */
#define     DMA_ADC_RXA             (*(unsigned  int volatile xdata *)0xfa17)
#define     DMA_ADC_RXAH            (*(unsigned char volatile xdata *)0xfa17)  // 高8位
#define     DMA_ADC_RXAL            (*(unsigned char volatile xdata *)0xfa18)  // 低8位
/* 功能:
 * – 设置DMA传输的目标地址(ADC数据写入的内存地址)
 * – 16位地址范围:0x0000~0xFFFF(XRAM或内部RAM)
 */

/* DMA ADC扩展配置寄存器(8位,设置高级功能参数) */
#define     DMA_ADC_CFG2            (*(unsigned char volatile xdata *)0xfa19)
/* 功能:
 * – 配置过采样、平均滤波等高级功能
 * 关键位定义:
 *   BIT7-BIT4: OSR[3:0](过采样率,0=无过采样, 1=2倍, …, 15=16倍)
 *   BIT3-BIT0: AVG[3:0](平均值计算次数,0=不平均, 1=2次, …, 15=16次)
 */

/* DMA ADC通道扫描寄存器0(8位,配置通道扫描序列低4位) */
#define     DMA_ADC_CHSW0           (*(unsigned char volatile xdata *)0xfa1a)
/* 功能:
 * – 配置ADC通道扫描顺序(低4位对应CH0~CH3,高4位对应CH4~CH7)
 * 位定义:
 *   BIT7-BIT4: CH7-CH4扫描使能(1=使能对应通道扫描)
 *   BIT3-BIT0: CH3-CH0扫描使能(1=使能对应通道扫描)
 */

/* DMA ADC通道扫描寄存器1(8位,配置通道扫描序列高4位) */
#define     DMA_ADC_CHSW1           (*(unsigned char volatile xdata *)0xfa1b)
/* 功能:
 * – 扩展通道扫描配置(适用于CH8~CH15,若支持)
 * 位定义:
 *   BIT7-BIT0: CH15-CH8扫描使能(1=使能对应通道扫描)
 */

/* DMA SPI配置寄存器(8位,设置SPI与DMA协同工作参数) */
#define     DMA_SPI_CFG             (*(unsigned char volatile xdata *)0xfa20)
/* 功能:
 * – 配置SPI数据的DMA传输模式、数据宽度、触发源及SPI模式
 * 关键位定义:
 *   BIT7: TRIG_SRC(触发源选择)
 *     0=软件触发, 1=SPI发送完成触发, 2=SPI接收完成触发(具体需手册确认)
 *   BIT6-BIT5: DATA_WIDTH[1:0](数据宽度)
 *     00=8位, 01=16位, 10=32位, 11=保留
 *   BIT4: SPI_MODE(SPI主从模式选择)
 *     0=主模式, 1=从模式
 *   BIT3: AUTO_RELOAD(自动重装模式)
 *     1=传输完成后自动重启, 0=单次传输
 *   BIT2: MSB_FIRST(数据传输顺序)
 *     1=高位先行, 0=低位先行
 *   BIT1-BIT0: RESERVED(保留位,写0)
 */

/* DMA SPI控制寄存器(8位,启动传输及中断控制) */
#define     DMA_SPI_CR              (*(unsigned char volatile xdata *)0xfa21)
/* 功能:
 * – 控制DMA传输的启停、中断使能及SPI操作
 * 关键位定义:
 *   BIT7: DMA_EN(DMA使能)
 *     1=使能DMA通道, 0=禁止
 *   BIT6: TX_START(启动发送传输)
 *     1=软件触发发送(自动清零)
 *   BIT5: RX_START(启动接收传输)
 *     1=软件触发接收(自动清零)
 *   BIT4: INT_EN(传输完成中断使能)
 *     1=使能中断, 0=禁止
 *   BIT3: SPI_RW(读写方向控制)
 *     0=发送模式, 1=接收模式
 *   BIT2-BIT0: RESERVED(保留位,写0)
 */

/* DMA SPI状态寄存器(8位,显示传输状态) */
#define     DMA_SPI_STA             (*(unsigned char volatile xdata *)0xfa22)
/* 功能:
 * – 反映DMA传输及SPI接口状态
 * 关键位定义:
 *   BIT7: BUSY(传输忙标志)
 *     1=正在传输, 0=空闲
 *   BIT6: TX_DONE(发送完成标志)
 *     1=发送传输完成(需软件清零)
 *   BIT5: RX_DONE(接收完成标志)
 *     1=接收传输完成(需软件清零)
 *   BIT4: ERROR(传输错误标志)
 *     1=地址越界或SPI模式错误
 *   BIT3-BIT0: RESERVED(保留位)
 */

/* DMA SPI传输计数寄存器(8位,设置/读取剩余传输次数) */
#define     DMA_SPI_AMT             (*(unsigned char volatile xdata *)0xfa23)
/* 功能:
 * – 存储剩余传输次数(每次传输后递减)
 * – 范围:0~255(0表示256次传输)
 */

/* DMA SPI完成标志寄存器(8位,快速查询各通道完成状态) */
#define     DMA_SPI_DONE            (*(unsigned char volatile xdata *)0xfa24)
/* 功能:
 * – 每位对应一个DMA通道的完成状态(如BIT0=通道0完成)
 */

/* DMA SPI发送地址寄存器(16位,存储SPI发送数据的源地址) */
#define     DMA_SPI_TXA             (*(unsigned  int volatile xdata *)0xfa25)
#define     DMA_SPI_TXAH            (*(unsigned char volatile xdata *)0xfa25)  // 高8位
#define     DMA_SPI_TXAL            (*(unsigned char volatile xdata *)0xfa26)  // 低8位
/* 功能:设置SPI发送数据的内存源地址(如数组首地址) */

/* DMA SPI接收地址寄存器(16位,存储SPI接收数据的目标地址) */
#define     DMA_SPI_RXA             (*(unsigned  int volatile xdata *)0xfa27)
#define     DMA_SPI_RXAH            (*(unsigned char volatile xdata *)0xfa27)  // 高8位
#define     DMA_SPI_RXAL            (*(unsigned char volatile xdata *)0xfa28)  // 低8位
/* 功能:设置SPI接收数据的内存目标地址(如缓冲区首地址) */

/* DMA SPI扩展配置寄存器(8位,设置高级传输参数) */
#define     DMA_SPI_CFG2            (*(unsigned char volatile xdata *)0xfa29)
/* 功能:
 * – 配置传输方向、地址自增模式等高级功能
 * 关键位定义:
 *   BIT7: DST_INC(目标地址自增)
 *     1=接收地址每次传输后递增, 0=固定目标地址
 *   BIT6: SRC_INC(源地址自增)
 *     1=发送地址每次传输后递增, 0=固定源地址
 *   BIT5: TRANS_DIR(传输方向)
 *     0=单向传输, 1=双向传输(发送+接收)
 *   BIT4-BIT0: RESERVED(保留位,写0)
 */

/**
 * UART1发送通道配置寄存器 (地址:0xfa30)
 * 控制DMA UART1发送通道的基本工作模式和特性
 * 位定义:
 *   7: 保留
 *   6: 保留
 *   5: 源地址增量模式 (0=固定, 1=递增)
 *   4: 目标地址增量模式 (0=固定, 1=递增)
 *   3: 数据宽度选择 (0=字节, 1=字)
 *   2: 通道使能 (1=使能)
 *   1: 自动重装使能 (1=使能)
 *   0: 触发源选择 (0=软件触发, 1=硬件触发)
 */
#define     DMA_UR1T_CFG            (*(unsigned char volatile xdata *)0xfa30)

/**
 * UART1发送通道控制寄存器 (地址:0xfa31)
 * 用于启动和控制DMA数据传输操作
 * 位定义:
 *   7: 保留
 *   6: 保留
 *   5: 保留
 *   4: 保留
 *   3: 保留
 *   2: 保留
 *   1: 传输完成中断使能 (1=使能)
 *   0: 启动DMA传输 (1=启动, 硬件自动清零)
 */
#define     DMA_UR1T_CR             (*(unsigned char volatile xdata *)0xfa31)

/**
 * UART1发送通道状态寄存器 (地址:0xfa32)
 * 反映DMA UART1发送通道的当前工作状态
 * 位定义:
 *   7: 保留
 *   6: 保留
 *   5: 保留
 *   4: 保留
 *   3: 保留
 *   2: 传输错误标志 (1=发生错误)
 *   1: 自动重装标志 (1=已重装)
 *   0: 传输完成标志 (1=传输完成)
 */
#define     DMA_UR1T_STA            (*(unsigned char volatile xdata *)0xfa32)

/**
 * UART1发送通道传输数量寄存器 (地址:0xfa33)
 * 指定DMA要传输的数据单元数量 (字节或字, 由CFG寄存器决定)
 * 有效范围: 0x01-0xFF (1-255个单元)
 */
#define     DMA_UR1T_AMT            (*(unsigned char volatile xdata *)0xfa33)

/**
 * UART1发送通道已完成数量寄存器 (地址:0xfa34)
 * 显示DMA已经完成传输的数据单元数量
 * 该寄存器用于监控当前DMA传输进度
 */
#define     DMA_UR1T_DONE           (*(unsigned char volatile xdata *)0xfa34)

/**
 * UART1发送通道源地址寄存器 (地址:0xfa35-0xfa36)
 * 存储DMA传输的源数据起始地址 (16位)
 * 数据将从该地址读取并传输到UART1发送缓冲区
 */
#define     DMA_UR1T_TXA            (*(unsigned  int volatile xdata *)0xfa35)  // 16位地址访问
#define     DMA_UR1T_TXAH           (*(unsigned char volatile xdata *)0xfa35)  // 高8位地址
#define     DMA_UR1T_TXAL           (*(unsigned char volatile xdata *)0xfa36)  // 低8位地址

/* DMA UART1接收配置寄存器(8位,设置UART1接收的DMA参数) */
#define     DMA_UR1R_CFG            (*(unsigned char volatile xdata *)0xfa38)
/* 功能:
 * – 配置UART1接收数据的DMA传输模式、触发源、数据宽度等
 * 关键位定义:
 *   BIT7: TRIG_SRC(触发源选择)
 *     0=软件触发, 1=UART1接收完成(RXD)触发
 *   BIT6-BIT5: DATA_WIDTH[1:0](数据宽度)
 *     00=8位, 01=16位(仅适用于UART1的多字节模式)
 *   BIT4: AUTO_RELOAD(自动重装模式)
 *     1=传输完成后自动重启, 0=单次传输
 *   BIT3: DST_INC(目标地址自增)
 *     1=每次传输后目标地址递增(适用于连续数据接收)
 *   BIT2-BIT0: RESERVED(保留位,写0)
 */

/* DMA UART1接收控制寄存器(8位,启动接收及中断控制) */
#define     DMA_UR1R_CR             (*(unsigned char volatile xdata *)0xfa39)
/* 功能:
 * – 控制UART1接收DMA的启停、中断使能
 * 关键位定义:
 *   BIT7: DMA_EN(DMA使能)
 *     1=使能接收通道, 0=禁止
 *   BIT6: RX_START(软件触发接收)
 *     1=启动接收传输(自动清零)
 *   BIT5: INT_EN(接收完成中断使能)
 *     1=使能中断, 0=禁止
 *   BIT4-BIT0: RESERVED(保留位,写0)
 */

/* DMA UART1接收状态寄存器(8位,显示接收状态) */
#define     DMA_UR1R_STA            (*(unsigned char volatile xdata *)0xfa3a)
/* 功能:
 * – 反映UART1接收DMA的传输状态
 * 关键位定义:
 *   BIT7: BUSY(传输忙标志)
 *     1=正在接收, 0=空闲
 *   BIT6: RX_DONE(接收完成标志)
 *     1=传输完成(需软件清零)
 *   BIT5: ERROR(传输错误标志)
 *     1=地址越界或参数错误
 *   BIT4-BIT0: RESERVED(保留位)
 */

/* DMA UART1接收计数寄存器(8位,设置/读取剩余接收次数) */
#define     DMA_UR1R_AMT            (*(unsigned char volatile xdata *)0xfa3b)
/* 功能:存储剩余接收次数(每次接收后递减) */

/* DMA UART1接收完成标志寄存器(8位,快速查询接收完成状态) */
#define     DMA_UR1R_DONE           (*(unsigned char volatile xdata *)0xfa3c)
/* 功能:BIT0=1表示UART1接收DMA传输完成 */

/* DMA UART1接收地址寄存器(16位,存储接收数据的目标地址) */
#define     DMA_UR1R_RXA            (*(unsigned  int volatile xdata *)0xfa3d)
#define     DMA_UR1R_RXAH           (*(unsigned char volatile xdata *)0xfa3d)  // 高8位
#define     DMA_UR1R_RXAL           (*(unsigned char volatile xdata *)0xfa3e)  // 低8位
/* 功能:设置UART1接收数据的内存目标地址(如接收缓冲区的首地址) */

#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)

/**
 * LCD显示通道配置寄存器 (地址:0xfa70)
 * 控制DMA LCD显示通道的基本工作模式和特性
 * 位定义:
 *   7: 显示使能控制 (1=开启显示)
 *   6: 显示方向控制 (0=水平刷新, 1=垂直刷新)
 *   5: 数据传输模式 (0=单次传输, 1=循环传输)
 *   4: 源地址增量模式 (0=固定, 1=递增)
 *   3: 目标地址增量模式 (0=固定, 1=递增)
 *   2: 数据宽度选择 (0=字节, 1=字)
 *   1: 通道使能 (1=使能)
 *   0: 触发源选择 (0=软件触发, 1=硬件触发)
 */
#define     DMA_LCM_CFG             (*(unsigned char volatile xdata *)0xfa70)

/**
 * LCD显示通道控制寄存器 (地址:0xfa71)
 * 用于启动和控制DMA数据传输操作
 * 位定义:
 *   7: 显示更新请求 (1=请求更新显示)
 *   6: 清屏操作 (1=执行清屏, 硬件自动清零)
 *   5: 显示内容反转 (1=反转显示)
 *   4: 保留
 *   3: 保留
 *   2: 显示亮度控制位2
 *   1: 显示亮度控制位1
 *   0: 启动DMA传输 (1=启动, 硬件自动清零)
 */
#define     DMA_LCM_CR              (*(unsigned char volatile xdata *)0xfa71)

/**
 * LCD显示通道状态寄存器 (地址:0xfa72)
 * 反映DMA LCD显示通道的当前工作状态
 * 位定义:
 *   7: 显示就绪标志 (1=显示模块就绪)
 *   6: 清屏完成标志 (1=清屏操作完成)
 *   5: 数据传输忙标志 (1=正在传输数据)
 *   4: 帧更新完成标志 (1=一帧数据传输完成)
 *   3: 传输错误标志 (1=发生错误)
 *   2: 保留
 *   1: 自动重装标志 (1=已重装)
 *   0: 传输完成标志 (1=传输完成)
 */
#define     DMA_LCM_STA             (*(unsigned char volatile xdata *)0xfa72)

/**
 * LCD显示通道传输数量寄存器 (地址:0xfa73)
 * 指定DMA要传输的数据单元数量 (字节或字, 由CFG寄存器决定)
 * 对于LCD显示,通常表示一行或一列的像素点数
 * 有效范围: 0x01-0xFF (1-255个单元)
 */
#define     DMA_LCM_AMT             (*(unsigned char volatile xdata *)0xfa73)

/**
 * LCD显示通道已完成数量寄存器 (地址:0xfa74)
 * 显示DMA已经完成传输的数据单元数量
 * 该寄存器用于监控当前DMA传输进度
 */
#define     DMA_LCM_DONE            (*(unsigned char volatile xdata *)0xfa74)

/**
 * LCD显示通道源地址寄存器 (地址:0xfa75-0xfa76)
 * 存储DMA传输的源数据起始地址 (16位)
 * 数据将从该地址读取并传输到LCD控制器
 */
#define     DMA_LCM_TXA             (*(unsigned  int volatile xdata *)0xfa75)  // 16位地址访问
#define     DMA_LCM_TXAH            (*(unsigned char volatile xdata *)0xfa75)  // 高8位地址
#define     DMA_LCM_TXAL            (*(unsigned char volatile xdata *)0xfa76)  // 低8位地址

/**
 * LCD显示通道目标地址寄存器 (地址:0xfa77-0xfa78)
 * 存储DMA传输的目标数据起始地址 (16位)
 * 通常指向LCD控制器的显示缓冲区
 */
#define     DMA_LCM_RXA             (*(unsigned  int volatile xdata *)0xfa77)  // 16位地址访问
#define     DMA_LCM_RXAH            (*(unsigned char volatile xdata *)0xfa77)  // 高8位地址
#define     DMA_LCM_RXAL            (*(unsigned char volatile xdata *)0xfa78)  // 低8位地址

/
//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);        
            }

/** USB模块基地址 */
#define     USBBASE                 0

/**
 * 功能地址寄存器 (Function Address Register)
 * 地址偏移: 0x00 (相对于USB模块基址)
 * 用于设置USB设备的功能地址
 * 位定义:
 *   7: UPDATE – 更新功能地址标志 (写1触发更新)
 *   6-0: 功能地址值 (0-127)
 */
#define     FADDR                   (USBBASE + 0)
#define     UPDATE                  0x80    // FADDR寄存器的第7位: 更新触发位

/**
 * 电源与状态寄存器 (Power and Status Register)
 * 地址偏移: 0x01 (相对于USB模块基址)
 * 控制USB模块的电源管理和基本状态
 * 位定义:
 *   7: ISOUD – 等时传输上溢/下溢标志
 *   6: 保留
 *   5: 保留
 *   4: 保留
 *   3: USBRST – USB复位控制位 (1=复位USB模块)
 *   2: USBRSU – USB恢复控制位 (1=恢复USB通信)
 *   1: USBSUS – USB挂起状态位 (1=设备挂起)
 *   0: ENSUS – 使能挂起功能位 (1=允许设备进入挂起状态)
 */
#define     POWER                   (USBBASE + 1)
#define     ISOUD                   0x80    // POWER寄存器的第7位: 等时传输状态标志
#define     USBRST                  0x08    // POWER寄存器的第3位: USB复位控制
#define     USBRSU                  0x04    // POWER寄存器的第2位: USB恢复控制
#define     USBSUS                  0x02    // POWER寄存器的第1位: USB挂起状态
#define     ENSUS                   0x01    // POWER寄存器的第0位: 允许挂起功能

/**
 * 中断状态寄存器1 (Interrupt Status Register 1)
 * 地址偏移: 0x02 (相对于USB模块基址)
 * 反映USB模块各端点的中断状态
 * 读操作时: 显示各端点的中断标志状态
 * 写操作时: 对相应位写1可清除中断标志
 */
#define     INTRIN1                 (USBBASE + 2)

/**
 * 端点中断标志位定义 (INTRIN1寄存器位定义)
 * 这些标志位指示对应的USB端点是否产生了中断事件
 */
#define     EP5INIF                 0x20    // 位5: 端点5输入(IN)中断标志
#define     EP4INIF                 0x10    // 位4: 端点4输入(IN)中断标志
#define     EP3INIF                 0x08    // 位3: 端点3输入(IN)中断标志
#define     EP2INIF                 0x04    // 位2: 端点2输入(IN)中断标志
#define     EP1INIF                 0x02    // 位1: 端点1输入(IN)中断标志
#define     EP0IF                   0x01    // 位0: 端点0中断标志(控制端点)

/**
 * 输出中断状态寄存器1 (Output Interrupt Status Register 1)
 * 地址偏移: 0x04 (相对于USB模块基址)
 * 反映USB模块各输出端点的中断状态
 * 读操作时: 显示各输出端点的中断标志状态
 * 写操作时: 对相应位写1可清除中断标志
 */
#define     INTROUT1                (USBBASE + 4)

/**
 * 输出端点中断标志位定义 (INTROUT1寄存器位定义)
 * 这些标志位指示对应的USB输出端点是否产生了中断事件
 */
#define     EP5OUTIF                0x20    // 位5: 端点5输出(OUT)中断标志
#define     EP4OUTIF                0x10    // 位4: 端点4输出(OUT)中断标志
#define     EP3OUTIF                0x08    // 位3: 端点3输出(OUT)中断标志
#define     EP2OUTIF                0x04    // 位2: 端点2输出(OUT)中断标志
#define     EP1OUTIF                0x02    // 位1: 端点1输出(OUT)中断标志
                                            // 位0: 保留(未使用)

/**
 * USB通用中断状态寄存器 (USB General Interrupt Status Register)
 * 地址偏移: 0x06 (相对于USB模块基址)
 * 反映USB模块的通用中断状态和控制USB模块的全局中断
 * 读操作时: 显示各通用中断的标志状态
 * 写操作时: 对相应位写1可清除中断标志
 */
#define     INTRUSB                 (USBBASE + 6)

/**
 * 通用中断标志位定义 (INTRUSB寄存器位定义)
 * 这些标志位指示USB模块产生的各类全局事件
 */
#define     SOFIF                   0x08    // 位3: 帧开始(Start of Frame)中断标志
#define     RSTIF                   0x04    // 位2: USB复位(Reset)中断标志
#define     RSUIF                   0x02    // 位1: USB恢复(Resume)中断标志
#define     SUSIF                   0x01    // 位0: USB挂起(Suspend)中断标志

/**
 * 输入中断使能寄存器1 (Input Interrupt Enable Register 1)
 * 地址偏移: 0x07 (相对于USB模块基址)
 * 控制USB模块各输入端点的中断使能状态
 * 读操作时: 显示各端点的中断使能状态
 * 写操作时: 设置相应位可使能/禁用对应端点的中断
 */
#define     INTRIN1E                (USBBASE + 7)

/**
 * 输入端点中断使能位定义 (INTRIN1E寄存器位定义)
 * 这些位控制对应的USB输入端点是否允许产生中断
 */
#define     EP5INIE                 0x20    // 位5: 端点5输入(IN)中断使能
#define     EP4INIE                 0x10    // 位4: 端点4输入(IN)中断使能
#define     EP3INIE                 0x08    // 位3: 端点3输入(IN)中断使能
#define     EP2INIE                 0x04    // 位2: 端点2输入(IN)中断使能
#define     EP1INIE                 0x02    // 位1: 端点1输入(IN)中断使能
#define     EP0IE                   0x01    // 位0: 端点0中断使能(控制端点)

/**
 * 输出中断使能寄存器1 (Output Interrupt Enable Register 1)
 * 地址偏移: 0x09 (相对于USB模块基址)
 * 控制USB模块各输出端点的中断使能状态
 * 读操作时: 显示各输出端点的中断使能状态
 * 写操作时: 设置相应位可使能/禁用对应端点的中断
 */
#define     INTROUT1E               (USBBASE + 9)

/**
 * 输出端点中断使能位定义 (INTROUT1E寄存器位定义)
 * 这些位控制对应的USB输出端点是否允许产生中断
 */
#define     EP5OUTIE                0x20    // 位5: 端点5输出(OUT)中断使能
#define     EP4OUTIE                0x10    // 位4: 端点4输出(OUT)中断使能
#define     EP3OUTIE                0x08    // 位3: 端点3输出(OUT)中断使能
#define     EP2OUTIE                0x04    // 位2: 端点2输出(OUT)中断使能
#define     EP1OUTIE                0x02    // 位1: 端点1输出(OUT)中断使能
                                            // 位0: 保留(未使用)

/**
 * USB通用中断使能寄存器 (USB General Interrupt Enable Register)
 * 地址偏移: 0x0B (相对于USB模块基址)
 * 控制USB模块的通用中断使能状态
 * 读操作时: 显示各通用中断的使能状态
 * 写操作时: 设置相应位可使能/禁用对应类型的中断
 */
#define     INTRUSBE                (USBBASE + 11)

/**
 * 通用中断使能位定义 (INTRUSBE寄存器位定义)
 * 这些位控制对应的USB全局事件是否允许产生中断
 */
#define     SOFIE                   0x08    // 位3: 帧开始(Start of Frame)中断使能
#define     RSTIE                   0x04    // 位2: USB复位(Reset)中断使能
#define     RSUIE                   0x02    // 位1: USB恢复(Resume)中断使能
#define     SUSIE                   0x01    // 位0: USB挂起(Suspend)中断使能

/**
 * 帧计数寄存器1 (Frame Count Register 1)
 * 地址偏移: 0x0C (相对于USB模块基址)
 * 存储USB帧计数的低8位
 * 用于指示当前USB总线的帧号(每1ms一个帧)
 */
#define     FRAME1                  (USBBASE + 12)

/**
 * 帧计数寄存器2 (Frame Count Register 2)
 * 地址偏移: 0x0D (相对于USB模块基址)
 * 存储USB帧计数的高4位
 * 与FRAME1共同组成一个12位的帧计数器(0-4095)
 */
#define     FRAME2                  (USBBASE + 13)

/**
 * 端点索引寄存器 (Endpoint Index Register)
 * 地址偏移: 0x0E (相对于USB模块基址)
 * 选择当前要操作的USB端点(0-7)
 * 写操作: 设置要访问的端点编号
 * 读操作: 返回当前选中的端点编号
 */
#define     INDEX                   (USBBASE + 14)

/**
 * 输入端点最大包长寄存器 (Input Endpoint Maximum Packet Size Register)
 * 地址偏移: 0x10 (相对于USB模块基址)
 * 配置输入端点(IN)的最大数据包大小
 * 每个端点的配置由4位组成,共可配置8个端点
 */
#define     INMAXP                  (USBBASE + 16)

/**
 * 端点0控制和状态寄存器0 (Endpoint 0 Control and Status Register 0)
 * 地址偏移: 0x11 (相对于USB模块基址)
 * 控制和反映端点0的操作状态和配置
 * 位定义:
 */
#define     CSR0                    (USBBASE + 17)
#define     SSUEND                  0x80    // 位7: 停止发送端点数据
#define     SOPRDY                  0x40    // 位6: 设置输出准备好
#define     SDSTL                   0x20    // 位5: 发送数据阶段结束
#define     SUEND                   0x10    // 位4: 设置端点未准备好
#define     DATEND                  0x08    // 位3: 数据阶段结束
#define     STSTL                   0x04    // 位2: 状态阶段开始
#define     IPRDY                   0x02    // 位1: 输入缓冲区准备好
#define     OPRDY                   0x01    // 位0: 输出缓冲区准备好

/**
 * 输入端点控制和状态寄存器1 (Input Endpoint Control and Status Register 1)
 * 地址偏移: 0x11 (相对于USB模块基址)
 * 控制和反映输入端点(设备发送)的操作状态
 */
#define     INCSR1                  (USBBASE + 17)
#define     INCLRDT                 0x40    // 位6: 清除数据Toggle位
#define     INSTSTL                 0x20    // 位5: 启动状态阶段
#define     INSDSTL                 0x10    // 位4: 发送数据阶段结束
#define     INFLUSH                 0x08    // 位3: 清空FIFO缓冲区
#define     INUNDRUN                0x04    // 位2: 下溢错误标志
#define     INFIFONE                0x02    // 位1: FIFO非空标志
#define     INIPRDY                 0x01    // 位0: 输入缓冲区准备好

/**
 * 输入端点控制和状态寄存器2 (Input Endpoint Control and Status Register 2)
 * 地址偏移: 0x12 (相对于USB模块基址)
 * 提供更高级的输入端点配置选项
 */
#define     INCSR2                  (USBBASE + 18)
#define     INAUTOSET               0x80    // 位7: 自动设置数据Toggle位
#define     INISO                   0x40    // 位6: 等时传输模式
#define     INMODEIN                0x20    // 位5: 输入端点模式
#define     INMODEOUT               0x00    // 位5: 输出端点模式(与INMODEIN互斥)
#define     INENDMA                 0x10    // 位4: 结束DMA传输
#define     INFCDT                  0x08    // 位3: 强制清除数据Toggle位

/**
 * 输出端点最大包长寄存器 (Output Endpoint Maximum Packet Size Register)
 * 地址偏移: 0x13 (相对于USB模块基址)
 * 配置输出端点(主机发送)的最大数据包大小
 */
#define     OUTMAXP                 (USBBASE + 19)

/**
 * 输出端点控制和状态寄存器1 (Output Endpoint Control and Status Register 1)
 * 地址偏移: 0x14 (相对于USB模块基址)
 * 控制和反映输出端点(设备接收)的操作状态
 */
#define     OUTCSR1                 (USBBASE + 20)
#define     OUTCLRDT                0x80    // 位7: 清除数据Toggle位
#define     OUTSTSTL                0x40    // 位6: 启动状态阶段
#define     OUTSDSTL                0x20    // 位5: 发送数据阶段结束
#define     OUTFLUSH                0x10    // 位4: 清空FIFO缓冲区
#define     OUTDATERR               0x08    // 位3: 数据错误标志
#define     OUTOVRRUN               0x04    // 位2: 上溢错误标志
#define     OUTFIFOFUL              0x02    // 位1: FIFO满标志
#define     OUTOPRDY                0x01    // 位0: 输出缓冲区准备好

/**
 * 输出端点控制和状态寄存器2 (Output Endpoint Control and Status Register 2)
 * 地址偏移: 0x15 (相对于USB模块基址)
 * 提供更高级的输出端点配置选项
 */
#define     OUTCSR2                 (USBBASE + 21)
#define     OUTAUTOCLR              0x80    // 位7: 自动清除中断标志
#define     OUTISO                  0x40    // 位6: 等时传输模式
#define     OUTENDMA                0x20    // 位5: 结束DMA传输
#define     OUTDMAMD                0x10    // 位4: DMA模式选择

/**
 * 输出端点计数寄存器 (Output Endpoint Count Register)
 * 地址偏移: 0x16-0x17 (相对于USB模块基址)
 * 存储当前输出端点FIFO中的有效字节数
 */
#define     COUNT0                  (USBBASE + 22)
#define     OUTCOUNT1               (USBBASE + 22)  // 低8位计数
#define     OUTCOUNT2               (USBBASE + 23)  // 高8位计数

/**
 * USB端点FIFO数据寄存器 (Endpoint FIFO Data Registers)
 * 地址偏移: 0x20-0x25 (相对于USB模块基址)
 * 用于与USB端点FIFO进行数据读写操作
 */
#define     FIFO0                   (USBBASE + 32)  // 端点0 FIFO
#define     FIFO1                   (USBBASE + 33)  // 端点1 FIFO
#define     FIFO2                   (USBBASE + 34)  // 端点2 FIFO
#define     FIFO3                   (USBBASE + 35)  // 端点3 FIFO
#define     FIFO4                   (USBBASE + 36)  // 端点4 FIFO
#define     FIFO5                   (USBBASE + 37)  // 端点5 FIFO

/**
 * USB跟踪控制寄存器 (USB Trace Control Register)
 * 地址偏移: 0x30 (相对于USB模块基址)
 * 控制USB模块的调试跟踪功能
 */
#define     UTRKCTL                 (USBBASE + 48)

/**
 * USB跟踪状态寄存器 (USB Trace Status Register)
 * 地址偏移: 0x31 (相对于USB模块基址)
 * 反映USB模块的调试跟踪状态
 */
#define     UTRKSTS                 (USBBASE + 49)

/
//Interrupt Vector
/

/**
 * 外部中断0 (INT0)
 * 向量号: 0
 * 入口地址: 0x0003
 * 对应P3.2引脚的外部中断
 */
#define     INT0_VECTOR             0       //0003H

/**
 * 定时器/计数器0溢出中断 (TMR0)
 * 向量号: 1
 * 入口地址: 0x000B
 * 定时器/计数器0溢出时触发
 */
#define     TMR0_VECTOR             1       //000BH

/**
 * 外部中断1 (INT1)
 * 向量号: 2
 * 入口地址: 0x0013
 * 对应P3.3引脚的外部中断
 */
#define     INT1_VECTOR             2       //0013H

/**
 * 定时器/计数器1溢出中断 (TMR1)
 * 向量号: 3
 * 入口地址: 0x001B
 * 定时器/计数器1溢出时触发
 */
#define     TMR1_VECTOR             3       //001BH

/**
 * 串口1中断 (UART1)
 * 向量号: 4
 * 入口地址: 0x0023
 * 串口1接收或发送完成时触发
 */
#define     UART1_VECTOR            4       //0023H

/**
 * ADC转换完成中断 (ADC)
 * 向量号: 5
 * 入口地址: 0x002B
 * ADC转换完成时触发
 */
#define     ADC_VECTOR              5       //002BH

/**
 * 低电压检测中断 (LVD)
 * 向量号: 6
 * 入口地址: 0x0033
 * 检测到电压低于阈值时触发
 */
#define     LVD_VECTOR              6       //0033H

/**
 * 串口2中断 (UART2)
 * 向量号: 8
 * 入口地址: 0x0043
 * 串口2接收或发送完成时触发
 */
#define     UART2_VECTOR            8       //0043H

/**
 * SPI总线中断 (SPI)
 * 向量号: 9
 * 入口地址: 0x004B
 * SPI数据传输完成时触发
 */
#define     SPI_VECTOR              9       //004BH

/**
 * 外部中断2 (INT2)
 * 向量号: 10
 * 入口地址: 0x0053
 * 对应P4.2引脚的外部中断
 */
#define     INT2_VECTOR             10      //0053H

/**
 * 外部中断3 (INT3)
 * 向量号: 11
 * 入口地址: 0x005B
 * 对应P4.3引脚的外部中断
 */
#define     INT3_VECTOR             11      //005BH

/**
 * 定时器/计数器2溢出中断 (TMR2)
 * 向量号: 12
 * 入口地址: 0x0063
 * 定时器/计数器2溢出时触发
 */
#define     TMR2_VECTOR             12      //0063H

/**
 * 用户自定义中断 (USER)
 * 向量号: 13
 * 入口地址: 0x006B
 * 预留的用户自定义中断
 */
#define     USER_VECTOR             13      //006BH

/**
 * 外部中断4 (INT4)
 * 向量号: 16
 * 入口地址: 0x0083
 * 对应P3.0引脚的外部中断
 */
#define     INT4_VECTOR             16      //0083H

/**
 * 串口3中断 (UART3)
 * 向量号: 17
 * 入口地址: 0x008B
 * 串口3接收或发送完成时触发
 */
#define     UART3_VECTOR            17      //008BH

/**
 * 串口4中断 (UART4)
 * 向量号: 18
 * 入口地址: 0x0093
 * 串口4接收或发送完成时触发
 */
#define     UART4_VECTOR            18      //0093H

/**
 * 定时器/计数器3溢出中断 (TMR3)
 * 向量号: 19
 * 入口地址: 0x009B
 * 定时器/计数器3溢出时触发
 */
#define     TMR3_VECTOR             19      //009BH

/**
 * 定时器/计数器4溢出中断 (TMR4)
 * 向量号: 20
 * 入口地址: 0x00A3
 * 定时器/计数器4溢出时触发
 */
#define     TMR4_VECTOR             20      //00A3H

/**
 * 比较器中断 (CMP)
 * 向量号: 21
 * 入口地址: 0x00AB
 * 比较器输出状态变化时触发
 */
#define     CMP_VECTOR              21      //00ABH

/**
 * I2C总线中断 (I2C)
 * 向量号: 24
 * 入口地址: 0x00C3
 * I2C数据传输完成或状态变化时触发
 */
#define     I2C_VECTOR              24      //00C3H

/**
 * USB中断 (USB)
 * 向量号: 25
 * 入口地址: 0x00CB
 * USB通信相关事件触发
 */
#define     USB_VECTOR              25      //00CBH

/**
 * PWM模块A中断 (PWMA)
 * 向量号: 26
 * 入口地址: 0x00D3
 * PWM模块A周期结束或比较匹配时触发
 */
#define     PWMA_VECTOR             26      //00D3H

/**
 * PWM模块B中断 (PWMB)
 * 向量号: 27
 * 入口地址: 0x00DB
 * PWM模块B周期结束或比较匹配时触发
 */
#define     PWMB_VECTOR             27      //00DBH

/**
 * 低功耗唤醒中断 (TKSU)
 * 向量号: 35
 * 入口地址: 0x011B
 * 用于从低功耗模式唤醒的中断
 */
#define     TKSU_VECTOR             35      //011BH

/**
 * RTC实时时钟中断 (RTC)
 * 向量号: 36
 * 入口地址: 0x0123
 * RTC定时或闹钟事件触发
 */
#define     RTC_VECTOR              36      //0123H

/**
 * 端口0引脚中断 (P0INT)
 * 向量号: 37
 * 入口地址: 0x012B
 * P0端口任意引脚电平变化触发
 */
#define     P0INT_VECTOR            37      //012BH

/**
 * 端口1引脚中断 (P1INT)
 * 向量号: 38
 * 入口地址: 0x0133
 * P1端口任意引脚电平变化触发
 */
#define     P1INT_VECTOR            38      //0133H

/**
 * 端口2引脚中断 (P2INT)
 * 向量号: 39
 * 入口地址: 0x013B
 * P2端口任意引脚电平变化触发
 */
#define     P2INT_VECTOR            39      //013BH

/**
 * 端口3引脚中断 (P3INT)
 * 向量号: 40
 * 入口地址: 0x0143
 * P3端口任意引脚电平变化触发
 */
#define     P3INT_VECTOR            40      //0143H

/**
 * 端口4引脚中断 (P4INT)
 * 向量号: 41
 * 入口地址: 0x014B
 * P4端口任意引脚电平变化触发
 */
#define     P4INT_VECTOR            41      //014BH

/**
 * 端口5引脚中断 (P5INT)
 * 向量号: 42
 * 入口地址: 0x0153
 * P5端口任意引脚电平变化触发
 */
#define     P5INT_VECTOR            42      //0153H

/**
 * 端口6引脚中断 (P6INT)
 * 向量号: 43
 * 入口地址: 0x015B
 * P6端口任意引脚电平变化触发
 */
#define     P6INT_VECTOR            43      //015BH

/**
 * 端口7引脚中断 (P7INT)
 * 向量号: 44
 * 入口地址: 0x0163
 * P7端口任意引脚电平变化触发
 */
#define     P7INT_VECTOR            44      //0163H

/**
 * DMA存储器到存储器传输完成中断 (DMA_M2M)
 * 向量号: 47
 * 入口地址: 0x017B
 * DMA模块存储器到存储器传输完成时触发
 */
#define     DMA_M2M_VECTOR          47      //017BH

/**
 * DMA ADC传输完成中断 (DMA_ADC)
 * 向量号: 48
 * 入口地址: 0x0183
 * DMA模块与ADC数据传输完成时触发
 */
#define     DMA_ADC_VECTOR          48      //0183H

/**
 * DMA SPI传输完成中断 (DMA_SPI)
 * 向量号: 49
 * 入口地址: 0x018B
 * DMA模块与SPI数据传输完成时触发
 */
#define     DMA_SPI_VECTOR          49      //018BH

/**
 * DMA UART1发送完成中断 (DMA_UR1T)
 * 向量号: 50
 * 入口地址: 0x0193
 * DMA模块与UART1发送数据传输完成时触发
 */
#define     DMA_UR1T_VECTOR         50      //0193H

/**
 * DMA UART1接收完成中断 (DMA_UR1R)
 * 向量号: 51
 * 入口地址: 0x019B
 * DMA模块与UART1接收数据传输完成时触发
 */
#define     DMA_UR1R_VECTOR         51      //019BH

/**
 * DMA UART2发送完成中断 (DMA_UR2T)
 * 向量号: 52
 * 入口地址: 0x01A3
 * DMA模块与UART2发送数据传输完成时触发
 */
#define     DMA_UR2T_VECTOR         52      //01A3H

/**
 * DMA UART2接收完成中断 (DMA_UR2R)
 * 向量号: 53
 * 入口地址: 0x01AB
 * DMA模块与UART2接收数据传输完成时触发
 */
#define     DMA_UR2R_VECTOR         53      //01ABH

/**
 * DMA UART3发送完成中断 (DMA_UR3T)
 * 向量号: 54
 * 入口地址: 0x01B3
 * DMA模块与UART3发送数据传输完成时触发
 */
#define     DMA_UR3T_VECTOR         54      //01B3H

/**
 * DMA UART3接收完成中断 (DMA_UR3R)
 * 向量号: 55
 * 入口地址: 0x01BB
 * DMA模块与UART3接收数据传输完成时触发
 */
#define     DMA_UR3R_VECTOR         55      //01BBH

/**
 * DMA UART4发送完成中断 (DMA_UR4T)
 * 向量号: 56
 * 入口地址: 0x01C3
 * DMA模块与UART4发送数据传输完成时触发
 */
#define     DMA_UR4T_VECTOR         56      //01C3H

/**
 * DMA UART4接收完成中断 (DMA_UR4R)
 * 向量号: 57
 * 入口地址: 0x01CB
 * DMA模块与UART4接收数据传输完成时触发
 */
#define     DMA_UR4R_VECTOR         57      //01CBH

/**
 * DMA LCD显示传输完成中断 (DMA_LCM)
 * 向量号: 58
 * 入口地址: 0x01D3
 * DMA模块与LCD显示数据传输完成时触发
 */
#define     DMA_LCM_VECTOR          58      //01D3H

/**
 * LCD显示更新完成中断 (LCM)
 * 向量号: 59
 * 入口地址: 0x01DB
 * LCD显示更新完成时触发
 */
#define     LCM_VECTOR              59      //01DBH

/

/**
 * 启用扩展SFR访问模式
 * 功能: 将MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象切换为扩展SFR(XSFR)
 * 实现: 通过设置P_SW2寄存器的最高位(第7位)来切换访问模式
 */
#define    EAXSFR()        P_SW2 |= 0x80        /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */

/**
 * 启用扩展RAM访问模式
 * 功能: 将MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象切换为扩展RAM(XRAM)
 * 实现: 通过清除P_SW2寄存器的最高位(第7位)来切换访问模式
 */
#define    EAXRAM()        P_SW2 &= ~0x80        /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */

/
/**
 * 单周期空操作指令
 * 执行1个机器周期的空操作,产生1个周期的延时
 */
#define NOP1()  _nop_()

/**
 * 多周期空操作指令生成
 * 通过递归组合NOP1()生成2-40个周期的延时
 */
#define NOP2()  NOP1(),NOP1()      // 2个周期
#define NOP3()  NOP2(),NOP1()      // 3个周期
#define NOP4()  NOP3(),NOP1()      // 4个周期
#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()     // 40个周期

/**
 * 可变参数空操作指令
 * 使用##预处理器连接符实现参数化调用
 * 例如:NOP(5) 等价于 NOP5(),生成5个周期的延时
 */
#define NOP(N)  NOP##N()

/

#endif                    // 条件编译结束

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容