#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 // 条件编译结束





















暂无评论内容