1
0

FU6522_72_MCU.h 127 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305
  1. /******************* (C) COPYRIGHT 2021 Fortiortech Shenzhen *******************
  2. * File Name : FU65xx_2_MCU.h
  3. * Creat Author : Bruce, R&D
  4. * Modify Author : Bruce, R&D
  5. * Creat Date : 2021-08-06
  6. * Modify Date : 2021-12-16
  7. * Description : Application Department Version V1.0.1, update date 2025-08-14
  8. ********************************************************************************
  9. * All Rights Reserved
  10. *******************************************************************************/
  11. #ifndef __FU6522_72_MCU_H__
  12. #define __FU6522_72_MCU_H__
  13. /**************************************************************************************************///Including Header Files
  14. #include <FU6522_72_Type.h>
  15. /**************************************************************************************************///Define Macro
  16. #define FREC (24000000) // MCU工作频率
  17. /**************************************************************************************************///Function Subject
  18. #define SetReg(reg, val1, val2) ((reg) = (reg) & (~(val1)) | (val2)) // 将reg中val1对应的位写val2
  19. #define SetBit(reg, val) ((reg) |= (val)) // 将reg中val对应的位写1
  20. #define ClrBit(reg, val) ((reg) &= ~(val)) // 将reg中val对应的位写0
  21. #define XorBit(reg, val) ((reg) ^= (val)) // 将reg中val对应的位取反
  22. #define ReadBit(reg, val) (((reg) & (val)) != 0) // 判断reg中val对应的位是否为1
  23. /**************************************************************************************************///Register Map
  24. // 搜索快照寄存器请在Keil搜索"[0-9A-Z]__[A-Z]",勾选"Match Case"和"Regular Expressior"
  25. // 快速搜索外设方法:在搜索对话框中输入"//"+外设名称.例:搜索TIMER1,则输入"//TIM1"
  26. /******************************************************************************///SFR
  27. SFR16(DPTR, 0x82); // RV:0000H 8051指针
  28. SFR(PSW, 0xd0); // RV: 00H 8051状态寄存器
  29. SBIT(CY, 0xd0, 7); // rw-- 进/借位标志
  30. SBIT(AC, 0xd0, 6); // rw-- BCD进/借位标志
  31. SBIT(F0, 0xd0, 5); // rw-- 用户自定义标志0
  32. SBIT(RS1,0xd0, 4); // rw-- R寄存器换页位1
  33. SBIT(RS0,0xd0, 3); // rw-- R寄存器换页位0
  34. SBIT(OV, 0xd0, 2); // rw-- 算术运算溢出标志
  35. SBIT(F1, 0xd0, 1); // rw-- 用户自定义标志1
  36. SBIT(P, 0xd0, 0); // rw-- 奇偶标志
  37. SFR(ACC, 0xe0); // RV: 00H 8051 A寄存器
  38. /******************************************************************************///RST
  39. SFR(RST_SR, 0xc9); // RV: xxH 复位状态寄存器
  40. #define RSTPOW 0x80 // r--- 上电复位标志
  41. #define RSTCLR 0x80 // w1-- 复位标志清零
  42. #define RSTEXT 0x40 // r--- 外部复位标志
  43. #define RSTLVD 0x20 // r--- 低压复位标志
  44. #define RSTWDT 0x08 // r--- 看门狗复位标志
  45. #define RSTFED 0x04 // r--- 代码保护复位
  46. #define RSTDBG 0x02 // r--- 调试接口复位
  47. #define SOFTR 0x01 // rw1- 软复位标志位
  48. /******************************************************************************///RTC
  49. #define RTC_TM *(_IO uint16 xdata *)0x402c // RV:FFFFH RTC计数寄存器
  50. #define RTC_STA *(_IO uint8 xdata *)0x402e // RV: 00H RTC控制寄存器
  51. #define RTC_EN 0x80 // rw-- RTC使能
  52. #define RTC_IF 0x40 // rw0- RTC中断标志
  53. #define ISOSCEN 0x10 // rw-- 内部慢时钟使能
  54. /******************************************************************************///CLOCK_CAL
  55. #define CAL_CR0 *(_IO uint8 xdata *)0x4044 // RV: 00H 时钟校准寄存器
  56. #define CAL_STA 0x80 // rw1- CLOCK_CAL使能, r-- 0-->Done 1-->ING
  57. #define CAL_CR1 *(_IO uint8 xdata *)0x4045 // RV: 00H 时钟校准寄存器
  58. /******************************************************************************///IRQ
  59. // IRQ Channel
  60. // LVW/TSD interrupt 0
  61. // INT0 interrupt 1
  62. // INT1 interrupt 2
  63. // DRV interrupt 3
  64. // TIM2 interrupt 4
  65. // TIM1 interrupt 5
  66. // ADC interrupt 6
  67. // CMP/HALL interrupt 7
  68. // RTC interrupt 8
  69. // TIM3 interrupt 9
  70. // SysTick interrupt 10
  71. // TIM4 interrupt 11
  72. // CMP3 interrupt 12
  73. // I2C/UART1 interrupt 13
  74. // SPI/UART2/LIN interrupt 14
  75. // DMA interrupt 15
  76. SFR(TCON, 0x88); // RV: 00H 8051中断控制寄存器
  77. SBIT(TSDIF,0x88, 5); // rw0- TSD温度感应中断标志
  78. SBIT(IT11, 0x88, 4); // rw-- 外部中断1触发配置1
  79. SBIT(IT10, 0x88, 3); // rw-- 外部中断1触发配置0
  80. SBIT(IF0, 0x88, 2); // rw0- 外部中断0标志
  81. SBIT(IT01, 0x88, 1); // rw-- 外部中断0触发配置1
  82. SBIT(IT00, 0x88, 0); // rw-- 外部中断0触发配置0
  83. SFR(IE, 0xa8); // RV: 00H 8051 中断开关
  84. SBIT(EA, 0xa8, 7); // rw-- MCU总中断使能
  85. SBIT(RTCIE,0xa8, 6); // rw-- RTC中断使能
  86. SBIT(ES0, 0xa8, 4); // rw-- UART中断使能
  87. SBIT(SPIIE,0xa8, 3); // rw-- SPI中断使能
  88. SBIT(EX1, 0xa8, 2); // rw-- 外部中断1使能
  89. SBIT(TSDIE,0xa8, 1); // rw-- TSD中断使能
  90. SBIT(EX0, 0xa8, 0); // rw-- 外部中断0使能
  91. SFR(IP0, 0x8a); // RV: 00H 外设中断优先级设置G0
  92. #define PDRV1 0x80 // rw-- DRV优先级配置1
  93. #define PDRV0 0x40 // rw-- DRV优先级配置0
  94. #define PX11 0x20 // rw-- 外部中断1优先级配置1
  95. #define PX10 0x10 // rw-- 外部中断1优先级配置0
  96. #define PX01 0x08 // rw-- 外部中断0优先级配置1
  97. #define PX00 0x04 // rw-- 外部中断0优先级配置0
  98. #define PLVW_TSD1 0x02 // rw-- LVW/TSD优先级配置1
  99. #define PLVW_TSD0 0x01 // rw-- LVW/TSD优先级配置0
  100. SFR(IP1, 0x8b); // RV: 00H 外设中断优先级设置G1
  101. #define PCMP_HALL1 0x80 // rw-- CMP0/1/2/HALL优先级配置1
  102. #define PCMP_HALL0 0x40 // rw-- CMP0/1/2/HALL优先级配置0
  103. #define PADC1 0x20 // rw-- ADC优先级配置1
  104. #define PADC0 0x10 // rw-- ADC优先级配置0
  105. #define PTIM11 0x08 // rw-- TIM1优先级配置1
  106. #define PTIM10 0x04 // rw-- TIM1优先级配置0
  107. #define PTIM21 0x02 // rw-- TIM2优先级配置1
  108. #define PTIM20 0x01 // rw-- TIM2优先级配置0
  109. SFR(IP2, 0x8c); // RV: 00H 外设中断优先级设置G2
  110. #define PTIM41 0x80 // rw-- TIM4优先级配置1
  111. #define PTIM40 0x40 // rw-- TIM4优先级配置0
  112. #define PSYSTICK1 0x20 // rw-- SysTick优先级配置1
  113. #define PSYSTICK0 0x10 // rw-- SysTick优先级配置0
  114. #define PTIM31 0x08 // rw-- TIM3优先级配置1
  115. #define PTIM30 0x04 // rw-- TIM3优先级配置0
  116. #define PRTC1 0x02 // rw-- RTC优先级配置1
  117. #define PRTC0 0x01 // rw-- RTC优先级配置0
  118. SFR(IP3, 0x8d); // RV: 00H 外设中断优先级设置G3
  119. #define PDMA1 0x80 // rw-- DMA优先级配置1
  120. #define PDMA0 0x40 // rw-- DMA优先级配置0
  121. #define PSPI_UT21 0x20 // rw-- SPI/UT2优先级配置1
  122. #define PSPI_UT20 0x10 // rw-- SPI/UT2优先级配置0
  123. #define PI2C_UT11 0x08 // rw-- I2C/UT1优先级配置1
  124. #define PI2C_UT10 0x04 // rw-- I2C/UT1优先级配置0
  125. #define PCMP31 0x02 // rw-- CMP3优先级配置1
  126. #define PCMP30 0x01 // rw-- CMP3优先级配置0
  127. /******************************************************************************///I2C
  128. #define I2C_CR *(_IO uint8 xdata *)0x4028 // RV: 00H I2C控制寄存器
  129. #define I2CEN 0x80 // rw-- I2C使能
  130. #define I2CMS 0x40 // rw-- 主/从机模式选择
  131. #define I2CDMANAKINT 0x10 // rw-- 使能后当DMA传输时忽略NAK应答引起的传输中断
  132. #define I2CDMAAUTO 0x08 // rw-- 使能后当DMA传输时不用手动发送第一个数据字节
  133. #define I2CSPD1 0x04 // rw-- I2C传输频率配置1
  134. #define I2CSPD0 0x02 // rw-- I2C传输频率配置0
  135. #define I2CIE 0x01 // rw-- 中断控制
  136. #define I2C_SR *(_IO uint8 xdata *)0x402b // RV: 00H I2C状态寄存器
  137. #define I2CBSY 0x80 // r--- I2C忙标志
  138. #define DMOD 0x40 // rw-- I2C读写控制
  139. #define I2CSTA 0x10 // rw-- START信号控制
  140. #define I2CSTP 0x08 // rw-- STOP信号控制
  141. #define STR 0x04 // rw0- I2C事件完成标志
  142. #define NACK 0x02 // rw-- 应答信号控制
  143. #define I2CIF 0x01 // r--- 中断标志
  144. #define I2C_ID *(_IO uint8 xdata *)0x4029 // RV: AAH 本机2C地址
  145. #define GC 0x01 // rw-- 广播模式
  146. #define I2C_DR *(_IO uint8 xdata *)0x402a // RV: 00H I2C数据寄存器
  147. /******************************************************************************///SPI
  148. #define SPI_CR0 *(_IO uint8 xdata *)0x4030 // RV: 07H SPI控制寄存器1
  149. #define SPIBSY 0x80 // r--- 忙标志
  150. #define SPIMS 0x40 // rw-- 主/从机配置
  151. #define CPHA 0x20 // rw-- 时钟相位
  152. #define CPOL 0x10 // rw-- 时钟空闲电平
  153. #define SLVSEL 0x08 // r--- NSS滤波后的信号
  154. #define NSSIN 0x04 // r--- NSS即时信号
  155. #define SRMT 0x02 // r--- 移位寄存器空标志
  156. #define RXBMT 0x01 // r--- 接收缓冲器空标志
  157. #define SPI_CR1 *(_IO uint8 xdata *)0x4031 // RV: 02H SPI控制寄存器2
  158. #define SPIIF 0x80 // rw0- 中断标志
  159. #define WCOL 0x40 // rw0- 写冲突标志
  160. #define MODF 0x20 // rw0- 模式错误标志
  161. #define RXOVRN 0x10 // rw0- 接收溢出标志
  162. #define NSSMOD1 0x08 // rw-- SPI模式配置位1
  163. #define NSSMOD0 0x04 // rw-- SPI模式配置位0
  164. #define TXBMT 0x02 // r--- 发送缓冲器空标志
  165. #define SPIEN 0x01 // rw-- SPI使能
  166. #define SPI_CLK *(_IO uint8 xdata *)0x4032 // RV: 00H SPI时钟配置寄存器
  167. #define SPI_DR *(_IO uint8 xdata *)0x4033 // RV: 00H SPI数据寄存器
  168. /******************************************************************************///UART
  169. SFR(UT_CR, 0x98); // RV: 00H UART控制寄存器
  170. SBIT(UT_MOD1,0x98, 7); // rw-- UART模式配置1
  171. SBIT(UT_MOD0,0x98, 6); // rw-- UART模式配置0
  172. SBIT(SM2, 0x98, 5); // rw-- 多机通信使能
  173. SBIT(REN, 0x98, 4); // rw-- 接收使能
  174. SBIT(TB8, 0x98, 3); // rw-- 9位模式下发送的第9位
  175. SBIT(RB8, 0x98, 2); // rw-- 9位模式下接收的第9位
  176. SBIT(TI, 0x98, 1); // rw-- 发送完成标志
  177. SBIT(RI, 0x98, 0); // rw-- 接收完成标志
  178. SFR(UT_DR, 0x99); // RV: 00H UART数据寄存器
  179. SFR16(UT_BAUD, 0x9a); // RV:009bH UART波特率控制寄存器
  180. #define BAUD_SEL 0x8000 // rw-- 倍频使能
  181. #define UART_RX_INV 0x4000 // rw-- RXD反相使能
  182. #define UART_TX_INV 0x2000 // rw-- TXD反相使能
  183. SFR(UT2_CR, 0xd8); // RV: 00H UART2控制寄存器
  184. SBIT(UT2MOD1, 0xd8, 7); // rw-- UART2模式配置1
  185. SBIT(UT2MOD0, 0xd8, 6); // rw-- UART2模式配置0
  186. SBIT(UT2SM2, 0xd8, 5); // rw-- 多机通信使能
  187. SBIT(UT2REN, 0xd8, 4); // rw-- 接收使能
  188. SBIT(UT2TB8, 0xd8, 3); // rw-- 9位模式下发送的第9位
  189. SBIT(UT2RB8, 0xd8, 2); // rw-- 9位模式下接收的第9位
  190. SBIT(UT2TI, 0xd8, 1); // rw-- 发送完成标志
  191. SBIT(UT2RI, 0xd8, 0); // rw-- 接收完成标志
  192. #define UT2_BAUD *(_IO uint16 xdata *)0x4042 // RV:009bH UART2波特率控制寄存器
  193. #define BAUD2_SEL 0x8000 // rw-- 倍频使能
  194. #define UART2_RX_INV 0x4000 // rw-- RXD反相使能
  195. #define UART2_TX_INV 0x2000 // rw-- TXD反相使能
  196. #define UART2IEN 0x1000 // rw-- UART2中断使能
  197. SFR(UT2_DR, 0x89); // RV: 00H UART2数据寄存器
  198. /******************************************************************************///MDU
  199. SFR(MDU_CR, 0xc1); // RV: 00H MDU控制寄存器
  200. #define MDUBSY 0x80 // r--- 当使能SMDU时, 用于表示MDU繁忙
  201. #define MDUSTA3 0x40 // rw1- 当使能SMDU时, 用于表示启动计算单元3
  202. #define MDUSTA2 0x20 // rw1- 当使能SMDU时, 用于表示启动计算单元2
  203. #define MDUSTA1 0x10 // rw1- 当使能SMDU时, 用于表示启动计算单元1
  204. #define MDUSTA0 0x08 // rw1- 当使能SMDU时, 用于表示启动计算单元0
  205. #define MDUMOD2 0x04 // rw-- 当使能SMDU时, 用于表示MDU运行模式配置2
  206. #define MDUMOD1 0x02 // rw-- 当使能SMDU时, 用于表示MDU运行模式配置1
  207. #define MDUMOD0 0x01 // rw-- 当使能SMDU时, 用于表示MDU运行模式配置0
  208. SFR(PI_CR, 0xf9); // RV: 00H PI控制寄存器
  209. #define T2TSS 0x80 // rw-- TIM2步进模式输入使能&PRD使能
  210. #define DRV_MD 0x04 // rw-- 0:中央对齐 1:锯齿波
  211. #define HINV 0x02 // rw-- 上管反相使能
  212. #define LINV 0x01 // rw-- 下管反相使能
  213. /******************************************************************************///SMDU
  214. #define MUL_LEN 8 // 乘法单元所占字节数
  215. #define DIV_LEN 12 // 除法单元所占字节数
  216. #define LPF_LEN 8 // 低通滤波单元所占字节数
  217. #define SCAT_LEN 10 // Sin/Cos/ATan单元所占字节数
  218. #define PI_LEN 16 // PI单元所占字节数
  219. #define PID_LEN 20 // PID单元所占字节数
  220. #define SCAT3_BADR 0x0ef8 // SMDU基地址/Sin/Cos/ATan单元3首地址
  221. #define SCAT2_BADR (SCAT3_BADR + SCAT_LEN) // Sin/Cos/ATan单元2首地址
  222. #define SCAT1_BADR (SCAT2_BADR + SCAT_LEN) // Sin/Cos/ATan单元1首地址
  223. #define SCAT0_BADR (SCAT1_BADR + SCAT_LEN) // Sin/Cos/ATan单元0首地址
  224. #define DIV3_BADR (SCAT0_BADR + SCAT_LEN) // 除法单元3首地址
  225. #define DIV2_BADR (DIV3_BADR + DIV_LEN) // 除法单元2首地址
  226. #define MUL3_BADR (DIV2_BADR + DIV_LEN) // 乘法单元3首地址
  227. #define MUL2_BADR (MUL3_BADR + MUL_LEN) // 乘法单元2首地址
  228. #define PI3_BADR (MUL2_BADR + MUL_LEN) // PI单元3首地址
  229. #define PI2_BADR (PI3_BADR + PID_LEN) // PI单元2首地址
  230. #define LPF3_BADR (PI2_BADR + PID_LEN) // 低通滤波单元3首地址
  231. #define LPF2_BADR (LPF3_BADR + LPF_LEN) // 低通滤波单元2首地址
  232. #define DIV1_BADR (LPF2_BADR + LPF_LEN) // 除法单元 1首地址
  233. #define DIV0_BADR (DIV1_BADR + DIV_LEN) // 除法单元0首地址
  234. #define MUL1_BADR (DIV0_BADR + DIV_LEN) // 乘法单元1首地址
  235. #define MUL0_BADR (MUL1_BADR + MUL_LEN) // 乘法单元0首地址
  236. #define PI1_BADR (MUL0_BADR + MUL_LEN) // PI单元1首地址
  237. #define PI0_BADR (PI1_BADR + PI_LEN) // PI单元0首地址
  238. #define LPF1_BADR (PI0_BADR + PI_LEN) // 低通滤波单元1首地址
  239. #define LPF0_BADR (LPF1_BADR + LPF_LEN) // 低通滤波单元0首地址
  240. #define SCAT3_COS *(_IO uint16 xdata *)(SCAT3_BADR + 0x00) // rw-- Cos
  241. #define SCAT3_SIN *(_IO uint16 xdata *)(SCAT3_BADR + 0x02) // rw-- Sin
  242. #define SCAT3_THE *(_IO uint16 xdata *)(SCAT3_BADR + 0x04) // rw-- Angle
  243. #define SCAT3_RES1 *(_IO uint16 xdata *)(SCAT3_BADR + 0x06) // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
  244. #define SCAT3_RES2 *(_IO uint16 xdata *)(SCAT3_BADR + 0x08) // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
  245. #define SCAT2_COS *(_IO uint16 xdata *)(SCAT2_BADR + 0x00) // rw-- Cos
  246. #define SCAT2_SIN *(_IO uint16 xdata *)(SCAT2_BADR + 0x02) // rw-- Sin
  247. #define SCAT2_THE *(_IO uint16 xdata *)(SCAT2_BADR + 0x04) // rw-- Angle
  248. #define SCAT2_RES1 *(_IO uint16 xdata *)(SCAT2_BADR + 0x06) // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
  249. #define SCAT2_RES2 *(_IO uint16 xdata *)(SCAT2_BADR + 0x08) // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
  250. #define SCAT1_COS *(_IO uint16 xdata *)(SCAT1_BADR + 0x00) // rw-- Cos
  251. #define SCAT1_SIN *(_IO uint16 xdata *)(SCAT1_BADR + 0x02) // rw-- Sin
  252. #define SCAT1_THE *(_IO uint16 xdata *)(SCAT1_BADR + 0x04) // rw-- Angle
  253. #define SCAT1_RES1 *(_IO uint16 xdata *)(SCAT1_BADR + 0x06) // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
  254. #define SCAT1_RES2 *(_IO uint16 xdata *)(SCAT1_BADR + 0x08) // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
  255. #define SCAT0_COS *(_IO uint16 xdata *)(SCAT0_BADR + 0x00) // rw-- Cos
  256. #define SCAT0_SIN *(_IO uint16 xdata *)(SCAT0_BADR + 0x02) // rw-- Sin
  257. #define SCAT0_THE *(_IO uint16 xdata *)(SCAT0_BADR + 0x04) // rw-- Angle
  258. #define SCAT0_RES1 *(_IO uint16 xdata *)(SCAT0_BADR + 0x06) // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
  259. #define SCAT0_RES2 *(_IO uint16 xdata *)(SCAT0_BADR + 0x08) // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
  260. #define DIV3_DAH *(_IO uint16 xdata *)(DIV3_BADR + 0x00) // rw-- 被除数高16位
  261. #define DIV3_DAL *(_IO uint16 xdata *)(DIV3_BADR + 0x02) // rw-- 被除数低16位
  262. #define DIV3_DB *(_IO uint16 xdata *)(DIV3_BADR + 0x04) // rw-- 除数
  263. #define DIV3_DQH *(_IO uint16 xdata *)(DIV3_BADR + 0x06) // rw-- 商高16位
  264. #define DIV3_DQL *(_IO uint16 xdata *)(DIV3_BADR + 0x08) // rw-- 商低16位
  265. #define DIV3_DR *(_IO uint16 xdata *)(DIV3_BADR + 0x0a) // rw-- 余数
  266. #define DIV2_DAH *(_IO uint16 xdata *)(DIV2_BADR + 0x00) // rw-- 被除数高16位
  267. #define DIV2_DAL *(_IO uint16 xdata *)(DIV2_BADR + 0x02) // rw-- 被除数低16位
  268. #define DIV2_DB *(_IO uint16 xdata *)(DIV2_BADR + 0x04) // rw-- 除数
  269. #define DIV2_DQH *(_IO uint16 xdata *)(DIV2_BADR + 0x06) // rw-- 商高16位
  270. #define DIV2_DQL *(_IO uint16 xdata *)(DIV2_BADR + 0x08) // rw-- 商低16位
  271. #define DIV2_DR *(_IO uint16 xdata *)(DIV2_BADR + 0x0a) // rw-- 余数
  272. #define DIV1_DAH *(_IO uint16 xdata *)(DIV1_BADR + 0x00) // rw-- 被除数高16位
  273. #define DIV1_DAL *(_IO uint16 xdata *)(DIV1_BADR + 0x02) // rw-- 被除数低16位
  274. #define DIV1_DB *(_IO uint16 xdata *)(DIV1_BADR + 0x04) // rw-- 除数
  275. #define DIV1_DQH *(_IO uint16 xdata *)(DIV1_BADR + 0x06) // rw-- 商高16位
  276. #define DIV1_DQL *(_IO uint16 xdata *)(DIV1_BADR + 0x08) // rw-- 商低16位
  277. #define DIV1_DR *(_IO uint16 xdata *)(DIV1_BADR + 0x0a) // rw-- 余数
  278. #define DIV0_DAH *(_IO uint16 xdata *)(DIV0_BADR + 0x00) // rw-- 被除数高16位
  279. #define DIV0_DAL *(_IO uint16 xdata *)(DIV0_BADR + 0x02) // rw-- 被除数低16位
  280. #define DIV0_DB *(_IO uint16 xdata *)(DIV0_BADR + 0x04) // rw-- 除数
  281. #define DIV0_DQH *(_IO uint16 xdata *)(DIV0_BADR + 0x06) // rw-- 商高16位
  282. #define DIV0_DQL *(_IO uint16 xdata *)(DIV0_BADR + 0x08) // rw-- 商低16位
  283. #define DIV0_DR *(_IO uint16 xdata *)(DIV0_BADR + 0x0a) // rw-- 余数
  284. #define MUL3_MA *(_IO uint16 xdata *)(MUL3_BADR + 0x00) // rw-- 被乘数
  285. #define MUL3_MB *(_IO uint16 xdata *)(MUL3_BADR + 0x02) // rw-- 乘数
  286. #define MUL3_MCH *(_IO uint16 xdata *)(MUL3_BADR + 0x04) // rw-- 积高16位
  287. #define MUL3_MCL *(_IO uint16 xdata *)(MUL3_BADR + 0x06) // rw-- 积低16位
  288. #define MUL2_MA *(_IO uint16 xdata *)(MUL2_BADR + 0x00) // rw-- 被乘数
  289. #define MUL2_MB *(_IO uint16 xdata *)(MUL2_BADR + 0x02) // rw-- 乘数
  290. #define MUL2_MCH *(_IO uint16 xdata *)(MUL2_BADR + 0x04) // rw-- 积高16位
  291. #define MUL2_MCL *(_IO uint16 xdata *)(MUL2_BADR + 0x06) // rw-- 积低16位
  292. #define MUL1_MA *(_IO uint16 xdata *)(MUL1_BADR + 0x00) // rw-- 被乘数
  293. #define MUL1_MB *(_IO uint16 xdata *)(MUL1_BADR + 0x02) // rw-- 乘数
  294. #define MUL1_MCH *(_IO uint16 xdata *)(MUL1_BADR + 0x04) // rw-- 积高16位
  295. #define MUL1_MCL *(_IO uint16 xdata *)(MUL1_BADR + 0x06) // rw-- 积低16位
  296. #define MUL0_MA *(_IO uint16 xdata *)(MUL0_BADR + 0x00) // rw-- 被乘数
  297. #define MUL0_MB *(_IO uint16 xdata *)(MUL0_BADR + 0x02) // rw-- 乘数
  298. #define MUL0_MCH *(_IO uint16 xdata *)(MUL0_BADR + 0x04) // rw-- 积高16位
  299. #define MUL0_MCL *(_IO uint16 xdata *)(MUL0_BADR + 0x06) // rw-- 积低16位
  300. #define LPF3_K *(_IO int16 xdata *)(LPF3_BADR + 0x00) // rw-- 滤波系数[32767, 0]
  301. #define LPF3_X *(_IO int16 xdata *)(LPF3_BADR + 0x02) // rw-- 滤波输入
  302. #define LPF3_YH *(_IO uint16 xdata *)(LPF3_BADR + 0x04) // rw-- 滤波结果高16位
  303. #define LPF3_YL *(_IO uint16 xdata *)(LPF3_BADR + 0x06) // rw-- 滤波结果低16位
  304. #define LPF2_K *(_IO int16 xdata *)(LPF2_BADR + 0x00) // rw-- 滤波系数[32767, 0]
  305. #define LPF2_X *(_IO int16 xdata *)(LPF2_BADR + 0x02) // rw-- 滤波输入
  306. #define LPF2_YH *(_IO uint16 xdata *)(LPF2_BADR + 0x04) // rw-- 滤波结果高16位
  307. #define LPF2_YL *(_IO uint16 xdata *)(LPF2_BADR + 0x06) // rw-- 滤波结果低16位
  308. #define LPF1_K *(_IO int16 xdata *)(LPF1_BADR + 0x00) // rw-- 滤波系数[32767, 0]
  309. #define LPF1_X *(_IO int16 xdata *)(LPF1_BADR + 0x02) // rw-- 滤波输入
  310. #define LPF1_YH *(_IO uint16 xdata *)(LPF1_BADR + 0x04) // rw-- 滤波结果高16位
  311. #define LPF1_YL *(_IO uint16 xdata *)(LPF1_BADR + 0x06) // rw-- 滤波结果低16位
  312. #define LPF0_K *(_IO int16 xdata *)(LPF0_BADR + 0x00) // rw-- 滤波系数[32767, 0]
  313. #define LPF0_X *(_IO int16 xdata *)(LPF0_BADR + 0x02) // rw-- 滤波输入
  314. #define LPF0_YH *(_IO uint16 xdata *)(LPF0_BADR + 0x04) // rw-- 滤波结果高16位
  315. #define LPF0_YL *(_IO uint16 xdata *)(LPF0_BADR + 0x06) // rw-- 滤波结果低16位
  316. #define PI3_KP *(_IO int16 xdata *)(PI3_BADR + 0x00) // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
  317. #define PI3_EK1 *(_IO int16 xdata *)(PI3_BADR + 0x02) // rw-- 上一次的误差
  318. #define PI3_EK *(_IO int16 xdata *)(PI3_BADR + 0x04) // rw-- 当前的误差
  319. #define PI3_KI *(_IO int16 xdata *)(PI3_BADR + 0x06) // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
  320. #define PI3_UKH *(_IO int16 xdata *)(PI3_BADR + 0x08) // rw-- PI计算结果高16位
  321. #define PI3_UKL *(_IO int16 xdata *)(PI3_BADR + 0x0a) // rw-- PI计算结果低16位
  322. #define PI3_UKMAX *(_IO int16 xdata *)(PI3_BADR + 0x0c) // rw-- UK限幅最大值
  323. #define PI3_UKMIN *(_IO int16 xdata *)(PI3_BADR + 0x0e) // rw-- UK限幅最小值
  324. #define PI3_KD *(_IO int16 xdata *)(PI3_BADR + 0x10) // rw-- Kd系数, Q12格式, 有效范围[32767, 0]
  325. #define PI3_EK2 *(_IO int16 xdata *)(PI3_BADR + 0x12) // rw-- 上两次的误差
  326. #define PI2_KP *(_IO int16 xdata *)(PI2_BADR + 0x00) // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
  327. #define PI2_EK1 *(_IO int16 xdata *)(PI2_BADR + 0x02) // rw-- 上一次的误差
  328. #define PI2_EK *(_IO int16 xdata *)(PI2_BADR + 0x04) // rw-- 当前的误差
  329. #define PI2_KI *(_IO int16 xdata *)(PI2_BADR + 0x06) // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
  330. #define PI2_UKH *(_IO int16 xdata *)(PI2_BADR + 0x08) // rw-- PI计算结果高16位
  331. #define PI2_UKL *(_IO int16 xdata *)(PI2_BADR + 0x0a) // rw-- PI计算结果低16位
  332. #define PI2_UKMAX *(_IO int16 xdata *)(PI2_BADR + 0x0c) // rw-- UK限幅最大值
  333. #define PI2_UKMIN *(_IO int16 xdata *)(PI2_BADR + 0x0e) // rw-- UK限幅最小值
  334. #define PI2_KD *(_IO int16 xdata *)(PI2_BADR + 0x10) // rw-- Kd系数, Q12格式, 有效范围[32767, 0]
  335. #define PI2_EK2 *(_IO int16 xdata *)(PI2_BADR + 0x12) // rw-- 上两次的误差
  336. #define PI1_KP *(_IO int16 xdata *)(PI1_BADR + 0x00) // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
  337. #define PI1_EK1 *(_IO int16 xdata *)(PI1_BADR + 0x02) // rw-- 上一次的误差
  338. #define PI1_EK *(_IO int16 xdata *)(PI1_BADR + 0x04) // rw-- 当前的误差
  339. #define PI1_KI *(_IO int16 xdata *)(PI1_BADR + 0x06) // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
  340. #define PI1_UKH *(_IO int16 xdata *)(PI1_BADR + 0x08) // rw-- PI计算结果高16位
  341. #define PI1_UKL *(_IO int16 xdata *)(PI1_BADR + 0x0a) // rw-- PI计算结果低16位
  342. #define PI1_UKMAX *(_IO int16 xdata *)(PI1_BADR + 0x0c) // rw-- UK限幅最大值
  343. #define PI1_UKMIN *(_IO int16 xdata *)(PI1_BADR + 0x0e) // rw-- UK限幅最小值
  344. #define PI0_KP *(_IO int16 xdata *)(PI0_BADR + 0x00) // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
  345. #define PI0_EK1 *(_IO int16 xdata *)(PI0_BADR + 0x02) // rw-- 上一次的误差
  346. #define PI0_EK *(_IO int16 xdata *)(PI0_BADR + 0x04) // rw-- 当前的误差
  347. #define PI0_KI *(_IO int16 xdata *)(PI0_BADR + 0x06) // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
  348. #define PI0_UKH *(_IO int16 xdata *)(PI0_BADR + 0x08) // rw-- PI计算结果高16位
  349. #define PI0_UKL *(_IO int16 xdata *)(PI0_BADR + 0x0a) // rw-- PI计算结果低16位
  350. #define PI0_UKMAX *(_IO int16 xdata *)(PI0_BADR + 0x0c) // rw-- UK限幅最大值
  351. #define PI0_UKMIN *(_IO int16 xdata *)(PI0_BADR + 0x0e) // rw-- UK限幅最小值
  352. /******************************************************************************///FOC
  353. #define FOC_CR0 *(_IO uint8 xdata *)0x409f // RV: 00H FOC控制寄存器0
  354. #define OMIF 0x80 // r--- 当前转速<FOC_EFREQMIN为1
  355. #define OMAF 0x40 // r--- 当前转速>FOC_EFREQMAX为1
  356. #define MERRS1 0x20 // rw-- 滑膜算法的MAX ERR选择
  357. #define MERRS0 0x10 // rw-- 滑膜算法的MAX ERR选择
  358. #define UCSEL 0x08 // rw-- UDC采样通道选择0:AD2 1:AD14
  359. #define OMAS 0x04 // rw-- 估算速度过大时输出选择位
  360. #define ESCMS 0x02 // rw-- omega计算模式为ATAN
  361. #define EDIS 0x01 // rw-- EALPHA/EBETA自动更新禁止
  362. #define FOC_CR1 *(_IO uint8 xdata *)0x40a0 // RV: 00H FOC控制寄存器1
  363. #define OVMDL 0x80 // rw-- 过调制使能
  364. #define EFAE 0x40 // rw-- 估算器强制角度使能
  365. #define RFAE 0x20 // rw-- 强制爬坡角度使能
  366. #define ANGM 0x10 // rw-- 角度模式选择
  367. #define CSM1 0x08 // rw-- 电流采样模式配置1
  368. #define CSM0 0x04 // rw-- 电流采样模式配置0
  369. #define SPWMSEL 0x02 // rw-- SPWM模式选择
  370. #define SVPWMEN 0x01 // rw-- SVPWM/SPWM选择
  371. #define FOC_CR2 *(_IO uint8 xdata *)0x40a1 // RV: 00H FOC控制寄存器2
  372. #define ESEL 0x80 // rw-- 估算器模式
  373. #define ICLR 0x40 // rw1- FOC__IA/B/CMAX清零
  374. #define F5SEG 0x20 // rw-- 7/5段式SVPWM模式
  375. #define DSS 0x10 // rw-- 2/3电阻采样模式
  376. #define CSOC1 0x08 // rw-- 电流采样基准校准配置1
  377. #define CSOC0 0x04 // rw-- 电流采样基准校准配置0
  378. #define UQD 0x02 // rw-- 禁能Q轴PI
  379. #define UDD 0x01 // rw-- 禁能D轴PI
  380. #define FOC_CR3 *(_IO uint8 xdata *)0x409e // RV: 00H FOC控制寄存器3
  381. #define EFAM 0x80 // rw-- 新算法
  382. #define TAMD 0x40 // rw-- Theta ATAN MODE
  383. #define MFP_EN 0x20 // rw-- MFP使能
  384. #define FOC_THECOMP_DIS 0x10 // rw-- 不加补偿角算法
  385. #define FOCFEN 0x08 // rw-- FOC强制使能
  386. #define HALL_PLL_EN 0x04 // rw-- PLL模式下HALL滤波处理
  387. #define TSMINH9 0x02 // rw-- 单电阻模式下的ADC采样窗口 或 双三电阻模式下死区补偿
  388. #define TSMINH8 0x01 // rw-- 单电阻模式下的ADC采样窗口 或 双三电阻模式下死区补偿
  389. #define FOC_EKP *(_IO int16 xdata *)0x4074 // RV:0000H 估算器的PI的P参数
  390. #define FOC_EKI *(_IO int16 xdata *)0x4076 // RV:0000H 估算器的PI的I参数
  391. #define FOC_KSLIDE *(_IO int16 xdata *)0x4078 // RV:0000H 估算器SMO模式下的KSLIDE 或 PLL模式下的KP
  392. #define FOC_EKLPFMIN *(_IO int16 xdata *)0x407a // RV:0000H 估算器SMO模式下EMF的LPF系数最小值 或 PLL模式下的KI
  393. #define FOC_OMEKLPF *(_IO int16 xdata *)0x407e // RV:0000H 估算器速度计算的LPF系数
  394. #define FOC_FBASE *(_IO int16 xdata *)0x4080 // RV:0000H 估算器角度增量(OMEGA)的系数
  395. #define FOC_EFREQACC *(_IO uint16 xdata *)0x4082 // RV:0000H 估算器在强制角度模式下的OMEGA增量
  396. #define FOC_EFREQMIN *(_IO int16 xdata *)0x4084 // RV:0000H 估算器在强制角度模式下的OMEGA最小值
  397. #define FOC_EFREQHOLD *(_IO int16 xdata *)0x4086 // RV:0000H 估算器在强制角度模式下的OMEGA保持值
  398. #define FOC_EFREQMAX *(_IO uint8 xdata *)0x406f // RV: 7FH 估算器的强制角度模式下的OMEGA最大值
  399. #define FOC_EK3 *(_IO int16 xdata *)0x4088 // RV:0000H 估算器估算电流的系数3
  400. #define FOC_EK4 *(_IO int16 xdata *)0x408a // RV:0000H 估算器估算电流的系数4
  401. #define FOC_EK1 *(_IO int16 xdata *)0x408c // RV:0000H 估算器估算电流的系数1
  402. #define FOC_EK2 *(_IO int16 xdata *)0x408e // RV:0000H 估算器估算电流的系数2
  403. #define FOC_IDREF *(_IO int16 xdata *)0x4090 // RV:0000H D轴电流参考值
  404. #define FOC_IQREF *(_IO int16 xdata *)0x4092 // RV:0000H Q轴电流参考值
  405. #define FOC_QKP *(_IO int16 xdata *)0x4094 // RV:0000H Q轴PI的比例参数
  406. #define FOC_QKI *(_IO int16 xdata *)0x4096 // RV:0000H Q轴PI的积分参数
  407. #define FOC_DKP *(_IO int16 xdata *)0x4070 // RV:0000H D轴PI的比例参数
  408. #define FOC_DKI *(_IO int16 xdata *)0x407c // RV:0000H D轴PI的积分参数
  409. #define FOC__UDCFLT *(_I int16 xdata *)0x4098 // RV:0000H 滤波后的母线电压
  410. #define FOC_TSMIN *(_IO uint8 xdata *)0x40a2 // RV: 00H 单电阻模式下的ADC采样窗口 或 双三电阻模式下死区补偿
  411. #define FOC_TGLI *(_IO uint8 xdata *)0x40a3 // RV: 00H 上桥导通窄脉冲消除
  412. #define FOC_TBLO *(_IO uint8 xdata *)0x40a4 // RV: 00H 三电阻电流采样的屏蔽时间
  413. #define FOC_TRGDLY *(_IO int8 xdata *)0x40a5 // RV: 00H 单电阻模式下ADC采样触发延迟 或 双三电阻模式下电流采样时机
  414. #define FOC_CSO *(_IO int16 xdata *)0x40a6 // RV:4000H 电流采样基准值
  415. #define FOC__RTHESTEP *(_IO int16 xdata *)0x40a8 // RV:0000H 爬坡速度
  416. #define FOC_RTHEACC *(_O int16 xdata *)0x40aa // RV:0000H 爬坡加速度
  417. #define FOC__EOMELPF *(_I int16 xdata *)0x40aa // RV:0000H 滤波后速度
  418. #define FOC_RTHECNT *(_IO uint8 xdata *)0x40ac // RV: 00H 爬坡次数
  419. #define FOC_THECOR *(_IO uint8 xdata *)0x40ad // RV: 01H 爬坡模式切换到估算模式的角度修正值
  420. #define FOC__EMF *(_I int16 xdata *)0x40ae // RV:0000H 估算器估算的反电动势EMF
  421. #define FOC_THECOMP *(_O int16 xdata *)0x40ae // RV:0000H 角度补偿值,用于补偿估算器估算出的角度
  422. #define FOC_DMAX *(_O int16 xdata *)0x40b0 // RV:0000H D轴PI控制器的输出上限
  423. #define FOC__OMEEST *(_I int16 xdata *)0x40b0 // RV:0000H FOC估算的速度
  424. #define FOC__ATAN_THETA *(_I int16 xdata *)0x40b2 // RV:0000H ATAN模式下atan角度,由FOC__EALP/FOC__EBET直接计算
  425. #define FOC_DMIN *(_O int16 xdata *)0x40b2 // RV:0000H D轴PI控制器的输出下限
  426. #define FOC_QMAX *(_IO int16 xdata *)0x40b4 // RV:0000H Q轴PI控制器的输出上限
  427. #define FOC_QMIN *(_IO int16 xdata *)0x40b6 // RV:0000H Q轴PI控制器的输出下限
  428. #define FOC__UD *(_IO int16 xdata *)0x40b8 // RV:0000H D轴电压输出值
  429. #define FOC__UQ *(_IO int16 xdata *)0x40ba // RV:0000H Q轴电压输出值
  430. #define FOC__ID *(_I int16 xdata *)0x40bc // RV:0000H D轴反馈电流值
  431. #define FOC__IQ *(_I int16 xdata *)0x40be // RV:0000H Q轴反馈电流值
  432. #define FOC_IQ_LPFK *(_O uint8 xdata *)0x40c0 // RV: FFH FOC IQ低通滤波系数
  433. #define FOC_ID_LPFK *(_O uint8 xdata *)0x40c1 // RV: FFH FOC ID低通滤波系数
  434. #define FOC__IBET *(_I int16 xdata *)0x40c0 // RV:0000H β轴采样电流值
  435. #define FOC__VBET *(_I int16 xdata *)0x40c2 // RV:0000H β轴电压输出值
  436. #define FOC_UDCPS *(_O int16 xdata *)0x40c2 // RV:0000H D轴的电压前馈补偿
  437. #define FOC__VALP *(_I int16 xdata *)0x40c4 // RV:0000H α轴电压输出值
  438. #define FOC_UQCPS *(_O int16 xdata *)0x40c4 // RV:0000H Q轴的电压前馈补偿
  439. #define FOC__IC *(_I int16 xdata *)0x40c6 // RV:0000H C相电流
  440. #define FOC_FLUX *(_O int16 xdata *)0x40c6 // RV:0000H 电机磁链
  441. #define FOC__IB *(_I int16 xdata *)0x40c8 // RV:0000H B相电流
  442. #define FOC_LQ *(_O int16 xdata *)0x40c8 // RV:0000H
  443. #define FOC__IA *(_I int16 xdata *)0x40ca // RV:0000H A相电流
  444. #define FOC_LD *(_O int16 xdata *)0x40ca // RV:0000H
  445. #define FOC__THETA *(_IO int16 xdata *)0x40cc // RV:0000H 电机电角度
  446. #define FOC__ETHETA *(_IO int16 xdata *)0x40ce // RV:0000H 估算器估算的角度
  447. #define FOC__EALP *(_IO int16 xdata *)0x40d0 // RV:0000H 估算器估算反电动势的α轴值
  448. #define FOC__EBET *(_IO int16 xdata *)0x40d2 // RV:0000H 估算器估算反电动势的β轴值
  449. #define FOC__EOME *(_IO int16 xdata *)0x40d4 // RV:0000H 估算器估算的速度
  450. #define FOC__UQEX *(_I int16 xdata *)0x40d6 // RV:0000H Q轴的电压溢出值,用于弱磁控制
  451. #define FOC_KFG *(_O uint16 xdata *)0x40d6 // RV:0000H FG计算系数
  452. #define FOC__POW *(_I int16 xdata *)0x40d8 // RV:0000H 电机当前运行功率
  453. #define FOC_EOMEKLPF *(_O uint8 xdata *)0x40d8 // RV:0000H EOMELPF的滤波系数
  454. #define FOC__IAMAX *(_I int16 xdata *)0x40da // RV:0000H A相电流最大值
  455. #define FOC__IBMAX *(_I int16 xdata *)0x40dc // RV:0000H B相电流最大值
  456. #define FOC__ICMAX *(_I int16 xdata *)0x40de // RV:0000H C相电流最大值
  457. /******************************************************************************///TIM1
  458. #define TIM1_CR0 *(_IO uint8 xdata *)0x4068 // RV: 00H TIMER1控制寄存器0
  459. #define T1RWEN 0x80 // w1-- T1RCEN操作允许
  460. #define T1CFLT1 0x40 // rw-- 换相滤波配置1
  461. #define T1CFLT0 0x20 // rw-- 换相滤波配置0
  462. #define T1FORC 0x10 // rw-- 60°强制换相
  463. #define T1OPS1 0x08 // rw-- 数据传输方式配置1
  464. #define T1OPS0 0x04 // rw-- 数据传输方式配置0
  465. #define T1BCEN 0x02 // rw-- 基本定时器计数使能
  466. #define T1RCEN 0x01 // rw-- 重载定时器计数使能
  467. #define TIM1_CR1 *(_IO uint8 xdata *)0x4069 // RV: 00H TIMER1控制寄存器1
  468. #define T1BAPE 0x80 // rw-- TIM1__BARR自动装载使能
  469. #define TIM1_CR2 *(_IO uint8 xdata *)0x406a // RV: 00H TIMER1控制寄存器2
  470. #define T1BRS 0x80 // rw-- 基本定时器复位源选择
  471. #define TIM1_CR3 *(_IO uint8 xdata *)0x406b // RV: 00H TIMER1控制寄存器3
  472. #define T1COM_MD 0x80 // rw-- 方波换相模式选择
  473. #define T1PSC2 0x40 // rw-- 定时器分频配置2
  474. #define T1PSC1 0x20 // rw-- 定时器分频配置1
  475. #define T1PSC0 0x10 // rw-- 定时器分频配置0
  476. #define T1TIS1 0x08 // rw-- 输入源选择配置1
  477. #define T1TIS0 0x04 // rw-- 输入源选择配置0
  478. #define T1INM1 0x02 // rw-- 输入源噪声滤波配置1
  479. #define T1INM0 0x01 // rw-- 输入源噪声滤波配置0
  480. #define TIM1_CR4 *(_IO uint8 xdata *)0x406c // RV: 00H TIMER1控制寄存器4
  481. #define T1CST2 0x04 // rw-- 换相状态机配置2
  482. #define T1CST1 0x02 // rw-- 换相状态机配置1
  483. #define T1CST0 0x01 // rw-- 换相状态机配置0
  484. #define TIM1_CR5 *(_IO uint8 xdata *)0x4072 // RV: 00H TIMER1控制寄存器5
  485. #define T1POP 0x80 // rw-- DRV计数器上溢事件触发数据传输使能
  486. #define T1WTS 0x40 // rw-- PWM OFF时候换相,消除窄脉冲
  487. #define ITRIP_DIS 0x08 // rw-- 方波忽略ITRIP电流采样
  488. #define UCOP_DIS 0x04 // rw-- 方波忽略导通相电压
  489. #define T1AFL1 0x02 // rw-- ADC采样点压计算结果滤波
  490. #define T1AFL0 0x01 // rw-- ADC采样点压计算结果滤波
  491. #define TIM1_IER *(_IO uint8 xdata *)0x406d // RV: 00H TIMER1中断控制
  492. #define T1UPD 0x80 // w1-- OPS=00时,触发数据传输
  493. #define T1MAME 0x40 // rw-- TIM1手动模式使能
  494. #define T1ADIE 0x20 // rw-- ADC检测中断使能
  495. #define T1BOIE 0x10 // rw-- 基本定时器上溢中断使能
  496. #define T1ROIE 0x08 // rw-- 重载定时器上溢中断使能
  497. #define T1WTIE 0x04 // rw-- 写入时序中断使能
  498. #define T1PDIE 0x02 // rw-- 位置检测中断使能
  499. #define T1BDIE 0x01 // rw-- 屏蔽续流结束中断使能
  500. #define TIM1_SR *(_IO uint8 xdata *)0x406e // RV: 00H TIMER1状态
  501. #define T1ADIF 0x20 // rw0- ADC检测中断标志
  502. #define T1BOIF 0x10 // rw0- 基本定时器上溢中断标志
  503. #define T1ROIF 0x08 // rw0- 重载定时器上溢中断标志
  504. #define T1WTIF 0x04 // rw0- 写入时序中断标志
  505. #define T1PDIF 0x02 // rw0- 位置检测中断标志
  506. #define T1BDIF 0x01 // rw0- 屏蔽续流结束中断标志
  507. #define TIM1_DBR1 *(_IO uint16 xdata *)0x4074 // RV:0000H TIMER1在CST=1的数据
  508. #define TIM1_DBR2 *(_IO uint16 xdata *)0x4076 // RV:0000H TIMER1在CST=2的数据
  509. #define TIM1_DBR3 *(_IO uint16 xdata *)0x4078 // RV:0000H TIMER1在CST=3的数据
  510. #define TIM1_DBR4 *(_IO uint16 xdata *)0x407a // RV:0000H TIMER1在CST=4的数据
  511. #define TIM1_DBR5 *(_IO uint16 xdata *)0x407c // RV:0000H TIMER1在CST=5的数据
  512. #define TIM1_DBR6 *(_IO uint16 xdata *)0x407e // RV:0000H TIMER1在CST=6的数据
  513. #define TIM1_DBR7 *(_IO uint16 xdata *)0x4080 // RV:0000H TIMER1在CST=7的数据
  514. #define T1CPE2 0x4000 // rw-- 输入沿极性和比较器选择配置2
  515. #define T1CPE1 0x2000 // rw-- 输入沿极性和比较器选择配置1
  516. #define T1CPE0 0x1000 // rw-- 输入沿极性和比较器选择配置0
  517. #define T1WHP 0x0800 // rw-- W相上管反相使能
  518. #define T1WLP 0x0400 // rw-- W相下管反相使能
  519. #define T1VHP 0x0200 // rw-- V相上管反相使能
  520. #define T1VLP 0x0100 // rw-- V相下管反相使能
  521. #define T1UHP 0x0080 // rw-- U相上管反相使能
  522. #define T1ULP 0x0040 // rw-- U相下管反相使能
  523. #define T1WHE 0x0020 // rw-- W相上管输出使能
  524. #define T1WLE 0x0010 // rw-- W相下管输出使能
  525. #define T1VHE 0x0008 // rw-- V相上管输出使能
  526. #define T1VLE 0x0004 // rw-- V相下管输出使能
  527. #define T1UHE 0x0002 // rw-- U相上管输出使能
  528. #define T1ULE 0x0001 // rw-- U相下管输出使能
  529. #define TIM1__BCOR *(_IO uint16 xdata *)0x4070 // RV:0000H 捕获基本定时器计数值滤波值
  530. #define TIM1__BCNTR *(_IO uint16 xdata *)0x4082 // RV:0000H 基本定时器计数值
  531. #define TIM1__BCCR *(_IO uint16 xdata *)0x4084 // RV:0000H 捕获基本定时器计数值
  532. #define TIM1__BARR *(_IO uint16 xdata *)0x4086 // RV:0000H 基本定时器自动重载值
  533. #define TIM1__RARR *(_IO uint16 xdata *)0x4088 // RV:0000H 重载定时器自动重载值
  534. #define TIM1__RCNTR *(_IO uint16 xdata *)0x408a // RV:FFFFH 重载定时器计数值
  535. #define TIM1__ITRIP *(_I uint16 xdata *)0x4098 // RV:0000H 滤波后的母线电流
  536. #define TIM1__UCOP *(_IO uint16 xdata *)0x408c // RV:0000H 导通相电压
  537. #define TIM1__UFLP *(_IO uint16 xdata *)0x408e // RV:0000H 悬空相电压
  538. #define TIM1__URES *(_IO int16 xdata *)0x4090 // RV:0000H 计算结果,公式发生符号变化即产生换相信号
  539. #define TIM1_KRMAX *(_IO uint8 xdata *)0x4092 // RV: 00H 上升沿系数最大值
  540. #define TIM1_KFMIN *(_IO uint8 xdata *)0x4093 // RV: 00H 下降沿系数最小值
  541. #define TIM1_KF *(_IO uint16 xdata *)0x4094 // RV:0000H 下降沿系数
  542. #define TIM1_KR *(_IO uint16 xdata *)0x4096 // RV:0000H 上升沿系数
  543. /******************************************************************************///TIM2
  544. SFR(TIM2_CR0, 0xa1); // RV: 00H TIMER2控制寄存器0
  545. #define T2PSC2 0x80 // rw-- 定时器分频配置2
  546. #define T2PSC1 0x40 // rw-- 定时器分频配置1
  547. #define T2PSC0 0x20 // rw-- 定时器分频配置0
  548. #define T2OCM 0x10 // rw-- 定时器比较匹配模式/QEP&步进模式配置
  549. #define T2IRE 0x08 // rw-- 比较匹配/脉宽检测/方向改变中断使能
  550. #define T2CES 0x04 // rw-- 边沿模式选择
  551. #define T2MOD1 0x02 // rw-- 定时器模式配置1
  552. #define T2MOD0 0x01 // rw-- 定时器模式配置0
  553. SFR(TIM2_CR1, 0xa9); // RV: 00H TIMER2控制寄存器1
  554. #define T2IR 0x80 // rw0- 比较匹配标志
  555. #define T2IP 0x40 // rw0- 周期检测/计数匹配标志
  556. #define T2IF 0x20 // rw0- 计数上溢标志
  557. #define T2IPE 0x10 // rw-- 周期检测/计数匹配中断使能
  558. #define T2IFE 0x08 // rw-- 上溢中断使能
  559. #define T2FE 0x04 // rw-- 噪声滤波使能
  560. #define T2DIR 0x02 // r--- QEP/步进方向信号
  561. #define T2CEN 0x01 // rw-- 定时器使能
  562. SFR16(TIM2__DR, 0xac); // RV:0000H TIMER2匹配值
  563. SFR16(TIM2__ARR, 0xae); // RV:0000H TIMER2重载值
  564. SFR16(TIM2__CNTR, 0xaa); // RV:0000H TIMER2计数值
  565. /******************************************************************************///TIM3
  566. SFR(TIM3_CR0, 0x9c); // RV: 00H TIMER3控制寄存器0
  567. #define T3PSC2 0x80 // rw-- 定时器分频配置2
  568. #define T3PSC1 0x40 // rw-- 定时器分频配置1
  569. #define T3PSC0 0x20 // rw-- 定时器分频配置0
  570. #define T3OCM 0x10 // rw-- 定时器比较匹配/捕获脉宽模式配置
  571. #define T3IRE 0x08 // rw-- 比较匹配/捕获脉宽中断
  572. #define T3OPM 0x02 // rw-- 单次模式使能
  573. #define T3MOD 0x01 // rw-- 定时器模式配置0
  574. SFR(TIM3_CR1, 0x9d); // RV: 00H TIMER3控制寄存器1
  575. #define T3IR 0x80 // rw0- 比较匹配/捕获脉宽标志
  576. #define T3IP 0x40 // rw0- 周期检测标志
  577. #define T3IF 0x20 // rw0- 计数上溢标志
  578. #define T3IPE 0x10 // rw-- 周期检测中断使能
  579. #define T3IFE 0x08 // rw-- 上溢中断使能
  580. #define T3NM1 0x04 // rw-- 噪音滤波配置1
  581. #define T3NM0 0x02 // rw-- 噪音滤波配置0
  582. #define T3EN 0x01 // rw-- 定时器使能
  583. SFR16(TIM3__DR, 0xa4); // RV:0000H TIMER3匹配值
  584. SFR16(TIM3__ARR, 0xa6); // RV:0000H TIMER3重载值
  585. SFR16(TIM3__CNTR, 0xa2); // RV:0000H TIMER3计数值
  586. /******************************************************************************///TIM4
  587. SFR(TIM4_CR0, 0x9e); // RV: 00H TIMER4控制寄存器0
  588. #define T4PSC2 0x80 // rw-- 定时器分频配置2
  589. #define T4PSC1 0x40 // rw-- 定时器分频配置1
  590. #define T4PSC0 0x20 // rw-- 定时器分频配置0
  591. #define T4OCM 0x10 // rw-- 定时器比较匹配/捕获脉宽模式配置
  592. #define T4IRE 0x08 // rw-- 比较匹配/捕获脉宽中断
  593. #define T4OPM 0x02 // rw-- 单次模式使能
  594. #define T4MOD 0x01 // rw-- 定时器模式配置0
  595. SFR(TIM4_CR1, 0x9f); // RV: 00H TIMER4控制寄存器1
  596. #define T4IR 0x80 // rw0- 比较匹配/捕获脉宽标志
  597. #define T4IP 0x40 // rw0- 周期检测标志
  598. #define T4IF 0x20 // rw0- 计数上溢标志
  599. #define T4IPE 0x10 // rw-- 周期检测中断使能
  600. #define T4IFE 0x08 // rw-- 上溢中断使能
  601. #define T4NM1 0x04 // rw-- 噪音滤波配置1
  602. #define T4NM0 0x02 // rw-- 噪音滤波配置0
  603. #define T4EN 0x01 // rw-- 定时器使能
  604. SFR16(TIM4__DR, 0x94); // RV:0000H TIMER4匹配值
  605. SFR16(TIM4__ARR, 0x96); // RV:0000H TIMER4重载值
  606. SFR16(TIM4__CNTR, 0x92); // RV:0000H TIMER4计数值
  607. /******************************************************************************///SYSTICK
  608. #define SYST_ARR *(_IO uint16 xdata *)0x4064 // RV:5dbfH SysTick重载值
  609. /******************************************************************************///DRV
  610. SFR(DRV_OUT, 0xf8); // RV: 00H 驱动输出控制寄存器
  611. SBIT(MOE, 0xf8, 7); // rw-- 主输出使能
  612. SBIT(OISWL, 0xf8, 5); // rw-- WL & XL输出空闲电平
  613. SBIT(OISWH, 0xf8, 4); // rw-- WH & XH输出空闲电平
  614. SBIT(OISVL, 0xf8, 3); // rw-- VL输出空闲电平
  615. SBIT(OISVH, 0xf8, 2); // rw-- VH输出空闲电平
  616. SBIT(OISUL, 0xf8, 1); // rw-- UL输出空闲电平
  617. SBIT(OISUH, 0xf8, 0); // rw-- UH输出空闲电平
  618. #define DRV_DR *(_IO uint16 xdata *)0x4058 // RV:0000H 手动控制输出时设定的比较值
  619. #define DRV_COMR *(_IO uint16 xdata *)0x405a // RV:0000H 计数器的比较匹配值
  620. #define DRV_CMR *(_IO uint16 xdata *)0x405c // RV:0000H 输出配置寄存器
  621. #define XHP 0x8000 // rw-- X相上管反相使能
  622. #define XLP 0x4000 // rw-- X相下管反相使能
  623. #define XHE 0x2000 // rw-- X相上管输出使能
  624. #define XLE 0x1000 // rw-- X相下管输出使能
  625. #define WHP 0x0800 // rw-- W相上管反相使能
  626. #define WLP 0x0400 // rw-- W相下管反相使能
  627. #define VHP 0x0200 // rw-- V相上管反相使能
  628. #define VLP 0x0100 // rw-- V相下管反相使能
  629. #define UHP 0x0080 // rw-- U相上管反相使能
  630. #define ULP 0x0040 // rw-- U相下管反相使能
  631. #define WHE 0x0020 // rw-- W相上管输出使能
  632. #define WLE 0x0010 // rw-- W相下管输出使能
  633. #define VHE 0x0008 // rw-- V相上管输出使能
  634. #define VLE 0x0004 // rw-- V相下管输出使能
  635. #define UHE 0x0002 // rw-- U相上管输出使能
  636. #define ULE 0x0001 // rw-- U相下管输出使能
  637. #define DRV_ARR *(_IO uint16 xdata *)0x405e // RV:0000H 计数器重载值
  638. #define DRV_DTR *(_IO uint8 xdata *)0x4060 // RV: 00H 上下管死区时间
  639. #define DRV__CNTR *(_IO uint16 xdata *)0x4066 // RV:0000H 计数器值
  640. #define DRV_SR *(_IO uint8 xdata *)0x4061 // RV: 00H Driver状态寄存器
  641. #define SYSTIF 0x80 // rw0- SysTick中断标志
  642. #define SYSTIE 0x40 // rw-- SysTick中断使能
  643. #define FGIF 0x20 // rw0- FG中断标志
  644. #define DCIF 0x10 // rw0- 比较匹配中断标志
  645. #define FGIE 0x08 // rw-- FG中断使能
  646. #define DCIP 0x04 // rw-- 产生比较匹配中断的间隔
  647. #define DCIM1 0x02 // rw-- 比较匹配中断模式配置1
  648. #define DCIM0 0x01 // rw-- 比较匹配中断模式配置0
  649. #define DRV_CR *(_IO uint8 xdata *)0x4062 // RV: 00H Driver控制寄存器
  650. #define DRVEN 0x80 // rw-- 计数器使能
  651. #define DDIR 0x40 // rw-- 输出方向
  652. #define FOCEN 0x20 // rw-- FOC/SVPWM/SPWM模块使能
  653. #define DRPE 0x10 // rw-- DRV_DR预装载使能
  654. #define OCS 0x08 // rw-- 比较值来源选择
  655. #define MESEL 0x04 // rw-- ME核工作模式选择
  656. #define DRVOE 0x01 // rw-- Driver输出使能
  657. /******************************************************************************///WDT
  658. #define WDT_CR *(_IO uint8 xdata *)0x4026 // RV: 00H 看门狗控制寄存器
  659. #define WDTRF 0x01 // rw-- 看门狗初始化标志
  660. #define WDT_ARR *(_IO uint8 xdata *)0x4027 // RV: 00H 看门狗重载计数器
  661. /******************************************************************************///GPIO
  662. SFR(P0, 0x80); // RV: 00H Port 0
  663. SBIT(GP00, 0x80, 0);
  664. SBIT(GP01, 0x80, 1);
  665. SBIT(GP02, 0x80, 2);
  666. SBIT(GP03, 0x80, 3);
  667. SBIT(GP04, 0x80, 4);
  668. SBIT(GP05, 0x80, 5);
  669. SBIT(GP06, 0x80, 6);
  670. SBIT(GP07, 0x80, 7);
  671. SFR(P1, 0x90); // RV: 00H Port 1
  672. SBIT(GP10, 0x90, 0);
  673. SBIT(GP11, 0x90, 1);
  674. SBIT(GP12, 0x90, 2);
  675. SBIT(GP13, 0x90, 3);
  676. SBIT(GP14, 0x90, 4);
  677. SBIT(GP15, 0x90, 5);
  678. SBIT(GP16, 0x90, 6);
  679. SBIT(GP17, 0x90, 7);
  680. SFR(P2, 0xa0); // RV: 00H Port 2
  681. SBIT(GP20, 0xa0, 0);
  682. SBIT(GP21, 0xa0, 1);
  683. SBIT(GP22, 0xa0, 2);
  684. SBIT(GP23, 0xa0, 3);
  685. SBIT(GP24, 0xa0, 4);
  686. SBIT(GP25, 0xa0, 5);
  687. SBIT(GP26, 0xa0, 6);
  688. SBIT(GP27, 0xa0, 7);
  689. SFR(P3, 0xb0); // RV: 00H Port 3
  690. SBIT(GP30, 0xb0, 0);
  691. SBIT(GP31, 0xb0, 1);
  692. SBIT(GP32, 0xb0, 2);
  693. SBIT(GP33, 0xb0, 3);
  694. SBIT(GP34, 0xb0, 4);
  695. SBIT(GP35, 0xb0, 5);
  696. SBIT(GP36, 0xb0, 6);
  697. SBIT(GP37, 0xb0, 7);
  698. SFR(P4, 0xb8); // RV: 00H Port 4
  699. SBIT(GP40, 0xb8, 0);
  700. SBIT(GP41, 0xb8, 1);
  701. SBIT(GP42, 0xb8, 2);
  702. SBIT(GP43, 0xb8, 3);
  703. SBIT(GP44, 0xb8, 4);
  704. SBIT(GP45, 0xb8, 5);
  705. SBIT(GP46, 0xb8, 6);
  706. SBIT(GP47, 0xb8, 7);
  707. SFR(P5, 0xc0); // RV: 00H Port 5
  708. SBIT(GP50, 0xc0, 0);
  709. SBIT(GP51, 0xc0, 1);
  710. SBIT(GP52, 0xc0, 2);
  711. SBIT(GP53, 0xc0, 3);
  712. SFR(P0_OE, 0xfc); // RV: 00H P0输出使能寄存器
  713. #define P07_OE 0x80 // rw-- 端口7输出使能
  714. #define P06_OE 0x40 // rw-- 端口6输出使能
  715. #define P05_OE 0x20 // rw-- 端口5输出使能
  716. #define P04_OE 0x10 // rw-- 端口4输出使能
  717. #define P03_OE 0x08 // rw-- 端口3输出使能
  718. #define P02_OE 0x04 // rw-- 端口2输出使能
  719. #define P01_OE 0x02 // rw-- 端口1输出使能
  720. #define P00_OE 0x01 // rw-- 端口0输出使能
  721. #define P0_PU *(_IO uint8 xdata *)0x4053 // RV: 00H P0上拉使能寄存器
  722. #define P07_PU 0x80 // rw-- 端口7上拉使能
  723. #define P06_PU 0x40 // rw-- 端口6上拉使能
  724. #define P05_PU 0x20 // rw-- 端口5上拉使能
  725. #define P04_PU 0x10 // rw-- 端口4上拉使能
  726. #define P03_PU 0x08 // rw-- 端口3上拉使能
  727. #define P02_PU 0x04 // rw-- 端口2上拉使能
  728. #define P01_PU 0x02 // rw-- 端口1上拉使能
  729. #define P00_PU 0x01 // rw-- 端口0上拉使能
  730. #define P07 0x80 // rw-- 使能端口7
  731. #define P06 0x40 // rw-- 使能端口6
  732. #define P05 0x20 // rw-- 使能端口5
  733. #define P04 0x10 // rw-- 使能端口4
  734. #define P03 0x08 // rw-- 使能端口3
  735. #define P02 0x04 // rw-- 使能端口2
  736. #define P01 0x02 // rw-- 使能端口1
  737. #define P00 0x01 // rw-- 使能端口0
  738. SFR(P1_IE, 0xd1); // RV: 00H P1外部中断使能寄存器
  739. #define P17_IE 0x80 // rw-- 端口7外部中断使能
  740. #define P16_IE 0x40 // rw-- 端口6外部中断使能
  741. #define P15_IE 0x20 // rw-- 端口5外部中断使能
  742. #define P14_IE 0x10 // rw-- 端口4外部中断使能
  743. #define P13_IE 0x08 // rw-- 端口3外部中断使能
  744. #define P12_IE 0x04 // rw-- 端口2外部中断使能
  745. #define P11_IE 0x02 // rw-- 端口1外部中断使能
  746. #define P10_IE 0x01 // rw-- 端口0外部中断使能
  747. SFR(P1_IF, 0xd2); // RV: 00H P1外部中断状态寄存器
  748. #define P17_IF 0x80 // rw0- 端口P17外部中断标志位
  749. #define P16_IF 0x40 // rw0- 端口P16外部中断标志位
  750. #define P15_IF 0x20 // rw0- 端口P15外部中断标志位
  751. #define P14_IF 0x10 // rw0- 端口P14外部中断标志位
  752. #define P13_IF 0x08 // rw0- 端口P13外部中断标志位
  753. #define P12_IF 0x04 // rw0- 端口P12外部中断标志位
  754. #define P11_IF 0x02 // rw0- 端口P11外部中断标志位
  755. #define P10_IF 0x01 // rw0- 端口P10外部中断标志位
  756. SFR(P1_OE, 0xfd); // RV: 00H P1输出使能寄存器
  757. #define P17_OE 0x80 // rw-- 端口7输出使能
  758. #define P16_OE 0x40 // rw-- 端口6输出使能
  759. #define P15_OE 0x20 // rw-- 端口5输出使能
  760. #define P14_OE 0x10 // rw-- 端口4输出使能
  761. #define P13_OE 0x08 // rw-- 端口3输出使能
  762. #define P12_OE 0x04 // rw-- 端口2输出使能
  763. #define P11_OE 0x02 // rw-- 端口1输出使能
  764. #define P10_OE 0x01 // rw-- 端口0输出使能
  765. #define P1_PU *(_IO uint8 xdata *)0x4054 // RV: 00H P1上拉使能寄存器
  766. #define P17_PU 0x80 // rw-- 端口7上拉使能
  767. #define P16_PU 0x40 // rw-- 端口6上拉使能
  768. #define P15_PU 0x20 // rw-- 端口5上拉使能
  769. #define P14_PU 0x10 // rw-- 端口4上拉使能
  770. #define P13_PU 0x08 // rw-- 端口3上拉使能
  771. #define P12_PU 0x04 // rw-- 端口2上拉使能
  772. #define P11_PU 0x02 // rw-- 端口1上拉使能
  773. #define P10_PU 0x01 // rw-- 端口0上拉使能
  774. #define P1_AN *(_IO uint8 xdata *)0x4050 // RV: 00H P1模拟使能寄存器
  775. #define P17_AN 0x80 // rw-- 端口7模拟使能
  776. #define P16_AN 0x40 // rw-- 端口6模拟使能
  777. #define P15_AN 0x20 // rw-- 端口5模拟使能
  778. #define P14_AN 0x10 // rw-- 端口4模拟使能
  779. #define HBMOD 0x08 // rw-- 端口P13模式配置
  780. #define HDIO 0x04 // rw-- PWM输出驱动能力选择
  781. #define ODE1 0x02 // rw-- P01漏极开路使能
  782. #define ODE0 0x01 // rw-- P00漏极开路使能
  783. #define P17 0x80 // rw-- 使能端口7
  784. #define P16 0x40 // rw-- 使能端口6
  785. #define P15 0x20 // rw-- 使能端口5
  786. #define P14 0x10 // rw-- 使能端口4
  787. #define P13 0x08 // rw-- 使能端口3
  788. #define P12 0x04 // rw-- 使能端口2
  789. #define P11 0x02 // rw-- 使能端口1
  790. #define P10 0x01 // rw-- 使能端口0
  791. SFR(P2_OE, 0xfe); // RV: 00H P2输出使能寄存器
  792. #define P27_OE 0x80 // rw-- 端口7输出使能
  793. #define P26_OE 0x40 // rw-- 端口6输出使能
  794. #define P25_OE 0x20 // rw-- 端口5输出使能
  795. #define P24_OE 0x10 // rw-- 端口4输出使能
  796. #define P23_OE 0x08 // rw-- 端口3输出使能
  797. #define P22_OE 0x04 // rw-- 端口2输出使能
  798. #define P21_OE 0x02 // rw-- 端口1输出使能
  799. #define P20_OE 0x01 // rw-- 端口0输出使能
  800. #define P2_PU *(_IO uint8 xdata *)0x4055 // RV: 00H P2上拉使能寄存器
  801. #define P27_PU 0x80 // rw-- 端口7上拉使能
  802. #define P26_PU 0x40 // rw-- 端口6上拉使能
  803. #define P25_PU 0x20 // rw-- 端口5上拉使能
  804. #define P24_PU 0x10 // rw-- 端口4上拉使能
  805. #define P23_PU 0x08 // rw-- 端口3上拉使能
  806. #define P22_PU 0x04 // rw-- 端口2上拉使能
  807. #define P21_PU 0x02 // rw-- 端口1上拉使能
  808. #define P20_PU 0x01 // rw-- 端口0上拉使能
  809. #define P2_AN *(_IO uint8 xdata *)0x4051 // RV: 00H P2模拟使能寄存器
  810. #define P27_AN 0x80 // rw-- 端口7模拟使能
  811. #define P26_AN 0x40 // rw-- 端口6模拟使能
  812. #define P25_AN 0x20 // rw-- 端口5模拟使能
  813. #define P24_AN 0x10 // rw-- 端口4模拟使能
  814. #define P23_AN 0x08 // rw-- 端口3模拟使能
  815. #define P22_AN 0x04 // rw-- 端口2模拟使能
  816. #define P21_AN 0x02 // rw-- 端口1模拟使能
  817. #define P20_AN 0x01 // rw-- 端口0模拟使能
  818. #define P27 0x80 // rw-- 使能端口7
  819. #define P26 0x40 // rw-- 使能端口6
  820. #define P25 0x20 // rw-- 使能端口5
  821. #define P24 0x10 // rw-- 使能端口4
  822. #define P23 0x08 // rw-- 使能端口3
  823. #define P22 0x04 // rw-- 使能端口2
  824. #define P21 0x02 // rw-- 使能端口1
  825. #define P20 0x01 // rw-- 使能端口0
  826. SFR(P3_OE, 0xff); // RV: 00H P3输出使能寄存器
  827. #define P37_OE 0x80 // rw-- 端口7输出使能
  828. #define P36_OE 0x40 // rw-- 端口6输出使能
  829. #define P35_OE 0x20 // rw-- 端口5输出使能
  830. #define P34_OE 0x10 // rw-- 端口4输出使能
  831. #define P33_OE 0x08 // rw-- 端口3输出使能
  832. #define P32_OE 0x04 // rw-- 端口2输出使能
  833. #define P31_OE 0x02 // rw-- 端口1输出使能
  834. #define P30_OE 0x01 // rw-- 端口0输出使能
  835. #define P3_PU *(_IO uint8 xdata *)0x4056 // RV: 00H P3上拉使能寄存器
  836. #define P37_PU 0x80 // rw-- 端口7上拉使能
  837. #define P36_PU 0x40 // rw-- 端口6上拉使能
  838. #define P35_PU 0x20 // rw-- 端口5上拉使能
  839. #define P34_PU 0x10 // rw-- 端口4上拉使能
  840. #define P33_PU 0x08 // rw-- 端口3上拉使能
  841. #define P32_PU 0x04 // rw-- 端口2上拉使能
  842. #define P31_PU 0x02 // rw-- 端口1上拉使能
  843. #define P30_PU 0x01 // rw-- 端口0上拉使能
  844. #define P3_AN *(_IO uint8 xdata *)0x4052 // RV: 00H P3模拟使能寄存器
  845. #define P11_PL 0x80 // rw-- P11下拉使能
  846. #define P01_PL 0x40 // rw-- P01下拉使能
  847. #define P35_AN 0x20 // rw-- 端口5模拟使能
  848. #define P34_AN 0x10 // rw-- 端口4模拟使能
  849. #define P33_AN 0x08 // rw-- 端口3模拟使能
  850. #define P32_AN 0x04 // rw-- 端口2模拟使能
  851. #define P31_AN 0x02 // rw-- 端口1模拟使能
  852. #define P30_AN 0x01 // rw-- 端口0模拟使能
  853. #define P37 0x80 // rw-- 使能端口7
  854. #define P36 0x40 // rw-- 使能端口6
  855. #define P35 0x20 // rw-- 使能端口5
  856. #define P34 0x10 // rw-- 使能端口4
  857. #define P33 0x08 // rw-- 使能端口3
  858. #define P32 0x04 // rw-- 使能端口2
  859. #define P31 0x02 // rw-- 使能端口1
  860. #define P30 0x01 // rw-- 使能端口0
  861. SFR(P4_IE, 0xd3); // RV: 00H P4外部中断使能寄存器
  862. #define P04_IE 0x80 // rw-- 端口P04外部中断使能
  863. #define P46_IE 0x40 // rw-- 端口P46外部中断使能
  864. #define P45_IE 0x20 // rw-- 端口P45外部中断使能
  865. #define P44_IE 0x10 // rw-- 端口P44外部中断使能
  866. #define P43_IE 0x08 // rw-- 端口P43外部中断使能
  867. #define P42_IE 0x04 // rw-- 端口P42外部中断使能
  868. #define P41_IE 0x02 // rw-- 端口P41外部中断使能
  869. #define P40_IE 0x01 // rw-- 端口P40外部中断使能
  870. SFR(P4_IF, 0xd4); // RV: 00H P4外部中断状态寄存器
  871. #define P04_IF 0x80 // rw0- 端口P04外部中断标志位
  872. #define P46_IF 0x40 // rw0- 端口P46外部中断标志位
  873. #define P45_IF 0x20 // rw0- 端口P45外部中断标志位
  874. #define P44_IF 0x10 // rw0- 端口P44外部中断标志位
  875. #define P43_IF 0x08 // rw0- 端口P43外部中断标志位
  876. #define P42_IF 0x04 // rw0- 端口P42外部中断标志位
  877. #define P41_IF 0x02 // rw0- 端口P41外部中断标志位
  878. #define P40_IF 0x01 // rw0- 端口P40外部中断标志位
  879. SFR(P4_OE, 0xe9); // RV: 00H P4输出使能寄存器
  880. #define P46_OE 0x40 // rw-- 端口6输出使能
  881. #define P45_OE 0x20 // rw-- 端口5输出使能
  882. #define P44_OE 0x10 // rw-- 端口4输出使能
  883. #define P43_OE 0x08 // rw-- 端口3输出使能
  884. #define P42_OE 0x04 // rw-- 端口2输出使能
  885. #define P41_OE 0x02 // rw-- 端口1输出使能
  886. #define P40_OE 0x01 // rw-- 端口0输出使能
  887. #define P4_PU *(_IO uint8 xdata *)0x4057 // RV: 00H P4上拉使能寄存器
  888. #define P47_PU 0x80 // rw-- 端口7上拉使能
  889. #define P46_PU 0x40 // rw-- 端口6上拉使能
  890. #define P45_PU 0x20 // rw-- 端口5上拉使能
  891. #define P44_PU 0x10 // rw-- 端口4上拉使能
  892. #define P43_PU 0x08 // rw-- 端口3上拉使能
  893. #define P42_PU 0x04 // rw-- 端口2上拉使能
  894. #define P41_PU 0x02 // rw-- 端口1上拉使能
  895. #define P40_PU 0x01 // rw-- 端口0上拉使能
  896. #define P4_AN *(_IO uint8 xdata *)0x4047 // RV: 00H P4模拟使能寄存器
  897. #define P46_AN 0x40 // rw-- 端口6模拟使能
  898. #define P45_AN 0x20 // rw-- 端口5模拟使能
  899. #define P47 0x80 // rw-- 使能端口7
  900. #define P46 0x40 // rw-- 使能端口6
  901. #define P45 0x20 // rw-- 使能端口5
  902. #define P44 0x10 // rw-- 使能端口4
  903. #define P43 0x08 // rw-- 使能端口3
  904. #define P42 0x04 // rw-- 使能端口2
  905. #define P41 0x02 // rw-- 使能端口1
  906. #define P40 0x01 // rw-- 使能端口0
  907. SFR(P5_OE, 0xfb); // RV: 00H P5输出使能寄存器
  908. #define P53_OE 0x08 // rw-- 端口3输出使能
  909. #define P52_OE 0x04 // rw-- 端口2输出使能
  910. #define P51_OE 0x02 // rw-- 端口1输出使能
  911. #define P50_OE 0x01 // rw-- 端口0输出使能
  912. #define P5_PU *(_IO uint8 xdata *)0x4048 // RV: 00H P5上拉使能寄存器
  913. #define P47_PL 0x10 // rw-- P47下拉使能
  914. #define P53_PU 0x08 // rw-- 端口3上拉使能
  915. #define P52_PU 0x04 // rw-- 端口2上拉使能
  916. #define P51_PU 0x02 // rw-- 端口1上拉使能
  917. #define P50_PU 0x01 // rw-- 端口0上拉使能
  918. #define P53 0x08 // rw-- 使能端口3
  919. #define P52 0x04 // rw-- 使能端口2
  920. #define P51 0x02 // rw-- 使能端口1
  921. #define P50 0x01 // rw-- 使能端口0
  922. #define PIN7 0x80 // rw-- PIN7, 用于替代上面的端口编号
  923. #define PIN6 0x40 // rw-- PIN6, 用于替代上面的端口编号
  924. #define PIN5 0x20 // rw-- PIN5, 用于替代上面的端口编号
  925. #define PIN4 0x10 // rw-- PIN4, 用于替代上面的端口编号
  926. #define PIN3 0x08 // rw-- PIN3, 用于替代上面的端口编号
  927. #define PIN2 0x04 // rw-- PIN2, 用于替代上面的端口编号
  928. #define PIN1 0x02 // rw-- PIN1, 用于替代上面的端口编号
  929. #define PIN0 0x01 // rw-- PIN0, 用于替代上面的端口编号
  930. #define PH_SEL *(_IO uint8 xdata *)0x404c // RV: 00H 端口复用
  931. #define SPITMOD 0x80 // rw-- SPI从机发送端在发送完成后变为高阻态
  932. #define UART1EN 0x40 // rw-- 端口复用为UART1
  933. #define UART2EN 0x20 // rw-- 端口复用为UART2
  934. #define T4SEL 0x10 // rw-- 端口复用为TIM4
  935. #define T3SEL 0x08 // rw-- 端口复用为TIM3
  936. #define T2SEL 0x04 // rw-- 端口复用为TIM2
  937. #define T2SSEL 0x02 // rw-- 端口复用为TIM2S
  938. #define XOE 0x01 // rw-- 端口复用为X相驱动端
  939. #define PH_SEL1 *(_IO uint8 xdata *)0x404d // RV: 00H 端口复用
  940. #define UART2CH1 0x80 // rw-- UART2功能转移使能(P36-->P01 P37-->P00)
  941. #define UART2CH0 0x40 // rw-- UART2功能转移使能(P36-->P47 P37-->P12)
  942. #define CMPXO_P01 0x20 // rw-- P01比较器输出功能转移-->P34
  943. #define SPICT0 0x10 // rw-- 单线制SPI Debug功能转移(P05-->P00)
  944. #define T4CT1 0x08 // rw-- TIM4功能转移
  945. #define T4CT0 0x04 // rw-- TIM4功能转移
  946. #define T3CT1 0x02 // rw-- TIM3功能转移
  947. #define T3CT0 0x01 // rw-- TIM3功能转移
  948. #define PH_SEL2 *(_IO uint8 xdata *)0x4049 // RV: 0CH 端口复用
  949. #define ADC_SCYCH7 0x20 // rw-- ADC CH2采样时间配置3
  950. #define ADC_SCYCH6 0x10 // rw-- ADC CH2采样时间配置2
  951. #define ADC_SCYCH5 0x08 // rw-- ADC CH2采样时间配置1
  952. #define ADC_SCYCH4 0x04 // rw-- ADC CH2采样时间配置0
  953. #define SPICT1 0x01 // rw-- 单线制SPI Debug功能转移(P05-->P34)
  954. /******************************************************************************///ADC
  955. #define ADC_MASK *(_IO uint16 xdata *)0x4036 // RV:0000H ADC通道使能
  956. #define CH15EN 0x8000 // rw-- ADC通道15使能
  957. #define CH14EN 0x4000 // rw-- ADC通道14使能
  958. #define CH13EN 0x2000 // rw-- ADC通道13使能
  959. #define CH12EN 0x1000 // rw-- ADC通道12使能
  960. #define CH11EN 0x0800 // rw-- ADC通道11使能
  961. #define CH10EN 0x0400 // rw-- ADC通道10使能
  962. #define CH9EN 0x0200 // rw-- ADC通道9使能
  963. #define CH8EN 0x0100 // rw-- ADC通道8使能
  964. #define CH7EN 0x0080 // rw-- ADC通道7使能
  965. #define CH6EN 0x0040 // rw-- ADC通道6使能
  966. #define CH5EN 0x0020 // rw-- ADC通道5使能
  967. #define CH4EN 0x0010 // rw-- ADC通道4使能
  968. #define CH3EN 0x0008 // rw-- ADC通道3使能
  969. #define CH2EN 0x0004 // rw-- ADC通道2使能
  970. #define CH1EN 0x0002 // rw-- ADC通道1使能
  971. #define CH0EN 0x0001 // rw-- ADC通道0使能
  972. #define ADC_SCYC *(_IO uint8 xdata *)0x4038 // RV: 33H ADC通道采样时间配置
  973. #define ADC_CR *(_IO uint8 xdata *)0x4039 // RV: 00H ADC控制寄存器
  974. #define ADCEN 0x80 // rw-- 使能ADC
  975. #define ADCBSY 0x40 // rw1- ADC启动 & ADC忙标志
  976. #define ADCTM1 0x10 // rw-- DRV触发ADC启动模式
  977. #define ADCTM0 0x08 // rw-- 00不触发01上升沿10下降沿11双沿
  978. #define ADCALIGN 0x04 // rw-- ADC数据次高位对齐
  979. #define ADCIE 0x02 // rw-- ADC中断使能
  980. #define ADCIF 0x01 // rw0- ADC中断标志
  981. #define ADC0_DR *(_I uint16 xdata *)0x0fd8 // RV:0000H ADC通道0转换结果
  982. #define ADC1_DR *(_I uint16 xdata *)0x0fda // RV:0000H ADC通道1转换结果
  983. #define ADC2_DR *(_I uint16 xdata *)0x0fdc // RV:0000H ADC通道2转换结果
  984. #define ADC3_DR *(_I uint16 xdata *)0x0fde // RV:0000H ADC通道3转换结果
  985. #define ADC4_DR *(_I uint16 xdata *)0x0fe0 // RV:0000H ADC通道4转换结果
  986. #define ADC5_DR *(_I uint16 xdata *)0x0fe2 // RV:0000H ADC通道5转换结果
  987. #define ADC6_DR *(_I uint16 xdata *)0x0fe4 // RV:0000H ADC通道6转换结果
  988. #define ADC7_DR *(_I uint16 xdata *)0x0fe6 // RV:0000H ADC通道7转换结果
  989. #define ADC8_DR *(_I uint16 xdata *)0x0fe8 // RV:0000H ADC通道8转换结果
  990. #define ADC9_DR *(_I uint16 xdata *)0x0fea // RV:0000H ADC通道9转换结果
  991. #define ADC10_DR *(_I uint16 xdata *)0x0fec // RV:0000H ADC通道10转换结果
  992. #define ADC11_DR *(_I uint16 xdata *)0x0fee // RV:0000H ADC通道11转换结果
  993. #define ADC12_DR *(_I uint16 xdata *)0x0ff0 // RV:0000H ADC通道12转换结果
  994. #define ADC13_DR *(_I uint16 xdata *)0x0ff2 // RV:0000H ADC通道13转换结果
  995. #define ADC14_DR *(_I uint16 xdata *)0x0ff4 // RV:0000H ADC通道14转换结果
  996. #define ADC15_DR *(_I uint16 xdata *)0x0ff6 // RV:0000H ADC通道15转换结果
  997. /*****************************************************************************///DAC
  998. #define DAC_CR *(_IO uint8 xdata *)0x4035 // RV: 0CH DAC控制寄存器
  999. #define DAC0_1EN 0x80 // rw-- DAC0&1使能
  1000. #define DACMOD 0x40 // rw-- DAC模式配置
  1001. #define ADC_SCYCH3 0x20 // rw-- ADC CH8~CH13采样时间配置3
  1002. #define ADC_SCYCH2 0x10 // rw-- ADC CH8~CH13采样时间配置2
  1003. #define ADC_SCYCH1 0x08 // rw-- ADC CH8~CH13采样时间配置1
  1004. #define ADC_SCYCH0 0x04 // rw-- ADC CH8~CH13采样时间配置0
  1005. #define DAC0_DR *(_IO uint8 xdata *)0x404b // RV: 00H DAC0输出值[8:1]
  1006. #define DAC1_DR *(_IO uint8 xdata *)0x404a // RV: 00H DAC1输出值
  1007. #define DAC0_DR_0 0x80 // RV: rw-- DAC0输出值[0]
  1008. /******************************************************************************///DMA
  1009. #define DMA0_CR0 *(_IO uint8 xdata *)0x403a // RV: 00H DMA通道0配置 & DMA公共配置
  1010. #define DMA1_CR0 *(_IO uint8 xdata *)0x403b // RV: 00H DMA通道1配置 & Debug设置
  1011. #define DMAEN 0x80 // rw-- DMA通道0/1使能
  1012. #define DMABSY 0x40 // rw1- DMA通道0/1状态/启动
  1013. #define DMACFG2 0x20 // rw-- DMA通道0/1外设与方向选择位2
  1014. #define DMACFG1 0x10 // rw-- DMA通道0/1外设与方向选择位1
  1015. #define DMACFG0 0x08 // rw-- DMA通道0/1外设与方向选择位0
  1016. #define DBGSW 0x04 // rw-- DMA通道1 DBG模式指向区域,位于DMA1_CR0
  1017. #define DBGEN 0x02 // rw-- DMA通道1 DBG模式使能,位于DMA1_CR0
  1018. #define DMAIE 0x04 // rw-- DMA中断使能,位于DMA0_CR0
  1019. #define ENDIAN 0x02 // rw-- DMA数据传输顺序,位于DMA0_CR0
  1020. #define DMAIF 0x01 // rw-- DMA通道0/1中断标志位
  1021. #define DMA0_LEN *(_IO uint8 xdata *)0x403c // RV: 00H DMA通道0传输长度配置
  1022. #define DMA1_LEN *(_IO uint8 xdata *)0x403d // RV: 00H DMA通道1传输长度配置
  1023. #define DMA0_BA *(_IO uint16 xdata *)0x403e // RV:0000H DMA通道0传输地址配置
  1024. #define DMA1_BA *(_IO uint16 xdata *)0x4040 // RV:0000H DMA通道1传输地址配置
  1025. /******************************************************************************///VREF & VHALF
  1026. #define VREF_VHALF_CR *(_IO uint8 xdata *)0x404f // RV: 06H VREF & VHALF控制寄存器
  1027. #define VRVSEL1 0x80 // rw-- VREF电压配置1
  1028. #define VRVSEL0 0x40 // rw-- VREF电压配置0
  1029. #define VREFEN 0x10 // rw-- VREF使能
  1030. #define VHALFSEL1 0x04 // rw-- VHALF电压选择VREF系数
  1031. #define VHALFSEL0 0x02 // rw-- 00:1/8 01:1/4 10:25/64 11:1/2(default)
  1032. #define VHALFEN 0x01 // rw-- VHALF使能
  1033. /******************************************************************************///AMP
  1034. #define AMP_CR0 *(_IO uint8 xdata *)0x404e // RV: 00H 运放控制寄存器0
  1035. #define CP_EN 0x40 // rw-- 使能后P27通过50k电阻到P34
  1036. #define AMP12M_GND 0x20 // rw-- PGA模式运放12负输入端接GND
  1037. #define AMP0M_GND 0x10 // rw-- PGA模式运放0负输入端接GND
  1038. #define AMP3EN 0x08 // rw-- 运放3使能
  1039. #define AMP2EN 0x04 // rw-- 运放2使能
  1040. #define AMP1EN 0x02 // rw-- 运放1使能
  1041. #define AMP0EN 0x01 // rw-- 运放0使能
  1042. #define AMP_CR1 *(_IO uint8 xdata *)0x4034 // RV: 00H 运放控制寄存器1
  1043. #define AMP_PH_GAIN2 0x80 // rw-- AMP1/2 PGA增益控制位2
  1044. #define AMP_PH_GAIN1 0x40 // rw-- AMP1/2 PGA增益控制位1
  1045. #define AMP_PH_GAIN0 0x20 // rw-- AMP1/2 PGA增益控制位0
  1046. #define AMP0_GAIN2 0x04 // rw-- AMP0 PGA增益控制位2
  1047. #define AMP0_GAIN1 0x02 // rw-- AMP0 PGA增益控制位1
  1048. #define AMP0_GAIN0 0x01 // rw-- AMP0 PGA增益控制位0
  1049. #define AMP_CR2 *(_IO uint8 xdata *)0x4046 // RV: 00H 运放控制寄存器2
  1050. #define AMP3_GAIN2 0x04 // rw-- AMP3 PGA增益控制位2
  1051. #define AMP3_GAIN1 0x02 // rw-- AMP3 PGA增益控制位1
  1052. #define AMP3_GAIN0 0x01 // rw-- AMP3 PGA增益控制位0
  1053. /******************************************************************************///CMP
  1054. SFR(CMP_CR0, 0xd5); // RV: 00H 比较器控制寄存器0
  1055. #define CMP3IM1 0x80 // rw-- CMP3中断模式配置1
  1056. #define CMP3IM0 0x40 // rw-- CMP3中断模式配置0
  1057. #define CMP2IM1 0x20 // rw-- CMP2中断模式配置1
  1058. #define CMP2IM0 0x10 // rw-- CMP2中断模式配置0
  1059. #define CMP1IM1 0x08 // rw-- CMP1中断模式配置1
  1060. #define CMP1IM0 0x04 // rw-- CMP1中断模式配置0
  1061. #define CMP0IM1 0x02 // rw-- CMP0中断模式配置1
  1062. #define CMP0IM0 0x01 // rw-- CMP0中断模式配置0
  1063. SFR(CMP_CR1, 0xd6); // RV: 00H 比较器控制寄存器1
  1064. #define CMP3MOD1 0x40 // rw-- CMP3正输入端选择配置1
  1065. #define CMP3MOD0 0x20 // rw-- CMP3正输入端选择配置0
  1066. #define CMP3EN 0x10 // rw-- CMP3使能
  1067. #define CMP3HYS 0x08 // rw-- CMP3迟滞使能
  1068. #define CMP0HYS1 0x02 // rw-- CMP0迟滞电压配置1
  1069. #define CMP0HYS0 0x01 // rw-- CMP0迟滞电压配置0
  1070. SFR(CMP_CR2, 0xda); // RV: 00H 比较器控制寄存器2
  1071. #define CMP4EN 0x80 // rw-- CMP4使能
  1072. #define CMP0MOD1 0x40 // rw-- CMP0模式配置1
  1073. #define CMP0MOD0 0x20 // rw-- CMP0模式配置0
  1074. #define CMP0SEL1 0x10 // rw-- CMP0端口组合配置1
  1075. #define CMP0SEL0 0x08 // rw-- CMP0端口组合配置0
  1076. #define CMP0CSEL1 0x04 // rw-- CMP0轮询速度配置1
  1077. #define CMP0CSEL0 0x02 // rw-- CMP0轮询速度配置0
  1078. #define CMP0EN 0x01 // rw-- CMP0使能
  1079. SFR(CMP_CR3, 0xdc); // RV: 00H 比较器控制寄存器3
  1080. #define CMPDTEN 0x80 // rw-- 比较器死区采样使能
  1081. #define DBGSEL1 0x40 // rw-- DBG信号配置1
  1082. #define DBGSEL0 0x20 // rw-- DBG信号配置0
  1083. #define SAMSEL1 0x10 // rw-- CMP0/1/2 & ADC 采样时机配置1
  1084. #define SAMSEL0 0x08 // rw-- CMP0/1/2 & ADC 采样时机配置0
  1085. #define CMPSEL2 0x04 // rw-- 比较器输出选择配置2
  1086. #define CMPSEL1 0x02 // rw-- 比较器输出选择配置1
  1087. #define CMPSEL0 0x01 // rw-- 比较器输出选择配置0
  1088. SFR(CMP_CR4, 0xe1); // RV: 00H 比较器控制寄存器4
  1089. #define CMP4OUT 0x80 // r--- CMP4比较结果
  1090. #define CMP3P4M_FS 0x10 // rw-- P27(CMP3P和CMP4M)功能转移至P34
  1091. #define FAEN 0x04 // rw-- 滤波采样系数扩大使能
  1092. #define CMP0_FS 0x02 // rw-- CMP1/2功能转移使能
  1093. SFR(HALL_CR, 0xe2); // RV: 00H HALL控制寄存器
  1094. #define HALL_IF 0x80 // rw0- HALL中断触发标志位
  1095. #define HALL_IE 0x40 // rw-- HALL中断使能
  1096. #define HALLSEL 0x08 // rw-- 霍尔信号输入选择
  1097. #define HALL2 0x04 // r--- HALL2滤波后输出电平
  1098. #define HALL1 0x02 // r--- HALL1滤波后输出电平
  1099. #define HALL0 0x01 // r--- HALL0滤波后输出电平
  1100. SFR(CMP_SR, 0xd7); // RV: 00H 比较器状态寄存器
  1101. #define CMP3IF 0x80 // rw0- CMP3中断标志
  1102. #define CMP2IF 0x40 // rw0- CMP2中断标志
  1103. #define CMP1IF 0x20 // rw0- CMP1中断标志
  1104. #define CMP0IF 0x10 // rw0- CMP0中断标志
  1105. #define CMP3OUT 0x08 // r--- CMP3比较结果
  1106. #define CMP2OUT 0x04 // r--- CMP2比较结果
  1107. #define CMP1OUT 0x02 // r--- CMP1比较结果
  1108. #define CMP0OUT 0x01 // r--- CMP0比较结果
  1109. SFR(EVT_FILT, 0xd9); // RV: 00H 驱动保护功能
  1110. #define MOEMD1 0x10 // rw-- MOE自动控制配置1
  1111. #define MOEMD0 0x08 // rw-- MOE自动控制配置0
  1112. #define INT0_MOE_EN 0x04 // rw-- INT0中断触发MOE关闭使能
  1113. #define EFDIV1 0x02 // rw-- 母线电流保护滤波配置1
  1114. #define EFDIV0 0x01 // rw-- 母线电流保护滤波配置0
  1115. #define CMP_SAMR *(_IO uint8 xdata *)0x40ad // RV: 01H 比较器采样配置
  1116. /******************************************************************************///FLASH
  1117. /**
  1118. * @defgroup Flash
  1119. * @{
  1120. * @defgroup Flash_Register
  1121. * @{
  1122. * @defgroup FLA_KEY
  1123. * @brief 解锁寄存器, 编程前必须通过该寄存器解除编程锁
  1124. * - 解锁步骤为:
  1125. * 1. 写入0x5a, 此时读该寄存器应该读出0x01
  1126. * 2. 写入0x1f, 此时读该寄存器应该读出0x03, 此时Flash已经处于解锁状态, 可以进行编程操作
  1127. * - 更多说明可参阅datasheet
  1128. * @{
  1129. */
  1130. SFR(FLA_KEY, 0x84); // RV: 00H FLASH解锁寄存器
  1131. #define FLAKSTA1 0x02 // r-- FLASH解锁状态位1
  1132. #define FLAKSTA0 0x01 // r-- FLASH解锁状态位0
  1133. SFR(FLA_CR, 0x85); // RV: 00H FLASH控制寄存器
  1134. #define PAGE_EN 0x20 // rw-- FLASH页操作使能
  1135. #define FLAERR 0x10 // r--- FLASH错误标志位
  1136. #define FLAPRE 0x04 // rw-- FLASH预编程使能
  1137. #define FLAERS 0x02 // rw-- FLASH清除使能
  1138. #define FLAEN 0x01 // rw-- FLASH编程使能
  1139. /******************************************************************************///CRC
  1140. #define CRC_DIN *(_O uint8 xdata *)0x4021 // RV: 00H CRC数据输入寄存器
  1141. #define CRC_CR *(_IO uint8 xdata *)0x4022 // RV: 10H CRC控制寄存器
  1142. #define CRCDONE 0x10 // r--- 自动CRC完成标志
  1143. #define CRCDINI 0x08 // w1-- CRC初始化
  1144. #define CRCVAL 0x04 // rw-- CRC初始化的值
  1145. #define AUTOINT 0x02 // rw-- CRC自动计算使能
  1146. #define CRCPNT 0x01 // rw-- CRC结果访问位置
  1147. #define CRC_DR *(_IO uint8 xdata *)0x4023 // RV: 00H CRC结果输出寄存器
  1148. #define CRC_BEG *(_IO uint8 xdata *)0x4024 // RV: 00H CRC自动计算的起始位置
  1149. #define CRC_CNT *(_IO uint8 xdata *)0x4025 // RV: 00H CRC块数计数器
  1150. /******************************************************************************///TSD
  1151. #define TSD_CR *(_IO uint8 xdata *)0x402f // RV: 06H TSD控制寄存器
  1152. #define TSDEN 0x80 // rw-- TSD使能
  1153. #define TSDADJ3 0x08 // rw-- TSD温度调节
  1154. #define TSDADJ2 0x04 // rw-- TSD温度调节
  1155. #define TSDADJ1 0x02 // rw-- TSD温度调节
  1156. #define TSDADJ0 0x01 // rw-- TSD温度调节
  1157. /******************************************************************************///POWER
  1158. SFR(PCON, 0x87); // RV: 00H MCU功率控制寄存器
  1159. #define GF3 0x20 // rw-- 通用标志3
  1160. #define GF2 0x10 // rw-- 通用标志2
  1161. #define GF1 0x08 // rw-- 通用标志1
  1162. #define STOP 0x02 // rw-- MCU睡眠使能
  1163. #define IDLE 0x01 // rw-- MCU待机使能
  1164. SFR(LVSR, 0xdb); // RV: 00H 状态寄存器
  1165. #define EXT0CFG2 0x20 // rw-- 外部中断0端口配置2
  1166. #define EXT0CFG1 0x10 // rw-- 外部中断0端口配置1
  1167. #define EXT0CFG0 0x08 // rw-- 外部中断0端口配置0
  1168. #define TSDF 0x04 // r--- 过温标志位
  1169. #define LVWF 0x02 // r--- VDD5低电压预警标志
  1170. #define LVWIF 0x01 // rw0- VDD5低电压预警中断标志
  1171. #define CCFG1 *(_IO uint8 xdata *)0x401E // RV: 00H
  1172. #define LVW_EN_B 0x80 // rw-- VDD5低电压预警使能,复位使能
  1173. #define LVW_IE 0x40 // rw-- VDD5低电压预警中断使能
  1174. #define WDT_EN 0x20 // rw-- WDT使能
  1175. #endif