STC32G.H中文注释
2023-3-10 11:16 来自 t176 发布 @ 综合讨论
本帖最后由 t176 于 2023-3-11 17:54 编辑
最新核对版本留意本帖子编辑时间,
如果错误纠正请跟帖说明所在行数 以及提供相应更正内容.
注释内容仅供参考.请以STC官方文档为准.
现在正式开始学习
欲善其事,必先利其器..
做的第一件事,就是对32头文件的 汉化整理,这样后期学习或者开发能极大的增加效率
5295
5296
以下是对STC32G.H中文注释.由我开个头
欢迎各路大神 进行二次校对注释
复制代码
最新核对版本留意本帖子编辑时间,
如果错误纠正请跟帖说明所在行数 以及提供相应更正内容.
注释内容仅供参考.请以STC官方文档为准.
现在正式开始学习
欲善其事,必先利其器..
做的第一件事,就是对32头文件的 汉化整理,这样后期学习或者开发能极大的增加效率
5295
5296
以下是对STC32G.H中文注释.由我开个头
欢迎各路大神 进行二次校对注释
- #ifndef __STC32G_H_
- #define __STC32G_H_
- /////////////////////////////////////////////////
- #include <intrins.h>
- /** 各寄存器作用
- sfr指特殊功能寄存器
- sbit指特殊位寄存器。用于指定单个位的寄存器操作 */
- sfr P0 = 0x80; // 定义P0为单字节特殊功能寄存器,并赋初值0x80,P0用于管脚的输入和输出控制
- sbit P00 = P0 ^ 0; // 定义P00为P0的第0位
- sbit P01 = P0 ^ 1; // 定义P01为P0的第1位
- sbit P02 = P0 ^ 2; // 定义P02为P0的第2位
- sbit P03 = P0 ^ 3; // 定义P03为P0的第3位
- sbit P04 = P0 ^ 4; // 定义P04为P0的第4位
- sbit P05 = P0 ^ 5; // 定义P05为P0的第5位
- sbit P06 = P0 ^ 6; // 定义P06为P0的第6位
- sbit P07 = P0 ^ 7; // 定义P07为P0的第7位
- sfr SP = 0x81; // 定义SP为单字节特殊功能寄存器,并赋初值0x81,存放堆栈指针
- sfr DPL = 0x82; // 定义DPL为单字节特殊功能寄存器,并赋初值0x82,存放数据的低8位
- sfr DPH = 0x83; // 定义DPH为单字节特殊功能寄存器,并赋初值0x83,存放数据的高8位
- sfr DPXL = 0x84; // 定义DPXL为单字节特殊功能寄存器,并赋初值0x84,数据指针的低8位
- sfr SPH = 0x85; // 定义SPH为单字节特殊功能寄存器,并赋初值0x85,堆栈指针的高8位
- sfr PCON = 0x87; // 定义PCON为单字节特殊功能寄存器,并赋初值0x87,用于控制MCU的电源管理及时钟选择
- sbit SMOD = PCON ^ 7; // 定义SMOD为PCON的第7位,串口波特率加倍控制位
- sbit SMOD0 = PCON ^ 6; // 定义SMOD0为PCON的第6位,串口波特率加倍控制位
- sbit LVDF = PCON ^ 5; // 定义LVDF为PCON的第5位,低压检测标志位
- sbit POF = PCON ^ 4; // 定义POF为PCON的第4位,上电自动复位标志位
- sbit GF1 = PCON ^ 3; // 定义GF1为PCON的第3位,通用标志位1
- sbit GF0 = PCON ^ 2; // 设置GF0位,用作通用标志,可以由软件或硬件改变其值
- sbit PD = PCON ^ 1; // PD置位表示进入掉电模式
- sbit IDL = PCON ^ 0; // IDL置位表示进入空闲模式
- sfr TCON = 0x88; // TCON寄存器是定时器/计数器的控制寄存器
- sbit TF1 = TCON ^ 7; // TF1是定时器1中断标志位
- sbit TR1 = TCON ^ 6; // TR1是定时器1运行控制位
- sbit TF0 = TCON ^ 5; // TF0是定时器0中断标志位
- sbit TR0 = TCON ^ 4; // TR0是定时器0运行控制位
- sbit IE1 = TCON ^ 3; // IE1是定时器1中断允许位
- sbit IT1 = TCON ^ 2; // IT1是定时器1中断类型控制位
- sbit IE0 = TCON ^ 1; // IE0是定时器0中断允许位
- sbit IT0 = TCON ^ 0; // IT0是定时器0中断类型控制位
- sfr TMOD = 0x89; // TMOD寄存器是定时器/计数器的模式寄存器
- sbit T1_GATE = TMOD ^ 7; // T1_GATE是定时器1门控位
- sbit T1_CT = TMOD ^ 6; // T1_CT是定时器1计数方式控制位
- sbit T1_M1 = TMOD ^ 5; // T1_M1、T1_M0是定时器1的工作方式控制位
- sbit T1_M0 = TMOD ^ 4;
- sbit T0_GATE = TMOD ^ 3; // T0_GATE是定时器0门控位
- sbit T0_CT = TMOD ^ 2; // T0_CT是定时器0计数方式控制位
- sbit T0_M1 = TMOD ^ 1; // T0_M1、T0_M0是定时器0的工作方式控制位
- sbit T0_M0 = TMOD ^ 0; // T0_M1、T0_M0是定时器0的工作方式控制位
- sfr TL0 = 0x8a; // 定时器0低字节
- sfr TL1 = 0x8b; // 定时器1低字节
- sfr TH0 = 0x8c; // 定时器0高字节
- sfr TH1 = 0x8d; // 定时器1高字节
- sfr AUXR = 0x8e; // 辅助寄存器,用于配置各种外设、内部功能及时钟运行方式等
- sbit T0x12 = AUXR ^ 7; // 定时器0时钟源选择位,1为12T,0为指令周期(可选不同倍频)
- sbit T1x12 = AUXR ^ 6; // 定时器1时钟源选择位,1为12T,0为指令周期(可选不同倍频)
- sbit S1M0x6 = AUXR ^ 5; // UART1工作模式选择位,1为多机通信方式0,0为普通异步工作方式
- sbit T2R = AUXR ^ 4; // 定时器2启动位,置1启动计时,置0停止计时
- sbit T2_CT = AUXR ^ 3; // 定时器2工作模式选择位,1为计数模式,0为定时模式
- sbit T2x12 = AUXR ^ 2; // 定时器2时钟源选择位,1为12T,0为指令周期(可选不同倍频)
- sbit EXTRAM = AUXR ^ 1; // 片内扩展RAM使能位,1为启用扩展RAM,0为禁用扩展RAM
- sbit S1BRT = AUXR ^ 0; // UART1波特率发生器特殊工作方式选择位,1为定时器1时钟源选择Fosc/4,0为从T1传输波特率重载值
- sfr INTCLKO = 0x8f; // 外部时钟输出控制寄存器
- sbit EX4 = INTCLKO ^ 6; // INT4外部中断事件输出控制位,1为高电平有效,0为下降沿有效
- sbit EX3 = INTCLKO ^ 5; // INT3外部中断事件输出控制位,1为高电平有效,0为下降沿有效
- sbit EX2 = INTCLKO ^ 4; // INT2外部中断事件输出控制位,1为高电平有效,0为下降沿有效
- sbit T2CLKO = INTCLKO ^ 2; // 定时器2时钟输出控制位,1为输出高电平,0为输出低电平
- sbit T1CLKO = INTCLKO ^ 1; // 定时器1时钟输出控制位,1为输出高电平,0为输出低电平
- sbit T0CLKO = INTCLKO ^ 0; // 定时器0时钟输出控制位,1为输出高电平,0为输出低电平
- /** STC32G.H头文件中的P1寄存器 */
- sfr P1 = 0x90;
- /** P1口第0位引脚,例如P10表示P1.0 */
- sbit P10 = P1 ^ 0;
- /** P1口第1位引脚,例如P11表示P1.1 */
- sbit P11 = P1 ^ 1;
- /** P1口第2位引脚,例如P12表示P1.2 */
- sbit P12 = P1 ^ 2;
- /** P1口第3位引脚,例如P13表示P1.3 */
- sbit P13 = P1 ^ 3;
- /** P1口第4位引脚,例如P14表示P1.4 */
- sbit P14 = P1 ^ 4;
- /** P1口第5位引脚,例如P15表示P1.5 */
- sbit P15 = P1 ^ 5;
- /** P1口第6位引脚,例如P16表示P1.6 */
- sbit P16 = P1 ^ 6;
- /** P1口第7位引脚,例如P17表示P1.7 */
- sbit P17 = P1 ^ 7;
- /** P1口模式寄存器1 */
- sfr P1M1 = 0x91;
- /** P1口模式寄存器0 */
- sfr P1M0 = 0x92;
- /** P0口模式寄存器1 */
- sfr P0M1 = 0x93;
- /** P0口模式寄存器0 */
- sfr P0M0 = 0x94;
- /** P2口模式寄存器1 */
- sfr P2M1 = 0x95;
- /** P2口模式寄存器0 */
- sfr P2M0 = 0x96;
- /** 辅助寄存器2,用于控制CAN和LIN总线 */
- sfr AUXR2 = 0x97;
- /** CAN总线选择控制位,为1时选择CAN通道1 */
- sbit CANSEL = AUXR2 ^ 3;
- /** CAN通道2使能控制位,为1时使能CAN通道2 */
- sbit CAN2EN = AUXR2 ^ 2;
- /** CAN总线使能控制位,为1时使能CAN总线 */
- sbit CANEN = AUXR2 ^ 1;
- /** LIN总线使能控制位,为1时使能LIN总线 */
- sbit LINEN = AUXR2 ^ 0;
- /** 定义串口控制寄存器SCON的地址 */
- sfr SCON = 0x98;
- /** 定义串口控制寄存器SCON的数据位,分别是工作模式选择位 */
- sbit SM0 = SCON ^ 7; // 串口工作模式选择位0
- sbit SM1 = SCON ^ 6; // 串口工作模式选择位1
- sbit SM2 = SCON ^ 5; // 串口工作模式选择位2
- /** 定义串口控制寄存器SCON的数据位,分别是接收器使能位、发送器使能位、发送数据位、接收数据位 */
- sbit REN = SCON ^ 4; // 接收器使能位
- sbit TB8 = SCON ^ 3; // 发送数据位,用于校验
- sbit RB8 = SCON ^ 2; // 接收数据位,用于校验
- sbit TI = SCON ^ 1; // 发送器中断标志位
- sbit RI = SCON ^ 0; // 接收器中断标志位
- /** 定义串口缓存寄存器SBUF的地址 */
- sfr SBUF = 0x99;
- /** 定义另外一个串口控制寄存器S2CON的地址 */
- sfr S2CON = 0x9a;
- /** 定义S2CON寄存器的数据位,分别是工作模式选择位 */
- sbit S2SM0 = S2CON ^ 7; // 串口2工作模式选择位0
- sbit S2SM1 = S2CON ^ 6; // 串口2工作模式选择位1
- sbit S2SM2 = S2CON ^ 5; // 串口2工作模式选择位2
- /** 定义S2CON寄存器的数据位,分别是接收器使能位、发送器使能位、发送数据位、接收数据位 */
- sbit S2REN = S2CON ^ 4; // 串口2接收器使能位
- sbit S2TB8 = S2CON ^ 3; // 串口2发送数据位,用于校验
- sbit S2RB8 = S2CON ^ 2; // 串口2接收数据位,用于校验
- sbit S2TI = S2CON ^ 1; // 串口2发送器中断标志位
- sbit S2RI = S2CON ^ 0; // 串口2接收器中断标志位
- /** 定义串口2的缓存寄存器S2BUF的地址 */
- sfr S2BUF = 0x9b;
- /** 定义内部RC振荡器带宽控制寄存器IRCBAND的地址 */
- sfr IRCBAND = 0x9d;
- /*
- 定义一个位变量USBCKS,它是通过IRCBAND寄存器的第7位来控制USB时钟的。
- */
- sbit USBCKS = IRCBAND ^ 7;
- /*
- 定义一个位变量USBCKS2,它是通过IRCBAND寄存器的第6位来控制USB时钟的。
- */
- sbit USBCKS2 = IRCBAND ^ 6;
- /*
- 定义一个位变量HIRCSEL1,它是通过IRCBAND寄存器的第1位来控制内部高速时钟(HIRC)的。
- */
- sbit HIRCSEL1 = IRCBAND ^ 1;
- /*
- 定义一个位变量HIRCSEL0,它是通过IRCBAND寄存器的第0位来控制内部高速时钟(HIRC)的。
- */
- sbit HIRCSEL0 = IRCBAND ^ 0;
- /*
- 定义一个特殊功能寄存器LIRTRIM,用于调节低速内部时钟(LIRC)的频率。
- */
- sfr LIRTRIM = 0x9e;
- /*
- 定义一个特殊功能寄存器IRTRIM,用于调节内部时钟(HIRC、LIRC)的频率。
- */
- sfr IRTRIM = 0x9f;
- /*
- 定义一个8位端口寄存器P2,用于控制单片机的P2端口。
- */
- sfr P2 = 0xa0;
- /*
- 定义8个位变量,分别对应P2端口的8个引脚。
- */
- sbit P20 = P2 ^ 0;
- sbit P21 = P2 ^ 1;
- sbit P22 = P2 ^ 2;
- sbit P23 = P2 ^ 3;
- sbit P24 = P2 ^ 4;
- sbit P25 = P2 ^ 5;
- sbit P26 = P2 ^ 6;
- sbit P27 = P2 ^ 7;
- /*
- 定义一个特殊功能寄存器BUS_SPEED,用于设置I2C总线的速率。
- */
- sfr BUS_SPEED = 0xa1;
- /*
- 定义一个特殊功能寄存器P_SW1,用于控制特定功能的开关。
- */
- sfr P_SW1 = 0xa2;
- /* S1_S1和S1_S0引脚定义,用于控制外设1的功能选择 */
- sbit S1_S1 = P_SW1 ^ 7;
- sbit S1_S0 = P_SW1 ^ 6;
- /* CAN_S1引脚定义,用于控制CAN总线的通讯速率选择 */
- sbit CAN_S1 = P_SW1 ^ 5;
- /* CAN_S0引脚定义,用于控制CAN总线的通讯速率选择 */
- sbit CAN_S0 = P_SW1 ^ 4;
- // 定义 SPI_S1 为 P_SW1 中的第三个引脚,用于控制 SPI 从机模式下的速率
- sbit SPI_S1 = P_SW1 ^ 3;
- // 定义 SPI_S0 为 P_SW1 中的第二个引脚,用于控制 SPI 从机模式下的速率
- sbit SPI_S0 = P_SW1 ^ 2;
- // 定义 LIN_S1 为 P_SW1 中的第一个引脚,用于控制 LIN 总线的波特率
- sbit LIN_S1 = P_SW1 ^ 1;
- // 定义 LIN_S0 为 P_SW1 中的第零个引脚,用于控制 LIN 总线的波特率
- sbit LIN_S0 = P_SW1 ^ 0;
- // 定义 V33TRIM 寄存器,用于调整内部 3.3V 电压的偏移值
- sfr V33TRIM = 0xa3;
- // 定义 BGTRIM 寄存器,用于调整内部参考电压的偏移值
- sfr BGTRIM = 0xa5;
- // 定义 VRTRIM 寄存器,用于调整内部比较器参考电压的偏移值
- sfr VRTRIM = 0xa6;
- // 定义 IE 寄存器,用于控制中断使能和优先级
- sfr IE = 0xa8;
- // 定义 EA 为 IE 寄存器的最高位,用于全局中断使能
- sbit EA = IE ^ 7;
- // 定义 ELVD 为 IE 寄存器的第六位,用于低电压检测中断使能
- sbit ELVD = IE ^ 6;
- // 定义 EADC 为 IE 寄存器的第五位,用于ADC转换完成中断使能
- sbit EADC = IE ^ 5;
- // 定义 ES 为 IE 寄存器的第四位,用于串口中断使能
- sbit ES = IE ^ 4;
- // 定义 ET1 为 IE 寄存器的第三位,用于定时器1中断使能
- sbit ET1 = IE ^ 3;
- // 定义 EX1 为 IE 寄存器的第二位,用于外部中断1使能
- sbit EX1 = IE ^ 2;
- // 定义 ET0 为 IE 寄存器的第一位,用于定时器0中断使能
- sbit ET0 = IE ^ 1;
- // 定义 EX0 为 IE 寄存器的最低位,用于外部中断0使能
- sbit EX0 = IE ^ 0;
- // 定义 SADDR 寄存器,用于从机地址的设定
- sfr SADDR = 0xa9;
- sfr WKTCL = 0xaa; // 看门狗定时器低8位地址
- sfr WKTCH = 0xab; // 看门狗定时器高8位地址
- sfr S3CON = 0xac; // 串口3控制寄存器地址
- sbit S3SM0 = S3CON ^ 7; // 串口3模式位0
- sbit S3ST3 = S3CON ^ 6; // 串口3多主机通信位
- sbit S3SM2 = S3CON ^ 5; // 串口3模式位2
- sbit S3REN = S3CON ^ 4; // 串口3接收使能位
- sbit S3TB8 = S3CON ^ 3; // 串口3传输数据位8
- sbit S3RB8 = S3CON ^ 2; // 串口3接收数据位8
- sbit S3TI = S3CON ^ 1; // 串口3发送中断标志位
- sbit S3RI = S3CON ^ 0; // 串口3接收中断标志位
- sfr S3BUF = 0xad; // 串口3数据缓冲寄存器地址
- sfr TA = 0xae; // 定时器A寄存器地址
- sfr IE2 = 0xaf; // 中断使能寄存器2地址
- // 定义 EUSB 为中断使能寄存器 IE2 的第 7 位
- sbit EUSB = IE2 ^ 7;
- // 定义 ET4 为中断使能寄存器 IE2 的第 6 位
- sbit ET4 = IE2 ^ 6;
- // 定义 ET3 为中断使能寄存器 IE2 的第 5 位
- sbit ET3 = IE2 ^ 5;
- // 定义 ES4 为中断使能寄存器 IE2 的第 4 位
- sbit ES4 = IE2 ^ 4;
- // 定义 ES3 为中断使能寄存器 IE2 的第 3 位
- sbit ES3 = IE2 ^ 3;
- // 定义 ET2 为中断使能寄存器 IE2 的第 2 位
- sbit ET2 = IE2 ^ 2;
- // 定义 ESPI 为中断使能寄存器 IE2 的第 1 位
- sbit ESPI = IE2 ^ 1;
- // 定义 ES2 为中断使能寄存器 IE2 的第 0 位
- sbit ES2 = IE2 ^ 0;
- // 定义 P3 为特殊功能寄存器地址,用于控制 P3 引脚的输入输出状态和上下拉电阻状态
- sfr P3 = 0xb0;
- // 定义 P30 为 P3 引脚的第 0 位
- sbit P30 = P3 ^ 0;
- // 定义 P31 为 P3 引脚的第 1 位
- sbit P31 = P3 ^ 1;
- // 定义 P32 为 P3 引脚的第 2 位
- sbit P32 = P3 ^ 2;
- // 定义 P33 为 P3 引脚的第 3 位
- sbit P33 = P3 ^ 3;
- // 定义 P34 为 P3 引脚的第 4 位
- sbit P34 = P3 ^ 4;
- // 定义 P35 为 P3 引脚的第 5 位
- sbit P35 = P3 ^ 5;
- // 定义 P36 为 P3 引脚的第 6 位
- sbit P36 = P3 ^ 6;
- // 定义 P37 为 P3 引脚的第 7 位
- sbit P37 = P3 ^ 7;
- // 定义 P3M1 为 P3 引脚的模式控制寄存器地址,用于控制 P3 引脚的输入输出模式
- sfr P3M1 = 0xb1;
- // 定义 P3M0 为 P3 引脚的模式控制寄存器地址,用于控制 P3 引脚的输入输出模式
- sfr P3M0 = 0xb2;
- // 定义 P4M1 为 P4 引脚的模式控制寄存器地址,用于控制 P4 引脚的输入输出模式
- sfr P4M1 = 0xb3;
- // P4M0的地址是0xb4, 用于设置P4口的模式寄存器0
- sfr P4M0 = 0xb4;
- // IP2的地址是0xb5, 是中断优先级控制寄存器2
- sfr IP2 = 0xb5;
- // PUSB是IP2寄存器的第7位, 用于设置USB中断的优先级
- sbit PUSB = IP2 ^ 7;
- // PI2C是IP2寄存器的第6位, 用于设置I2C中断的优先级
- sbit PI2C = IP2 ^ 6;
- // PCMP是IP2寄存器的第5位, 用于设置比较器中断的优先级
- sbit PCMP = IP2 ^ 5;
- // PX4是IP2寄存器的第4位, 用于设置定时器4中断的优先级
- sbit PX4 = IP2 ^ 4;
- // PPWMB是IP2寄存器的第3位, 用于设置PWM模块B中断的优先级
- sbit PPWMB = IP2 ^ 3;
- // PPWMA是IP2寄存器的第2位, 用于设置PWM模块A中断的优先级
- sbit PPWMA = IP2 ^ 2;
- // PSPI是IP2寄存器的第1位, 用于设置SPI中断的优先级
- sbit PSPI = IP2 ^ 1;
- // PS2是IP2寄存器的第0位, 用于设置串口2中断的优先级
- sbit PS2 = IP2 ^ 0;
- // IP2H是IP2的高8位
- sfr IP2H = 0xb6;
- // PUSBH是IP2H的第7位, 用于设置USB中断的高优先级
- sbit PUSBH = IP2H ^ 7;
- // PI2CH是IP2H的第6位, 用于设置I2C中断的高优先级
- sbit PI2CH = IP2H ^ 6;
- // PCMPH是IP2H的第5位, 用于设置比较器中断的高优先级
- sbit PCMPH = IP2H ^ 5;
- // PX4H是IP2H的第4位, 用于设置定时器4中断的高优先级
- sbit PX4H = IP2H ^ 4;
- // PPWMBH是IP2H的第3位, 用于设置PWM模块B中断的高优先级
- sbit PPWMBH = IP2H ^ 3;
- // PPWMAH是IP2H的第2位, 用于设置PWM模块A中断的高优先级
- sbit PPWMAH = IP2H ^ 2;
- sbit PSPIH = IP2H ^ 1;
- // 定义PS2H为IP2H寄存器的第0个引脚
- sbit PS2H = IP2H ^ 0;
- // 定义IPH为中断优先级高八位寄存器
- sfr IPH = 0xb7;
- // 定义PLVDH为IPH寄存器的第6个引脚,表示低电压检测中断优先级
- sbit PLVDH = IPH ^ 6;
- // 定义PADCH为IPH寄存器的第5个引脚,表示ADC中断优先级
- sbit PADCH = IPH ^ 5;
- // 定义PSH为IPH寄存器的第4个引脚,表示串口中断优先级
- sbit PSH = IPH ^ 4;
- // 定义PT1H为IPH寄存器的第3个引脚,表示定时器1中断优先级
- sbit PT1H = IPH ^ 3;
- // 定义PX1H为IPH寄存器的第2个引脚,表示外部中断1优先级
- sbit PX1H = IPH ^ 2;
- // 定义PT0H为IPH寄存器的第1个引脚,表示定时器0中断优先级
- sbit PT0H = IPH ^ 1;
- // 定义PX0H为IPH寄存器的第0个引脚,表示外部中断0优先级
- sbit PX0H = IPH ^ 0;
- // 定义IP为中断优先级低八位寄存器
- sfr IP = 0xb8;
- // 定义PLVD为IP寄存器的第6个引脚,表示低电压检测中断优先级
- sbit PLVD = IP ^ 6;
- // 定义PADC为IP寄存器的第5个引脚,表示ADC中断优先级
- sbit PADC = IP ^ 5;
- // 定义PS为IP寄存器的第4个引脚,表示串口中断优先级
- sbit PS = IP ^ 4;
- // 定义PT1为IP寄存器的第3个引脚,表示定时器1中断优先级
- sbit PT1 = IP ^ 3;
- // 定义PX1为IP寄存器的第2个引脚,表示外部中断1优先级
- sbit PX1 = IP ^ 2;
- // 定义PT0为IP寄存器的第1个引脚,表示定时器0中断优先级
- sbit PT0 = IP ^ 1;
- // 定义PX0为IP寄存器的第0个引脚,表示外部中断0优先级
- sbit PX0 = IP ^ 0;
- // 定义一个特殊功能寄存器(SFR),用于设置I2C通信时的从机地址
- sfr SADEN = 0xb9;
- // 定义一个特殊功能寄存器(SFR),用于设置外设端口的功能
- sfr P_SW2 = 0xba;
- // 扩展SFR使能寄存器,7E:0000H-7E:FFFFH 如果值置1才能读写XFR,建议上电初始化时直接设置为1
- sbit EAXFR = P_SW2 ^ 7;
- // 定义一个单片机位(bit),用于表示I2C从机地址中的第5位
- sbit I2C_S1 = P_SW2 ^ 5;
- // 定义一个单片机位(bit),用于表示I2C从机地址中的第4位
- sbit I2C_S0 = P_SW2 ^ 4;
- // 定义一个单片机位(bit),用于表示比较器的输出选择
- sbit CMPO_S = P_SW2 ^ 3;
- // 定义一个单片机位(bit),用于设置S4引脚功能
- sbit S4_S = P_SW2 ^ 2;
- // 定义一个单片机位(bit),用于设置S3引脚功能
- sbit S3_S = P_SW2 ^ 1;
- // 定义一个单片机位(bit),用于设置S2引脚功能
- sbit S2_S = P_SW2 ^ 0;
- // 定义一个特殊功能寄存器(SFR),用于设置外设端口的功能
- sfr P_SW3 = 0xbb;
- // 定义一个单片机位(bit),用于设置I2S模式下的采样频率
- sbit I2S_S1 = P_SW3 ^ 7;
- // 定义一个单片机位(bit),用于设置I2S模式下的采样频率
- sbit I2S_S0 = P_SW3 ^ 6;
- // 定义一个单片机位(bit),用于设置S2引脚在SPI模式下的功能
- sbit S2SPI_S1 = P_SW3 ^ 5;
- // 定义一个单片机位(bit),用于设置S2引脚在SPI模式下的功能
- sbit S2SPI_S0 = P_SW3 ^ 4;
- // 定义一个单片机位(bit),用于设置S1引脚在SPI模式下的功能
- sbit S1SPI_S1 = P_SW3 ^ 3;
- // 定义一个单片机位(bit),用于设置S1引脚在SPI模式下的功能
- sbit S1SPI_S0 = P_SW3 ^ 2;
- // 定义一个单片机位(bit),用于表示CAN2从机地址中的第1位
- sbit CAN2_S1 = P_SW3 ^ 1;
- // 定义一个单片机位(bit),用于表示CAN2从机地址中的第0位
- sbit CAN2_S0 = P_SW3 ^ 0;
- // 定义一个特殊功能寄存器(SFR),用于配置ADC模块的工作方式
- sfr ADC_CONTR = 0xbc;
- // 定义 ADC_CONTR 的最高位,即位于地址 0xBC 的寄存器的第 7 位,作为 ADC 电源控制位
- sbit ADC_POWER = ADC_CONTR ^ 7;
- // 定义 ADC_CONTR 的第 6 位,即位于地址 0xBC 的寄存器的第 6 位,作为 ADC 启动控制位
- sbit ADC_START = ADC_CONTR ^ 6;
- // 定义 ADC_CONTR 的第 5 位,即位于地址 0xBC 的寄存器的第 5 位,作为 ADC 转换完成标志位
- sbit ADC_FLAG = ADC_CONTR ^ 5;
- // 定义 ADC_CONTR 的第 4 位,即位于地址 0xBC 的寄存器的第 4 位,作为 ADC 空闲标志位
- sbit ADC_EPWMT = ADC_CONTR ^ 4;
- // 定义 ADC 结果数据的高八位寄存器,地址为 0xBD
- sfr ADC_RES = 0xbd;
- // 定义 ADC 结果数据的低两位寄存器,地址为 0xBE
- sfr ADC_RESL = 0xbe;
- // 定义 P4 端口寄存器,地址为 0xC0
- sfr P4 = 0xc0;
- // 定义 P4 端口寄存器的第 0 位,即P4.0
- sbit P40 = P4 ^ 0;
- // 定义 P4 端口寄存器的第 1 位,即P4.1
- sbit P41 = P4 ^ 1;
- // 定义 P4 端口寄存器的第 2 位,即P4.2
- sbit P42 = P4 ^ 2;
- // 定义 P4 端口寄存器的第 3 位,即P4.3
- sbit P43 = P4 ^ 3;
- // 定义 P4 端口寄存器的第 4 位,即P4.4
- sbit P44 = P4 ^ 4;
- // 定义 P4 端口寄存器的第 5 位,即P4.5
- sbit P45 = P4 ^ 5;
- // 定义 P4 端口寄存器的第 6 位,即P4.6
- sbit P46 = P4 ^ 6;
- // 定义 P4 端口寄存器的第 7 位,即P4.7
- sbit P47 = P4 ^ 7;
- // 定义看门狗控制寄存器WDT_CONTR的地址为0xc1
- sfr WDT_CONTR = 0xc1;
- // 定义看门狗标志WDT_FLAG在WDT_CONTR中的位号为7
- sbit WDT_FLAG = WDT_CONTR ^ 7;
- // 定义使能看门狗EN_WDT在WDT_CONTR中的位号为5
- sbit EN_WDT = WDT_CONTR ^ 5;
- // 定义清除看门狗CLR_WDT在WDT_CONTR中的位号为4
- sbit CLR_WDT = WDT_CONTR ^ 4;
- // 定义看门狗空闲模式IDL_WDT在WDT_CONTR中的位号为3
- sbit IDL_WDT = WDT_CONTR ^ 3;
- // 定义IAP数据寄存器IAP_DATA的地址为0xc2
- sfr IAP_DATA = 0xc2;
- // 定义IAP地址寄存器高8位IAP_ADDRH的地址为0xc3
- sfr IAP_ADDRH = 0xc3;
- // 定义IAP地址寄存器低8位IAP_ADDRL的地址为0xc4
- sfr IAP_ADDRL = 0xc4;
- // 定义IAP命令寄存器IAP_CMD的地址为0xc5
- sfr IAP_CMD = 0xc5;
- // 定义IAP触发寄存器IAP_TRIG的地址为0xc6
- sfr IAP_TRIG = 0xc6;
- // 定义IAP控制寄存器IAP_CONTR的地址为0xc7
- sfr IAP_CONTR = 0xc7;
- // 定义IAPEN在IAP_CONTR中的位号为7,表示是否允许IAP操作
- sbit IAPEN = IAP_CONTR ^ 7;
- // 定义SWBS在IAP_CONTR中的位号为6,表示是否使用单字节编程方式
- sbit SWBS = IAP_CONTR ^ 6;
- // 定义SWRST在IAP_CONTR中的位号为5,表示是否复位IAP命令寄存器
- sbit SWRST = IAP_CONTR ^ 5;
- // 定义CMD_FAIL在IAP_CONTR中的位号为4,表示IAP命令是否执行失败
- sbit CMD_FAIL = IAP_CONTR ^ 4;
- // 定义端口5的地址为0xc8
- sfr P5 = 0xc8;
- // 定义P5.0引脚的名称为P50
- sbit P50 = P5 ^ 0;
- // 定义P5.1引脚的名称为P51
- sbit P51 = P5 ^ 1;
- // 定义P5.2引脚的名称为P52
- sbit P52 = P5 ^ 2;
- // 定义P5.3引脚的名称为P53
- sbit P53 = P5 ^ 3;
- // 定义P5.4引脚的名称为P54
- sbit P54 = P5 ^ 4;
- // 定义P5.5引脚的名称为P55
- sbit P55 = P5 ^ 5;
- // 定义P5.6引脚的名称为P56
- sbit P56 = P5 ^ 6;
- // 定义P5.7引脚的名称为P57
- sbit P57 = P5 ^ 7;
- // 定义P5口的输入输出控制寄存器的地址为0xc9
- sfr P5M1 = 0xc9;
- // 定义P5口的上拉下拉控制寄存器的地址为0xca
- sfr P5M0 = 0xca;
- // 定义P6口的输入输出控制寄存器的地址为0xcb
- sfr P6M1 = 0xcb;
- // 定义P6口的上拉下拉控制寄存器的地址为0xcc
- sfr P6M0 = 0xcc;
- // 定义串行外设接口状态寄存器的地址为0xcd
- sfr SPSTAT = 0xcd;
- // 定义SPIF标志位,表示SPI传输完成
- sbit SPIF = SPSTAT ^ 7;
- // 定义WCOL标志位,表示SPI写冲突
- sbit WCOL = SPSTAT ^ 6;
- // SPCTL: SPI控制寄存器,用于控制SPI通信的各种参数和配置
- sfr SPCTL = 0xCE;
- // SSIG: SPI控制寄存器中的位7,控制SPI通信的启动和停止
- sbit SSIG = SPCTL ^ 7;
- // SPEN: SPI控制寄存器中的位6,用于启用或禁用SPI控制器
- sbit SPEN = SPCTL ^ 6;
- // DORD: SPI控制寄存器中的位5,控制SPI通信数据的传输顺序,高位在前还是低位在前
- sbit DORD = SPCTL ^ 5;
- // MSTR: SPI控制寄存器中的位4,用于选择SPI通信的主从模式,主机还是从机
- sbit MSTR = SPCTL ^ 4;
- // CPOL: SPI控制寄存器中的位3,控制SPI通信时钟的极性,高电平还是低电平为时钟空闲态
- sbit CPOL = SPCTL ^ 3;
- // CPHA: SPI控制寄存器中的位2,控制SPI通信时钟的相位,采样数据的时刻是时钟上升沿还是下降沿
- sbit CPHA = SPCTL ^ 2;
- // SPR1: SPI控制寄存器中的位1和0,用于控制SPI通信时钟的频率,分别表示高低两位
- sbit SPR1 = SPCTL ^ 1;
- sbit SPR0 = SPCTL ^ 0;
- // SPDAT: SPI数据寄存器,用于存放SPI通信的发送或接收数据
- sfr SPDAT = 0xCF;
- // PSW: 程序状态寄存器,用于保存程序运行时的各种状态和标志
- sfr PSW = 0xD0;
- // CY: 程序状态寄存器中的位7,表示上一次运算结果是否有进位或借位,用于高精度运算和位运算
- sbit CY = PSW ^ 7;
- // AC: 程序状态寄存器中的位6,表示上一次运算结果是否有半进位或半借位,用于高精度运算
- sbit AC = PSW ^ 6;
- // F0: 程序状态寄存器中的位5,保留位,不用于程序控制
- sbit F0 = PSW ^ 5;
- // RS1和RS0: 程序状态寄存器中的位4和位3,用于控制程序运行的模式和级别,RS1和RS0组合共有4种模式
- sbit RS1 = PSW ^ 4;
- // RS1和RS0: 程序状态寄存器中的位4和位3,用于控制程序运行的模式和级别,RS1和RS0组合共有4种模式
- sbit RS0 = PSW ^ 3;
- // OV: 程序状态寄存器中的位2,表示上一次运算结果是否有溢出,用于高精度运算和位运算
- // OV为PSW(程序状态字寄存器)的第二位
- sbit OV = PSW ^ 2;
- // P为PSW的第零位
- sbit P = PSW ^ 0;
- // sfr是特殊功能寄存器,用于访问单个特定寄存器
- // PSW1是0xd1地址处的寄存器,用于访问PSW的副本
- sfr PSW1 = 0xd1;
- // T4H是0xd2地址处的寄存器,用于存储Timer4的高8位计数器值
- sfr T4H = 0xd2;
- // T4L是0xd3地址处的寄存器,用于存储Timer4的低8位计数器值
- sfr T4L = 0xd3;
- // T3H是0xd4地址处的寄存器,用于存储Timer3的高8位计数器值
- sfr T3H = 0xd4;
- // T3L是0xd5地址处的寄存器,用于存储Timer3的低8位计数器值
- sfr T3L = 0xd5;
- // T2H是0xd6地址处的寄存器,用于存储Timer2的高8位计数器值
- sfr T2H = 0xd6;
- // T2L是0xd7地址处的寄存器,用于存储Timer2的低8位计数器值
- sfr T2L = 0xd7;
- // USBCLK是0xdc地址处的寄存器,用于控制USB时钟
- sfr USBCLK = 0xdc;
- // T4T3M是0xdd地址处的寄存器,用于控制Timer4和Timer3的工作方式
- sfr T4T3M = 0xdd;
- // T4R为T4T3M的第七位,用于启用/禁用Timer4
- sbit T4R = T4T3M ^ 7;
- // T4_CT为T4T3M的第六位,用于选择Timer4的计数模式(定时器/计数器)
- sbit T4_CT = T4T3M ^ 6;
- // T4x12为T4T3M的第五位,用于控制Timer4的计数时钟频率
- sbit T4x12 = T4T3M ^ 5;
- // T4CLKO为T4T3M的第四位,用于控制Timer4的时钟输出
- sbit T4CLKO = T4T3M ^ 4;
- // 定义一个T3R的位,用于控制T3的运行或停止
- sbit T3R = T4T3M ^ 3;
- // 定义一个T3_CT的位,用于控制T3的计数模式是定时器还是计数器
- sbit T3_CT = T4T3M ^ 2;
- // 定义一个T3x12的位,用于设置T3的计数倍频是12还是48
- sbit T3x12 = T4T3M ^ 1;
- // 定义一个T3CLKO的位,用于控制T3的时钟输出
- sbit T3CLKO = T4T3M ^ 0;
- // 定义ADCCFG寄存器,用于设置ADC的工作方式
- sfr ADCCFG = 0xde;
- // 定义一个RESFMT的位,用于控制ADC转换结果的格式
- sbit RESFMT = ADCCFG ^ 5;
- // 定义IP3寄存器,用于设置外部中断3的优先级和使能
- sfr IP3 = 0xdf;
- // 定义一个PI2S的位,用于设置外部中断3的优先级为高
- sbit PI2S = IP3 ^ 3;
- // 定义一个PRTC的位,用于使能RTC中断
- sbit PRTC = IP3 ^ 2;
- // 定义一个PS4的位,用于设置外部中断3的优先级为低
- sbit PS4 = IP3 ^ 1;
- // 定义一个PS3的位,用于关闭外部中断3
- sbit PS3 = IP3 ^ 0;
- // 定义ACC寄存器,为累加器寄存器,用于存储算术运算结果
- sfr ACC = 0xe0;
- // 定义P7M1寄存器,用于设置P7口的模式
- sfr P7M1 = 0xe1;
- // 定义P7M0寄存器,用于设置P7口的模式
- sfr P7M0 = 0xe2;
- // 定义DPS寄存器,用于设置DPTR寄存器的高位
- sfr DPS = 0xe3;
- // 定义DPL1寄存器,为DPTR寄存器的低位
- sfr DPL1 = 0xe4;
- // 定义DPH1寄存器,为DPTR寄存器的高位
- sfr DPH1 = 0xe5;
- // 定义寄存器CMPCR1的地址为0xe6
- sfr CMPCR1 = 0xe6;
- // 定义控制比较器的开关位,在CMPCR1的第7位
- sbit CMPEN = CMPCR1 ^ 7;
- // 定义比较器中断标志位,在CMPCR1的第6位
- sbit CMPIF = CMPCR1 ^ 6;
- // 定义比较器中断允许位,在CMPCR1的第5位
- sbit PIE = CMPCR1 ^ 5;
- // 定义负向比较器中断允许位,在CMPCR1的第4位
- sbit NIE = CMPCR1 ^ 4;
- // 定义比较器输出使能位,在CMPCR1的第1位
- sbit CMPOE = CMPCR1 ^ 1;
- // 定义比较器输出状态位,在CMPCR1的第0位
- sbit CMPRES = CMPCR1 ^ 0;
- // 定义寄存器CMPCR2的地址为0xe7
- sfr CMPCR2 = 0xe7;
- // 定义比较器输出反相位,在CMPCR2的第7位
- sbit INVCMPO = CMPCR2 ^ 7;
- // 定义比较器滤波使能位,在CMPCR2的第6位
- sbit DISFLT = CMPCR2 ^ 6;
- // 定义寄存器P6的地址为0xe8
- sfr P6 = 0xe8;
- // 定义P6口的引脚P60,对应P6的第0位
- sbit P60 = P6 ^ 0;
- // 定义P6口的引脚P61,对应P6的第1位
- sbit P61 = P6 ^ 1;
- // 定义P6口的引脚P62,对应P6的第2位
- sbit P62 = P6 ^ 2;
- // 定义P6口的引脚P63,对应P6的第3位
- sbit P63 = P6 ^ 3;
- // 定义P6口的引脚P64,对应P6的第4位
- sbit P64 = P6 ^ 4;
- // 定义P6口的引脚P65,对应P6的第5位
- sbit P65 = P6 ^ 5;
- // 定义P6口的引脚P66,对应P6的第6位
- sbit P66 = P6 ^ 6;
- // 定义P6口的引脚P67,对应P6的第7位
- sbit P67 = P6 ^ 7;
- // 定义SFR寄存器的地址和操作方法
- sfr WTST = 0xe9; // 程序读取等待控制寄存器
- sfr CKCON = 0xea; // 时钟控制寄存器,用于控制系统时钟的分频和选择
- sfr MXAX = 0xeb; // 内部总线矩阵寄存器,用于选择内部总线矩阵的输出和输入
- sfr USBDAT = 0xec; // USB数据寄存器,用于存放从USB主机接收到的数据或将要发送给USB主机的数据
- sfr DMAIR = 0xed; // DMA中断寄存器,用于配置DMA中断的触发方式和状态
- sfr IP3H = 0xee; // 中断优先级高位寄存器,用于配置外部中断和定时器中断的优先级
- // 定义Sbit位的地址和操作方法
- sbit PI2SH = IP3H ^ 3; // 中断优先级高位寄存器的第3位,用于控制INT2中断的优先级
- sbit PRTCH = IP3H ^ 2; // 中断优先级高位寄存器的第2位,用于控制RTC中断的优先级
- sbit PS4H = IP3H ^ 1; // 中断优先级高位寄存器的第1位,用于控制INT4中断的优先级
- sbit PS3H = IP3H ^ 0; // 中断优先级高位寄存器的第0位,用于控制INT3中断的优先级
- sfr AUXINTIF = 0xef; // 外部中断和定时器中断标志寄存器,用于读取和清除外部中断和定时器中断的标志
- // 定义Sbit位的地址和操作方法
- sbit INT4IF = AUXINTIF ^ 6; // AUXINTIF寄存器的第6位,用于表示INT4中断的标志
- sbit INT3IF = AUXINTIF ^ 5; // AUXINTIF寄存器的第5位,用于表示INT3中断的标志
- sbit INT2IF = AUXINTIF ^ 4; // AUXINTIF寄存器的第4位,用于表示INT2中断的标志
- sbit T4IF = AUXINTIF ^ 2; // AUXINTIF寄存器的第2位,用于表示定时器4中断的标志
- // 定义 T3IF 为 AUXINTIF 的第一位,T3IF 用于 Timer3 的中断标志位
- sbit T3IF = AUXINTIF ^ 1;
- // 定义 T2IF 为 AUXINTIF 的第零位,T2IF 用于 Timer2 的中断标志位
- sbit T2IF = AUXINTIF ^ 0;
- // 定义 B 为特殊功能寄存器 0xF0,用于位操作
- sfr B = 0xf0;
- // 定义 CANICR 为特殊功能寄存器 0xF1,用于 CAN 总线中断控制寄存器
- sfr CANICR = 0xf1;
- // 定义 PCAN2H 为 CANICR 的第七位,表示扩展 CAN 2 中断请求
- sbit PCAN2H = CANICR ^ 7;
- // 定义 CAN2IF 为 CANICR 的第六位,表示扩展 CAN 2 中断标志位
- sbit CAN2IF = CANICR ^ 6;
- // 定义 CAN2IE 为 CANICR 的第五位,表示扩展 CAN 2 中断使能
- sbit CAN2IE = CANICR ^ 5;
- // 定义 PCAN2L 为 CANICR 的第四位,表示扩展 CAN 2 中断请求低位
- sbit PCAN2L = CANICR ^ 4;
- // 定义 PCANH 为 CANICR 的第三位,表示标准 CAN 中断请求高位
- sbit PCANH = CANICR ^ 3;
- // 定义 CANIF 为 CANICR 的第二位,表示标准 CAN 中断标志位
- sbit CANIF = CANICR ^ 2;
- // 定义 CANIE 为 CANICR 的第一位,表示标准 CAN 中断使能
- sbit CANIE = CANICR ^ 1;
- // 定义 PCANL 为 CANICR 的第零位,表示标准 CAN 中断请求低位
- sbit PCANL = CANICR ^ 0;
- // 定义 USBCON 为特殊功能寄存器 0xF4,用于 USB 控制寄存器
- sfr USBCON = 0xf4;
- // 定义 ENUSB 为 USBCON 的第七位,表示 USB 控制器使能
- sbit ENUSB = USBCON ^ 7;
- // 定义 USBRST 为 USBCON 的第六位,表示 USB 控制器复位
- sbit USBRST = USBCON ^ 6;
- // 定义 PS2M 为 USBCON 的第五位,表示 PS/2 鼠标使能
- sbit PS2M = USBCON ^ 5;
- // 定义一个位操作变量PUEN,用于控制USBCON(USB控制)寄存器中的第四个引脚
- sbit PUEN = USBCON ^ 4;
- // 定义一个位操作变量PDEN,用于控制USBCON(USB控制)寄存器中的第三个引脚
- sbit PDEN = USBCON ^ 3;
- // 定义一个位操作变量DFREC,用于控制USBCON(USB控制)寄存器中的第二个引脚
- sbit DFREC = USBCON ^ 2;
- // 定义一个位操作变量DP,用于控制USBCON(USB控制)寄存器中的第一个引脚
- sbit DP = USBCON ^ 1;
- // 定义一个位操作变量DM,用于控制USBCON(USB控制)寄存器中的第零个引脚
- sbit DM = USBCON ^ 0;
- // IAP_TPS: IAP操作控制寄存器,使用SFR特殊功能寄存器来定义(Special Function Register)
- sfr IAP_TPS = 0xf5;
- // IAP_ADDRE: IAP操作地址寄存器,使用SFR特殊功能寄存器来定义。
- sfr IAP_ADDRE = 0xf6;
- // ICHECR: 串行EEPROM 缓存读写控制寄存器,使用SFR特殊功能寄存器来定义。
- sfr ICHECR = 0xf7;
- // P7: P7端口寄存器,使用SFR特殊功能寄存器来定义。P7端口是一个8位的GPIO端口寄存器,可以进行输入/输出操作。
- sfr P7 = 0xf8;
- // P70-P77: P7端口的8个引脚,使用SBIT特殊功能寄存器来定义。
- sbit P70 = P7 ^ 0;
- sbit P71 = P7 ^ 1;
- sbit P72 = P7 ^ 2;
- sbit P73 = P7 ^ 3;
- sbit P74 = P7 ^ 4;
- sbit P75 = P7 ^ 5;
- sbit P76 = P7 ^ 6;
- sbit P77 = P7 ^ 7;
- // LINICR: LIN总线接口控制寄存器,使用SFR特殊功能寄存器来定义。LIN总线是指一种局域网通信协议,被广泛应用于汽车电子控制系统中。
- sfr LINICR = 0xf9;
- // 定义 PLINH 为 LINICR 寄存器的第3位
- sbit PLINH = LINICR ^ 3;
- // 定义 LINIF 为 LINICR 寄存器的第2位
- sbit LINIF = LINICR ^ 2;
- // 定义 LINIE 为 LINICR 寄存器的第1位
- sbit LINIE = LINICR ^ 1;
- // 定义 PLINL 为 LINICR 寄存器的第0位
- sbit PLINL = LINICR ^ 0;
- // 定义 LINAR 为地址寄存器
- sfr LINAR = 0xfa;
- // 定义 LINDR 为数据寄存器
- sfr LINDR = 0xfb;
- // 定义 USBADR 为USB地址寄存器
- sfr USBADR = 0xfc;
- // 定义 S4CON 为串口4控制寄存器
- sfr S4CON = 0xfd;
- // 定义 S4SM0 为串口4模式选择位0
- sbit S4SM0 = S4CON ^ 7;
- // 定义 S4ST4 为串口4同步/异步模式设置
- sbit S4ST4 = S4CON ^ 6;
- // 定义 S4SM2 为串口4模式选择位2
- sbit S4SM2 = S4CON ^ 5;
- // 定义 S4REN 为串口4接收使能位
- sbit S4REN = S4CON ^ 4;
- // 定义 S4TB8 为串口4发送数据第9个比特位
- sbit S4TB8 = S4CON ^ 3;
- // 定义 S4RB8 为串口4接收数据第9个比特位
- sbit S4RB8 = S4CON ^ 2;
- // 定义 S4TI 为串口4发送中断标志位
- sbit S4TI = S4CON ^ 1;
- // 定义 S4RI 为串口4接收中断标志位
- sbit S4RI = S4CON ^ 0;
- // 定义 S4BUF 为串口4数据缓冲区
- sfr S4BUF = 0xfe;
- // 定义 RSTCFG 为复位和时钟控制寄存器
- sfr RSTCFG = 0xff;
- // 定义 ENLVR 为低压复位功能使能位
- sbit ENLVR = RSTCFG ^ 6;
- // 定义 P54RST 为P5.4口复位功能使能位
- sbit P54RST = RSTCFG ^ 4;
- // 如下特殊功能寄存器位于扩展RAM区域
- // 访问这些寄存器,需先将EAXFR设置为1,才可正常读写
- // EAXFR = 1;
- // 或者
- // P_SW2 |= 0x80;
- /////////////////////////////////////////////////
- // 7E:FF00H-7E:FFFFH
- /////////////////////////////////////////////////
- /////////////////////////////////////////////////
- // 7E:FE00H-7E:FEFFH
- /////////////////////////////////////////////////
- // 定义 CLKSEL 为地址为 0x7efe00 的无符号 char 类型变量的指针
- #define CLKSEL (*(unsigned char volatile far *)0x7efe00)
- // 定义 CLKDIV 为地址为 0x7efe01 的无符号 char 类型变量的指针
- #define CLKDIV (*(unsigned char volatile far *)0x7efe01)
- // 定义 HIRCCR 为地址为 0x7efe02 的无符号 char 类型变量的指针,HIRCCR 表示高速外部晶振控制寄存器,用于设置和控制高速外部晶振的频率和开关状态
- #define HIRCCR (*(unsigned char volatile far *)0x7efe02)
- // 定义 XOSCCR 为地址为 0x7efe03 的无符号 char 类型变量的指针,XOSCCR 表示外部晶振控制寄存器,用于设置和控制外部晶振的频率和开关状态
- #define XOSCCR (*(unsigned char volatile far *)0x7efe03)
- // 定义 IRC32KCR 为地址为 0x7efe04 的无符号 char 类型变量的指针,IRC32KCR 表示32kHz 内部低速晶振控制寄存器,用于设置和控制内部低速晶振的频率和开关状态
- #define IRC32KCR (*(unsigned char volatile far *)0x7efe04)
- // 定义 MCLKOCR 为地址为 0x7efe05 的无符号 char 类型变量的指针,MCLKOCR 表示主时钟输出控制寄存器,用于控制主时钟输出的频率和开关状态
- #define MCLKOCR (*(unsigned char volatile far *)0x7efe05)
- // 定义 IRCDB 为地址为 0x7efe06 的无符号 char 类型变量的指针,IRCDB 表示 IRC 调试模式控制寄存器,用于控制调试模式下的内部晶振工作状态
- #define IRCDB (*(unsigned char volatile far *)0x7efe06)
- // 定义 IRC48MCR 为地址为 0x7efe07 的无符号 char 类型变量的指针,IRC48MCR 表示48MHz 内部高速晶振控制寄存器,用于设置和控制内部高速晶振的频率和开关状态
- #define IRC48MCR (*(unsigned char volatile far *)0x7efe07)
- // 定义 X32KCR 为地址为 0x7efe08 的无符号 char 类型变量的指针,X32KCR 表示32kHz 外部晶振控制寄存器,用于设置和控制外部32kHz 晶振的频率和开关状态
- #define X32KCR (*(unsigned char volatile far *)0x7efe08)
- // 定义 IRC48ATRIM 为地址为 0x7efe09 的无符号 char 类型变量的指针,IRC48ATRIM 表示48MHz 内部高速晶振 A 系数校准数据寄存器,用于校准内部高速晶振的频率
- #define IRC48ATRIM (*(unsigned char volatile far *)0x7efe09)
- // 定义 IRC48BTRIM 为地址为 0x7efe0a 的无符号 char 类型变量的指针,IRC48BTRIM 表示48MHz 内部高速晶振 B 系数校准数据寄存器,用于校准内部高速晶振的频率
- #define IRC48BTRIM (*(unsigned char volatile far *)0x7efe0a)
- // 定义 HSCLKDIV 为地址为 0x7efe0b 的无符号 char 类型变量的指针,HSCLKDIV 表示高速时钟分频寄存器,用于设置和控制高速时钟的分频系数
- #define HSCLKDIV (*(unsigned char volatile far *)0x7efe0b)
- // 定义 HPLLCR 为地址为 0x7efe0c 的无符号 char 类型变量的指针,HPLLCR 表示高速 PLL 控制寄存器,用于控制高速 PLL 的频率和开关状态
- #define HPLLCR (*(unsigned char volatile far *)0x7efe0c)
- // 定义 HPLLPSCR 为地址为 0x7efe0d 的无符号 char 类型变量的指针,HPLLPSCR 表示高速 PLL 分频寄存器,用于设置和控制高速 PLL 的分频系数
- #define HPLLPSCR (*(unsigned char volatile far *)0x7efe0d)
- // 定义 P0PU 为地址为 0x7efe10 的无符号 char 类型变量的指针,P0PU 表示 P0 口上拉控制寄存器,用于控制 P0 口是否开启上拉电阻
- #define P0PU (*(unsigned char volatile far *)0x7efe10)
- // 定义 P1PU 为地址为 0x7efe11 的无符号 char 类型变量的指针,P1PU 表示 P1 口上拉控制寄存器,用于控制 P1 口是否开启上拉电阻
- #define P1PU (*(unsigned char volatile far *)0x7efe11)
- // 定义 P2PU 为地址为 0x7efe12 的无符号 char 类型变量的指针,P2PU 表示 P2 口上拉控制寄存器,用于控制 P2 口是否开启上拉电阻
- #define P2PU (*(unsigned char volatile far *)0x7efe12)
- // 定义 P3PU 为地址为 0x7efe13 的无符号 char 类型变量的指针,P3PU 表示 P3 口上拉控制寄存器,用于控制 P3 口是否开启上拉电阻
- #define P3PU (*(unsigned char volatile far *)0x7efe13)
- #define P4PU (*(unsigned char volatile far *)0x7efe14) // P4~口上拉电阻控制寄存器~7EFE14H~0000,0000$
- #define P5PU (*(unsigned char volatile far *)0x7efe15) // P5~口上拉电阻控制寄存器~7EFE15H~-~-~-~xxx0,0000$
- #define P6PU (*(unsigned char volatile far *)0x7efe16) // P6~口上拉电阻控制寄存器~7EFE16H~0000,0000$
- #define P7PU (*(unsigned char volatile far *)0x7efe17) // P7~口上拉电阻控制寄存器~7EFE17H~0000,0000$
- #define P0NCS (*(unsigned char volatile far *)0x7efe18) // P0~口施密特触发控制寄存器~7EFE18H~0000,0000$
- #define P1NCS (*(unsigned char volatile far *)0x7efe19) // P1~口施密特触发控制寄存器~7EFE19H~0000,0000$
- #define P2NCS (*(unsigned char volatile far *)0x7efe1a) // P2~口施密特触发控制寄存器~7EFE1AH~0000,0000$
- #define P3NCS (*(unsigned char volatile far *)0x7efe1b) // P3~口施密特触发控制寄存器~7EFE1BH~0000,0000$
- #define P4NCS (*(unsigned char volatile far *)0x7efe1c) // P4~口施密特触发控制寄存器~7EFE1CH~0000,0000$
- #define P5NCS (*(unsigned char volatile far *)0x7efe1d) // P5~口施密特触发控制寄存器~7EFE1DH~-~-~-~xxx0,0000$
- #define P6NCS (*(unsigned char volatile far *)0x7efe1e) // P6~口施密特触发控制寄存器~7EFE1EH~0000,0000$
- #define P7NCS (*(unsigned char volatile far *)0x7efe1f) // P7~口施密特触发控制寄存器~7EFE1FH~0000,0000$
- #define P0SR (*(unsigned char volatile far *)0x7efe20) // P0~口电平转换速率寄存器~7EFE20H~1111,1111$
- #define P1SR (*(unsigned char volatile far *)0x7efe21) // P1~口电平转换速率寄存器~7EFE21H~1111,1111$
- #define P2SR (*(unsigned char volatile far *)0x7efe22) // P2~口电平转换速率寄存器~7EFE22H~1111,1111$
- #define P3SR (*(unsigned char volatile far *)0x7efe23) // P3~口电平转换速率寄存器~7EFE23H~1111,1111$
- #define P4SR (*(unsigned char volatile far *)0x7efe24) // P4~口电平转换速率寄存器~7EFE24H~1111,1111$
- #define P5SR (*(unsigned char volatile far *)0x7efe25) // P5~口电平转换速率寄存器~7EFE25H~-~-~-~xxx1,1111$
- #define P6SR (*(unsigned char volatile far *)0x7efe26) // P6~口电平转换速率寄存器~7EFE26H~1111,1111$
- #define P7SR (*(unsigned char volatile far *)0x7efe27) // P7~口电平转换速率寄存器~7EFE27H~1111,1111$
- #define P0DR (*(unsigned char volatile far *)0x7efe28) // P0~口驱动电流控制寄存器~7EFE28H~1111,1111$
- #define P1DR (*(unsigned char volatile far *)0x7efe29) // P1~口驱动电流控制寄存器~7EFE29H~1111,1111$
- #define P2DR (*(unsigned char volatile far *)0x7efe2a) // P2~口驱动电流控制寄存器~7EFE2AH~1111,1111$
- #define P3DR (*(unsigned char volatile far *)0x7efe2b) // P3~口驱动电流控制寄存器~7EFE2BH~1111,1111$
- #define P4DR (*(unsigned char volatile far *)0x7efe2c) // P4~口驱动电流控制寄存器~7EFE2CH~1111,1111$
- #define P5DR (*(unsigned char volatile far *)0x7efe2d) // P5~口驱动电流控制寄存器~7EFE2DH~-~-~-~xxx1,1111$
- #define P6DR (*(unsigned char volatile far *)0x7efe2e) // P6~口驱动电流控制寄存器~7EFE2EH~1111,1111$
- #define P7DR (*(unsigned char volatile far *)0x7efe2f) // P7~口驱动电流控制寄存器~7EFE2FH~1111,1111$
- #define P0IE (*(unsigned char volatile far *)0x7efe30) // P0~口输入使能控制寄存器~7EFE30H~1111,1111$
- #define P1IE (*(unsigned char volatile far *)0x7efe31) // P1~口输入使能控制寄存器~7EFE31H~1111,1111$
- #define P2IE (*(unsigned char volatile far *)0x7efe32) // P2~口输入使能控制寄存器~7EFE32H~1111,1111$
- #define P3IE (*(unsigned char volatile far *)0x7efe33) // P3~口输入使能控制寄存器~7EFE33H~1111,1111$
- #define P4IE (*(unsigned char volatile far *)0x7efe34) // P4~口输入使能控制寄存器~7EFE34H~1111,1111$
- #define P5IE (*(unsigned char volatile far *)0x7efe35) // P5~口输入使能控制寄存器~7EFE35H~-~-~-~xxx1,1111$
- #define P6IE (*(unsigned char volatile far *)0x7efe36) // P6~口输入使能控制寄存器~7EFE36H~1111,1111$
- #define P7IE (*(unsigned char volatile far *)0x7efe37) // P7~口输入使能控制寄存器~7EFE37H~1111,1111$
- #define P7DR (*(unsigned char volatile far *)0x7efe2f) // P7~口驱动电流控制寄存器~7EFE2FH~1111,1111$
- #define P0PD (*(unsigned char volatile far *)0x7efe40) // P0~口下拉电阻控制寄存器~7EFE40H~0000,0000$
- #define P1PD (*(unsigned char volatile far *)0x7efe41) // P1~口下拉电阻控制寄存器~7EFE41H~0000,0000$
- #define P2PD (*(unsigned char volatile far *)0x7efe42) // P2~口下拉电阻控制寄存器~7EFE42H~0000,0000$
- #define P3PD (*(unsigned char volatile far *)0x7efe43) // P3~口下拉电阻控制寄存器~7EFE43H~0000,0000$
- #define P4PD (*(unsigned char volatile far *)0x7efe44) // P4~口下拉电阻控制寄存器~7EFE44H~0000,0000$
- #define P5PD (*(unsigned char volatile far *)0x7efe45) // P5~口下拉电阻控制寄存器~7EFE45H~-~-~-~xxx1,1111$
- #define P6PD (*(unsigned char volatile far *)0x7efe46) // P6~口下拉电阻控制寄存器~7EFE46H~0000,0000$
- #define P7PD (*(unsigned char volatile far *)0x7efe47) // P7~口下拉电阻控制寄存器~7EFE47H~0000,0000$
- #define LCMIFCFG (*(unsigned char volatile far *)0x7efe50) // LCM~接口配置寄存器~7EFE50H~LCMIFIE~-~LCMIFIP~LCMIFDPS~D16_D8~M68_I80~0x00,0000$
- #define LCMIFCFG2 (*(unsigned char volatile far *)0x7efe51) // LCM~接口配置寄存器~2~7EFE51H~-~LCMIFCPS~SETUPT~HOLDT~x000,0000$
- #define LCMIFCR (*(unsigned char volatile far *)0x7efe52) //
免责声明:
本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;
上一篇: STC15W4K48S4 P2 输出问题
下一篇: STC8A8K64D引脚小问题