找回密码
 立即注册
查看: 2503|回复: 22

STC32G.H中文注释

[复制链接]
  • TA的每日心情
    开心
    昨天 07:10
  • 签到天数: 160 天

    [LV.7]常住居民III

    11

    主题

    69

    回帖

    2838

    积分

    金牌会员

    单片机编程魔法师

    积分
    2838
    发表于 2023-3-10 11:16:07 | 显示全部楼层 |阅读模式
    本帖最后由 t176 于 2023-3-11 17:54 编辑

    最新核对版本留意本帖子编辑时间,
    如果错误纠正请跟帖说明所在行数 以及提供相应更正内容.
    注释内容仅供参考.请以STC官方文档为准.
    现在正式开始学习
    欲善其事,必先利其器..
    做的第一件事,就是对32头文件的 汉化整理,这样后期学习或者开发能极大的增加效率
    1111111111.png



    222222222.png
    以下是对STC32G.H中文注释.由我开个头
    欢迎各路大神 进行二次校对注释


    1. #ifndef __STC32G_H_
    2. #define __STC32G_H_
    3. /////////////////////////////////////////////////
    4. #include <intrins.h>
    5. /** 各寄存器作用
    6. sfr指特殊功能寄存器
    7. sbit指特殊位寄存器。用于指定单个位的寄存器操作 */
    8. sfr P0 = 0x80;           // 定义P0为单字节特殊功能寄存器,并赋初值0x80,P0用于管脚的输入和输出控制
    9. sbit P00 = P0 ^ 0;       // 定义P00为P0的第0位
    10. sbit P01 = P0 ^ 1;       // 定义P01为P0的第1位
    11. sbit P02 = P0 ^ 2;       // 定义P02为P0的第2位
    12. sbit P03 = P0 ^ 3;       // 定义P03为P0的第3位
    13. sbit P04 = P0 ^ 4;       // 定义P04为P0的第4位
    14. sbit P05 = P0 ^ 5;       // 定义P05为P0的第5位
    15. sbit P06 = P0 ^ 6;       // 定义P06为P0的第6位
    16. sbit P07 = P0 ^ 7;       // 定义P07为P0的第7位
    17. sfr SP = 0x81;           // 定义SP为单字节特殊功能寄存器,并赋初值0x81,存放堆栈指针
    18. sfr DPL = 0x82;          // 定义DPL为单字节特殊功能寄存器,并赋初值0x82,存放数据的低8位
    19. sfr DPH = 0x83;          // 定义DPH为单字节特殊功能寄存器,并赋初值0x83,存放数据的高8位
    20. sfr DPXL = 0x84;         // 定义DPXL为单字节特殊功能寄存器,并赋初值0x84,数据指针的低8位
    21. sfr SPH = 0x85;          // 定义SPH为单字节特殊功能寄存器,并赋初值0x85,堆栈指针的高8位
    22. sfr PCON = 0x87;         // 定义PCON为单字节特殊功能寄存器,并赋初值0x87,用于控制MCU的电源管理及时钟选择
    23. sbit SMOD = PCON ^ 7;    // 定义SMOD为PCON的第7位,串口波特率加倍控制位
    24. sbit SMOD0 = PCON ^ 6;   // 定义SMOD0为PCON的第6位,串口波特率加倍控制位
    25. sbit LVDF = PCON ^ 5;    // 定义LVDF为PCON的第5位,低压检测标志位
    26. sbit POF = PCON ^ 4;     // 定义POF为PCON的第4位,上电自动复位标志位
    27. sbit GF1 = PCON ^ 3;     // 定义GF1为PCON的第3位,通用标志位1
    28. sbit GF0 = PCON ^ 2;     // 设置GF0位,用作通用标志,可以由软件或硬件改变其值
    29. sbit PD = PCON ^ 1;      // PD置位表示进入掉电模式
    30. sbit IDL = PCON ^ 0;     // IDL置位表示进入空闲模式
    31. sfr TCON = 0x88;         // TCON寄存器是定时器/计数器的控制寄存器
    32. sbit TF1 = TCON ^ 7;     // TF1是定时器1中断标志位
    33. sbit TR1 = TCON ^ 6;     // TR1是定时器1运行控制位
    34. sbit TF0 = TCON ^ 5;     // TF0是定时器0中断标志位
    35. sbit TR0 = TCON ^ 4;     // TR0是定时器0运行控制位
    36. sbit IE1 = TCON ^ 3;     // IE1是定时器1中断允许位
    37. sbit IT1 = TCON ^ 2;     // IT1是定时器1中断类型控制位
    38. sbit IE0 = TCON ^ 1;     // IE0是定时器0中断允许位
    39. sbit IT0 = TCON ^ 0;     // IT0是定时器0中断类型控制位
    40. sfr TMOD = 0x89;         // TMOD寄存器是定时器/计数器的模式寄存器
    41. sbit T1_GATE = TMOD ^ 7; // T1_GATE是定时器1门控位
    42. sbit T1_CT = TMOD ^ 6;   // T1_CT是定时器1计数方式控制位
    43. sbit T1_M1 = TMOD ^ 5;   // T1_M1、T1_M0是定时器1的工作方式控制位
    44. sbit T1_M0 = TMOD ^ 4;
    45. sbit T0_GATE = TMOD ^ 3;   // T0_GATE是定时器0门控位
    46. sbit T0_CT = TMOD ^ 2;     // T0_CT是定时器0计数方式控制位
    47. sbit T0_M1 = TMOD ^ 1;     // T0_M1、T0_M0是定时器0的工作方式控制位
    48. sbit T0_M0 = TMOD ^ 0;     // T0_M1、T0_M0是定时器0的工作方式控制位
    49. sfr TL0 = 0x8a;            // 定时器0低字节
    50. sfr TL1 = 0x8b;            // 定时器1低字节
    51. sfr TH0 = 0x8c;            // 定时器0高字节
    52. sfr TH1 = 0x8d;            // 定时器1高字节
    53. sfr AUXR = 0x8e;           // 辅助寄存器,用于配置各种外设、内部功能及时钟运行方式等
    54. sbit T0x12 = AUXR ^ 7;     // 定时器0时钟源选择位,1为12T,0为指令周期(可选不同倍频)
    55. sbit T1x12 = AUXR ^ 6;     // 定时器1时钟源选择位,1为12T,0为指令周期(可选不同倍频)
    56. sbit S1M0x6 = AUXR ^ 5;    // UART1工作模式选择位,1为多机通信方式0,0为普通异步工作方式
    57. sbit T2R = AUXR ^ 4;       // 定时器2启动位,置1启动计时,置0停止计时
    58. sbit T2_CT = AUXR ^ 3;     // 定时器2工作模式选择位,1为计数模式,0为定时模式
    59. sbit T2x12 = AUXR ^ 2;     // 定时器2时钟源选择位,1为12T,0为指令周期(可选不同倍频)
    60. sbit EXTRAM = AUXR ^ 1;    // 片内扩展RAM使能位,1为启用扩展RAM,0为禁用扩展RAM
    61. sbit S1BRT = AUXR ^ 0;     // UART1波特率发生器特殊工作方式选择位,1为定时器1时钟源选择Fosc/4,0为从T1传输波特率重载值
    62. sfr INTCLKO = 0x8f;        // 外部时钟输出控制寄存器
    63. sbit EX4 = INTCLKO ^ 6;    // INT4外部中断事件输出控制位,1为高电平有效,0为下降沿有效
    64. sbit EX3 = INTCLKO ^ 5;    // INT3外部中断事件输出控制位,1为高电平有效,0为下降沿有效
    65. sbit EX2 = INTCLKO ^ 4;    // INT2外部中断事件输出控制位,1为高电平有效,0为下降沿有效
    66. sbit T2CLKO = INTCLKO ^ 2; // 定时器2时钟输出控制位,1为输出高电平,0为输出低电平
    67. sbit T1CLKO = INTCLKO ^ 1; // 定时器1时钟输出控制位,1为输出高电平,0为输出低电平
    68. sbit T0CLKO = INTCLKO ^ 0; // 定时器0时钟输出控制位,1为输出高电平,0为输出低电平
    69. /** STC32G.H头文件中的P1寄存器 */
    70. sfr P1 = 0x90;
    71. /** P1口第0位引脚,例如P10表示P1.0 */
    72. sbit P10 = P1 ^ 0;
    73. /** P1口第1位引脚,例如P11表示P1.1 */
    74. sbit P11 = P1 ^ 1;
    75. /** P1口第2位引脚,例如P12表示P1.2 */
    76. sbit P12 = P1 ^ 2;
    77. /** P1口第3位引脚,例如P13表示P1.3 */
    78. sbit P13 = P1 ^ 3;
    79. /** P1口第4位引脚,例如P14表示P1.4 */
    80. sbit P14 = P1 ^ 4;
    81. /** P1口第5位引脚,例如P15表示P1.5 */
    82. sbit P15 = P1 ^ 5;
    83. /** P1口第6位引脚,例如P16表示P1.6 */
    84. sbit P16 = P1 ^ 6;
    85. /** P1口第7位引脚,例如P17表示P1.7 */
    86. sbit P17 = P1 ^ 7;
    87. /** P1口模式寄存器1 */
    88. sfr P1M1 = 0x91;
    89. /** P1口模式寄存器0 */
    90. sfr P1M0 = 0x92;
    91. /** P0口模式寄存器1 */
    92. sfr P0M1 = 0x93;
    93. /** P0口模式寄存器0 */
    94. sfr P0M0 = 0x94;
    95. /** P2口模式寄存器1 */
    96. sfr P2M1 = 0x95;
    97. /** P2口模式寄存器0 */
    98. sfr P2M0 = 0x96;
    99. /** 辅助寄存器2,用于控制CAN和LIN总线 */
    100. sfr AUXR2 = 0x97;
    101. /** CAN总线选择控制位,为1时选择CAN通道1 */
    102. sbit CANSEL = AUXR2 ^ 3;
    103. /** CAN通道2使能控制位,为1时使能CAN通道2 */
    104. sbit CAN2EN = AUXR2 ^ 2;
    105. /** CAN总线使能控制位,为1时使能CAN总线 */
    106. sbit CANEN = AUXR2 ^ 1;
    107. /** LIN总线使能控制位,为1时使能LIN总线 */
    108. sbit LINEN = AUXR2 ^ 0;
    109. /** 定义串口控制寄存器SCON的地址 */
    110. sfr SCON = 0x98;
    111. /** 定义串口控制寄存器SCON的数据位,分别是工作模式选择位 */
    112. sbit SM0 = SCON ^ 7; // 串口工作模式选择位0
    113. sbit SM1 = SCON ^ 6; // 串口工作模式选择位1
    114. sbit SM2 = SCON ^ 5; // 串口工作模式选择位2
    115. /** 定义串口控制寄存器SCON的数据位,分别是接收器使能位、发送器使能位、发送数据位、接收数据位 */
    116. sbit REN = SCON ^ 4; // 接收器使能位
    117. sbit TB8 = SCON ^ 3; // 发送数据位,用于校验
    118. sbit RB8 = SCON ^ 2; // 接收数据位,用于校验
    119. sbit TI = SCON ^ 1;  // 发送器中断标志位
    120. sbit RI = SCON ^ 0;  // 接收器中断标志位
    121. /** 定义串口缓存寄存器SBUF的地址 */
    122. sfr SBUF = 0x99;
    123. /** 定义另外一个串口控制寄存器S2CON的地址 */
    124. sfr S2CON = 0x9a;
    125. /** 定义S2CON寄存器的数据位,分别是工作模式选择位 */
    126. sbit S2SM0 = S2CON ^ 7; // 串口2工作模式选择位0
    127. sbit S2SM1 = S2CON ^ 6; // 串口2工作模式选择位1
    128. sbit S2SM2 = S2CON ^ 5; // 串口2工作模式选择位2
    129. /** 定义S2CON寄存器的数据位,分别是接收器使能位、发送器使能位、发送数据位、接收数据位 */
    130. sbit S2REN = S2CON ^ 4; // 串口2接收器使能位
    131. sbit S2TB8 = S2CON ^ 3; // 串口2发送数据位,用于校验
    132. sbit S2RB8 = S2CON ^ 2; // 串口2接收数据位,用于校验
    133. sbit S2TI = S2CON ^ 1;  // 串口2发送器中断标志位
    134. sbit S2RI = S2CON ^ 0;  // 串口2接收器中断标志位
    135. /** 定义串口2的缓存寄存器S2BUF的地址 */
    136. sfr S2BUF = 0x9b;
    137. /** 定义内部RC振荡器带宽控制寄存器IRCBAND的地址 */
    138. sfr IRCBAND = 0x9d;
    139. /*
    140. 定义一个位变量USBCKS,它是通过IRCBAND寄存器的第7位来控制USB时钟的。
    141. */
    142. sbit USBCKS = IRCBAND ^ 7;
    143. /*
    144. 定义一个位变量USBCKS2,它是通过IRCBAND寄存器的第6位来控制USB时钟的。
    145. */
    146. sbit USBCKS2 = IRCBAND ^ 6;
    147. /*
    148. 定义一个位变量HIRCSEL1,它是通过IRCBAND寄存器的第1位来控制内部高速时钟(HIRC)的。
    149. */
    150. sbit HIRCSEL1 = IRCBAND ^ 1;
    151. /*
    152. 定义一个位变量HIRCSEL0,它是通过IRCBAND寄存器的第0位来控制内部高速时钟(HIRC)的。
    153. */
    154. sbit HIRCSEL0 = IRCBAND ^ 0;
    155. /*
    156. 定义一个特殊功能寄存器LIRTRIM,用于调节低速内部时钟(LIRC)的频率。
    157. */
    158. sfr LIRTRIM = 0x9e;
    159. /*
    160. 定义一个特殊功能寄存器IRTRIM,用于调节内部时钟(HIRC、LIRC)的频率。
    161. */
    162. sfr IRTRIM = 0x9f;
    163. /*
    164. 定义一个8位端口寄存器P2,用于控制单片机的P2端口。
    165. */
    166. sfr P2 = 0xa0;
    167. /*
    168. 定义8个位变量,分别对应P2端口的8个引脚。
    169. */
    170. sbit P20 = P2 ^ 0;
    171. sbit P21 = P2 ^ 1;
    172. sbit P22 = P2 ^ 2;
    173. sbit P23 = P2 ^ 3;
    174. sbit P24 = P2 ^ 4;
    175. sbit P25 = P2 ^ 5;
    176. sbit P26 = P2 ^ 6;
    177. sbit P27 = P2 ^ 7;
    178. /*
    179. 定义一个特殊功能寄存器BUS_SPEED,用于设置I2C总线的速率。
    180. */
    181. sfr BUS_SPEED = 0xa1;
    182. /*
    183. 定义一个特殊功能寄存器P_SW1,用于控制特定功能的开关。
    184. */
    185. sfr P_SW1 = 0xa2;
    186. /* S1_S1和S1_S0引脚定义,用于控制外设1的功能选择 */
    187. sbit S1_S1 = P_SW1 ^ 7;
    188. sbit S1_S0 = P_SW1 ^ 6;
    189. /* CAN_S1引脚定义,用于控制CAN总线的通讯速率选择 */
    190. sbit CAN_S1 = P_SW1 ^ 5;
    191. /* CAN_S0引脚定义,用于控制CAN总线的通讯速率选择 */
    192. sbit CAN_S0 = P_SW1 ^ 4;
    193. // 定义 SPI_S1 为 P_SW1 中的第三个引脚,用于控制 SPI 从机模式下的速率
    194. sbit SPI_S1 = P_SW1 ^ 3;
    195. // 定义 SPI_S0 为 P_SW1 中的第二个引脚,用于控制 SPI 从机模式下的速率
    196. sbit SPI_S0 = P_SW1 ^ 2;
    197. // 定义 LIN_S1 为 P_SW1 中的第一个引脚,用于控制 LIN 总线的波特率
    198. sbit LIN_S1 = P_SW1 ^ 1;
    199. // 定义 LIN_S0 为 P_SW1 中的第零个引脚,用于控制 LIN 总线的波特率
    200. sbit LIN_S0 = P_SW1 ^ 0;
    201. // 定义 V33TRIM 寄存器,用于调整内部 3.3V 电压的偏移值
    202. sfr V33TRIM = 0xa3;
    203. // 定义 BGTRIM 寄存器,用于调整内部参考电压的偏移值
    204. sfr BGTRIM = 0xa5;
    205. // 定义 VRTRIM 寄存器,用于调整内部比较器参考电压的偏移值
    206. sfr VRTRIM = 0xa6;
    207. // 定义 IE 寄存器,用于控制中断使能和优先级
    208. sfr IE = 0xa8;
    209. // 定义 EA 为 IE 寄存器的最高位,用于全局中断使能
    210. sbit EA = IE ^ 7;
    211. // 定义 ELVD 为 IE 寄存器的第六位,用于低电压检测中断使能
    212. sbit ELVD = IE ^ 6;
    213. // 定义 EADC 为 IE 寄存器的第五位,用于ADC转换完成中断使能
    214. sbit EADC = IE ^ 5;
    215. // 定义 ES 为 IE 寄存器的第四位,用于串口中断使能
    216. sbit ES = IE ^ 4;
    217. // 定义 ET1 为 IE 寄存器的第三位,用于定时器1中断使能
    218. sbit ET1 = IE ^ 3;
    219. // 定义 EX1 为 IE 寄存器的第二位,用于外部中断1使能
    220. sbit EX1 = IE ^ 2;
    221. // 定义 ET0 为 IE 寄存器的第一位,用于定时器0中断使能
    222. sbit ET0 = IE ^ 1;
    223. // 定义 EX0 为 IE 寄存器的最低位,用于外部中断0使能
    224. sbit EX0 = IE ^ 0;
    225. // 定义 SADDR 寄存器,用于从机地址的设定
    226. sfr SADDR = 0xa9;
    227. sfr WKTCL = 0xaa;       // 看门狗定时器低8位地址
    228. sfr WKTCH = 0xab;       // 看门狗定时器高8位地址
    229. sfr S3CON = 0xac;       // 串口3控制寄存器地址
    230. sbit S3SM0 = S3CON ^ 7; // 串口3模式位0
    231. sbit S3ST3 = S3CON ^ 6; // 串口3多主机通信位
    232. sbit S3SM2 = S3CON ^ 5; // 串口3模式位2
    233. sbit S3REN = S3CON ^ 4; // 串口3接收使能位
    234. sbit S3TB8 = S3CON ^ 3; // 串口3传输数据位8
    235. sbit S3RB8 = S3CON ^ 2; // 串口3接收数据位8
    236. sbit S3TI = S3CON ^ 1;  // 串口3发送中断标志位
    237. sbit S3RI = S3CON ^ 0;  // 串口3接收中断标志位
    238. sfr S3BUF = 0xad;       // 串口3数据缓冲寄存器地址
    239. sfr TA = 0xae;          // 定时器A寄存器地址
    240. sfr IE2 = 0xaf;         // 中断使能寄存器2地址
    241. // 定义 EUSB 为中断使能寄存器 IE2 的第 7 位
    242. sbit EUSB = IE2 ^ 7;
    243. // 定义 ET4 为中断使能寄存器 IE2 的第 6 位
    244. sbit ET4 = IE2 ^ 6;
    245. // 定义 ET3 为中断使能寄存器 IE2 的第 5 位
    246. sbit ET3 = IE2 ^ 5;
    247. // 定义 ES4 为中断使能寄存器 IE2 的第 4 位
    248. sbit ES4 = IE2 ^ 4;
    249. // 定义 ES3 为中断使能寄存器 IE2 的第 3 位
    250. sbit ES3 = IE2 ^ 3;
    251. // 定义 ET2 为中断使能寄存器 IE2 的第 2 位
    252. sbit ET2 = IE2 ^ 2;
    253. // 定义 ESPI 为中断使能寄存器 IE2 的第 1 位
    254. sbit ESPI = IE2 ^ 1;
    255. // 定义 ES2 为中断使能寄存器 IE2 的第 0 位
    256. sbit ES2 = IE2 ^ 0;
    257. // 定义 P3 为特殊功能寄存器地址,用于控制 P3 引脚的输入输出状态和上下拉电阻状态
    258. sfr P3 = 0xb0;
    259. // 定义 P30 为 P3 引脚的第 0 位
    260. sbit P30 = P3 ^ 0;
    261. // 定义 P31 为 P3 引脚的第 1 位
    262. sbit P31 = P3 ^ 1;
    263. // 定义 P32 为 P3 引脚的第 2 位
    264. sbit P32 = P3 ^ 2;
    265. // 定义 P33 为 P3 引脚的第 3 位
    266. sbit P33 = P3 ^ 3;
    267. // 定义 P34 为 P3 引脚的第 4 位
    268. sbit P34 = P3 ^ 4;
    269. // 定义 P35 为 P3 引脚的第 5 位
    270. sbit P35 = P3 ^ 5;
    271. // 定义 P36 为 P3 引脚的第 6 位
    272. sbit P36 = P3 ^ 6;
    273. // 定义 P37 为 P3 引脚的第 7 位
    274. sbit P37 = P3 ^ 7;
    275. // 定义 P3M1 为 P3 引脚的模式控制寄存器地址,用于控制 P3 引脚的输入输出模式
    276. sfr P3M1 = 0xb1;
    277. // 定义 P3M0 为 P3 引脚的模式控制寄存器地址,用于控制 P3 引脚的输入输出模式
    278. sfr P3M0 = 0xb2;
    279. // 定义 P4M1 为 P4 引脚的模式控制寄存器地址,用于控制 P4 引脚的输入输出模式
    280. sfr P4M1 = 0xb3;
    281. // P4M0的地址是0xb4, 用于设置P4口的模式寄存器0
    282. sfr P4M0 = 0xb4;
    283. // IP2的地址是0xb5, 是中断优先级控制寄存器2
    284. sfr IP2 = 0xb5;
    285. // PUSB是IP2寄存器的第7位, 用于设置USB中断的优先级
    286. sbit PUSB = IP2 ^ 7;
    287. // PI2C是IP2寄存器的第6位, 用于设置I2C中断的优先级
    288. sbit PI2C = IP2 ^ 6;
    289. // PCMP是IP2寄存器的第5位, 用于设置比较器中断的优先级
    290. sbit PCMP = IP2 ^ 5;
    291. // PX4是IP2寄存器的第4位, 用于设置定时器4中断的优先级
    292. sbit PX4 = IP2 ^ 4;
    293. // PPWMB是IP2寄存器的第3位, 用于设置PWM模块B中断的优先级
    294. sbit PPWMB = IP2 ^ 3;
    295. // PPWMA是IP2寄存器的第2位, 用于设置PWM模块A中断的优先级
    296. sbit PPWMA = IP2 ^ 2;
    297. // PSPI是IP2寄存器的第1位, 用于设置SPI中断的优先级
    298. sbit PSPI = IP2 ^ 1;
    299. // PS2是IP2寄存器的第0位, 用于设置串口2中断的优先级
    300. sbit PS2 = IP2 ^ 0;
    301. // IP2H是IP2的高8位
    302. sfr IP2H = 0xb6;
    303. // PUSBH是IP2H的第7位, 用于设置USB中断的高优先级
    304. sbit PUSBH = IP2H ^ 7;
    305. // PI2CH是IP2H的第6位, 用于设置I2C中断的高优先级
    306. sbit PI2CH = IP2H ^ 6;
    307. // PCMPH是IP2H的第5位, 用于设置比较器中断的高优先级
    308. sbit PCMPH = IP2H ^ 5;
    309. // PX4H是IP2H的第4位, 用于设置定时器4中断的高优先级
    310. sbit PX4H = IP2H ^ 4;
    311. // PPWMBH是IP2H的第3位, 用于设置PWM模块B中断的高优先级
    312. sbit PPWMBH = IP2H ^ 3;
    313. // PPWMAH是IP2H的第2位, 用于设置PWM模块A中断的高优先级
    314. sbit PPWMAH = IP2H ^ 2;
    315. sbit PSPIH = IP2H ^ 1;
    316. // 定义PS2H为IP2H寄存器的第0个引脚
    317. sbit PS2H = IP2H ^ 0;
    318. // 定义IPH为中断优先级高八位寄存器
    319. sfr IPH = 0xb7;
    320. // 定义PLVDH为IPH寄存器的第6个引脚,表示低电压检测中断优先级
    321. sbit PLVDH = IPH ^ 6;
    322. // 定义PADCH为IPH寄存器的第5个引脚,表示ADC中断优先级
    323. sbit PADCH = IPH ^ 5;
    324. // 定义PSH为IPH寄存器的第4个引脚,表示串口中断优先级
    325. sbit PSH = IPH ^ 4;
    326. // 定义PT1H为IPH寄存器的第3个引脚,表示定时器1中断优先级
    327. sbit PT1H = IPH ^ 3;
    328. // 定义PX1H为IPH寄存器的第2个引脚,表示外部中断1优先级
    329. sbit PX1H = IPH ^ 2;
    330. // 定义PT0H为IPH寄存器的第1个引脚,表示定时器0中断优先级
    331. sbit PT0H = IPH ^ 1;
    332. // 定义PX0H为IPH寄存器的第0个引脚,表示外部中断0优先级
    333. sbit PX0H = IPH ^ 0;
    334. // 定义IP为中断优先级低八位寄存器
    335. sfr IP = 0xb8;
    336. // 定义PLVD为IP寄存器的第6个引脚,表示低电压检测中断优先级
    337. sbit PLVD = IP ^ 6;
    338. // 定义PADC为IP寄存器的第5个引脚,表示ADC中断优先级
    339. sbit PADC = IP ^ 5;
    340. // 定义PS为IP寄存器的第4个引脚,表示串口中断优先级
    341. sbit PS = IP ^ 4;
    342. // 定义PT1为IP寄存器的第3个引脚,表示定时器1中断优先级
    343. sbit PT1 = IP ^ 3;
    344. // 定义PX1为IP寄存器的第2个引脚,表示外部中断1优先级
    345. sbit PX1 = IP ^ 2;
    346. // 定义PT0为IP寄存器的第1个引脚,表示定时器0中断优先级
    347. sbit PT0 = IP ^ 1;
    348. // 定义PX0为IP寄存器的第0个引脚,表示外部中断0优先级
    349. sbit PX0 = IP ^ 0;
    350. // 定义一个特殊功能寄存器(SFR),用于设置I2C通信时的从机地址
    351. sfr SADEN = 0xb9;
    352. // 定义一个特殊功能寄存器(SFR),用于设置外设端口的功能
    353. sfr P_SW2 = 0xba;
    354. // 扩展SFR使能寄存器,7E:0000H-7E:FFFFH 如果值置1才能读写XFR,建议上电初始化时直接设置为1
    355. sbit EAXFR = P_SW2 ^ 7;
    356. // 定义一个单片机位(bit),用于表示I2C从机地址中的第5位
    357. sbit I2C_S1 = P_SW2 ^ 5;
    358. // 定义一个单片机位(bit),用于表示I2C从机地址中的第4位
    359. sbit I2C_S0 = P_SW2 ^ 4;
    360. // 定义一个单片机位(bit),用于表示比较器的输出选择
    361. sbit CMPO_S = P_SW2 ^ 3;
    362. // 定义一个单片机位(bit),用于设置S4引脚功能
    363. sbit S4_S = P_SW2 ^ 2;
    364. // 定义一个单片机位(bit),用于设置S3引脚功能
    365. sbit S3_S = P_SW2 ^ 1;
    366. // 定义一个单片机位(bit),用于设置S2引脚功能
    367. sbit S2_S = P_SW2 ^ 0;
    368. // 定义一个特殊功能寄存器(SFR),用于设置外设端口的功能
    369. sfr P_SW3 = 0xbb;
    370. // 定义一个单片机位(bit),用于设置I2S模式下的采样频率
    371. sbit I2S_S1 = P_SW3 ^ 7;
    372. // 定义一个单片机位(bit),用于设置I2S模式下的采样频率
    373. sbit I2S_S0 = P_SW3 ^ 6;
    374. // 定义一个单片机位(bit),用于设置S2引脚在SPI模式下的功能
    375. sbit S2SPI_S1 = P_SW3 ^ 5;
    376. // 定义一个单片机位(bit),用于设置S2引脚在SPI模式下的功能
    377. sbit S2SPI_S0 = P_SW3 ^ 4;
    378. // 定义一个单片机位(bit),用于设置S1引脚在SPI模式下的功能
    379. sbit S1SPI_S1 = P_SW3 ^ 3;
    380. // 定义一个单片机位(bit),用于设置S1引脚在SPI模式下的功能
    381. sbit S1SPI_S0 = P_SW3 ^ 2;
    382. // 定义一个单片机位(bit),用于表示CAN2从机地址中的第1位
    383. sbit CAN2_S1 = P_SW3 ^ 1;
    384. // 定义一个单片机位(bit),用于表示CAN2从机地址中的第0位
    385. sbit CAN2_S0 = P_SW3 ^ 0;
    386. // 定义一个特殊功能寄存器(SFR),用于配置ADC模块的工作方式
    387. sfr ADC_CONTR = 0xbc;
    388. // 定义 ADC_CONTR 的最高位,即位于地址 0xBC 的寄存器的第 7 位,作为 ADC 电源控制位
    389. sbit ADC_POWER = ADC_CONTR ^ 7;
    390. // 定义 ADC_CONTR 的第 6 位,即位于地址 0xBC 的寄存器的第 6 位,作为 ADC 启动控制位
    391. sbit ADC_START = ADC_CONTR ^ 6;
    392. // 定义 ADC_CONTR 的第 5 位,即位于地址 0xBC 的寄存器的第 5 位,作为 ADC 转换完成标志位
    393. sbit ADC_FLAG = ADC_CONTR ^ 5;
    394. // 定义 ADC_CONTR 的第 4 位,即位于地址 0xBC 的寄存器的第 4 位,作为 ADC 空闲标志位
    395. sbit ADC_EPWMT = ADC_CONTR ^ 4;
    396. // 定义 ADC 结果数据的高八位寄存器,地址为 0xBD
    397. sfr ADC_RES = 0xbd;
    398. // 定义 ADC 结果数据的低两位寄存器,地址为 0xBE
    399. sfr ADC_RESL = 0xbe;
    400. // 定义 P4 端口寄存器,地址为 0xC0
    401. sfr P4 = 0xc0;
    402. // 定义 P4 端口寄存器的第 0 位,即P4.0
    403. sbit P40 = P4 ^ 0;
    404. // 定义 P4 端口寄存器的第 1 位,即P4.1
    405. sbit P41 = P4 ^ 1;
    406. // 定义 P4 端口寄存器的第 2 位,即P4.2
    407. sbit P42 = P4 ^ 2;
    408. // 定义 P4 端口寄存器的第 3 位,即P4.3
    409. sbit P43 = P4 ^ 3;
    410. // 定义 P4 端口寄存器的第 4 位,即P4.4
    411. sbit P44 = P4 ^ 4;
    412. // 定义 P4 端口寄存器的第 5 位,即P4.5
    413. sbit P45 = P4 ^ 5;
    414. // 定义 P4 端口寄存器的第 6 位,即P4.6
    415. sbit P46 = P4 ^ 6;
    416. // 定义 P4 端口寄存器的第 7 位,即P4.7
    417. sbit P47 = P4 ^ 7;
    418. // 定义看门狗控制寄存器WDT_CONTR的地址为0xc1
    419. sfr WDT_CONTR = 0xc1;
    420. // 定义看门狗标志WDT_FLAG在WDT_CONTR中的位号为7
    421. sbit WDT_FLAG = WDT_CONTR ^ 7;
    422. // 定义使能看门狗EN_WDT在WDT_CONTR中的位号为5
    423. sbit EN_WDT = WDT_CONTR ^ 5;
    424. // 定义清除看门狗CLR_WDT在WDT_CONTR中的位号为4
    425. sbit CLR_WDT = WDT_CONTR ^ 4;
    426. // 定义看门狗空闲模式IDL_WDT在WDT_CONTR中的位号为3
    427. sbit IDL_WDT = WDT_CONTR ^ 3;
    428. // 定义IAP数据寄存器IAP_DATA的地址为0xc2
    429. sfr IAP_DATA = 0xc2;
    430. // 定义IAP地址寄存器高8位IAP_ADDRH的地址为0xc3
    431. sfr IAP_ADDRH = 0xc3;
    432. // 定义IAP地址寄存器低8位IAP_ADDRL的地址为0xc4
    433. sfr IAP_ADDRL = 0xc4;
    434. // 定义IAP命令寄存器IAP_CMD的地址为0xc5
    435. sfr IAP_CMD = 0xc5;
    436. // 定义IAP触发寄存器IAP_TRIG的地址为0xc6
    437. sfr IAP_TRIG = 0xc6;
    438. // 定义IAP控制寄存器IAP_CONTR的地址为0xc7
    439. sfr IAP_CONTR = 0xc7;
    440. // 定义IAPEN在IAP_CONTR中的位号为7,表示是否允许IAP操作
    441. sbit IAPEN = IAP_CONTR ^ 7;
    442. // 定义SWBS在IAP_CONTR中的位号为6,表示是否使用单字节编程方式
    443. sbit SWBS = IAP_CONTR ^ 6;
    444. // 定义SWRST在IAP_CONTR中的位号为5,表示是否复位IAP命令寄存器
    445. sbit SWRST = IAP_CONTR ^ 5;
    446. // 定义CMD_FAIL在IAP_CONTR中的位号为4,表示IAP命令是否执行失败
    447. sbit CMD_FAIL = IAP_CONTR ^ 4;
    448. // 定义端口5的地址为0xc8
    449. sfr P5 = 0xc8;
    450. // 定义P5.0引脚的名称为P50
    451. sbit P50 = P5 ^ 0;
    452. // 定义P5.1引脚的名称为P51
    453. sbit P51 = P5 ^ 1;
    454. // 定义P5.2引脚的名称为P52
    455. sbit P52 = P5 ^ 2;
    456. // 定义P5.3引脚的名称为P53
    457. sbit P53 = P5 ^ 3;
    458. // 定义P5.4引脚的名称为P54
    459. sbit P54 = P5 ^ 4;
    460. // 定义P5.5引脚的名称为P55
    461. sbit P55 = P5 ^ 5;
    462. // 定义P5.6引脚的名称为P56
    463. sbit P56 = P5 ^ 6;
    464. // 定义P5.7引脚的名称为P57
    465. sbit P57 = P5 ^ 7;
    466. // 定义P5口的输入输出控制寄存器的地址为0xc9
    467. sfr P5M1 = 0xc9;
    468. // 定义P5口的上拉下拉控制寄存器的地址为0xca
    469. sfr P5M0 = 0xca;
    470. // 定义P6口的输入输出控制寄存器的地址为0xcb
    471. sfr P6M1 = 0xcb;
    472. // 定义P6口的上拉下拉控制寄存器的地址为0xcc
    473. sfr P6M0 = 0xcc;
    474. // 定义串行外设接口状态寄存器的地址为0xcd
    475. sfr SPSTAT = 0xcd;
    476. // 定义SPIF标志位,表示SPI传输完成
    477. sbit SPIF = SPSTAT ^ 7;
    478. // 定义WCOL标志位,表示SPI写冲突
    479. sbit WCOL = SPSTAT ^ 6;
    480. // SPCTL: SPI控制寄存器,用于控制SPI通信的各种参数和配置
    481. sfr SPCTL = 0xCE;
    482. // SSIG: SPI控制寄存器中的位7,控制SPI通信的启动和停止
    483. sbit SSIG = SPCTL ^ 7;
    484. // SPEN: SPI控制寄存器中的位6,用于启用或禁用SPI控制器
    485. sbit SPEN = SPCTL ^ 6;
    486. // DORD: SPI控制寄存器中的位5,控制SPI通信数据的传输顺序,高位在前还是低位在前
    487. sbit DORD = SPCTL ^ 5;
    488. // MSTR: SPI控制寄存器中的位4,用于选择SPI通信的主从模式,主机还是从机
    489. sbit MSTR = SPCTL ^ 4;
    490. // CPOL: SPI控制寄存器中的位3,控制SPI通信时钟的极性,高电平还是低电平为时钟空闲态
    491. sbit CPOL = SPCTL ^ 3;
    492. // CPHA: SPI控制寄存器中的位2,控制SPI通信时钟的相位,采样数据的时刻是时钟上升沿还是下降沿
    493. sbit CPHA = SPCTL ^ 2;
    494. // SPR1: SPI控制寄存器中的位1和0,用于控制SPI通信时钟的频率,分别表示高低两位
    495. sbit SPR1 = SPCTL ^ 1;
    496. sbit SPR0 = SPCTL ^ 0;
    497. // SPDAT: SPI数据寄存器,用于存放SPI通信的发送或接收数据
    498. sfr SPDAT = 0xCF;
    499. // PSW: 程序状态寄存器,用于保存程序运行时的各种状态和标志
    500. sfr PSW = 0xD0;
    501. // CY: 程序状态寄存器中的位7,表示上一次运算结果是否有进位或借位,用于高精度运算和位运算
    502. sbit CY = PSW ^ 7;
    503. // AC: 程序状态寄存器中的位6,表示上一次运算结果是否有半进位或半借位,用于高精度运算
    504. sbit AC = PSW ^ 6;
    505. // F0: 程序状态寄存器中的位5,保留位,不用于程序控制
    506. sbit F0 = PSW ^ 5;
    507. // RS1和RS0: 程序状态寄存器中的位4和位3,用于控制程序运行的模式和级别,RS1和RS0组合共有4种模式
    508. sbit RS1 = PSW ^ 4;
    509. // RS1和RS0: 程序状态寄存器中的位4和位3,用于控制程序运行的模式和级别,RS1和RS0组合共有4种模式
    510. sbit RS0 = PSW ^ 3;
    511. // OV: 程序状态寄存器中的位2,表示上一次运算结果是否有溢出,用于高精度运算和位运算
    512. // OV为PSW(程序状态字寄存器)的第二位
    513. sbit OV = PSW ^ 2;
    514. // P为PSW的第零位
    515. sbit P = PSW ^ 0;
    516. // sfr是特殊功能寄存器,用于访问单个特定寄存器
    517. // PSW1是0xd1地址处的寄存器,用于访问PSW的副本
    518. sfr PSW1 = 0xd1;
    519. // T4H是0xd2地址处的寄存器,用于存储Timer4的高8位计数器值
    520. sfr T4H = 0xd2;
    521. // T4L是0xd3地址处的寄存器,用于存储Timer4的低8位计数器值
    522. sfr T4L = 0xd3;
    523. // T3H是0xd4地址处的寄存器,用于存储Timer3的高8位计数器值
    524. sfr T3H = 0xd4;
    525. // T3L是0xd5地址处的寄存器,用于存储Timer3的低8位计数器值
    526. sfr T3L = 0xd5;
    527. // T2H是0xd6地址处的寄存器,用于存储Timer2的高8位计数器值
    528. sfr T2H = 0xd6;
    529. // T2L是0xd7地址处的寄存器,用于存储Timer2的低8位计数器值
    530. sfr T2L = 0xd7;
    531. // USBCLK是0xdc地址处的寄存器,用于控制USB时钟
    532. sfr USBCLK = 0xdc;
    533. // T4T3M是0xdd地址处的寄存器,用于控制Timer4和Timer3的工作方式
    534. sfr T4T3M = 0xdd;
    535. // T4R为T4T3M的第七位,用于启用/禁用Timer4
    536. sbit T4R = T4T3M ^ 7;
    537. // T4_CT为T4T3M的第六位,用于选择Timer4的计数模式(定时器/计数器)
    538. sbit T4_CT = T4T3M ^ 6;
    539. // T4x12为T4T3M的第五位,用于控制Timer4的计数时钟频率
    540. sbit T4x12 = T4T3M ^ 5;
    541. // T4CLKO为T4T3M的第四位,用于控制Timer4的时钟输出
    542. sbit T4CLKO = T4T3M ^ 4;
    543. // 定义一个T3R的位,用于控制T3的运行或停止
    544. sbit T3R = T4T3M ^ 3;
    545. // 定义一个T3_CT的位,用于控制T3的计数模式是定时器还是计数器
    546. sbit T3_CT = T4T3M ^ 2;
    547. // 定义一个T3x12的位,用于设置T3的计数倍频是12还是48
    548. sbit T3x12 = T4T3M ^ 1;
    549. // 定义一个T3CLKO的位,用于控制T3的时钟输出
    550. sbit T3CLKO = T4T3M ^ 0;
    551. // 定义ADCCFG寄存器,用于设置ADC的工作方式
    552. sfr ADCCFG = 0xde;
    553. // 定义一个RESFMT的位,用于控制ADC转换结果的格式
    554. sbit RESFMT = ADCCFG ^ 5;
    555. // 定义IP3寄存器,用于设置外部中断3的优先级和使能
    556. sfr IP3 = 0xdf;
    557. // 定义一个PI2S的位,用于设置外部中断3的优先级为高
    558. sbit PI2S = IP3 ^ 3;
    559. // 定义一个PRTC的位,用于使能RTC中断
    560. sbit PRTC = IP3 ^ 2;
    561. // 定义一个PS4的位,用于设置外部中断3的优先级为低
    562. sbit PS4 = IP3 ^ 1;
    563. // 定义一个PS3的位,用于关闭外部中断3
    564. sbit PS3 = IP3 ^ 0;
    565. // 定义ACC寄存器,为累加器寄存器,用于存储算术运算结果
    566. sfr ACC = 0xe0;
    567. // 定义P7M1寄存器,用于设置P7口的模式
    568. sfr P7M1 = 0xe1;
    569. // 定义P7M0寄存器,用于设置P7口的模式
    570. sfr P7M0 = 0xe2;
    571. // 定义DPS寄存器,用于设置DPTR寄存器的高位
    572. sfr DPS = 0xe3;
    573. // 定义DPL1寄存器,为DPTR寄存器的低位
    574. sfr DPL1 = 0xe4;
    575. // 定义DPH1寄存器,为DPTR寄存器的高位
    576. sfr DPH1 = 0xe5;
    577. // 定义寄存器CMPCR1的地址为0xe6
    578. sfr CMPCR1 = 0xe6;
    579. // 定义控制比较器的开关位,在CMPCR1的第7位
    580. sbit CMPEN = CMPCR1 ^ 7;
    581. // 定义比较器中断标志位,在CMPCR1的第6位
    582. sbit CMPIF = CMPCR1 ^ 6;
    583. // 定义比较器中断允许位,在CMPCR1的第5位
    584. sbit PIE = CMPCR1 ^ 5;
    585. // 定义负向比较器中断允许位,在CMPCR1的第4位
    586. sbit NIE = CMPCR1 ^ 4;
    587. // 定义比较器输出使能位,在CMPCR1的第1位
    588. sbit CMPOE = CMPCR1 ^ 1;
    589. // 定义比较器输出状态位,在CMPCR1的第0位
    590. sbit CMPRES = CMPCR1 ^ 0;
    591. // 定义寄存器CMPCR2的地址为0xe7
    592. sfr CMPCR2 = 0xe7;
    593. // 定义比较器输出反相位,在CMPCR2的第7位
    594. sbit INVCMPO = CMPCR2 ^ 7;
    595. // 定义比较器滤波使能位,在CMPCR2的第6位
    596. sbit DISFLT = CMPCR2 ^ 6;
    597. // 定义寄存器P6的地址为0xe8
    598. sfr P6 = 0xe8;
    599. // 定义P6口的引脚P60,对应P6的第0位
    600. sbit P60 = P6 ^ 0;
    601. // 定义P6口的引脚P61,对应P6的第1位
    602. sbit P61 = P6 ^ 1;
    603. // 定义P6口的引脚P62,对应P6的第2位
    604. sbit P62 = P6 ^ 2;
    605. // 定义P6口的引脚P63,对应P6的第3位
    606. sbit P63 = P6 ^ 3;
    607. // 定义P6口的引脚P64,对应P6的第4位
    608. sbit P64 = P6 ^ 4;
    609. // 定义P6口的引脚P65,对应P6的第5位
    610. sbit P65 = P6 ^ 5;
    611. // 定义P6口的引脚P66,对应P6的第6位
    612. sbit P66 = P6 ^ 6;
    613. // 定义P6口的引脚P67,对应P6的第7位
    614. sbit P67 = P6 ^ 7;
    615. // 定义SFR寄存器的地址和操作方法
    616. sfr WTST = 0xe9;   // 程序读取等待控制寄存器
    617. sfr CKCON = 0xea;  // 时钟控制寄存器,用于控制系统时钟的分频和选择
    618. sfr MXAX = 0xeb;   // 内部总线矩阵寄存器,用于选择内部总线矩阵的输出和输入
    619. sfr USBDAT = 0xec; // USB数据寄存器,用于存放从USB主机接收到的数据或将要发送给USB主机的数据
    620. sfr DMAIR = 0xed;  // DMA中断寄存器,用于配置DMA中断的触发方式和状态
    621. sfr IP3H = 0xee;   // 中断优先级高位寄存器,用于配置外部中断和定时器中断的优先级
    622. // 定义Sbit位的地址和操作方法
    623. sbit PI2SH = IP3H ^ 3; // 中断优先级高位寄存器的第3位,用于控制INT2中断的优先级
    624. sbit PRTCH = IP3H ^ 2; // 中断优先级高位寄存器的第2位,用于控制RTC中断的优先级
    625. sbit PS4H = IP3H ^ 1;  // 中断优先级高位寄存器的第1位,用于控制INT4中断的优先级
    626. sbit PS3H = IP3H ^ 0;  // 中断优先级高位寄存器的第0位,用于控制INT3中断的优先级
    627. sfr AUXINTIF = 0xef;   // 外部中断和定时器中断标志寄存器,用于读取和清除外部中断和定时器中断的标志
    628. // 定义Sbit位的地址和操作方法
    629. sbit INT4IF = AUXINTIF ^ 6; // AUXINTIF寄存器的第6位,用于表示INT4中断的标志
    630. sbit INT3IF = AUXINTIF ^ 5; // AUXINTIF寄存器的第5位,用于表示INT3中断的标志
    631. sbit INT2IF = AUXINTIF ^ 4; // AUXINTIF寄存器的第4位,用于表示INT2中断的标志
    632. sbit T4IF = AUXINTIF ^ 2;   // AUXINTIF寄存器的第2位,用于表示定时器4中断的标志
    633. // 定义 T3IF 为 AUXINTIF 的第一位,T3IF 用于 Timer3 的中断标志位
    634. sbit T3IF = AUXINTIF ^ 1;
    635. // 定义 T2IF 为 AUXINTIF 的第零位,T2IF 用于 Timer2 的中断标志位
    636. sbit T2IF = AUXINTIF ^ 0;
    637. // 定义 B 为特殊功能寄存器 0xF0,用于位操作
    638. sfr B = 0xf0;
    639. // 定义 CANICR 为特殊功能寄存器 0xF1,用于 CAN 总线中断控制寄存器
    640. sfr CANICR = 0xf1;
    641. // 定义 PCAN2H 为 CANICR 的第七位,表示扩展 CAN 2 中断请求
    642. sbit PCAN2H = CANICR ^ 7;
    643. // 定义 CAN2IF 为 CANICR 的第六位,表示扩展 CAN 2 中断标志位
    644. sbit CAN2IF = CANICR ^ 6;
    645. // 定义 CAN2IE 为 CANICR 的第五位,表示扩展 CAN 2 中断使能
    646. sbit CAN2IE = CANICR ^ 5;
    647. // 定义 PCAN2L 为 CANICR 的第四位,表示扩展 CAN 2 中断请求低位
    648. sbit PCAN2L = CANICR ^ 4;
    649. // 定义 PCANH 为 CANICR 的第三位,表示标准 CAN 中断请求高位
    650. sbit PCANH = CANICR ^ 3;
    651. // 定义 CANIF 为 CANICR 的第二位,表示标准 CAN 中断标志位
    652. sbit CANIF = CANICR ^ 2;
    653. // 定义 CANIE 为 CANICR 的第一位,表示标准 CAN 中断使能
    654. sbit CANIE = CANICR ^ 1;
    655. // 定义 PCANL 为 CANICR 的第零位,表示标准 CAN 中断请求低位
    656. sbit PCANL = CANICR ^ 0;
    657. // 定义 USBCON 为特殊功能寄存器 0xF4,用于 USB 控制寄存器
    658. sfr USBCON = 0xf4;
    659. // 定义 ENUSB 为 USBCON 的第七位,表示 USB 控制器使能
    660. sbit ENUSB = USBCON ^ 7;
    661. // 定义 USBRST 为 USBCON 的第六位,表示 USB 控制器复位
    662. sbit USBRST = USBCON ^ 6;
    663. // 定义 PS2M 为 USBCON 的第五位,表示 PS/2 鼠标使能
    664. sbit PS2M = USBCON ^ 5;
    665. // 定义一个位操作变量PUEN,用于控制USBCON(USB控制)寄存器中的第四个引脚
    666. sbit PUEN = USBCON ^ 4;
    667. // 定义一个位操作变量PDEN,用于控制USBCON(USB控制)寄存器中的第三个引脚
    668. sbit PDEN = USBCON ^ 3;
    669. // 定义一个位操作变量DFREC,用于控制USBCON(USB控制)寄存器中的第二个引脚
    670. sbit DFREC = USBCON ^ 2;
    671. // 定义一个位操作变量DP,用于控制USBCON(USB控制)寄存器中的第一个引脚
    672. sbit DP = USBCON ^ 1;
    673. // 定义一个位操作变量DM,用于控制USBCON(USB控制)寄存器中的第零个引脚
    674. sbit DM = USBCON ^ 0;
    675. // IAP_TPS: IAP操作控制寄存器,使用SFR特殊功能寄存器来定义(Special Function Register)
    676. sfr IAP_TPS = 0xf5;
    677. // IAP_ADDRE: IAP操作地址寄存器,使用SFR特殊功能寄存器来定义。
    678. sfr IAP_ADDRE = 0xf6;
    679. // ICHECR: 串行EEPROM 缓存读写控制寄存器,使用SFR特殊功能寄存器来定义。
    680. sfr ICHECR = 0xf7;
    681. // P7: P7端口寄存器,使用SFR特殊功能寄存器来定义。P7端口是一个8位的GPIO端口寄存器,可以进行输入/输出操作。
    682. sfr P7 = 0xf8;
    683. // P70-P77: P7端口的8个引脚,使用SBIT特殊功能寄存器来定义。
    684. sbit P70 = P7 ^ 0;
    685. sbit P71 = P7 ^ 1;
    686. sbit P72 = P7 ^ 2;
    687. sbit P73 = P7 ^ 3;
    688. sbit P74 = P7 ^ 4;
    689. sbit P75 = P7 ^ 5;
    690. sbit P76 = P7 ^ 6;
    691. sbit P77 = P7 ^ 7;
    692. // LINICR: LIN总线接口控制寄存器,使用SFR特殊功能寄存器来定义。LIN总线是指一种局域网通信协议,被广泛应用于汽车电子控制系统中。
    693. sfr LINICR = 0xf9;
    694. // 定义 PLINH 为 LINICR 寄存器的第3位
    695. sbit PLINH = LINICR ^ 3;
    696. // 定义 LINIF 为 LINICR 寄存器的第2位
    697. sbit LINIF = LINICR ^ 2;
    698. // 定义 LINIE 为 LINICR 寄存器的第1位
    699. sbit LINIE = LINICR ^ 1;
    700. // 定义 PLINL 为 LINICR 寄存器的第0位
    701. sbit PLINL = LINICR ^ 0;
    702. // 定义 LINAR 为地址寄存器
    703. sfr LINAR = 0xfa;
    704. // 定义 LINDR 为数据寄存器
    705. sfr LINDR = 0xfb;
    706. // 定义 USBADR 为USB地址寄存器
    707. sfr USBADR = 0xfc;
    708. // 定义 S4CON 为串口4控制寄存器
    709. sfr S4CON = 0xfd;
    710. // 定义 S4SM0 为串口4模式选择位0
    711. sbit S4SM0 = S4CON ^ 7;
    712. // 定义 S4ST4 为串口4同步/异步模式设置
    713. sbit S4ST4 = S4CON ^ 6;
    714. // 定义 S4SM2 为串口4模式选择位2
    715. sbit S4SM2 = S4CON ^ 5;
    716. // 定义 S4REN 为串口4接收使能位
    717. sbit S4REN = S4CON ^ 4;
    718. // 定义 S4TB8 为串口4发送数据第9个比特位
    719. sbit S4TB8 = S4CON ^ 3;
    720. // 定义 S4RB8 为串口4接收数据第9个比特位
    721. sbit S4RB8 = S4CON ^ 2;
    722. // 定义 S4TI 为串口4发送中断标志位
    723. sbit S4TI = S4CON ^ 1;
    724. // 定义 S4RI 为串口4接收中断标志位
    725. sbit S4RI = S4CON ^ 0;
    726. // 定义 S4BUF 为串口4数据缓冲区
    727. sfr S4BUF = 0xfe;
    728. // 定义 RSTCFG 为复位和时钟控制寄存器
    729. sfr RSTCFG = 0xff;
    730. // 定义 ENLVR 为低压复位功能使能位
    731. sbit ENLVR = RSTCFG ^ 6;
    732. // 定义 P54RST 为P5.4口复位功能使能位
    733. sbit P54RST = RSTCFG ^ 4;
    734. // 如下特殊功能寄存器位于扩展RAM区域
    735. // 访问这些寄存器,需先将EAXFR设置为1,才可正常读写
    736. //     EAXFR = 1;
    737. // 或者
    738. //     P_SW2 |= 0x80;
    739. /////////////////////////////////////////////////
    740. // 7E:FF00H-7E:FFFFH
    741. /////////////////////////////////////////////////
    742. /////////////////////////////////////////////////
    743. // 7E:FE00H-7E:FEFFH
    744. /////////////////////////////////////////////////
    745. // 定义 CLKSEL 为地址为 0x7efe00 的无符号 char 类型变量的指针
    746. #define CLKSEL (*(unsigned char volatile far *)0x7efe00)
    747. // 定义 CLKDIV 为地址为 0x7efe01 的无符号 char 类型变量的指针
    748. #define CLKDIV (*(unsigned char volatile far *)0x7efe01)
    749. // 定义 HIRCCR 为地址为 0x7efe02 的无符号 char 类型变量的指针,HIRCCR 表示高速外部晶振控制寄存器,用于设置和控制高速外部晶振的频率和开关状态
    750. #define HIRCCR (*(unsigned char volatile far *)0x7efe02)
    751. // 定义 XOSCCR 为地址为 0x7efe03 的无符号 char 类型变量的指针,XOSCCR 表示外部晶振控制寄存器,用于设置和控制外部晶振的频率和开关状态
    752. #define XOSCCR (*(unsigned char volatile far *)0x7efe03)
    753. // 定义 IRC32KCR 为地址为 0x7efe04 的无符号 char 类型变量的指针,IRC32KCR 表示32kHz 内部低速晶振控制寄存器,用于设置和控制内部低速晶振的频率和开关状态
    754. #define IRC32KCR (*(unsigned char volatile far *)0x7efe04)
    755. // 定义 MCLKOCR 为地址为 0x7efe05 的无符号 char 类型变量的指针,MCLKOCR 表示主时钟输出控制寄存器,用于控制主时钟输出的频率和开关状态
    756. #define MCLKOCR (*(unsigned char volatile far *)0x7efe05)
    757. // 定义 IRCDB 为地址为 0x7efe06 的无符号 char 类型变量的指针,IRCDB 表示 IRC 调试模式控制寄存器,用于控制调试模式下的内部晶振工作状态
    758. #define IRCDB (*(unsigned char volatile far *)0x7efe06)
    759. // 定义 IRC48MCR 为地址为 0x7efe07 的无符号 char 类型变量的指针,IRC48MCR 表示48MHz 内部高速晶振控制寄存器,用于设置和控制内部高速晶振的频率和开关状态
    760. #define IRC48MCR (*(unsigned char volatile far *)0x7efe07)
    761. // 定义 X32KCR 为地址为 0x7efe08 的无符号 char 类型变量的指针,X32KCR 表示32kHz 外部晶振控制寄存器,用于设置和控制外部32kHz 晶振的频率和开关状态
    762. #define X32KCR (*(unsigned char volatile far *)0x7efe08)
    763. // 定义 IRC48ATRIM 为地址为 0x7efe09 的无符号 char 类型变量的指针,IRC48ATRIM 表示48MHz 内部高速晶振 A 系数校准数据寄存器,用于校准内部高速晶振的频率
    764. #define IRC48ATRIM (*(unsigned char volatile far *)0x7efe09)
    765. // 定义 IRC48BTRIM 为地址为 0x7efe0a 的无符号 char 类型变量的指针,IRC48BTRIM 表示48MHz 内部高速晶振 B 系数校准数据寄存器,用于校准内部高速晶振的频率
    766. #define IRC48BTRIM (*(unsigned char volatile far *)0x7efe0a)
    767. // 定义 HSCLKDIV 为地址为 0x7efe0b 的无符号 char 类型变量的指针,HSCLKDIV 表示高速时钟分频寄存器,用于设置和控制高速时钟的分频系数
    768. #define HSCLKDIV (*(unsigned char volatile far *)0x7efe0b)
    769. // 定义 HPLLCR 为地址为 0x7efe0c 的无符号 char 类型变量的指针,HPLLCR 表示高速 PLL 控制寄存器,用于控制高速 PLL 的频率和开关状态
    770. #define HPLLCR (*(unsigned char volatile far *)0x7efe0c)
    771. // 定义 HPLLPSCR 为地址为 0x7efe0d 的无符号 char 类型变量的指针,HPLLPSCR 表示高速 PLL 分频寄存器,用于设置和控制高速 PLL 的分频系数
    772. #define HPLLPSCR (*(unsigned char volatile far *)0x7efe0d)
    773. // 定义 P0PU 为地址为 0x7efe10 的无符号 char 类型变量的指针,P0PU 表示 P0 口上拉控制寄存器,用于控制 P0 口是否开启上拉电阻
    774. #define P0PU (*(unsigned char volatile far *)0x7efe10)
    775. // 定义 P1PU 为地址为 0x7efe11 的无符号 char 类型变量的指针,P1PU 表示 P1 口上拉控制寄存器,用于控制 P1 口是否开启上拉电阻
    776. #define P1PU (*(unsigned char volatile far *)0x7efe11)
    777. // 定义 P2PU 为地址为 0x7efe12 的无符号 char 类型变量的指针,P2PU 表示 P2 口上拉控制寄存器,用于控制 P2 口是否开启上拉电阻
    778. #define P2PU (*(unsigned char volatile far *)0x7efe12)
    779. // 定义 P3PU 为地址为 0x7efe13 的无符号 char 类型变量的指针,P3PU 表示 P3 口上拉控制寄存器,用于控制 P3 口是否开启上拉电阻
    780. #define P3PU (*(unsigned char volatile far *)0x7efe13)
    781. #define P4PU (*(unsigned char volatile far *)0x7efe14)       // P4~口上拉电阻控制寄存器~7EFE14H~0000,0000$
    782. #define P5PU (*(unsigned char volatile far *)0x7efe15)       // P5~口上拉电阻控制寄存器~7EFE15H~-~-~-~xxx0,0000$
    783. #define P6PU (*(unsigned char volatile far *)0x7efe16)       // P6~口上拉电阻控制寄存器~7EFE16H~0000,0000$
    784. #define P7PU (*(unsigned char volatile far *)0x7efe17)       // P7~口上拉电阻控制寄存器~7EFE17H~0000,0000$
    785. #define P0NCS (*(unsigned char volatile far *)0x7efe18)      // P0~口施密特触发控制寄存器~7EFE18H~0000,0000$
    786. #define P1NCS (*(unsigned char volatile far *)0x7efe19)      // P1~口施密特触发控制寄存器~7EFE19H~0000,0000$
    787. #define P2NCS (*(unsigned char volatile far *)0x7efe1a)      // P2~口施密特触发控制寄存器~7EFE1AH~0000,0000$
    788. #define P3NCS (*(unsigned char volatile far *)0x7efe1b)      // P3~口施密特触发控制寄存器~7EFE1BH~0000,0000$
    789. #define P4NCS (*(unsigned char volatile far *)0x7efe1c)      // P4~口施密特触发控制寄存器~7EFE1CH~0000,0000$
    790. #define P5NCS (*(unsigned char volatile far *)0x7efe1d)      // P5~口施密特触发控制寄存器~7EFE1DH~-~-~-~xxx0,0000$
    791. #define P6NCS (*(unsigned char volatile far *)0x7efe1e)      // P6~口施密特触发控制寄存器~7EFE1EH~0000,0000$
    792. #define P7NCS (*(unsigned char volatile far *)0x7efe1f)      // P7~口施密特触发控制寄存器~7EFE1FH~0000,0000$
    793. #define P0SR (*(unsigned char volatile far *)0x7efe20)       // P0~口电平转换速率寄存器~7EFE20H~1111,1111$
    794. #define P1SR (*(unsigned char volatile far *)0x7efe21)       // P1~口电平转换速率寄存器~7EFE21H~1111,1111$
    795. #define P2SR (*(unsigned char volatile far *)0x7efe22)       // P2~口电平转换速率寄存器~7EFE22H~1111,1111$
    796. #define P3SR (*(unsigned char volatile far *)0x7efe23)       // P3~口电平转换速率寄存器~7EFE23H~1111,1111$
    797. #define P4SR (*(unsigned char volatile far *)0x7efe24)       // P4~口电平转换速率寄存器~7EFE24H~1111,1111$
    798. #define P5SR (*(unsigned char volatile far *)0x7efe25)       // P5~口电平转换速率寄存器~7EFE25H~-~-~-~xxx1,1111$
    799. #define P6SR (*(unsigned char volatile far *)0x7efe26)       // P6~口电平转换速率寄存器~7EFE26H~1111,1111$
    800. #define P7SR (*(unsigned char volatile far *)0x7efe27)       // P7~口电平转换速率寄存器~7EFE27H~1111,1111$
    801. #define P0DR (*(unsigned char volatile far *)0x7efe28)       // P0~口驱动电流控制寄存器~7EFE28H~1111,1111$
    802. #define P1DR (*(unsigned char volatile far *)0x7efe29)       // P1~口驱动电流控制寄存器~7EFE29H~1111,1111$
    803. #define P2DR (*(unsigned char volatile far *)0x7efe2a)       // P2~口驱动电流控制寄存器~7EFE2AH~1111,1111$
    804. #define P3DR (*(unsigned char volatile far *)0x7efe2b)       // P3~口驱动电流控制寄存器~7EFE2BH~1111,1111$
    805. #define P4DR (*(unsigned char volatile far *)0x7efe2c)       // P4~口驱动电流控制寄存器~7EFE2CH~1111,1111$
    806. #define P5DR (*(unsigned char volatile far *)0x7efe2d)       // P5~口驱动电流控制寄存器~7EFE2DH~-~-~-~xxx1,1111$
    807. #define P6DR (*(unsigned char volatile far *)0x7efe2e)       // P6~口驱动电流控制寄存器~7EFE2EH~1111,1111$
    808. #define P7DR (*(unsigned char volatile far *)0x7efe2f)       // P7~口驱动电流控制寄存器~7EFE2FH~1111,1111$
    809. #define P0IE (*(unsigned char volatile far *)0x7efe30)       // P0~口输入使能控制寄存器~7EFE30H~1111,1111$
    810. #define P1IE (*(unsigned char volatile far *)0x7efe31)       // P1~口输入使能控制寄存器~7EFE31H~1111,1111$
    811. #define P2IE (*(unsigned char volatile far *)0x7efe32)       // P2~口输入使能控制寄存器~7EFE32H~1111,1111$
    812. #define P3IE (*(unsigned char volatile far *)0x7efe33)       // P3~口输入使能控制寄存器~7EFE33H~1111,1111$
    813. #define P4IE (*(unsigned char volatile far *)0x7efe34)       // P4~口输入使能控制寄存器~7EFE34H~1111,1111$
    814. #define P5IE (*(unsigned char volatile far *)0x7efe35)       // P5~口输入使能控制寄存器~7EFE35H~-~-~-~xxx1,1111$
    815. #define P6IE (*(unsigned char volatile far *)0x7efe36)       // P6~口输入使能控制寄存器~7EFE36H~1111,1111$
    816. #define P7IE (*(unsigned char volatile far *)0x7efe37)       // P7~口输入使能控制寄存器~7EFE37H~1111,1111$
    817. #define P7DR (*(unsigned char volatile far *)0x7efe2f)       // P7~口驱动电流控制寄存器~7EFE2FH~1111,1111$
    818. #define P0PD (*(unsigned char volatile far *)0x7efe40)       // P0~口下拉电阻控制寄存器~7EFE40H~0000,0000$
    819. #define P1PD (*(unsigned char volatile far *)0x7efe41)       // P1~口下拉电阻控制寄存器~7EFE41H~0000,0000$
    820. #define P2PD (*(unsigned char volatile far *)0x7efe42)       // P2~口下拉电阻控制寄存器~7EFE42H~0000,0000$
    821. #define P3PD (*(unsigned char volatile far *)0x7efe43)       // P3~口下拉电阻控制寄存器~7EFE43H~0000,0000$
    822. #define P4PD (*(unsigned char volatile far *)0x7efe44)       // P4~口下拉电阻控制寄存器~7EFE44H~0000,0000$
    823. #define P5PD (*(unsigned char volatile far *)0x7efe45)       // P5~口下拉电阻控制寄存器~7EFE45H~-~-~-~xxx1,1111$
    824. #define P6PD (*(unsigned char volatile far *)0x7efe46)       // P6~口下拉电阻控制寄存器~7EFE46H~0000,0000$
    825. #define P7PD (*(unsigned char volatile far *)0x7efe47)       // P7~口下拉电阻控制寄存器~7EFE47H~0000,0000$
    826. #define LCMIFCFG (*(unsigned char volatile far *)0x7efe50)   // LCM~接口配置寄存器~7EFE50H~LCMIFIE~-~LCMIFIP[1:0]~LCMIFDPS[1:0]~D16_D8~M68_I80~0x00,0000$
    827. #define LCMIFCFG2 (*(unsigned char volatile far *)0x7efe51)  // LCM~接口配置寄存器~2~7EFE51H~-~LCMIFCPS[1:0]~SETUPT[2:0]~HOLDT[1:0]~x000,0000$
    828. #define LCMIFCR (*(unsigned char volatile far *)0x7efe52)    // LCM~接口控制寄存器~7EFE52H~ENLCMIF~-~-~-~-~CMD[2:0]~0xxx,x000$
    829. #define LCMIFSTA (*(unsigned char volatile far *)0x7efe53)   // LCM~接口状态寄存器~7EFE53H~-~-~-~-~-~-~-~LCMIFIF~xxxx,xxx0$
    830. #define LCMIFDATL (*(unsigned char volatile far *)0x7efe54)  // LCM~接口低字节数据~7EFE54H~LCMIFDAT[7:0]~0000,0000$
    831. #define LCMIFDATH (*(unsigned char volatile far *)0x7efe55)  // LCM~接口高字节数据~7EFE55H~LCMIFDAT[15:8]~0000,0000$
    832. #define RTCCR (*(unsigned char volatile far *)0x7efe60)      // RTC~控制寄存器~7EFE60H~-~-~-~-~-~-~-~RUNRTC~xxxx,xxx0$
    833. #define RTCCFG (*(unsigned char volatile far *)0x7efe61)     // RTC~配置寄存器~7EFE61H~-~-~-~-~-~-~RTCCKS~SETRTC~xxxx,xx00$
    834. #define RTCIEN (*(unsigned char volatile far *)0x7efe62)     // RTC~中断使能寄存器~7EFE62H~EALAI~EDAYI~EHOURI~EMINI~ESECI~ESEC2I~ESEC8I~ESEC32I~0000,0000$
    835. #define RTCIF (*(unsigned char volatile far *)0x7efe63)      // RTC~中断请求寄存器~7EFE63H~ALAIF~DAYIF~HOURIF~MINIF~SECIF~SEC2IF~SEC8IF~SEC32IF~0000,0000$
    836. #define ALAHOUR (*(unsigned char volatile far *)0x7efe64)    // RTC~闹钟的小时值~7EFE64H~-~-~-~xxx0,0000$
    837. #define ALAMIN (*(unsigned char volatile far *)0x7efe65)     // RTC~闹钟的分钟值~7EFE65H~-~-~xx00,0000$
    838. #define ALASEC (*(unsigned char volatile far *)0x7efe66)     // RTC~闹钟的秒值~7EFE66H~-~-~xx00,0000$
    839. #define ALASSEC (*(unsigned char volatile far *)0x7efe67)    // RTC~闹钟的~1/128~秒值~7EFE67H~-~x000,0000$
    840. #define INIYEAR (*(unsigned char volatile far *)0x7efe68)    // RTC~年初始化~7EFE68H~-~x000,0000$
    841. #define INIMONTH (*(unsigned char volatile far *)0x7efe69)   // RTC~月初始化~7EFE69H~-~-~-~-~xxxx,0000$
    842. #define INIDAY (*(unsigned char volatile far *)0x7efe6a)     // RTC~日初始化~7EFE6AH~-~-~-~xxx0,0000$
    843. #define INIHOUR (*(unsigned char volatile far *)0x7efe6b)    // RTC~小时初始化~7EFE6BH~-~-~-~xxx0,0000$
    844. #define INIMIN (*(unsigned char volatile far *)0x7efe6c)     // RTC~分钟初始化~7EFE6CH~-~-~xx00,0000$
    845. #define INISEC (*(unsigned char volatile far *)0x7efe6d)     // RTC~秒初始化~7EFE6DH~-~-~xx00,0000$
    846. #define INISSEC (*(unsigned char volatile far *)0x7efe6e)    // RTC1/128~秒初始化~7EFE6EH~-~x000,0000$
    847. #define YEAR (*(unsigned char volatile far *)0x7efe70)       // RTC~的年计数值~7EFE70H~-~x000,0000$
    848. #define MONTH (*(unsigned char volatile far *)0x7efe71)      // RTC~的月计数值~7EFE71H~-~-~-~-~xxxx,0000$
    849. #define DAY (*(unsigned char volatile far *)0x7efe72)        // RTC~的日计数值~7EFE72H~-~-~-~xxx0,0000$
    850. #define HOUR (*(unsigned char volatile far *)0x7efe73)       // RTC~的小时计数值~7EFE73H~-~-~-~xxx0,0000$
    851. #define MIN (*(unsigned char volatile far *)0x7efe74)        // RTC~的分钟计数值~7EFE74H~-~-~xx00,0000$
    852. #define SEC (*(unsigned char volatile far *)0x7efe75)        // RTC~的秒计数值~7EFE75H~-~-~xx00,0000$
    853. #define SSEC (*(unsigned char volatile far *)0x7efe76)       // RTC~的~1/128~秒计数值~7EFE76H~-~x000,0000$
    854. #define I2CCFG (*(unsigned char volatile far *)0x7efe80)     // I2C~配置寄存器~7EFE80H~ENI2C~MSSL~MSSPEED[6:1]~0000,0000$
    855. #define I2CMSCR (*(unsigned char volatile far *)0x7efe81)    // I2C~主机控制寄存器~7EFE81H~EMSI~-~-~-~MSCMD[3:0]~0xxx,0000$
    856. #define I2CMSST (*(unsigned char volatile far *)0x7efe82)    // I2C~主机状态寄存器~7EFE82H~MSBUSY~MSIF~-~-~-~-~MSACKI~MSACKO~00xx,xx10$
    857. #define I2CSLCR (*(unsigned char volatile far *)0x7efe83)    // I2C~从机控制寄存器~7EFE83H~-~ESTAI~ERXI~ETXI~ESTOI~-~-~SLRST~x000,0xx0$
    858. #define I2CSLST (*(unsigned char volatile far *)0x7efe84)    // I2C~从机状态寄存器~7EFE84H~SLBUSY~STAIF~RXIF~TXIF~STOIF~TXING~SLACKI~SLACKO~0000,0000$
    859. #define I2CSLADR (*(unsigned char volatile far *)0x7efe85)   // I2C~从机地址寄存器~7EFE85H~SLADR[6:0]~MA~0000,0000$
    860. #define I2CTXD (*(unsigned char volatile far *)0x7efe86)     // I2C~数据发送寄存器~7EFE86H~0000,0000$
    861. #define I2CRXD (*(unsigned char volatile far *)0x7efe87)     // I2C~数据接收寄存器~7EFE87H~0000,0000$
    862. #define I2CMSAUX (*(unsigned char volatile far *)0x7efe88)   // I2C~主机辅助控制寄存器~7EFE88H~-~-~-~-~-~-~-~WDTA~xxxx,xxx0$
    863. #define SPFUNC (*(unsigned char volatile far *)0x7efe98)     // 辅助控制寄存器~7EFE98H~-~-~-~-~-~-~-~BKSWR~xxxx,xxx0$
    864. #define RSTFLAG (*(unsigned char volatile far *)0x7efe99)    // 复位标志寄存器~7EFE99H~-~-~-~LVDRSTF~WDTRSTF~SWRSTF~ROMOVF~EXRSTF~xxx1,0100$
    865. #define RSTCR0 (*(unsigned char volatile far *)0x7efe9a)     // 复位控制寄存器~0~7EFE9AH~-~-~-~-~RSTTM34~TSTTM2~-~RSTTM01~xxxx,00x0$
    866. #define RSTCR1 (*(unsigned char volatile far *)0x7efe9b)     // 复位控制寄存器~1~7EFE9BH~-~-~-~-~RSTUR4~RSTUR3~RSTUR2~RSTUR1~xxxx,0000$
    867. #define RSTCR2 (*(unsigned char volatile far *)0x7efe9c)     // 复位控制寄存器~2~7EFE9CH~RSTCAN2~RSTCAN~RSTLIN~RSTRTC~RSTPWMB~RSTPWMA~RSTI2C~RSTSPI~0000,0000$
    868. #define RSTCR3 (*(unsigned char volatile far *)0x7efe9d)     // 复位控制寄存器~3~7EFE9DH~RSTFPU~RSTDMA~RSTLCM~RSTLCD~RSTLED~RSTTKS~RSTCMP~RSTADC~0000,0000$
    869. #define RSTCR4 (*(unsigned char volatile far *)0x7efe9e)     // 复位控制寄存器~4~7EFE9EH~-~-~-~-~-~-~-~RSTMDU~xxxx,xxx0$
    870. #define RSTCR5 (*(unsigned char volatile far *)0x7efe9f)     // 复位控制寄存器~5~7EFE9FH~-~-~-~-~-~-~-~-~xxxx,xxxx$
    871. #define TM0PS (*(unsigned char volatile far *)0x7efea0)      // 定时器~0~时钟预分频寄存器~7EFEA0H~0000,0000$
    872. #define TM1PS (*(unsigned char volatile far *)0x7efea1)      // 定时器~1~时钟预分频寄存器~7EFEA1H~0000,0000$
    873. #define TM2PS (*(unsigned char volatile far *)0x7efea2)      // 定时器~2~时钟预分频寄存器~7EFEA2H~0000,0000$
    874. #define TM3PS (*(unsigned char volatile far *)0x7efea3)      // 定时器~3~时钟预分频寄存器~7EFEA3H~0000,0000$
    875. #define TM4PS (*(unsigned char volatile far *)0x7efea4)      // 定时器~4~时钟预分频寄存器~7EFEA4H~0000,0000$
    876. #define ADCTIM (*(unsigned char volatile far *)0x7efea8)     // ADC~时序控制寄存器~7EFEA8H~CSSETUP~CSHOLD[1:0]~SMPDUTY[4:0]~0010,1010$
    877. #define T3T4PS (*(unsigned char volatile far *)0x7efeac)     // T3/T4 选择寄存器
    878. #define ADCEXCFG (*(unsigned char volatile far *)0x7efead)   // ADC~扩展配置寄存器~7EFEADH~-~-~ADCETRS~[1:0]~-~CVTIMESEL[2:0]~xx00,x000$
    879. #define CMPEXCFG (*(unsigned char volatile far *)0x7efeae)   // 比较器扩展配置寄存器~7EFEAEH~CHYS[1:0]~-~-~-~CMPNS~CMPPS[1:0]~CHYS[1:0]$
    880. #define PWMA_ETRPS (*(unsigned char volatile far *)0x7efeb0) // PWMA~的~ETR~选择寄存器~7EFEB0H~BRKAPS~ETRAPS[1:0]~xxxx,x000$
    881. #define PWMA_ENO (*(unsigned char volatile far *)0x7efeb1)   // PWMA~输出使能控制~7EFEB1H~ENO4N~ENO4P~ENO3N~ENO3P~ENO2N~ENO2P~ENO1N~ENO1P~0000,0000$
    882. #define PWMA_PS (*(unsigned char volatile far *)0x7efeb2)    // PWMA~输出脚选择寄存器~7EFEB2H~C4PS[1:0]~C3PS[1:0]~C2PS[1:0]~C1PS[1:0]~0000,0000$
    883. #define PWMA_IOAUX (*(unsigned char volatile far *)0x7efeb3) // PWMA~辅助寄存器~7EFEB3H~AUX4N~AUX4P~AUX3N~AUX3P~AUX2N~AUX2P~AUX1N~AUX1P~0000,0000$
    884. #define PWMB_ETRPS (*(unsigned char volatile far *)0x7efeb4) // PWMB~的~ETR~选择寄存器~7EFEB4H~BRKBPS~ETRBPS[1:0]~xxxx,x000$
    885. #define PWMB_ENO (*(unsigned char volatile far *)0x7efeb5)   // PWMB~输出使能控制~7EFEB5H~-~ENO8P~-~ENO7P~-~ENO6P~-~ENO5P~x0x0,x0x0$
    886. #define PWMB_PS (*(unsigned char volatile far *)0x7efeb6)    // PWMB~输出脚选择寄存器~7EFEB6H~C8PS[1:0]~C7PS[1:0]~C6PS[1:0]~C5PS[1:0]~0000,0000$
    887. #define PWMB_IOAUX (*(unsigned char volatile far *)0x7efeb7) // PWMB~辅助寄存器~7EFEB7H~-~AUX8P~-~AUX7P~-~AUX6P~-~AUX5P~x0x0,x0x0$
    888. #define CANAR (*(unsigned char volatile far *)0x7efebb)      // CANBUS~地址寄存器~7EFEBBH~0000,0000$
    889. #define CANDR (*(unsigned char volatile far *)0x7efebc)      // CANBUS~数据寄存器~7EFEBCH~0000,0000$
    890. #define PWMA_CR1 (*(unsigned char volatile far *)0x7efec0)   // PWMA~控制寄存器~1~7EFEC0H~ARPE~CMS[1:0]~DIR~OPM~URS~UDIS~CEN~0000,0000$
    891. #define PWMA_CR2 (*(unsigned char volatile far *)0x7efec1)   // PWMA~控制寄存器~2~7EFEC1H~-~MMS[2:0]~-~COMS~-~CCPC~x000,x0x0$
    892. #define PWMA_SMCR (*(unsigned char volatile far *)0x7efec2)  // PWMA~从模式控制寄存器~7EFEC2H~MSM~TS[2:0]~-~SMS[2:0]~0000,x000$
    893. #define PWMA_ETR (*(unsigned char volatile far *)0x7efec3)   // PWMA~外部触发寄存器~7EFEC3H~ETP~ECE~ETPS[1:0]~ETF[3:0]~0000,0000$
    894. #define PWMA_IER (*(unsigned char volatile far *)0x7efec4)   // PWMA~中断使能寄存器~7EFEC4H~BIE~TIE~COMIE~CC4IE~CC3IE~CC2IE~CC1IE~UIE~0000,0000$
    895. #define PWMA_SR1 (*(unsigned char volatile far *)0x7efec5)   // PWMA~状态寄存器~1~7EFEC5H~BIF~TIF~COMIF~CC4IF~CC3IF~CC2IF~CC1IF~UIF~0000,0000$
    896. #define PWMA_SR2 (*(unsigned char volatile far *)0x7efec6)   // PWMA~状态寄存器~2~7EFEC6H~-~-~-~CC4OF~CC3OF~CC2OF~CC1OF~-~xxx0,000x$
    897. #define PWMA_EGR (*(unsigned char volatile far *)0x7efec7)   // PWMA~事件发生寄存器~7EFEC7H~BG~TG~COMG~CC4G~CC3G~CC2G~CC1G~UG~0000,0000$
    898. #define PWMA_CCMR1 (*(unsigned char volatile far *)0x7efec8) //
    899. #define PWMA_CCMR2 (*(unsigned char volatile far *)0x7efec9) //
    900. #define PWMA_CCMR3 (*(unsigned char volatile far *)0x7efeca) //
    901. #define PWMA_CCMR4 (*(unsigned char volatile far *)0x7efecb) //
    902. #define PWMA_CCER1 (*(unsigned char volatile far *)0x7efecc) //
    903. #define PWMA_CCER2 (*(unsigned char volatile far *)0x7efecd) //
    904. #define PWMA_CNTRH (*(unsigned char volatile far *)0x7efece) // PWMA~计数器高字节~7EFECEH~CNT[15:8]~0000,0000$
    905. #define PWMA_CNTRL (*(unsigned char volatile far *)0x7efecf) // PWMA~计数器低字节~7EFECFH~CNT[7:0]~0000,0000$
    906. #define PWMA_PSCRH (*(unsigned char volatile far *)0x7efed0) // PWMA~预分频高字节~7EFED0H~PSC[15:8]~0000,0000$
    907. #define PWMA_PSCRL (*(unsigned char volatile far *)0x7efed1) // PWMA~预分频低字节~7EFED1H~PSC[7:0]~0000,0000$
    908. #define PWMA_ARRH (*(unsigned char volatile far *)0x7efed2)  // PWMA~自动重装寄存器高字节~7EFED2H~ARR[15:8]~0000,0000$
    909. #define PWMA_ARRL (*(unsigned char volatile far *)0x7efed3)  // PWMA~自动重装寄存器低字节~7EFED3H~ARR[7:0]~0000,0000$
    910. #define PWMA_RCR (*(unsigned char volatile far *)0x7efed4)   // PWMA~重复计数器寄存器~7EFED4H~REP[7:0]~0000,0000$
    911. #define PWMA_CCR1H (*(unsigned char volatile far *)0x7efed5) // PWMA~比较捕获寄存器~1~高位~7EFED5H~CCR1[15:8]~0000,0000$
    912. #define PWMA_CCR1L (*(unsigned char volatile far *)0x7efed6) // PWMA~比较捕获寄存器~1~低位~7EFED6H~CCR1[7:0]~0000,0000$
    913. #define PWMA_CCR2H (*(unsigned char volatile far *)0x7efed7) // PWMA~比较捕获寄存器~2~高位~7EFED7H~CCR2[15:8]~0000,0000$
    914. #define PWMA_CCR2L (*(unsigned char volatile far *)0x7efed8) // PWMA~比较捕获寄存器~2~低位~7EFED8H~CCR2[7:0]~0000,0000$
    915. #define PWMA_CCR3H (*(unsigned char volatile far *)0x7efed9) // PWMA~比较捕获寄存器~3~高位~7EFED9H~CCR3[15:8]~0000,0000$
    916. #define PWMA_CCR3L (*(unsigned char volatile far *)0x7efeda) // PWMA~比较捕获寄存器~3~低位~7EFEDAH~CCR3[7:0]~0000,0000$
    917. #define PWMA_CCR4H (*(unsigned char volatile far *)0x7efedb) // PWMA~比较捕获寄存器~4~高位~7EFEDBH~CCR4[15:8]~0000,0000$
    918. #define PWMA_CCR4L (*(unsigned char volatile far *)0x7efedc) // PWMA~比较捕获寄存器~4~低位~7EFEDCH~CCR4[7:0]~0000,0000$
    919. #define PWMA_BKR (*(unsigned char volatile far *)0x7efedd)   // PWMA~刹车寄存器~7EFEDDH~MOE~AOE~BKP~BKE~OSSR~OSSI~LOCK[1:0]~0000,000x$
    920. #define PWMA_DTR (*(unsigned char volatile far *)0x7efede)   // PWMA~死区控制寄存器~7EFEDEH~DTG[7:0]~0000,0000$
    921. #define PWMA_OISR (*(unsigned char volatile far *)0x7efedf)  // PWMA~输出空闲状态寄存器~7EFEDFH~OIS4N~OIS4~OIS3N~OIS3~OIS2N~OIS2~OIS1N~OIS1~0000,0000$
    922. #define PWMB_CR1 (*(unsigned char volatile far *)0x7efee0)   // PWMB~控制寄存器~1~7EFEE0H~ARPE~CMS[1:0]~DIR~OPM~URS~UDIS~CEN~0000,0000$
    923. #define PWMB_CR2 (*(unsigned char volatile far *)0x7efee1)   // PWMB~控制寄存器~2~7EFEE1H~-~MMS[2:0]~-~COMS~-~CCPC~x000,x0x0$
    924. #define PWMB_SMCR (*(unsigned char volatile far *)0x7efee2)  // PWMB~从模式控制寄存器~7EFEE2H~MSM~TS[2:0]~-~SMS[2:0]~0000,x000$
    925. #define PWMB_ETR (*(unsigned char volatile far *)0x7efee3)   // PWMB~外部触发寄存器~7EFEE3H~ETP~ECE~ETPS[1:0]~ETF[3:0]~0000,0000$
    926. #define PWMB_IER (*(unsigned char volatile far *)0x7efee4)   // PWMB~中断使能寄存器~7EFEE4H~BIE~TIE~COMIE~CC8IE~CC7IE~CC6IE~CC5IE~UIE~0000,0000$
    927. #define PWMB_SR1 (*(unsigned char volatile far *)0x7efee5)   // PWMB~状态寄存器~1~7EFEE5H~BIF~TIF~COMIF~CC8IF~CC7IF~CC6IF~CC5IF~UIF~0000,0000$
    928. #define PWMB_SR2 (*(unsigned char volatile far *)0x7efee6)   // PWMB~状态寄存器~2~7EFEE6H~-~-~-~CC8OF~CC7OF~CC6OF~CC5OF~-~xxx0,000x$
    929. #define PWMB_EGR (*(unsigned char volatile far *)0x7efee7)   // PWMB~事件发生寄存器~7EFEE7H~BG~TG~COMG~CC8G~CC7G~CC6G~CC5G~UG~0000,0000$
    930. #define PWMB_CCMR1 (*(unsigned char volatile far *)0x7efee8) //
    931. #define PWMB_CCMR2 (*(unsigned char volatile far *)0x7efee9) //
    932. #define PWMB_CCMR3 (*(unsigned char volatile far *)0x7efeea) //
    933. #define PWMB_CCMR4 (*(unsigned char volatile far *)0x7efeeb) //
    934. #define PWMB_CCER1 (*(unsigned char volatile far *)0x7efeec) // PWMB~捕获比较使能寄存器~1~7EFEECH~-~-~CC6P~CC6E~-~-~CC5P~CC5E~xx00,xx00$
    935. #define PWMB_CCER2 (*(unsigned char volatile far *)0x7efeed) // PWMB~捕获比较使能寄存器~2~7EFEEDH~-~-~CC8P~CC8E~-~-~CC7P~CC7E~xx00,xx00$
    936. #define PWMB_CNTRH (*(unsigned char volatile far *)0x7efeee) // PWMB~计数器高字节~7EFEEEH~CNT[15:8]~0000,0000$
    937. #define PWMB_CNTRL (*(unsigned char volatile far *)0x7efeef) // PWMB~计数器低字节~7EFEEFH~CNT[7:0]~0000,0000$
    938. #define PWMB_PSCRH (*(unsigned char volatile far *)0x7efef0) // PWMB~预分频高字节~7EFEF0H~PSC[15:8]~0000,0000$
    939. #define PWMB_PSCRL (*(unsigned char volatile far *)0x7efef1) // PWMB~预分频低字节~7EFEF1H~PSC[7:0]~0000,0000$
    940. #define PWMB_ARRH (*(unsigned char volatile far *)0x7efef2)  // PWMB~自动重装寄存器高字节~7EFEF2H~ARR[15:8]~0000,0000$
    941. #define PWMB_ARRL (*(unsigned char volatile far *)0x7efef3)  // PWMB~自动重装寄存器低字节~7EFEF3H~ARR[7:0]~0000,0000$
    942. #define PWMB_RCR (*(unsigned char volatile far *)0x7efef4)   // PWMB~重复计数器寄存器~7EFEF4H~REP[7:0]~0000,0000$
    943. #define PWMB_CCR5H (*(unsigned char volatile far *)0x7efef5) // PWMB~比较捕获寄存器~5~高位~7EFEF5H~CCR1[15:8]~0000,0000$
    944. #define PWMB_CCR5L (*(unsigned char volatile far *)0x7efef6) // PWMB~比较捕获寄存器~5~低位~7EFEF6H~CCR1[7:0]~0000,0000$
    945. #define PWMB_CCR6H (*(unsigned char volatile far *)0x7efef7) // PWMB~比较捕获寄存器~6~高位~7EFEF7H~CCR2[15:8]~0000,0000$
    946. #define PWMB_CCR6L (*(unsigned char volatile far *)0x7efef8) // PWMB~比较捕获寄存器~6~低位~7EFEF8H~CCR2[7:0]~0000,0000$
    947. #define PWMB_CCR7H (*(unsigned char volatile far *)0x7efef9) // PWMB~比较捕获寄存器~7~高位~7EFEF9H~CCR3[15:8]~0000,0000$
    948. #define PWMB_CCR7L (*(unsigned char volatile far *)0x7efefa) // PWMB~比较捕获寄存器~7~低位~7EFEFAH~CCR3[7:0]~0000,0000$
    949. #define PWMB_CCR8H (*(unsigned char volatile far *)0x7efefb) // PWMB~比较捕获寄存器~8~高位~7EFEFBH~CCR4[15:8]~0000,0000$
    950. #define PWMB_CCR8L (*(unsigned char volatile far *)0x7efefc) // PWMB~比较捕获寄存器~8~低位~7EFEFCH~CCR4[7:0]~0000,0000$
    951. #define PWMB_BKR (*(unsigned char volatile far *)0x7efefd)   // PWMB~刹车寄存器~7EFEFDH~MOE~AOE~BKP~BKE~OSSR~OSSI~LOCK[1:0]~-~0000,000x$
    952. #define PWMB_DTR (*(unsigned char volatile far *)0x7efefe)   // PWMB~死区控制寄存器~7EFEFEH~DTG[7:0]~0000,0000$
    953. #define PWMB_OISR (*(unsigned char volatile far *)0x7efeff)  // PWMB~输出空闲状态寄存器~7EFEFFH~-~OIS8~-~OIS7~-~OIS6~-~OIS5~x0x0,x0x0$
    954. // 定义一个结构体类型 TAG_PWM_STRUCT,用于表示 PWM 模块寄存器的各个寄存器位
    955. typedef struct TAG_PWM_STRUCT
    956. {
    957.     unsigned char CR1;   // 控制寄存器 1
    958.     unsigned char CR2;   // 控制寄存器 2
    959.     unsigned char SMCR;  // 从模式控制寄存器
    960.     unsigned char ETR;   // 外部触发寄存器
    961.     unsigned char IER;   // 中断使能寄存器
    962.     unsigned char SR1;   // 状态寄存器 1
    963.     unsigned char SR2;   // 状态寄存器 2
    964.     unsigned char EGR;   // 事件生成寄存器
    965.     unsigned char CCMR1; // 捕获/比较模式寄存器 1
    966.     unsigned char CCMR2; // 捕获/比较模式寄存器 2
    967.     unsigned char CCMR3; // 捕获/比较模式寄存器 3
    968.     unsigned char CCMR4; // 捕获/比较模式寄存器 4
    969.     unsigned char CCER1; // 捕获/比较使能寄存器 1
    970.     unsigned char CCER2; // 捕获/比较使能寄存器 2
    971.     unsigned char CNTRH; // 计数器高位寄存器
    972.     unsigned char CNTRL; // 计数器低位寄存器
    973.     unsigned char PSCRH; // 分频器高位寄存器
    974.     unsigned char PSCRL; // 分频器低位寄存器
    975.     unsigned char ARRH;  // 自动重载寄存器高位
    976.     unsigned char ARRL;  // 自动重载寄存器低位
    977.     unsigned char RCR;   // 重复计数寄存器
    978.     unsigned char CCR1H; // 比较寄存器 1 高位
    979.     unsigned char CCR1L; // 比较寄存器 1 低位
    980.     unsigned char CCR2H; // 比较寄存器 2 高位
    981.     unsigned char CCR2L; // 比较寄存器 2 低位
    982.     unsigned char CCR3H; // 比较寄存器 3 高位
    983.     unsigned char CCR3L; // 比较寄存器 3 低位
    984.     unsigned char CCR4H; // 比较寄存器 4 高位
    985.     unsigned char CCR4L; // 比较寄存器 4 低位
    986.     unsigned char BKR;   // 死区控制寄存器
    987.     unsigned char DTR;   // DMA 传输寄存器
    988.     unsigned char OISR;  // 输出空闲状态寄存器
    989. } PWM_STRUCT;
    990. //#define PWMA ((PWM_STRUCT volatile far *)0x7efec0) // 比较模式寄存器~4~IC4F[3:0]~IC4PSC[1:0]~CC4S[1:0]~0000,0000$比较模式寄存器~3~IC3F[3:0]~IC3PSC[1:0]~CC3S[1:0]~0000,0000$比较模式寄存器~2~IC2F[3:0]~IC2PSC[1:0]~CC2S[1:0]~0000,0000$比较模式寄存器~1~IC1F[3:0]~IC1PSC[1:0]~CC1S[1:0]~0000,0000$捕获模式寄存器~17EFEC8H$
    991. //#define PWMB ((PWM_STRUCT volatile far *)0x7efee0) // 比较模式寄存器~4~IC8F[3:0]~IC8PSC[1:0]~CC8S[1:0]~0000,0000$比较模式寄存器~3~IC7F[3:0]~IC7PSC[1:0]~CC7S[1:0]~0000,0000$捕获模式寄存器~37EFEEAHOC7CE~OC7M[2:0]~OC7PE~OC7FE~CC7S[1:0]~0000,0000$比较模式寄存器~2~IC6F[3:0]~IC6PSC[1:0]~CC6S[1:0]~0000,0000PWMB_CCMR3$比较模式寄存器~1~IC5F[3:0]~IC5PSC[1:0]~CC5S[1:0]~0000,0000$
    992. /////////////////////////////////////////////////
    993. // 7E:FD00H-7E:FDFFH
    994. /////////////////////////////////////////////////
    995. #define P0INTE (*(unsigned char volatile far *)0x7efd00)    // P0~口中断使能寄存器~7EFD00H~P07INTE~P06INTE~P05INTE~P04INTE~P03INTE~P02INTE~P01INTE~P00INTE~0000,0000$
    996. #define P1INTE (*(unsigned char volatile far *)0x7efd01)    // P1~口中断使能寄存器~7EFD01H~P17INTE~P16INTE~P15INTE~P14INTE~P13INTE~P12INTE~P11INTE~P10INTE~0000,0000$
    997. #define P2INTE (*(unsigned char volatile far *)0x7efd02)    // P2~口中断使能寄存器~7EFD02H~P27INTE~P26INTE~P25INTE~P24INTE~P23INTE~P22INTE~P21INTE~P20INTE~0000,0000$
    998. #define P3INTE (*(unsigned char volatile far *)0x7efd03)    // P3~口中断使能寄存器~7EFD03H~P37INTE~P36INTE~P35INTE~P34INTE~P33INTE~P32INTE~P31INTE~P30INTE~0000,0000$
    999. #define P4INTE (*(unsigned char volatile far *)0x7efd04)    // P4~口中断使能寄存器~7EFD04H~P47INTE~P46INTE~P45INTE~P44INTE~P43INTE~P42INTE~P41INTE~P40INTE~0000,0000$
    1000. #define P5INTE (*(unsigned char volatile far *)0x7efd05)    // P5~口中断使能寄存器~7EFD05H~-~-~P55INTE~P54INTE~P53INTE~P52INTE~P51INTE~P50INTE~xx00,0000$
    1001. #define P6INTE (*(unsigned char volatile far *)0x7efd06)    // P6~口中断使能寄存器~7EFD06H~P67INTE~P66INTE~P65INTE~P64INTE~P63INTE~P62INTE~P61INTE~P60INTE~0000,0000$
    1002. #define P7INTE (*(unsigned char volatile far *)0x7efd07)    // P7~口中断使能寄存器~7EFD07H~P77INTE~P76INTE~P75INTE~P74INTE~P73INTE~P72INTE~P71INTE~P70INTE~0000,0000$
    1003. #define P0INTF (*(unsigned char volatile far *)0x7efd10)    // P0~口中断标志寄存器~7EFD10H~P07INTF~P06INTF~P05INTF~P04INTF~P03INTF~P02INTF~P01INTF~P00INTF~0000,0000$
    1004. #define P1INTF (*(unsigned char volatile far *)0x7efd11)    // P1~口中断标志寄存器~7EFD11H~P17INTF~P16INTF~P15INTF~P14INTF~P13INTF~P12INTF~P11INTF~P10INTF~0000,0000$
    1005. #define P2INTF (*(unsigned char volatile far *)0x7efd12)    // P2~口中断标志寄存器~7EFD12H~P27INTF~P26INTF~P25INTF~P24INTF~P23INTF~P22INTF~P21INTF~P20INTF~0000,0000$
    1006. #define P3INTF (*(unsigned char volatile far *)0x7efd13)    // P3~口中断标志寄存器~7EFD13H~P37INTF~P36INTF~P35INTF~P34INTF~P33INTF~P32INTF~P31INTF~P30INTF~0000,0000$
    1007. #define P4INTF (*(unsigned char volatile far *)0x7efd14)    // P4~口中断标志寄存器~7EFD14H~P47INTF~P46INTF~P45INTF~P44INTF~P43INTF~P42INTF~P41INTF~P40INTF~0000,0000$
    1008. #define P5INTF (*(unsigned char volatile far *)0x7efd15)    // P5~口中断标志寄存器~7EFD15H~-~-~P55INTF~P54INTF~P53INTF~P52INTF~P51INTF~P50INTF~xx00,0000$
    1009. #define P6INTF (*(unsigned char volatile far *)0x7efd16)    // P6~口中断标志寄存器~7EFD16H~P67INTF~P66INTF~P65INTF~P64INTF~P63INTF~P62INTF~P61INTF~P60INTF~0000,0000$
    1010. #define P7INTF (*(unsigned char volatile far *)0x7efd17)    // P7~口中断标志寄存器~7EFD17H~P77INTF~P76INTF~P75INTF~P74INTF~P73INTF~P72INTF~P71INTF~P70INTF~0000,0000$
    1011. #define P0IM0 (*(unsigned char volatile far *)0x7efd20)     // P0~口中断模式寄存器~0~7EFD20H~P07IM0~P06IM0~P05IM0~P04IM0~P03IM0~P02IM0~P01IM0~P00IM0~0000,0000$
    1012. #define P1IM0 (*(unsigned char volatile far *)0x7efd21)     // P1~口中断模式寄存器~0~7EFD21H~P17IM0~P16IM0~P15IM0~P14IM0~P13IM0~P12IM0~P11IM0~P10IM0~0000,0000$
    1013. #define P2IM0 (*(unsigned char volatile far *)0x7efd22)     // P2~口中断模式寄存器~0~7EFD22H~P27IM0~P26IM0~P25IM0~P24IM0~P23IM0~P22IM0~P21IM0~P20IM0~0000,0000$
    1014. #define P3IM0 (*(unsigned char volatile far *)0x7efd23)     // P3~口中断模式寄存器~0~7EFD23H~P37IM0~P36IM0~P35IM0~P34IM0~P33IM0~P32IM0~P31IM0~P30IM0~0000,0000$
    1015. #define P4IM0 (*(unsigned char volatile far *)0x7efd24)     // P4~口中断模式寄存器~0~7EFD24H~P47IM0~P46IM0~P45IM0~P44IM0~P43IM0~P42IM0~P41IM0~P40IM0~0000,0000$
    1016. #define P5IM0 (*(unsigned char volatile far *)0x7efd25)     // P5~口中断模式寄存器~0~7EFD25H~-~-~P55IM0~P54IM0~P53IM0~P52IM0~P51IM0~P50IM0~xx00,0000$
    1017. #define P6IM0 (*(unsigned char volatile far *)0x7efd26)     // P6~口中断模式寄存器~0~7EFD26H~P67IM0~P66IM0~P65IM0~P64IM0~P63IM0~P62IM0~P61IM0~P60IM0~0000,0000$
    1018. #define P7IM0 (*(unsigned char volatile far *)0x7efd27)     // P7~口中断模式寄存器~0~7EFD27H~P77IM0~P76IM0~P75IM0~P74IM0~P73IM0~P72IM0~P71IM0~P70IM0~0000,0000$
    1019. #define P0IM1 (*(unsigned char volatile far *)0x7efd30)     // P0~口中断模式寄存器~1~7EFD30H~P07IM1~P06IM1~P05IM1~P04IM1~P03IM1~P02IM1~P01IM1~P00IM1~0000,0000$
    1020. #define P1IM1 (*(unsigned char volatile far *)0x7efd31)     // P1~口中断模式寄存器~1~7EFD31H~P17IM1~P16IM1~P15IM1~P14IM1~P13IM1~P12IM1~P11IM1~P10IM1~0000,0000$
    1021. #define P2IM1 (*(unsigned char volatile far *)0x7efd32)     // P2~口中断模式寄存器~1~7EFD32H~P27IM1~P26IM1~P25IM1~P24IM1~P23IM1~P22IM1~P21IM1~P20IM1~0000,0000$
    1022. #define P3IM1 (*(unsigned char volatile far *)0x7efd33)     // P3~口中断模式寄存器~1~7EFD33H~P37IM1~P36IM1~P35IM1~P34IM1~P33IM1~P32IM1~P31IM1~P30IM1~0000,0000$
    1023. #define P4IM1 (*(unsigned char volatile far *)0x7efd34)     // P4~口中断模式寄存器~1~7EFD34H~P47IM1~P46IM1~P45IM1~P44IM1~P43IM1~P42IM1~P41IM1~P40IM1~0000,0000$
    1024. #define P5IM1 (*(unsigned char volatile far *)0x7efd35)     // P5~口中断模式寄存器~1~7EFD35H~-~-~P55IM1~P54IM1~P53IM1~P52IM1~P51IM1~P50IM1~xx00,0000$
    1025. #define P6IM1 (*(unsigned char volatile far *)0x7efd36)     // P6~口中断模式寄存器~1~7EFD36H~P67IM1~P66IM1~P65IM1~P64IM1~P63IM1~P62IM1~P61IM1~P60IM1~0000,0000$
    1026. #define P7IM1 (*(unsigned char volatile far *)0x7efd37)     // P7~口中断模式寄存器~1~7EFD37H~P77IM1~P76IM1~P75IM1~P74IM1~P73IM1~P72IM1~P71IM1~P70IM1~0000,0000$
    1027. #define P0WKUE (*(unsigned char volatile far *)0x7efd40)    // P0~口中断唤醒使能~7EFD40H~P07WKUE~P06WKUE~P05WKUE~P04WKUE~P03WKUE~P02WKUE~P01WKUE~P00WKUE~0000,0000$
    1028. #define P1WKUE (*(unsigned char volatile far *)0x7efd41)    // P1~口中断唤醒使能~7EFD41H~P17WKUE~P16WKUE~P15WKUE~P14WKUE~P13WKUE~P12WKUE~P11WKUE~P10WKUE~0000,0000$
    1029. #define P2WKUE (*(unsigned char volatile far *)0x7efd42)    // P2~口中断唤醒使能~7EFD42H~P27WKUE~P26WKUE~P25WKUE~P24WKUE~P23WKUE~P22WKUE~P21WKUE~P20WKUE~0000,0000$
    1030. #define P3WKUE (*(unsigned char volatile far *)0x7efd43)    // P3~口中断唤醒使能~7EFD43H~P37WKUE~P36WKUE~P35WKUE~P34WKUE~P33WKUE~P32WKUE~P31WKUE~P30WKUE~0000,0000$
    1031. #define P4WKUE (*(unsigned char volatile far *)0x7efd44)    // P4~口中断唤醒使能~7EFD44H~P47WKUE~P46WKUE~P45WKUE~P44WKUE~P43WKUE~P42WKUE~P41WKUE~P40WKUE~0000,0000$
    1032. #define P5WKUE (*(unsigned char volatile far *)0x7efd45)    // P5~口中断唤醒使能~7EFD45H~-~-~P55WKUE~P54WKUE~P53WKUE~P52WKUE~P51WKUE~P50WKUE~xx00,0000$
    1033. #define P6WKUE (*(unsigned char volatile far *)0x7efd46)    // P6~口中断唤醒使能~7EFD46H~P67WKUE~P66WKUE~P65WKUE~P64WKUE~P63WKUE~P62WKUE~P61WKUE~P60WKUE~0000,0000$
    1034. #define P7WKUE (*(unsigned char volatile far *)0x7efd47)    // P7~口中断唤醒使能~7EFD47H~P77WKUE~P76WKUE~P75WKUE~P74WKUE~P73WKUE~P72WKUE~P71WKUE~P70WKUE~0000,0000$
    1035. #define PINIPL (*(unsigned char volatile far *)0x7efd60)    // I/O~口中断优先级低寄存器~7EFD60H~P7IP~P6IP~P5IP~P4IP~P3IP~P2IP~P1IP~P0IP~0000,0000$
    1036. #define PINIPH (*(unsigned char volatile far *)0x7efd61)    // I/O~口中断优先级高寄存器~7EFD61H~P7IPH~P6IPH~P5IPH~P4IPH~P3IPH~P2IPH~P1IPH~P0IPH~0000,0000$
    1037. #define UR1TOCR (*(unsigned char volatile far *)0x7efd70)   // 串口~1~超时控制寄存器~7EFD70H~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1038. #define UR1TOSR (*(unsigned char volatile far *)0x7efd71)   // 串口~1~超时状态寄存器~7EFD71H~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1039. #define UR1TOTH (*(unsigned char volatile far *)0x7efd72)   // 串口~1~超时长度控制寄存器~7EFD72H~TM[15:8]~0000,0000$
    1040. #define UR1TOTL (*(unsigned char volatile far *)0x7efd73)   // 串口~1~超时长度控制寄存器~7EFD73H~TM[7:0]~0000,0000$
    1041. #define UR2TOCR (*(unsigned char volatile far *)0x7efd74)   // 串口~2~超时控制寄存器~7EFD74H~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1042. #define UR2TOSR (*(unsigned char volatile far *)0x7efd75)   // 串口~2~超时状态寄存器~7EFD75H~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1043. #define UR2TOTH (*(unsigned char volatile far *)0x7efd76)   // 串口~2~超时长度控制寄存器~7EFD76H~TM[15:8]~0000,0000$
    1044. #define UR2TOTL (*(unsigned char volatile far *)0x7efd77)   // 串口~2~超时长度控制寄存器~7EFD77H~TM[7:0]~0000,0000$
    1045. #define UR3TOCR (*(unsigned char volatile far *)0x7efd78)   // 串口~3~超时控制寄存器~7EFD78H~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1046. #define UR3TOSR (*(unsigned char volatile far *)0x7efd79)   // 串口~3~超时状态寄存器~7EFD79H~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1047. #define UR3TOTH (*(unsigned char volatile far *)0x7efd7a)   // 串口~3~超时长度控制寄存器~7EFD7AH~TM[15:8]~0000,0000$
    1048. #define UR3TOTL (*(unsigned char volatile far *)0x7efd7b)   // 串口~3~超时长度控制寄存器~7EFD7BH~TM[7:0]~0000,0000$
    1049. #define UR4TOCR (*(unsigned char volatile far *)0x7efd7c)   // 串口~4~超时控制寄存器~7EFD7CH~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1050. #define UR4TOSR (*(unsigned char volatile far *)0x7efd7d)   // 串口~4~超时状态寄存器~7EFD7DH~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1051. #define UR4TOTH (*(unsigned char volatile far *)0x7efd7e)   // 串口~4~超时长度控制寄存器~7EFD7EH~TM[15:8]~0000,0000$
    1052. #define UR4TOTL (*(unsigned char volatile far *)0x7efd7f)   // 串口~4~超时长度控制寄存器~7EFD7FH~TM[7:0]~0000,0000$
    1053. #define SPITOCR (*(unsigned char volatile far *)0x7efd80)   // SPI~超时控制寄存器~7EFD80H~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1054. #define SPITOSR (*(unsigned char volatile far *)0x7efd81)   // SPI~超时状态寄存器~7EFD81H~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1055. #define SPITOTH (*(unsigned char volatile far *)0x7efd82)   // SPI~超时长度控制寄存器~7EFD82H~TM[15:8]~0000,0000$
    1056. #define SPITOTL (*(unsigned char volatile far *)0x7efd83)   // SPI~超时长度控制寄存器~7EFD83H~TM[7:0]~0000,0000$
    1057. #define I2CTOCR (*(unsigned char volatile far *)0x7efd84)   // I2C~超时控制寄存器~7EFD84H~ENTO~ENTOI~SCALE~-~-~-~-~-~000x,xxxx$
    1058. #define I2CTOSR (*(unsigned char volatile far *)0x7efd85)   // I2C~超时状态寄存器~7EFD85H~-~-~-~-~-~-~-~TOIF~xxxx,xxx0$
    1059. #define I2CTOTH (*(unsigned char volatile far *)0x7efd86)   // I2C~超时长度控制寄存器~7EFD86H~TM[15:8]~0000,0000$
    1060. #define I2CTOTL (*(unsigned char volatile far *)0x7efd87)   // I2C~超时长度控制寄存器~7EFD87H~TM[7:0]~0000,0000$
    1061. #define I2SCR (*(unsigned char volatile far *)0x7efd98)     // I2S~控制寄存器~7EFD98H~TXEIE~RXNEIE~ERRIE~FRF~-~-~TXDMAEN~RXDMAEN~0000,xx00$
    1062. #define I2SSR (*(unsigned char volatile far *)0x7efd99)     // I2S~状态寄存器~7EFD99H~-~FRE~BUY~OVR~UDR~CHSID~TXE~RXNE~x000,0000$
    1063. #define I2SDRH (*(unsigned char volatile far *)0x7efd9a)    // I2S~数据寄存器高字节~7EFD9AH~DR[15:8]~0000,0000$
    1064. #define I2SDRL (*(unsigned char volatile far *)0x7efd9b)    // I2S~数据寄存器低字节~7EFD9BH~DR[7:0]~0000,0000$
    1065. #define I2SPRH (*(unsigned char volatile far *)0x7efd9c)    // I2S~分频寄存器高字节~7EFD9CH~-~-~-~-~-~-~MCKOE~ODD~xxxx,xx00$
    1066. #define I2SPRL (*(unsigned char volatile far *)0x7efd9d)    // I2S~分频寄存器低字节~7EFD9DH~DIV[7:0]~0000,0000$
    1067. #define I2SCFGH (*(unsigned char volatile far *)0x7efd9e)   // I2S~配置寄存器高字节~7EFD9EH~-~-~-~-~-~I2SE~I2SCFG[1:0]~xxxx,x000$
    1068. #define I2SCFGL (*(unsigned char volatile far *)0x7efd9f)   // I2S~配置寄存器低字节~7EFD9FH~PCMSYNC~-~STD[1:0]~CKPOL~DATLEN[1:0]~CHLEN~0x00,0000$
    1069. #define I2SMD (*(unsigned char volatile far *)0x7efda0)     // I2S~从模式控制寄存器~7EFDA0H~MODE[7:0]~0000,0000$
    1070. #define CRECR (*(unsigned char volatile far *)0x7efda8)     // CRE~控制寄存器~7EFDA8H~ENCRE~MONO~UPT[1:0]~CREHF~CREINC~CREDEC~CRERDY~0000,0000$
    1071. #define CRECNTH (*(unsigned char volatile far *)0x7efda9)   // CRE~校准目标寄存器~7EFDA9H~CNT[15:8]~0000,0000$
    1072. #define CRECNTL (*(unsigned char volatile far *)0x7efdaa)   // CRE~校准目标寄存器~7EFDAAH~CNT[7:0]~0000,0000$
    1073. #define CRERES (*(unsigned char volatile far *)0x7efdab)    // CRE~分辨率控制寄存器~7EFDABH~RES[7:0]~0000,0000$
    1074. #define S2CFG (*(unsigned char volatile far *)0x7efdb4)     // 串口~2~配置寄存器~7EFDB4H~-~S2MOD0~S2M0x6~-~-~-~-~W1~000x,xxx0$
    1075. #define S2ADDR (*(unsigned char volatile far *)0x7efdb5)    //
    1076. #define S2ADEN (*(unsigned char volatile far *)0x7efdb6)    // 串口~2~从机地址屏蔽寄存器~7EFDB6H~0000,0000$
    1077. #define USARTCR1 (*(unsigned char volatile far *)0x7efdc0)  // 串口~1~控制寄存器~1~7EFDC0H~LINEN~DORD~CLKEN~SPMOD~SPIEN~SPSLV~CPOL~CPHA~0000,0000$
    1078. #define USARTCR2 (*(unsigned char volatile far *)0x7efdc1)  // 串口~1~控制寄存器~2~7EFDC1H~IREN~IRLP~SCEN~NACK~HDSEL~PCEN~PS~PE~0000,0000$
    1079. #define USARTCR3 (*(unsigned char volatile far *)0x7efdc2)  // 串口~1~控制寄存器~3~7EFDC2H~IrDA_LPBAUD[7:0]~0000,0111$
    1080. #define USARTCR4 (*(unsigned char volatile far *)0x7efdc3)  // 串口~1~控制寄存器~4~7EFDC3H~-~-~-~-~SCCKS[1:0]~SPICKS[1:0]~xxxx,0000$
    1081. #define USARTCR5 (*(unsigned char volatile far *)0x7efdc4)  // 串口~1~控制寄存器~5~7EFDC4H~BRKDET~HDRER~SLVEN~ASYNC~TXCF~SENDBK~HDRDET~SYNC~0000,0000$
    1082. #define USARTGTR (*(unsigned char volatile far *)0x7efdc5)  // 串口~1~保护时间寄存器~7EFDC5H~0000,0000$
    1083. #define USARTBRH (*(unsigned char volatile far *)0x7efdc6)  // 串口~1~波特率寄存器~7EFDC6H~USARTBR[15:8]~0000,0000$
    1084. #define USARTBRL (*(unsigned char volatile far *)0x7efdc7)  // 串口~1~波特率寄存器~7EFDC7H~USARTBR[7:0]~0000,0000$
    1085. #define USART2CR1 (*(unsigned char volatile far *)0x7efdc8) // 串口~2~控制寄存器~1~7EFDC8H~LINEN~DORD~CLKEN~SPMOD~SPIEN~SPSLV~CPOL~CPHA~0000,0000$
    1086. #define USART2CR2 (*(unsigned char volatile far *)0x7efdc9) // 串口~2~控制寄存器~2~7EFDC9H~IREN~IRLP~SCEN~NACK~HDSEL~PCEN~PS~PE~0000,0000$
    1087. #define USART2CR3 (*(unsigned char volatile far *)0x7efdca) // 串口~2~控制寄存器~3~7EFDCAH~IrDA_LPBAUD[7:0]~0000,0000$
    1088. #define USART2CR4 (*(unsigned char volatile far *)0x7efdcb) // 串口~2~控制寄存器~4~7EFDCBH~-~-~-~-~SCCKS[1:0]~SPICKS[1:0]~xxxx,0000$
    1089. #define USART2CR5 (*(unsigned char volatile far *)0x7efdcc) // 串口~2~控制寄存器~5~7EFDCCH~BRKDET~HDRER~SLVEN~ASYNC~TXCF~SENDBK~HDRDET~SYNCAN~0000,0000$
    1090. #define USART2GTR (*(unsigned char volatile far *)0x7efdcd) // 串口~2~保护时间寄存器~7EFDCDH~0000,0000$
    1091. #define USART2BRH (*(unsigned char volatile far *)0x7efdce) // 串口~2~波特率寄存器~7EFDCEH~USART2BR[15:8]~0000,0000$
    1092. #define USART2BRL (*(unsigned char volatile far *)0x7efdcf) // 串口~2~波特率寄存器~7EFDCFH~USART2BR[7:0]~0000,0000$
    1093. #define CHIPID ((unsigned char volatile far *)0x7efde0)     //
    1094. #define CHIPID0 (*(unsigned char volatile far *)0x7efde0)   // 硬件数字~ID00~7EFDE0H~全球唯一~ID~号(第~0~字节)~nnnn,nnnn$
    1095. #define CHIPID1 (*(unsigned char volatile far *)0x7efde1)   // 硬件数字~ID01~7EFDE1H~全球唯一~ID~号(第~1~字节)~nnnn,nnnn$
    1096. #define CHIPID2 (*(unsigned char volatile far *)0x7efde2)   // 硬件数字~ID02~7EFDE2H~全球唯一~ID~号(第~2~字节)~nnnn,nnnn$
    1097. #define CHIPID3 (*(unsigned char volatile far *)0x7efde3)   // 硬件数字~ID03~7EFDE3H~全球唯一~ID~号(第~3~字节)~nnnn,nnnn$
    1098. #define CHIPID4 (*(unsigned char volatile far *)0x7efde4)   // 硬件数字~ID04~7EFDE4H~全球唯一~ID~号(第~4~字节)~nnnn,nnnn$
    1099. #define CHIPID5 (*(unsigned char volatile far *)0x7efde5)   // 硬件数字~ID05~7EFDE5H~全球唯一~ID~号(第~5~字节)~nnnn,nnnn$
    1100. #define CHIPID6 (*(unsigned char volatile far *)0x7efde6)   // 硬件数字~ID06~7EFDE6H~全球唯一~ID~号(第~6~字节)~nnnn,nnnn$
    1101. #define CHIPID7 (*(unsigned char volatile far *)0x7efde7)   // 硬件数字~ID07~7EFDE7H~内部~1.19V~参考信号源-BGV(高字节)~nnnn,nnnn$
    1102. #define CHIPID8 (*(unsigned char volatile far *)0x7efde8)   // 硬件数字~ID08~7EFDE8H~内部~1.19V~参考信号源-BGV(低字节)~nnnn,nnnn$
    1103. #define CHIPID9 (*(unsigned char volatile far *)0x7efde9)   // 硬件数字~ID09~7EFDE9H~32K~掉电唤醒定时器的频率(高字节)~nnnn,nnnn$
    1104. #define CHIPID10 (*(unsigned char volatile far *)0x7efdea)  // 硬件数字~ID10~7EFDEAH~32K~掉电唤醒定时器的频率(低字节)~nnnn,nnnn$
    1105. #define CHIPID11 (*(unsigned char volatile far *)0x7efdeb)  // 硬件数字~ID11~7EFDEBH~22.1184MHz~的~IRC~参数(27M~频段)~nnnn,nnnn$
    1106. #define CHIPID12 (*(unsigned char volatile far *)0x7efdec)  // 硬件数字~ID12~7EFDECH~24MHz~的~IRC~参数(27M~频段)~nnnn,nnnn$
    1107. #define CHIPID13 (*(unsigned char volatile far *)0x7efded)  // 硬件数字~ID13~7EFDEDH~27MHz~的~IRC~参数(27M~频段)~nnnn,nnnn$
    1108. #define CHIPID14 (*(unsigned char volatile far *)0x7efdee)  // 硬件数字~ID14~7EFDEEH~30MHz~的~IRC~参数(27M~频段)~nnnn,nnnn$
    1109. #define CHIPID15 (*(unsigned char volatile far *)0x7efdef)  // 硬件数字~ID15~7EFDEFH~33.1776MHz~的~IRC~参数(27M~频段)~nnnn,nnnn$
    1110. #define CHIPID16 (*(unsigned char volatile far *)0x7efdf0)  // 硬件数字~ID16~7EFDF0H~35MHz~的~IRC~参数(44M~频段)~nnnn,nnnn$
    1111. #define CHIPID17 (*(unsigned char volatile far *)0x7efdf1)  // 硬件数字~ID17~7EFDF1H~36.864MHz~的~IRC~参数(44M~频段)~nnnn,nnnn$
    1112. #define CHIPID18 (*(unsigned char volatile far *)0x7efdf2)  // 硬件数字~ID18~7EFDF2H~40MHz~的~IRC~参数(44M~频段)~nnnn,nnnn$
    1113. #define CHIPID19 (*(unsigned char volatile far *)0x7efdf3)  // 硬件数字~ID19~7EFDF3H~44.2368MHz~的~IRC~参数(44M~频段)~nnnn,nnnn$
    1114. #define CHIPID20 (*(unsigned char volatile far *)0x7efdf4)  // 硬件数字~ID20~7EFDF4H~48MHz~的~IRC~参数(44M~频段)~nnnn,nnnn$
    1115. #define CHIPID21 (*(unsigned char volatile far *)0x7efdf5)  // 硬件数字~ID21~7EFDF5H~6M~频段的~VRTRIM~参数~nnnn,nnnn$
    1116. #define CHIPID22 (*(unsigned char volatile far *)0x7efdf6)  // 硬件数字~ID22~7EFDF6H~10M~频段的~VRTRIM~参数~nnnn,nnnn$
    1117. #define CHIPID23 (*(unsigned char volatile far *)0x7efdf7)  // 硬件数字~ID23~7EFDF7H~27M~频段的~VRTRIM~参数~nnnn,nnnn$
    1118. #define CHIPID24 (*(unsigned char volatile far *)0x7efdf8)  // 硬件数字~ID24~7EFDF8H~44M~频段的~VRTRIM~参数~nnnn,nnnn$
    1119. #define CHIPID25 (*(unsigned char volatile far *)0x7efdf9)  // 硬件数字~ID25~7EFDF9H~00H~nnnn,nnnn$
    1120. #define CHIPID26 (*(unsigned char volatile far *)0x7efdfa)  // 硬件数字~ID26~7EFDFAH~用户程序空间结束地址(高字节)~nnnn,nnnn$
    1121. #define CHIPID27 (*(unsigned char volatile far *)0x7efdfb)  // 硬件数字~ID27~7EFDFBH~芯片测试时间(年)~nnnn,nnnn$
    1122. #define CHIPID28 (*(unsigned char volatile far *)0x7efdfc)  // 硬件数字~ID28~7EFDFCH~芯片测试时间(月)~nnnn,nnnn$
    1123. #define CHIPID29 (*(unsigned char volatile far *)0x7efdfd)  // 硬件数字~ID29~7EFDFDH~芯片测试时间(日)~nnnn,nnnn$
    1124. #define CHIPID30 (*(unsigned char volatile far *)0x7efdfe)  // 硬件数字~ID30~7EFDFEH~芯片封装形式编号~nnnn,nnnn$
    1125. #define CHIPID31 (*(unsigned char volatile far *)0x7efdff)  // 硬件数字~ID31~7EFDFFH~5AH~nnnn,nnnn$
    1126. /////////////////////////////////////////////////
    1127. // 7E:FC00H-7E:FCFFH
    1128. /////////////////////////////////////////////////
    1129. /////////////////////////////////////////////////
    1130. // 7E:FB00H-7E:FBFFH
    1131. /////////////////////////////////////////////////
    1132. #define HSPWMA_CFG (*(unsigned char volatile far *)0x7efbf0) // 高速~PWMA~配置寄存器~7EFBF0H~-~-~-~-~AUTORD~INTEN~ASYNCEN~1~xxxx,0001$
    1133. #define HSPWMA_ADR (*(unsigned char volatile far *)0x7efbf1) // 高速~PWMA~地址寄存器~7EFBF1H~RW/BUSY~ADDR[6:0]~0000,0000$
    1134. #define HSPWMA_DAT (*(unsigned char volatile far *)0x7efbf2) // 高速~PWMA~数据寄存器~7EFBF2H~DATA[7:0]~0000,0000$
    1135. #define HSPWMB_CFG (*(unsigned char volatile far *)0x7efbf4) // 高速~PWMB~配置寄存器~7EFBF4H~-~-~-~-~AUTORD~INTEN~ASYNCEN~1~xxxx,0001$
    1136. #define HSPWMB_ADR (*(unsigned char volatile far *)0x7efbf5) // 高速~PWMB~地址寄存器~7EFBF5H~RW/BUSY~ADDR[6:0]~0000,0000$
    1137. #define HSPWMB_DAT (*(unsigned char volatile far *)0x7efbf6) // 高速~PWMB~数据寄存器~7EFBF6H~DATA[7:0]~0000,0000$
    1138. #define HSSPI_CFG (*(unsigned char volatile far *)0x7efbf8)  // 高速~SPI~配置寄存器~7EFBF8H~SS_HLD[3:0]~SS_SETUP[3:0]~0011,0011$
    1139. #define HSSPI_CFG2 (*(unsigned char volatile far *)0x7efbf9) // 高速~SPI~配置寄存器~2~7EFBF9H~-~-~HSSPIEN~FIFOEN~SS_DACT[3:0]~xx00,0011$
    1140. #define HSSPI_STA (*(unsigned char volatile far *)0x7efbfa)  // 高速~SPI~状态寄存器~7EFBFAH~-~-~-~-~TXFULL~TXEMPT~RXFULL~RXEMPT~xxxx,0000$
    1141. //使用下面的宏,需先将EAXFR设置为1
    1142. //使用方法:
    1143. //      char val;
    1144. //
    1145. //      EAXFR = 1;                      //使能访问XFR
    1146. //      READ_HSPWMA(PWMA_CR1, val);     //异步读PWMA组寄存器
    1147. //      val |= 0x01;
    1148. //      WRITE_HSPWMA(PWMA_CR1, val);    //异步写PWMA组寄存器
    1149. #define     READ_HSPWMA(reg, dat)           \
    1150.             {                               \
    1151.                 while (HSPWMA_ADR & 0x80);  \
    1152.                 HSPWMA_ADR = ((char)&(reg)) | 0x80;  \
    1153.                 while (HSPWMA_ADR & 0x80);  \
    1154.                 (dat) = HSPWMA_DAT;         \
    1155.             }
    1156. #define     WRITE_HSPWMA(reg, dat)          \
    1157.             {                               \
    1158.                 while (HSPWMA_ADR & 0x80);  \
    1159.                 HSPWMA_DAT = (dat);         \
    1160.                 HSPWMA_ADR = ((char)&(reg)) & 0x7f;  \
    1161.             }
    1162. #define     READ_HSPWMB(reg, dat)           \
    1163.             {                               \
    1164.                 while (HSPWMB_ADR & 0x80);  \
    1165.                 HSPWMB_ADR = ((char)&(reg)) | 0x80;  \
    1166.                 while (HSPWMB_ADR & 0x80);  \
    1167.                 (dat) = HSPWMB_DAT;         \
    1168.             }
    1169. #define     WRITE_HSPWMB(reg, dat)          \
    1170.             {                               \
    1171.                 while (HSPWMB_ADR & 0x80);  \
    1172.                 HSPWMB_DAT = (dat);         \
    1173.                 HSPWMB_ADR = ((char)&(reg)) & 0x7f;  \
    1174.             }
    1175. /////////////////////////////////////////////////
    1176. //7E:FA00H-7E:FAFFH
    1177. /////////////////////////////////////////////////
    1178. #define DMA_M2M_CFG (*(unsigned char volatile far *)0x7efa00)    // M2M_DMA~配置寄存器~7EFA00H~M2MIE~-~TXACO~RXACO~M2MIP[1:0]~M2MPTY[1:0]~0x00,0000$
    1179. #define DMA_M2M_CR (*(unsigned char volatile far *)0x7efa01)     // M2M_DMA~控制寄存器~7EFA01H~ENM2M~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1180. #define DMA_M2M_STA (*(unsigned char volatile far *)0x7efa02)    // M2M_DMA~状态寄存器~7EFA02H~-~-~-~-~-~-~-~M2MIF~xxxx,xxx0$
    1181. #define DMA_M2M_AMT (*(unsigned char volatile far *)0x7efa03)    // M2M_DMA~传输总字节数~7EFA03H~0000,0000$
    1182. #define DMA_M2M_DONE (*(unsigned char volatile far *)0x7efa04)   // M2M_DMA~传输完成字节数~7EFA04H~0000,0000$
    1183. #define DMA_M2M_TXAH (*(unsigned char volatile far *)0x7efa05)   // M2M_DMA~发送高地址~7EFA05H~0000,0000$
    1184. #define DMA_M2M_TXAL (*(unsigned char volatile far *)0x7efa06)   // M2M_DMA~发送低地址~7EFA06H~0000,0000$
    1185. #define DMA_M2M_RXAH (*(unsigned char volatile far *)0x7efa07)   // M2M_DMA~接收高地址~7EFA07H~0000,0000$
    1186. #define DMA_M2M_RXAL (*(unsigned char volatile far *)0x7efa08)   // M2M_DMA~接收低地址~7EFA08H~0000,0000$
    1187. #define DMA_ADC_CFG (*(unsigned char volatile far *)0x7efa10)    // ADC_DMA~配置寄存器~7EFA10H~ADCIE~-~-~-~ADCMIP[1:0]~ADCPTY[1:0]~0xxx,0000$
    1188. #define DMA_ADC_CR (*(unsigned char volatile far *)0x7efa11)     // ADC_DMA~控制寄存器~7EFA11H~ENADC~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1189. #define DMA_ADC_STA (*(unsigned char volatile far *)0x7efa12)    // ADC_DMA~状态寄存器~7EFA12H~-~-~-~-~-~-~-~ADCIF~xxxx,xxx0$
    1190. #define DMA_ADC_RXAH (*(unsigned char volatile far *)0x7efa17)   // ADC_DMA~接收高地址~7EFA17H~0000,0000$
    1191. #define DMA_ADC_RXAL (*(unsigned char volatile far *)0x7efa18)   // ADC_DMA~接收低地址~7EFA18H~0000,0000$
    1192. #define DMA_ADC_CFG2 (*(unsigned char volatile far *)0x7efa19)   // ADC_DMA~配置寄存器~2~7EFA19H~-~-~-~-~CVTIMESEL[3:0]~xxxx,0000$
    1193. #define DMA_ADC_CHSW0 (*(unsigned char volatile far *)0x7efa1a)  // ADC_DMA~通道使能~7EFA1AH~CH7~CH6~CH5~CH4~CH3~CH2~CH1~CH0~0000,0001$
    1194. #define DMA_ADC_CHSW1 (*(unsigned char volatile far *)0x7efa1b)  // ADC_DMA~通道使能~7EFA1BH~CH15~CH14~CH13~CH12~CH11~CH10~CH9~CH8~1000,0000$
    1195. #define DMA_SPI_CFG (*(unsigned char volatile far *)0x7efa20)    // SPI_DMA~配置寄存器~7EFA20H~SPIIE~ACT_TX~ACT_RX~-~SPIIP[1:0]~SPIPTY[1:0]~000x,0000$
    1196. #define DMA_SPI_CR (*(unsigned char volatile far *)0x7efa21)     // SPI_DMA~控制寄存器~7EFA21H~ENSPI~TRIG_M~TRIG_S~-~-~-~-~CLRFIFO~000x,xxx0$
    1197. #define DMA_SPI_STA (*(unsigned char volatile far *)0x7efa22)    // SPI_DMA~状态寄存器~7EFA22H~-~-~-~-~-~TXOVW~RXLOSS~SPIIF~xxxx,x000$
    1198. #define DMA_SPI_AMT (*(unsigned char volatile far *)0x7efa23)    // SPI_DMA~传输总字节数~7EFA23H~0000,0000$
    1199. #define DMA_SPI_DONE (*(unsigned char volatile far *)0x7efa24)   // SPI_DMA~传输完成字节数~7EFA24H~0000,0000$
    1200. #define DMA_SPI_TXAH (*(unsigned char volatile far *)0x7efa25)   // SPI_DMA~发送高地址~7EFA25H~0000,0000$
    1201. #define DMA_SPI_TXAL (*(unsigned char volatile far *)0x7efa26)   // SPI_DMA~发送低地址~7EFA26H~0000,0000$
    1202. #define DMA_SPI_RXAH (*(unsigned char volatile far *)0x7efa27)   // SPI_DMA~接收高地址~7EFA27H~0000,0000$
    1203. #define DMA_SPI_RXAL (*(unsigned char volatile far *)0x7efa28)   // SPI_DMA~接收低地址~7EFA28H~0000,0000$
    1204. #define DMA_SPI_CFG2 (*(unsigned char volatile far *)0x7efa29)   // SPI_DMA~配置寄存器~2~7EFA29H~-~-~-~-~-~WRPSS~SSS[1:0]~xxxx,x000$
    1205. #define DMA_UR1T_CFG (*(unsigned char volatile far *)0x7efa30)   // UR1T_DMA~配置寄存器~7EFA30H~UR1TIE~-~-~-~UR1TIP[1:0]~UR1TPTY[1:0]~0xxx,0000$
    1206. #define DMA_UR1T_CR (*(unsigned char volatile far *)0x7efa31)    // UR1T_DMA~控制寄存器~7EFA31H~ENUR1T~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1207. #define DMA_UR1T_STA (*(unsigned char volatile far *)0x7efa32)   // UR1T_DMA~状态寄存器~7EFA32H~-~-~-~-~-~TXOVW~-~UR1TIF~xxxx,x0x0$
    1208. #define DMA_UR1T_AMT (*(unsigned char volatile far *)0x7efa33)   // UR1T_DMA~传输总字节数~7EFA33H~0000,0000$
    1209. #define DMA_UR1T_DONE (*(unsigned char volatile far *)0x7efa34)  // UR1T_DMA~传输完成字节数~7EFA34H~0000,0000$
    1210. #define DMA_UR1T_TXAH (*(unsigned char volatile far *)0x7efa35)  // UR1T_DMA~发送高地址~7EFA35H~0000,0000$
    1211. #define DMA_UR1T_TXAL (*(unsigned char volatile far *)0x7efa36)  // UR1T_DMA~发送低地址~7EFA36H~0000,0000$
    1212. #define DMA_UR1R_CFG (*(unsigned char volatile far *)0x7efa38)   // UR1R_DMA~配置寄存器~7EFA38H~UR1RIE~-~-~-~UR1RIP[1:0]~UR1RPTY[1:0]~0xxx,0000$
    1213. #define DMA_UR1R_CR (*(unsigned char volatile far *)0x7efa39)    // UR1R_DMA~控制寄存器~7EFA39H~ENUR1R~-~TRIG~-~-~-~-~CLRFIFO~0x0x,xxx0$
    1214. #define DMA_UR1R_STA (*(unsigned char volatile far *)0x7efa3a)   // UR1R_DMA~状态寄存器~7EFA3AH~-~-~-~-~-~-~RXLOSS~UR1RIF~xxxx,xx00$
    1215. #define DMA_UR1R_AMT (*(unsigned char volatile far *)0x7efa3b)   // UR1R_DMA~传输总字节数~7EFA3BH~0000,0000$
    1216. #define DMA_UR1R_DONE (*(unsigned char volatile far *)0x7efa3c)  // UR1R_DMA~传输完成字节数~7EFA3CH~0000,0000$
    1217. #define DMA_UR1R_RXAH (*(unsigned char volatile far *)0x7efa3d)  // UR1R_DMA~接收高地址~7EFA3DH~0000,0000$
    1218. #define DMA_UR1R_RXAL (*(unsigned char volatile far *)0x7efa3e)  // UR1R_DMA~接收低地址~7EFA3EH~0000,0000$
    1219. #define DMA_UR2T_CFG (*(unsigned char volatile far *)0x7efa40)   // UR2T_DMA~配置寄存器~7EFA40H~UR2TIE~-~-~-~UR2TIP[1:0]~UR2TPTY[1:0]~0xxx,0000$
    1220. #define DMA_UR2T_CR (*(unsigned char volatile far *)0x7efa41)    // UR2T_DMA~控制寄存器~7EFA41H~ENUR2T~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1221. #define DMA_UR2T_STA (*(unsigned char volatile far *)0x7efa42)   // UR2T_DMA~状态寄存器~7EFA42H~-~-~-~-~-~TXOVW~-~UR2TIF~xxxx,x0x0$
    1222. #define DMA_UR2T_AMT (*(unsigned char volatile far *)0x7efa43)   // UR2T_DMA~传输总字节数~7EFA43H~0000,0000$
    1223. #define DMA_UR2T_DONE (*(unsigned char volatile far *)0x7efa44)  // UR2T_DMA~传输完成字节数~7EFA44H~0000,0000$
    1224. #define DMA_UR2T_TXAH (*(unsigned char volatile far *)0x7efa45)  // UR2T_DMA~发送高地址~7EFA45H~0000,0000$
    1225. #define DMA_UR2T_TXAL (*(unsigned char volatile far *)0x7efa46)  // UR2T_DMA~发送低地址~7EFA46H~0000,0000$
    1226. #define DMA_UR2R_CFG (*(unsigned char volatile far *)0x7efa48)   // UR2R_DMA~配置寄存器~7EFA48H~UR2RIE~-~-~-~UR2RIP[1:0]~UR2RPTY[1:0]~0xxx,0000$
    1227. #define DMA_UR2R_CR (*(unsigned char volatile far *)0x7efa49)    // UR2R_DMA~控制寄存器~7EFA49H~ENUR2R~-~TRIG~-~-~-~-~CLRFIFO~0x0x,xxx0$
    1228. #define DMA_UR2R_STA (*(unsigned char volatile far *)0x7efa4a)   // UR2R_DMA~状态寄存器~7EFA4AH~-~-~-~-~-~-~RXLOSS~UR2RIF~xxxx,xx00$
    1229. #define DMA_UR2R_AMT (*(unsigned char volatile far *)0x7efa4b)   // UR2R_DMA~传输总字节数~7EFA4BH~0000,0000$
    1230. #define DMA_UR2R_DONE (*(unsigned char volatile far *)0x7efa4c)  // UR2R_DMA~传输完成字节数~7EFA4CH~0000,0000$
    1231. #define DMA_UR2R_RXAH (*(unsigned char volatile far *)0x7efa4d)  // UR2R_DMA~接收高地址~7EFA4DH~0000,0000$
    1232. #define DMA_UR2R_RXAL (*(unsigned char volatile far *)0x7efa4e)  // UR2R_DMA~接收低地址~7EFA4EH~0000,0000$
    1233. #define DMA_UR3T_CFG (*(unsigned char volatile far *)0x7efa50)   // UR3T_DMA~配置寄存器~7EFA50H~UR3TIE~-~-~-~UR3TIP[1:0]~UR3TPTY[1:0]~0xxx,0000$
    1234. #define DMA_UR3T_CR (*(unsigned char volatile far *)0x7efa51)    // UR3T_DMA~控制寄存器~7EFA51H~ENUR3T~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1235. #define DMA_UR3T_STA (*(unsigned char volatile far *)0x7efa52)   // UR3T_DMA~状态寄存器~7EFA52H~-~-~-~-~-~TXOVW~-~UR3TIF~xxxx,x0x0$
    1236. #define DMA_UR3T_AMT (*(unsigned char volatile far *)0x7efa53)   // UR3T_DMA~传输总字节数~7EFA53H~0000,0000$
    1237. #define DMA_UR3T_DONE (*(unsigned char volatile far *)0x7efa54)  // UR3T_DMA~传输完成字节数~7EFA54H~0000,0000$
    1238. #define DMA_UR3T_TXAH (*(unsigned char volatile far *)0x7efa55)  // UR3T_DMA~发送高地址~7EFA55H~0000,0000$
    1239. #define DMA_UR3T_TXAL (*(unsigned char volatile far *)0x7efa56)  // UR3T_DMA~发送低地址~7EFA56H~0000,0000$
    1240. #define DMA_UR3R_CFG (*(unsigned char volatile far *)0x7efa58)   // UR3R_DMA~配置寄存器~7EFA58H~UR3RIE~-~-~-~UR3RIP[1:0]~UR3RPTY[1:0]~0xxx,0000$
    1241. #define DMA_UR3R_CR (*(unsigned char volatile far *)0x7efa59)    // UR3R_DMA~控制寄存器~7EFA59H~ENUR3R~-~TRIG~-~-~-~-~CLRFIFO~0x0x,xxx0$
    1242. #define DMA_UR3R_STA (*(unsigned char volatile far *)0x7efa5a)   // UR3R_DMA~状态寄存器~7EFA5AH~-~-~-~-~-~-~RXLOSS~UR3RIF~xxxx,xx00$
    1243. #define DMA_UR3R_AMT (*(unsigned char volatile far *)0x7efa5b)   // UR3R_DMA~传输总字节数~7EFA5BH~0000,0000$
    1244. #define DMA_UR3R_DONE (*(unsigned char volatile far *)0x7efa5c)  // UR3R_DMA~传输完成字节数~7EFA5CH~0000,0000$
    1245. #define DMA_UR3R_RXAH (*(unsigned char volatile far *)0x7efa5d)  // UR3R_DMA~接收高地址~7EFA5DH~0000,0000$
    1246. #define DMA_UR3R_RXAL (*(unsigned char volatile far *)0x7efa5e)  // UR3R_DMA~接收低地址~7EFA5EH~0000,0000$
    1247. #define DMA_UR4T_CFG (*(unsigned char volatile far *)0x7efa60)   // UR4T_DMA~配置寄存器~7EFA60H~UR4TIE~-~-~-~UR4TIP[1:0]~UR4TPTY[1:0]~0xxx,0000$
    1248. #define DMA_UR4T_CR (*(unsigned char volatile far *)0x7efa61)    // UR4T_DMA~控制寄存器~7EFA61H~ENUR4T~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1249. #define DMA_UR4T_STA (*(unsigned char volatile far *)0x7efa62)   // UR4T_DMA~状态寄存器~7EFA62H~-~-~-~-~-~TXOVW~-~UR4TIF~xxxx,x0x0$
    1250. #define DMA_UR4T_AMT (*(unsigned char volatile far *)0x7efa63)   // UR4T_DMA~传输总字节数~7EFA63H~0000,0000$
    1251. #define DMA_UR4T_DONE (*(unsigned char volatile far *)0x7efa64)  // UR4T_DMA~传输完成字节数~7EFA64H~0000,0000$
    1252. #define DMA_UR4T_TXAH (*(unsigned char volatile far *)0x7efa65)  // UR4T_DMA~发送高地址~7EFA65H~0000,0000$
    1253. #define DMA_UR4T_TXAL (*(unsigned char volatile far *)0x7efa66)  // UR4T_DMA~发送低地址~7EFA66H~0000,0000$
    1254. #define DMA_UR4R_CFG (*(unsigned char volatile far *)0x7efa68)   // UR4R_DMA~配置寄存器~7EFA68H~UR4RIE~-~-~-~UR4RIP[1:0]~UR4RPTY[1:0]~0xxx,0000$
    1255. #define DMA_UR4R_CR (*(unsigned char volatile far *)0x7efa69)    // UR4R_DMA~控制寄存器~7EFA69H~ENUR4R~-~TRIG~-~-~-~-~CLRFIFO~0x0x,xxx0$
    1256. #define DMA_UR4R_STA (*(unsigned char volatile far *)0x7efa6a)   // UR4R_DMA~状态寄存器~7EFA6AH~-~-~-~-~-~-~RXLOSS~UR4RIF~xxxx,xx00$
    1257. #define DMA_UR4R_AMT (*(unsigned char volatile far *)0x7efa6b)   // UR4R_DMA~传输总字节数~7EFA6BH~0000,0000$
    1258. #define DMA_UR4R_DONE (*(unsigned char volatile far *)0x7efa6c)  // UR4R_DMA~传输完成字节数~7EFA6CH~0000,0000$
    1259. #define DMA_UR4R_RXAH (*(unsigned char volatile far *)0x7efa6d)  // UR4R_DMA~接收高地址~7EFA6DH~0000,0000$
    1260. #define DMA_UR4R_RXAL (*(unsigned char volatile far *)0x7efa6e)  // UR4R_DMA~接收低地址~7EFA6EH~0000,0000$
    1261. #define DMA_LCM_CFG (*(unsigned char volatile far *)0x7efa70)    // LCM_DMA~配置寄存器~7EFA70H~LCMIE~-~-~-~LCMIP[1:0]~LCMPTY[1:0]~0xxx,0000$
    1262. #define DMA_LCM_CR (*(unsigned char volatile far *)0x7efa71)     // LCM_DMA~控制寄存器~7EFA71H~ENLCM~TRIGWC~TRIGWD~TRIGRC~TRIGRD~-~-~-~0000,0xxx$
    1263. #define DMA_LCM_STA (*(unsigned char volatile far *)0x7efa72)    // LCM_DMA~状态寄存器~7EFA72H~-~-~-~-~-~-~TXOVW~LCMIF~xxxx,xx00$
    1264. #define DMA_LCM_AMT (*(unsigned char volatile far *)0x7efa73)    // LCM_DMA~传输总字节数~7EFA73H~0000,0000$
    1265. #define DMA_LCM_DONE (*(unsigned char volatile far *)0x7efa74)   // LCM_DMA~传输完成字节数~7EFA74H~0000,0000$
    1266. #define DMA_LCM_TXAH (*(unsigned char volatile far *)0x7efa75)   // LCM_DMA~发送高地址~7EFA75H~0000,0000$
    1267. #define DMA_LCM_TXAL (*(unsigned char volatile far *)0x7efa76)   // LCM_DMA~发送低地址~7EFA76H~0000,0000$
    1268. #define DMA_LCM_RXAH (*(unsigned char volatile far *)0x7efa77)   // LCM_DMA~接收高地址~7EFA77H~0000,0000$
    1269. #define DMA_LCM_RXAL (*(unsigned char volatile far *)0x7efa78)   // LCM_DMA~接收低地址~7EFA78H~0000,0000$
    1270. #define DMA_M2M_AMTH (*(unsigned char volatile far *)0x7efa80)   // M2M_DMA~传输总字节数~7EFA80H~0000,0000$
    1271. #define DMA_M2M_DONEH (*(unsigned char volatile far *)0x7efa81)  // M2M_DMA~传输完成字节数~7EFA81H~0000,0000$
    1272. #define DMA_SPI_AMTH (*(unsigned char volatile far *)0x7efa84)   // SPI_DMA~传输总字节数~7EFA84H~0000,0000$
    1273. #define DMA_SPI_DONEH (*(unsigned char volatile far *)0x7efa85)  // SPI_DMA~传输完成字节数~7EFA85H~0000,0000$
    1274. #define DMA_LCM_AMTH (*(unsigned char volatile far *)0x7efa86)   // LCM_DMA~传输总字节数~7EFA86H~0000,0000$
    1275. #define DMA_LCM_DONEH (*(unsigned char volatile far *)0x7efa87)  // LCM_DMA~传输完成字节数~7EFA87H~0000,0000$
    1276. #define DMA_UR1T_AMTH (*(unsigned char volatile far *)0x7efa88)  // UR1T_DMA~传输总字节数~7EFA88H~0000,0000$
    1277. #define DMA_UR1T_DONEH (*(unsigned char volatile far *)0x7efa89) // UR1T_DMA~传输完成字节数~7EFA89H~0000,0000$
    1278. #define DMA_UR1R_AMTH (*(unsigned char volatile far *)0x7efa8a)  // UR1R_DMA~传输总字节数~7EFA8AH~0000,0000$
    1279. #define DMA_UR1R_DONEH (*(unsigned char volatile far *)0x7efa8b) // UR1R_DMA~传输完成字节数~7EFA8BH~0000,0000$
    1280. #define DMA_UR2T_AMTH (*(unsigned char volatile far *)0x7efa8c)  // UR2T_DMA~传输总字节数~7EFA8CH~0000,0000$
    1281. #define DMA_UR2T_DONEH (*(unsigned char volatile far *)0x7efa8d) // UR2T_DMA~传输完成字节数~7EFA8DH~0000,0000$
    1282. #define DMA_UR2R_AMTH (*(unsigned char volatile far *)0x7efa8e)  // UR2R_DMA~传输总字节数~7EFA8EH~0000,0000$
    1283. #define DMA_UR2R_DONEH (*(unsigned char volatile far *)0x7efa8f) // UR2R_DMA~传输完成字节数~7EFA8FH~0000,0000$
    1284. #define DMA_UR3T_AMTH (*(unsigned char volatile far *)0x7efa90)  // UR3T_DMA~传输总字节数~7EFA90H~0000,0000$
    1285. #define DMA_UR3T_DONEH (*(unsigned char volatile far *)0x7efa91) // UR3T_DMA~传输完成字节数~7EFA91H~0000,0000$
    1286. #define DMA_UR3R_AMTH (*(unsigned char volatile far *)0x7efa92)  // UR3R_DMA~传输总字节数~7EFA92H~0000,0000$
    1287. #define DMA_UR3R_DONEH (*(unsigned char volatile far *)0x7efa93) // UR3R_DMA~传输完成字节数~7EFA93H~0000,0000$
    1288. #define DMA_UR4T_AMTH (*(unsigned char volatile far *)0x7efa94)  // UR4T_DMA~传输总字节数~7EFA94H~0000,0000$
    1289. #define DMA_UR4T_DONEH (*(unsigned char volatile far *)0x7efa95) // UR4T_DMA~传输完成字节数~7EFA95H~0000,0000$
    1290. #define DMA_UR4R_AMTH (*(unsigned char volatile far *)0x7efa96)  // UR4R_DMA~传输总字节数~7EFA96H~0000,0000$
    1291. #define DMA_UR4R_DONEH (*(unsigned char volatile far *)0x7efa97) // UR4R_DMA~传输完成字节数~7EFA97H~0000,0000$
    1292. #define DMA_I2CT_CFG (*(unsigned char volatile far *)0x7efa98)   // I2CT_DMA~配置寄存器~7EFA98H~I2CTIE~-~-~-~I2CTIP[1:0]~I2CTPTY[1:0]~0xxx,0000$
    1293. #define DMA_I2CT_CR (*(unsigned char volatile far *)0x7efa99)    // I2CT_DMA~控制寄存器~7EFA99H~ENI2CT~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1294. #define DMA_I2CT_STA (*(unsigned char volatile far *)0x7efa9a)   // I2CT_DMA~状态寄存器~7EFA9AH~-~-~-~-~-~TXOVW~-~I2CTIF~xxxx,x0x0$
    1295. #define DMA_I2CT_AMT (*(unsigned char volatile far *)0x7efa9b)   // I2CT_DMA~传输总字节数~7EFA9BH~0000,0000$
    1296. #define DMA_I2CT_DONE (*(unsigned char volatile far *)0x7efa9c)  // I2CT_DMA~传输完成字节数~7EFA9CH~0000,0000$
    1297. #define DMA_I2CT_TXAH (*(unsigned char volatile far *)0x7efa9d)  // I2CT_DMA~发送高地址~7EFA9DH~0000,0000$
    1298. #define DMA_I2CT_TXAL (*(unsigned char volatile far *)0x7efa9e)  // I2CT_DMA~发送低地址~7EFA9EH~0000,0000$
    1299. #define DMA_I2CR_CFG (*(unsigned char volatile far *)0x7efaa0)   // I2CR_DMA~配置寄存器~7EFAA0H~I2CRIE~-~-~-~I2CRIP[1:0]~I2CRPTY[1:0]~0xxx,0000$
    1300. #define DMA_I2CR_CR (*(unsigned char volatile far *)0x7efaa1)    // I2CR_DMA~控制寄存器~7EFAA1H~ENI2CR~TRIG~-~-~-~-~-~CLRFIFO~00xx,xxx0$
    1301. #define DMA_I2CR_STA (*(unsigned char volatile far *)0x7efaa2)   // I2CR_DMA~状态寄存器~7EFAA2H~-~-~-~-~-~-~RXLOSS~I2CRIF~xxxx,xx00$
    1302. #define DMA_I2CR_AMT (*(unsigned char volatile far *)0x7efaa3)   // I2CR_DMA~传输总字节数~7EFAA3H~0000,0000$
    1303. #define DMA_I2CR_DONE (*(unsigned char volatile far *)0x7efaa4)  // I2CR_DMA~传输完成字节数~7EFAA4H~0000,0000$
    1304. #define DMA_I2CR_RXAH (*(unsigned char volatile far *)0x7efaa5)  // I2CR_DMA~接收高地址~7EFAA5H~0000,0000$
    1305. #define DMA_I2CR_RXAL (*(unsigned char volatile far *)0x7efaa6)  // I2CR_DMA~接收低地址~7EFAA6H~0000,0000$
    1306. #define DMA_I2CT_AMTH (*(unsigned char volatile far *)0x7efaa8)  // I2CT_DMA~传输总字节数~7EFAA8H~0000,0000$
    1307. #define DMA_I2CT_DONEH (*(unsigned char volatile far *)0x7efaa9) // I2CT_DMA~传输完成字节数~7EFAA9H~0000,0000$
    1308. #define DMA_I2CR_AMTH (*(unsigned char volatile far *)0x7efaaa)  // I2CR_DMA~传输总字节数~7EFAAAH~0000,0000$
    1309. #define DMA_I2CR_DONEH (*(unsigned char volatile far *)0x7efaab) // I2CR_DMA~传输完成字节数~7EFAABH~0000,0000$
    1310. #define DMA_I2C_CR (*(unsigned char volatile far *)0x7efaad)     // I2C_DMA~控制寄存器~7EFAADH~RDSEL~-~-~-~-~ACKERR~INTEN~BMMEN~0xxx,x000$
    1311. #define DMA_I2C_ST1 (*(unsigned char volatile far *)0x7efaae)    // I2C_DMA~状态寄存器~7EFAAEH~COUNT[7:0]~0000,0000$
    1312. #define DMA_I2C_ST2 (*(unsigned char volatile far *)0x7efaaf)    // I2C_DMA~状态寄存器~7EFAAFH~COUNT[15:8]~0000,0000$
    1313. #define DMA_I2ST_CFG (*(unsigned char volatile far *)0x7efab0)   // I2ST_DMA~配置寄存器~7EFAB0H~I2STIE~-~-~-~I2STIP[1:0]~I2STPTY[1:0]~0xxx,0000$
    1314. #define DMA_I2ST_CR (*(unsigned char volatile far *)0x7efab1)    // I2ST_DMA~控制寄存器~7EFAB1H~ENI2ST~TRIG~-~-~-~-~-~-~00xx,xxxx$
    1315. #define DMA_I2ST_STA (*(unsigned char volatile far *)0x7efab2)   // I2ST_DMA~状态寄存器~7EFAB2H~-~-~-~-~-~TXOVW~-~I2STIF~xxxx,x0x0$
    1316. #define DMA_I2ST_AMT (*(unsigned char volatile far *)0x7efab3)   // I2ST_DMA~传输总字节数~7EFAB3H~0000,0000$
    1317. #define DMA_I2ST_DONE (*(unsigned char volatile far *)0x7efab4)  // I2ST_DMA~传输完成字节数~7EFAB4H~0000,0000$
    1318. #define DMA_I2ST_TXAH (*(unsigned char volatile far *)0x7efab5)  // I2ST_DMA~发送高地址~7EFAB5H~0000,0000$
    1319. #define DMA_I2ST_TXAL (*(unsigned char volatile far *)0x7efab6)  // I2ST_DMA~发送低地址~7EFAB6H~0000,0000$
    1320. #define DMA_I2SR_CFG (*(unsigned char volatile far *)0x7efab8)   // I2SR_DMA~配置寄存器~7EFAB8H~I2SRIE~-~-~-~I2SRIP[1:0]~I2SRPTY[1:0]~0xxx,0000$
    1321. #define DMA_I2SR_CR (*(unsigned char volatile far *)0x7efab9)    // I2SR_DMA~控制寄存器~7EFAB9H~ENI2SR~-~TRIG~-~-~-~-~CLRFIFO~0x0x,xxx0$
    1322. #define DMA_I2SR_STA (*(unsigned char volatile far *)0x7efaba)   // I2SR_DMA~状态寄存器~7EFABAH~-~-~-~-~-~-~RXLOSS~I2SRIF~xxxx,xx00$
    1323. #define DMA_I2SR_AMT (*(unsigned char volatile far *)0x7efabb)   // I2SR_DMA~传输总字节数~7EFABBH~0000,0000$
    1324. #define DMA_I2SR_DONE (*(unsigned char volatile far *)0x7efabc)  // I2SR_DMA~传输完成字节数~7EFABCH~0000,0000$
    1325. #define DMA_I2SR_TXAH (*(unsigned char volatile far *)0x7efabd)  //
    1326. #define DMA_I2SR_TXAL (*(unsigned char volatile far *)0x7efabe)  //
    1327. #define DMA_I2ST_AMTH (*(unsigned char volatile far *)0x7efac0)  // I2ST_DMA~传输总字节数~7EFAC0H~0000,0000$
    1328. #define DMA_I2ST_DONEH (*(unsigned char volatile far *)0x7efac1) // I2ST_DMA~传输完成字节数~7EFAC1H~0000,0000$
    1329. #define DMA_I2SR_AMTH (*(unsigned char volatile far *)0x7efac2)  // I2SR_DMA~传输总字节数~7EFAC2H~0000,0000$
    1330. #define DMA_I2SR_DONEH (*(unsigned char volatile far *)0x7efac3) // I2SR_DMA~传输完成字节数~7EFAC3H~0000,0000$
    1331. #define DMA_ARB_CFG (*(unsigned char volatile far *)0x7efaf8)    // DMA~总裁配置寄存器~7EFAF8H~WTRREN~-~-~-~STASEL[3:0]-~0xxx,0000$
    1332. #define DMA_ARB_STA (*(unsigned char volatile far *)0x7efaf9)    // DMA~总裁状态寄存器~7EFAF9H~0000,0000$
    1333. /////////////////////////////////////////////////
    1334. //sfr       CANICR      =           0xf1;
    1335. //#define   CANAR                   (*(unsigned char volatile far *)0x7efebb)
    1336. //#define   CANDR                   (*(unsigned char volatile far *)0x7efebc)
    1337. //使用下面的宏,需先将EAXFR设置为1
    1338. //使用方法:
    1339. //      char dat;
    1340. //
    1341. //      EAXFR = 1;                  //使能访问XFR
    1342. //      dat = READ_CAN(RX_BUF0);    //读CAN寄存器
    1343. //      WRITE_CAN(TX_BUF0, 0x55);   //写CAN寄存器
    1344. #define     READ_CAN(reg)           (CANAR = (reg), CANDR)
    1345. #define     WRITE_CAN(reg, dat)     (CANAR = (reg), CANDR = (dat))
    1346. #define MR 0x00                                                  //
    1347. #define CMR 0x01                                                 //
    1348. #define SR 0x02                                                  //
    1349. #define ISR 0x03                                                 //
    1350. #define IMR 0x04                                                 //
    1351. #define RMC 0x05                                                 //
    1352. #define BTR0 0x06                                                //
    1353. #define BTR1 0x07                                                //
    1354. #define TM0 0x06                                                 //
    1355. #define TM1 0x07                                                 //
    1356. #define TX_BUF0 0x08                                             //
    1357. #define TX_BUF1 0x09                                             //
    1358. #define TX_BUF2 0x0a                                             //
    1359. #define TX_BUF3 0x0b                                             //
    1360. #define RX_BUF0 0x0c                                             //
    1361. #define RX_BUF1 0x0d                                             //
    1362. #define RX_BUF2 0x0e                                             //
    1363. #define RX_BUF3 0x0f                                             //
    1364. #define ACR0 0x10                                                //
    1365. #define ACR1 0x11                                                //
    1366. #define ACR2 0x12                                                //
    1367. #define ACR3 0x13                                                //
    1368. #define AMR0 0x14                                                //
    1369. #define AMR1 0x15                                                //
    1370. #define AMR2 0x16                                                //
    1371. #define AMR3 0x17                                                //
    1372. #define ECC 0x18                                                 //
    1373. #define RXERR 0x19                                               //
    1374. #define TXERR 0x1a                                               //
    1375. #define ALC 0x1b                                                 //
    1376. /////////////////////////////////////////////////
    1377. //LIN Control Regiter
    1378. /////////////////////////////////////////////////
    1379. //sfr       LINICR      =           0xf9;
    1380. //sfr       LINAR       =           0xfa;
    1381. //sfr       LINDR       =           0xfb;
    1382. //使用方法:
    1383. //      char dat;
    1384. //
    1385. //      dat = READ_LIN(LBUF);       //读CAN寄存器
    1386. //      WRITE_LIN(LBUF, 0x55);      //写CAN寄存器
    1387. #define     READ_LIN(reg)           (LINAR = (reg), LINDR)
    1388. #define     WRITE_LIN(reg, dat)     (LINAR = (reg), LINDR = (dat))
    1389. #define LBUF 0x00                                                //
    1390. #define LSEL 0x01                                                //
    1391. #define LID 0x02                                                 //
    1392. #define LER 0x03                                                 //
    1393. #define LIE 0x04                                                 //
    1394. #define LSR 0x05                                                 //
    1395. #define LCR 0x05                                                 //
    1396. #define DLL 0x06                                                 //
    1397. #define DLH 0x07                                                 //
    1398. #define HDRL 0x08                                                //
    1399. #define HDRH 0x09                                                //
    1400. #define HDP 0x0A                                                 //
    1401. /////////////////////////////////////////////////
    1402. //USB Control Regiter
    1403. /////////////////////////////////////////////////
    1404. //sfr       USBCLK      =           0xdc;
    1405. //sfr       USBDAT      =           0xec;
    1406. //sfr       USBCON      =           0xf4;
    1407. //sfr       USBADR      =           0xfc;
    1408. //使用方法:
    1409. //      char dat;
    1410. //
    1411. //      READ_USB(CSR0, dat);        //读USB寄存器
    1412. //      WRITE_USB(FADDR, 0x00);     //写USB寄存器
    1413. #define     READ_USB(reg, dat)          \
    1414.             {                           \
    1415.                 while (USBADR & 0x80);  \
    1416.                 USBADR = (reg) | 0x80;  \
    1417.                 while (USBADR & 0x80);  \
    1418.                 (dat) = USBDAT;         \
    1419.             }
    1420. #define     WRITE_USB(reg, dat)         \
    1421.             {                           \
    1422.                 while (USBADR & 0x80);  \
    1423.                 USBADR = (reg) & 0x7f;  \
    1424.                 USBDAT = (dat);         \
    1425.             }
    1426. #define USBBASE 0                                                //
    1427. #define FADDR (USBBASE + 0)                                      //
    1428. #define UPDATE 0x80                                              //
    1429. #define POWER (USBBASE + 1)                                      //
    1430. #define ISOUD 0x80                                               //
    1431. #define USBRST 0x08                                              //
    1432. #define USBRSU 0x04                                              //
    1433. #define USBSUS 0x02                                              //
    1434. #define ENSUS 0x01                                               //
    1435. #define INTRIN1 (USBBASE + 2)                                    //
    1436. #define EP5INIF 0x20                                             //
    1437. #define EP4INIF 0x10                                             //
    1438. #define EP3INIF 0x08                                             //
    1439. #define EP2INIF 0x04                                             //
    1440. #define EP1INIF 0x02                                             //
    1441. #define EP0IF 0x01                                               //
    1442. #define INTROUT1 (USBBASE + 4)                                   //
    1443. #define EP5OUTIF 0x20                                            //
    1444. #define EP4OUTIF 0x10                                            //
    1445. #define EP3OUTIF 0x08                                            //
    1446. #define EP2OUTIF 0x04                                            //
    1447. #define EP1OUTIF 0x02                                            //
    1448. #define INTRUSB (USBBASE + 6)                                    //
    1449. #define SOFIF 0x08                                               //
    1450. #define RSTIF 0x04                                               //
    1451. #define RSUIF 0x02                                               //
    1452. #define SUSIF 0x01                                               //
    1453. #define INTRIN1E (USBBASE + 7)                                   //
    1454. #define EP5INIE 0x20                                             //
    1455. #define EP4INIE 0x10                                             //
    1456. #define EP3INIE 0x08                                             //
    1457. #define EP2INIE 0x04                                             //
    1458. #define EP1INIE 0x02                                             //
    1459. #define EP0IE 0x01                                               //
    1460. #define INTROUT1E (USBBASE + 9)                                  //
    1461. #define EP5OUTIE 0x20                                            //
    1462. #define EP4OUTIE 0x10                                            //
    1463. #define EP3OUTIE 0x08                                            //
    1464. #define EP2OUTIE 0x04                                            //
    1465. #define EP1OUTIE 0x02                                            //
    1466. #define INTRUSBE (USBBASE + 11)                                  //
    1467. #define SOFIE 0x08                                               //
    1468. #define RSTIE 0x04                                               //
    1469. #define RSUIE 0x02                                               //
    1470. #define SUSIE 0x01                                               //
    1471. #define FRAME1 (USBBASE + 12)                                    //
    1472. #define FRAME2 (USBBASE + 13)                                    //
    1473. #define INDEX (USBBASE + 14)                                     //
    1474. #define INMAXP (USBBASE + 16)                                    //
    1475. #define CSR0 (USBBASE + 17)                                      //
    1476. #define SSUEND 0x80                                              //
    1477. #define SOPRDY 0x40                                              //
    1478. #define SDSTL 0x20                                               //
    1479. #define SUEND 0x10                                               //
    1480. #define DATEND 0x08                                              //
    1481. #define STSTL 0x04                                               //
    1482. #define IPRDY 0x02                                               //
    1483. #define OPRDY 0x01                                               //
    1484. #define INCSR1 (USBBASE + 17)                                    //
    1485. #define INCLRDT 0x40                                             //
    1486. #define INSTSTL 0x20                                             //
    1487. #define INSDSTL 0x10                                             //
    1488. #define INFLUSH 0x08                                             //
    1489. #define INUNDRUN 0x04                                            //
    1490. #define INFIFONE 0x02                                            //
    1491. #define INIPRDY 0x01                                             //
    1492. #define INCSR2 (USBBASE + 18)                                    //
    1493. #define INAUTOSET 0x80                                           //
    1494. #define INISO 0x40                                               //
    1495. #define INMODEIN 0x20                                            //
    1496. #define INMODEOUT 0x00                                           //
    1497. #define INENDMA 0x10                                             //
    1498. #define INFCDT 0x08                                              //
    1499. #define OUTMAXP (USBBASE + 19)                                   //
    1500. #define OUTCSR1 (USBBASE + 20)                                   //
    1501. #define OUTCLRDT 0x80                                            //
    1502. #define OUTSTSTL 0x40                                            //
    1503. #define OUTSDSTL 0x20                                            //
    1504. #define OUTFLUSH 0x10                                            //
    1505. #define OUTDATERR 0x08                                           //
    1506. #define OUTOVRRUN 0x04                                           //
    1507. #define OUTFIFOFUL 0x02                                          //
    1508. #define OUTOPRDY 0x01                                            //
    1509. #define OUTCSR2 (USBBASE + 21)                                   //
    1510. #define OUTAUTOCLR 0x80                                          //
    1511. #define OUTISO 0x40                                              //
    1512. #define OUTENDMA 0x20                                            //
    1513. #define OUTDMAMD 0x10                                            //
    1514. #define COUNT0 (USBBASE + 22)                                    //
    1515. #define OUTCOUNT1 (USBBASE + 22)                                 //
    1516. #define OUTCOUNT2 (USBBASE + 23)                                 //
    1517. #define FIFO0 (USBBASE + 32)                                     //
    1518. #define FIFO1 (USBBASE + 33)                                     //
    1519. #define FIFO2 (USBBASE + 34)                                     //
    1520. #define FIFO3 (USBBASE + 35)                                     //
    1521. #define FIFO4 (USBBASE + 36)                                     //
    1522. #define FIFO5 (USBBASE + 37)                                     //
    1523. #define UTRKCTL (USBBASE + 48)                                   //
    1524. #define UTRKSTS (USBBASE + 49)                                   //
    1525. /////////////////////////////////////////////////
    1526. //Interrupt Vector
    1527. /////////////////////////////////////////////////
    1528. #define INT0_VECTOR 0                                            //
    1529. #define TMR0_VECTOR 1                                            //
    1530. #define INT1_VECTOR 2                                            //
    1531. #define TMR1_VECTOR 3                                            //
    1532. #define UART1_VECTOR 4                                           //
    1533. #define ADC_VECTOR 5                                             //
    1534. #define LVD_VECTOR 6                                             //
    1535. #define UART2_VECTOR 8                                           //
    1536. #define SPI_VECTOR 9                                             //
    1537. #define INT2_VECTOR 10                                           //
    1538. #define INT3_VECTOR 11                                           //
    1539. #define TMR2_VECTOR 12                                           //
    1540. #define USER_VECTOR 13                                           //
    1541. #define BRK_VECTOR 14                                            //
    1542. #define ICEP_VECTOR 15                                           //
    1543. #define INT4_VECTOR 16                                           //
    1544. #define UART3_VECTOR 17                                          //
    1545. #define UART4_VECTOR 18                                          //
    1546. #define TMR3_VECTOR 19                                           //
    1547. #define TMR4_VECTOR 20                                           //
    1548. #define CMP_VECTOR 21                                            //
    1549. #define I2C_VECTOR 24                                            //
    1550. #define USB_VECTOR 25                                            //
    1551. #define PWMA_VECTOR 26                                           //
    1552. #define PWMB_VECTOR 27                                           //
    1553. #define CAN1_VECTOR 28                                           //
    1554. #define CAN2_VECTOR 29                                           //
    1555. #define LIN_VECTOR 30                                            //
    1556. #define RTC_VECTOR 36                                            //
    1557. #define P0INT_VECTOR 37                                          //
    1558. #define P1INT_VECTOR 38                                          //
    1559. #define P2INT_VECTOR 39                                          //
    1560. #define P3INT_VECTOR 40                                          //
    1561. #define P4INT_VECTOR 41                                          //
    1562. #define P5INT_VECTOR 42                                          //
    1563. #define P6INT_VECTOR 43                                          //
    1564. #define P7INT_VECTOR 44                                          //
    1565. #define DMA_M2M_VECTOR 47                                        //
    1566. #define DMA_ADC_VECTOR 48                                        //
    1567. #define DMA_SPI_VECTOR 49                                        //
    1568. #define DMA_UR1T_VECTOR 50                                       //
    1569. #define DMA_UR1R_VECTOR 51                                       //
    1570. #define DMA_UR2T_VECTOR 52                                       //
    1571. #define DMA_UR2R_VECTOR 53                                       //
    1572. #define DMA_UR3T_VECTOR 54                                       //
    1573. #define DMA_UR3R_VECTOR 55                                       //
    1574. #define DMA_UR4T_VECTOR 56                                       //
    1575. #define DMA_UR4R_VECTOR 57                                       //
    1576. #define DMA_LCM_VECTOR 58                                        //
    1577. #define LCM_VECTOR 59                                            //
    1578. #define DMA_I2CT_VECTOR 60                                       //
    1579. #define DMA_I2CR_VECTOR 61                                       //
    1580. #define I2S_VECTOR 62                                            //
    1581. #define DMA_I2ST_VECTOR 63                                       //
    1582. #define DMA_I2SR_VECTOR 64                                       //
    1583. /////////////////////////////////////////////////
    1584. #define EAXSFR() EAXFR = 1 /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展SFR(XSFR) */
    1585. #define EAXRAM() EAXFR = 0 /* MOVX A,@DPTR/MOVX @DPTR,A指令的操作对象为扩展RAM(XRAM) */
    1586. /////////////////////////////////////////////////
    1587. #define NOP1() _nop_()
    1588. #define NOP2() NOP1(), NOP1()
    1589. #define NOP3() NOP2(), NOP1()
    1590. #define NOP4() NOP3(), NOP1()
    1591. #define NOP5() NOP4(), NOP1()
    1592. #define NOP6() NOP5(), NOP1()
    1593. #define NOP7() NOP6(), NOP1()
    1594. #define NOP8() NOP7(), NOP1()
    1595. #define NOP9() NOP8(), NOP1()
    1596. #define NOP10() NOP9(), NOP1()
    1597. #define NOP11() NOP10(), NOP1()
    1598. #define NOP12() NOP11(), NOP1()
    1599. #define NOP13() NOP12(), NOP1()
    1600. #define NOP14() NOP13(), NOP1()
    1601. #define NOP15() NOP14(), NOP1()
    1602. #define NOP16() NOP15(), NOP1()
    1603. #define NOP17() NOP16(), NOP1()
    1604. #define NOP18() NOP17(), NOP1()
    1605. #define NOP19() NOP18(), NOP1()
    1606. #define NOP20() NOP19(), NOP1()
    1607. #define NOP21() NOP20(), NOP1()
    1608. #define NOP22() NOP21(), NOP1()
    1609. #define NOP23() NOP22(), NOP1()
    1610. #define NOP24() NOP23(), NOP1()
    1611. #define NOP25() NOP24(), NOP1()
    1612. #define NOP26() NOP25(), NOP1()
    1613. #define NOP27() NOP26(), NOP1()
    1614. #define NOP28() NOP27(), NOP1()
    1615. #define NOP29() NOP28(), NOP1()
    1616. #define NOP30() NOP29(), NOP1()
    1617. #define NOP31() NOP30(), NOP1()
    1618. #define NOP32() NOP31(), NOP1()
    1619. #define NOP33() NOP32(), NOP1()
    1620. #define NOP34() NOP33(), NOP1()
    1621. #define NOP35() NOP34(), NOP1()
    1622. #define NOP36() NOP35(), NOP1()
    1623. #define NOP37() NOP36(), NOP1()
    1624. #define NOP38() NOP37(), NOP1()
    1625. #define NOP39() NOP38(), NOP1()
    1626. #define NOP40() NOP39(), NOP1()
    1627. #define NOP(N) NOP##N()
    1628. #endif
    复制代码












    喜欢研究如何让电子产品变得更加智能和有趣.
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:48
  • 签到天数: 160 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1313

    积分

    荣誉版主

    积分
    1313
    发表于 2023-3-10 13:48:57 | 显示全部楼层
    不错!:loveliness:
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 10:21
  • 签到天数: 153 天

    [LV.7]常住居民III

    9

    主题

    305

    回帖

    3733

    积分

    荣誉版主

    积分
    3733
    发表于 2023-3-10 14:11:57 | 显示全部楼层
    很给力!
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-24 09:28
  • 签到天数: 90 天

    [LV.6]常住居民II

    68

    主题

    569

    回帖

    1854

    积分

    超级版主

    积分
    1854
    QQ
    发表于 2023-3-11 10:40:49 | 显示全部楼层
    太优秀:victory:
    热线19952583534
    www.STCAI.com
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:06
  • 签到天数: 150 天

    [LV.7]常住居民III

    13

    主题

    280

    回帖

    3286

    积分

    论坛元老

    积分
    3286
    发表于 2023-4-24 20:24:12 | 显示全部楼层
    漂亮。。。
    众辕汽修,专业汽车维修
    回复 送花

    使用道具 举报

    该用户从未签到

    8

    主题

    26

    回帖

    142

    积分

    注册会员

    积分
    142
    发表于 2023-4-25 10:42:19 | 显示全部楼层
    大赞!
    回复 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    9

    回帖

    95

    积分

    注册会员

    积分
    95
    发表于 2023-5-16 05:08:45 来自手机 | 显示全部楼层
    太全面了
    回复 送花

    使用道具 举报

    该用户从未签到

    10

    主题

    41

    回帖

    420

    积分

    中级会员

    积分
    420
    发表于 2023-6-12 08:01:15 | 显示全部楼层
    谢谢,这样学习起来难度又降低了些。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:19
  • 签到天数: 156 天

    [LV.7]常住居民III

    5

    主题

    49

    回帖

    623

    积分

    高级会员

    积分
    623
    发表于 2024-2-18 15:32:05 | 显示全部楼层
    感谢作者的辛勤付出
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 68 天

    [LV.6]常住居民II

    4

    主题

    413

    回帖

    1120

    积分

    金牌会员

    积分
    1120
    发表于 2024-3-25 08:19:09 | 显示全部楼层
    对于记不住寄存器的人,这样很不错,不用老是翻看数据手册了,可以把这个文件上传到论坛
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-6 02:04 , Processed in 0.090234 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表