Browse Source

项目初始化

avery 5 months ago
commit
0e48e9685b

+ 7 - 0
.gitignore

@@ -0,0 +1,7 @@
+*.obj
+*.lst
+KeilC51/Listing/
+KeilC51/Output/
+KeilC51/Fortior.uvgui.Unenfantseul
+
+.DS_Store

BIN
Docs/FU6572N-24V-180W.pdf


BIN
Docs/MCU-DS-25_FU6522_32_62_63_72_V10.0_20251107.pdf


+ 694 - 0
KeilC51/Fortior.uvopt

@@ -0,0 +1,694 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc; *.md</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>Fortior</TargetName>
+    <ToolsetNumber>0x0</ToolsetNumber>
+    <ToolsetName>MCS-51</ToolsetName>
+    <TargetOption>
+      <CLK51>24000000</CLK51>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>1</RunSim>
+        <RunTarget>0</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>0</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>120</PageWidth>
+        <PageLength>65</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>0</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>0</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>12</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile></tIfile>
+        <pMon>BIN\Fice.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTCYG</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>Fice</Key>
+          <Name>-S1 -B115200 -O1792</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <WatchWindow1>
+        <Ww>
+          <count>0</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart,0x10</ItemText>
+        </Ww>
+        <Ww>
+          <count>1</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>RealTempR.LTmepSensorADC,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>2</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFaultSource,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcState,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.L_TargetTemp_C,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>7</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>RealTempR.LTmepSensor_C,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>8</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.LTmepSensor,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>9</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.RTmepSensor,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>10</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.T_DATA[5],0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>11</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>fault,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>12</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcPowerLimit,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>13</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcVoltagePrtc,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>14</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.VoltageProtect,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>15</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Uart.ONTIME</ItemText>
+        </Ww>
+        <Ww>
+          <count>16</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>RealTempR,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>17</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcCurOffset,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>18</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.State_Count,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>19</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.RunStateCnt,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>20</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcRefRamp,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>21</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>vsp,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>22</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>k,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>23</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.Output,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>24</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcVoltagePrtc,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>25</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.mcDcbusFlt,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>26</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.EMFsquare,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>27</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.SpeedFlt,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>28</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.State_Count,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>29</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Restart.LP_DelayTcntc,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>30</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Restart.LP_DelayTcnt,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>31</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Restart.LP_DelayTcntcC</ItemText>
+        </Ww>
+        <Ww>
+          <count>32</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.IbusLpf,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>33</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>k,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>34</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.Output,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>35</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.VoltVref,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>36</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.ADCFedLpf,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>37</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.VoltNegFed,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>38</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.VoltPosiFed,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>39</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>testflag</ItemText>
+        </Ww>
+        <Ww>
+          <count>40</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.IbusFlt,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>41</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.IbusLpf,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>42</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFocCtrl.FANONOFF</ItemText>
+        </Ww>
+        <Ww>
+          <count>43</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.VoltNegFed,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>44</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.VoltPosiFed,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>45</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mcFan.ADCFedLpf,0x0A</ItemText>
+        </Ww>
+        <Ww>
+          <count>46</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>Restart.LRS_DelayTcnt,0x0A</ItemText>
+        </Ww>
+      </WatchWindow1>
+      <MemoryWindow1>
+        <Mm>
+          <WinNumber>1</WinNumber>
+          <SubType>0</SubType>
+          <ItemText>Uart.F4TempCompensation</ItemText>
+          <AccSizeX>0</AccSizeX>
+        </Mm>
+      </MemoryWindow1>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>0</aLwin>
+        <aCover>0</aCover>
+        <aSer1>1</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>Application</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>5</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\include\Customer.h</PathWithFileName>
+      <FilenameWithoutPath>Customer.h</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Application\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Application\AddFunction.c</PathWithFileName>
+      <FilenameWithoutPath>AddFunction.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Application\Interrupt.c</PathWithFileName>
+      <FilenameWithoutPath>Interrupt.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>5</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\include\Parameter.h</PathWithFileName>
+      <FilenameWithoutPath>Parameter.h</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>5</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\include\Protect.h</PathWithFileName>
+      <FilenameWithoutPath>Protect.h</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>Function</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Function\MotorControl.c</PathWithFileName>
+      <FilenameWithoutPath>MotorControl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Function\MotorControlFunction.c</PathWithFileName>
+      <FilenameWithoutPath>MotorControlFunction.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Function\MotorProtect.c</PathWithFileName>
+      <FilenameWithoutPath>MotorProtect.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>HardWare</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\ADC.c</PathWithFileName>
+      <FilenameWithoutPath>ADC.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\AMP.c</PathWithFileName>
+      <FilenameWithoutPath>AMP.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\CMP.c</PathWithFileName>
+      <FilenameWithoutPath>CMP.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\CRC.c</PathWithFileName>
+      <FilenameWithoutPath>CRC.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\DRIVER.c</PathWithFileName>
+      <FilenameWithoutPath>DRIVER.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\GPIO.c</PathWithFileName>
+      <FilenameWithoutPath>GPIO.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\TIMER.c</PathWithFileName>
+      <FilenameWithoutPath>TIMER.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\UART.c</PathWithFileName>
+      <FilenameWithoutPath>UART.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\TSD.c</PathWithFileName>
+      <FilenameWithoutPath>TSD.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Hardware\SMDU.c</PathWithFileName>
+      <FilenameWithoutPath>SMDU.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>System</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\System\STARTUP_FU6805.A51</PathWithFileName>
+      <FilenameWithoutPath>STARTUP_FU6805.A51</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>

+ 500 - 0
KeilC51/Fortior.uvproj

@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+  <SchemaVersion>1.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>Fortior</TargetName>
+      <ToolsetNumber>0x0</ToolsetNumber>
+      <ToolsetName>MCS-51</ToolsetName>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>FU6522</Device>
+          <Vendor>Fortior Tech</Vendor>
+          <Cpu>IRAM(0-0xFF) CLOCK(24000000)</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
+          <FlashDriverDll></FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>FU6522.H</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile></SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath>FU6522\</RegisterFilePath>
+          <DBRegisterFilePath>FU6522\</DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Output\</OutputDirectory>
+          <OutputName>Fortior_FOC_FU68x5</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>0</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+          <BankNo>65535</BankNo>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>S8051.DLL</SimDllName>
+          <SimDllArguments>-pFU6522</SimDllArguments>
+          <SimDlgDll>DCYG.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pFU6522</SimDlgDllArguments>
+          <TargetDllName>S8051.DLL</TargetDllName>
+          <TargetDllArguments>-pFU6522</TargetDllArguments>
+          <TargetDlgDll>TCYG.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pFU6522</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>0</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+          <Simulator>
+            <UseSimulator>0</UseSimulator>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>1</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>1</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+            <RestoreSysVw>1</RestoreSysVw>
+          </Simulator>
+          <Target>
+            <UseTarget>1</UseTarget>
+            <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+            <RunToMain>0</RunToMain>
+            <RestoreBreakpoints>1</RestoreBreakpoints>
+            <RestoreWatchpoints>1</RestoreWatchpoints>
+            <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+            <RestoreFunctions>0</RestoreFunctions>
+            <RestoreToolbox>1</RestoreToolbox>
+            <RestoreTracepoints>1</RestoreTracepoints>
+            <RestoreSysVw>1</RestoreSysVw>
+          </Target>
+          <RunDebugAfterBuild>0</RunDebugAfterBuild>
+          <TargetSelection>12</TargetSelection>
+          <SimDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+          </SimDlls>
+          <TargetDlls>
+            <CpuDll></CpuDll>
+            <CpuDllArguments></CpuDllArguments>
+            <PeripheralDll></PeripheralDll>
+            <PeripheralDllArguments></PeripheralDllArguments>
+            <InitializationFile></InitializationFile>
+            <Driver>BIN\Fice.dll</Driver>
+          </TargetDlls>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4104</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>BIN\Fice.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <Target51>
+          <Target51Misc>
+            <MemoryModel>2</MemoryModel>
+            <RTOS>0</RTOS>
+            <RomSize>2</RomSize>
+            <DataHold>0</DataHold>
+            <XDataHold>0</XDataHold>
+            <UseOnchipRom>0</UseOnchipRom>
+            <UseOnchipArithmetic>0</UseOnchipArithmetic>
+            <UseMultipleDPTR>0</UseMultipleDPTR>
+            <UseOnchipXram>0</UseOnchipXram>
+            <HadIRAM>1</HadIRAM>
+            <HadXRAM>0</HadXRAM>
+            <HadIROM>0</HadIROM>
+            <Moda2>0</Moda2>
+            <Moddp2>0</Moddp2>
+            <Modp2>0</Modp2>
+            <Mod517dp>0</Mod517dp>
+            <Mod517au>0</Mod517au>
+            <Mode2>0</Mode2>
+            <useCB>0</useCB>
+            <useXB>0</useXB>
+            <useL251>1</useL251>
+            <useA251>0</useA251>
+            <Mx51>0</Mx51>
+            <ModC812>0</ModC812>
+            <ModCont>0</ModCont>
+            <Lp51>0</Lp51>
+            <useXBS>0</useXBS>
+            <ModDA>0</ModDA>
+            <ModAB2>0</ModAB2>
+            <Mx51P>0</Mx51P>
+            <hadXRAM2>0</hadXRAM2>
+            <uocXram2>0</uocXram2>
+            <hadXRAM3>0</hadXRAM3>
+            <ModC2>0</ModC2>
+            <ModH2>0</ModH2>
+            <Mdu_R515>0</Mdu_R515>
+            <Mdu_F120>0</Mdu_F120>
+            <Psoc>0</Psoc>
+            <hadIROM2>0</hadIROM2>
+            <hadIROM3>0</hadIROM3>
+            <ModSmx2>0</ModSmx2>
+            <cBanks>0</cBanks>
+            <xBanks>0</xBanks>
+            <OnChipMemories>
+              <RCB>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0xffff</Size>
+              </RCB>
+              <RXB>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </RXB>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocr1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocr1>
+              <Ocr2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocr2>
+              <Ocr3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocr3>
+              <IRO>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </IRO>
+              <IRA>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x100</Size>
+              </IRA>
+              <XRA>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRA>
+              <XRA512>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRA512>
+              <IROM512>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </IROM512>
+              <XRA513>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRA513>
+              <IROM513>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </IROM513>
+            </OnChipMemories>
+          </Target51Misc>
+          <C51>
+            <RegisterColoring>0</RegisterColoring>
+            <VariablesInOrder>0</VariablesInOrder>
+            <IntegerPromotion>1</IntegerPromotion>
+            <uAregs>0</uAregs>
+            <UseInterruptVector>1</UseInterruptVector>
+            <Fuzzy>3</Fuzzy>
+            <Optimize>6</Optimize>
+            <WarningLevel>0</WarningLevel>
+            <SizeSpeed>1</SizeSpeed>
+            <ObjectExtend>1</ObjectExtend>
+            <ACallAJmp>0</ACallAJmp>
+            <InterruptVectorAddress>0</InterruptVectorAddress>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath>..\User\Include;..\System</IncludePath>
+            </VariousControls>
+          </C51>
+          <Ax51>
+            <UseMpl>0</UseMpl>
+            <UseStandard>1</UseStandard>
+            <UseCase>0</UseCase>
+            <UseMod51>0</UseMod51>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath>..\User\include;..\FU68xx_Haidware_Driver\Include</IncludePath>
+            </VariousControls>
+          </Ax51>
+          <Lx51>
+            <useFile>0</useFile>
+            <linkonly>0</linkonly>
+            <UseMemoryFromTarget>1</UseMemoryFromTarget>
+            <CaseSensitiveSymbols>0</CaseSensitiveSymbols>
+            <WarningLevel>2</WarningLevel>
+            <DataOverlaying>1</DataOverlaying>
+            <OverlayString></OverlayString>
+            <MiscControls>REMOVEUNUSED</MiscControls>
+            <DisableWarningNumbers></DisableWarningNumbers>
+            <LinkerCmdFile></LinkerCmdFile>
+            <Assign></Assign>
+            <ReserveString></ReserveString>
+            <CClasses></CClasses>
+            <UserClasses></UserClasses>
+            <CSection></CSection>
+            <UserSection></UserSection>
+            <CodeBaseAddress></CodeBaseAddress>
+            <XDataBaseAddress></XDataBaseAddress>
+            <PDataBaseAddress></PDataBaseAddress>
+            <BitBaseAddress></BitBaseAddress>
+            <DataBaseAddress></DataBaseAddress>
+            <IDataBaseAddress></IDataBaseAddress>
+            <Precede></Precede>
+            <Stack></Stack>
+            <CodeSegmentName></CodeSegmentName>
+            <XDataSegmentName></XDataSegmentName>
+            <BitSegmentName></BitSegmentName>
+            <DataSegmentName></DataSegmentName>
+            <IDataSegmentName></IDataSegmentName>
+          </Lx51>
+        </Target51>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>Application</GroupName>
+          <Files>
+            <File>
+              <FileName>Customer.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\User\include\Customer.h</FilePath>
+            </File>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Application\main.c</FilePath>
+            </File>
+            <File>
+              <FileName>AddFunction.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Application\AddFunction.c</FilePath>
+            </File>
+            <File>
+              <FileName>Interrupt.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Application\Interrupt.c</FilePath>
+            </File>
+            <File>
+              <FileName>Parameter.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\User\include\Parameter.h</FilePath>
+            </File>
+            <File>
+              <FileName>Protect.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\User\include\Protect.h</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>Function</GroupName>
+          <Files>
+            <File>
+              <FileName>MotorControl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Function\MotorControl.c</FilePath>
+            </File>
+            <File>
+              <FileName>MotorControlFunction.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Function\MotorControlFunction.c</FilePath>
+            </File>
+            <File>
+              <FileName>MotorProtect.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Function\MotorProtect.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>HardWare</GroupName>
+          <Files>
+            <File>
+              <FileName>ADC.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\ADC.c</FilePath>
+            </File>
+            <File>
+              <FileName>AMP.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\AMP.c</FilePath>
+            </File>
+            <File>
+              <FileName>CMP.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\CMP.c</FilePath>
+            </File>
+            <File>
+              <FileName>CRC.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\CRC.c</FilePath>
+            </File>
+            <File>
+              <FileName>DRIVER.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\DRIVER.c</FilePath>
+            </File>
+            <File>
+              <FileName>GPIO.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\GPIO.c</FilePath>
+            </File>
+            <File>
+              <FileName>TIMER.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\TIMER.c</FilePath>
+            </File>
+            <File>
+              <FileName>UART.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\UART.c</FilePath>
+            </File>
+            <File>
+              <FileName>TSD.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\TSD.c</FilePath>
+            </File>
+            <File>
+              <FileName>SMDU.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Hardware\SMDU.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>System</GroupName>
+          <Files>
+            <File>
+              <FileName>STARTUP_FU6805.A51</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\System\STARTUP_FU6805.A51</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+</Project>

+ 137 - 0
KeilC51/Ft68ProjCfg.ini

@@ -0,0 +1,137 @@
+[USBTOOL]
+DEV_NUM=16
+;Is enable log the downlaod message. 0 = Disable, 1 = Enable
+ENABLE_LOG=1
+;The default scrip file for download step.
+BOOT_SCRIPT=Fice.conf
+;The default scrip file for update step (Only use in update tool).
+UpdateConf=gpl162002update.conf
+;A download description string in update dialog (Only use in update tool).
+DownloadDescription=download description
+;Set Disk Type: 0 = No Disk, 1 = Disk
+DiskType=0
+;Set USBTable Type: 0 = Mass Production, 1 = Real Table
+TableType=1
+;Set Authorize Type: 0 = Standard, 1 = Easy
+AuthorizeType=1
+;Set time-out when execute IO task
+Timeout_Value=20
+;download data length each time
+DataLength=4KB|8KB|16KB|32KB|64KB|
+CodePackerPath=
+VID=GENPLUS
+PID=USB-MSDC_DISK_A
+ENBLE_SETTINGBTN=1
+
+[DeviceInitCommand]
+; A command that write to device when this device plugin.
+ID=
+
+[162002_MCS]
+MCS0=1F84
+MCS1=4
+MCS2=C5
+MCS3=4
+MCS4=4
+ENABLE=0
+
+[162004_MCS]
+MCS0=1F89
+MCS1=FF4F
+MCS2=C3
+MCS3=3F
+MCS4=3F
+ENABLE=1
+
+[ChipType]
+0=SLC Nand < 128MB(Physical, Small Page)
+1=SLC Nand = 128MB(Physical, Small Page)
+2=SLC Nand > 128MB(Physical, 2K Page)
+3=RAM
+4=SLC & MLC Data Area
+5=Nor Flash
+6=SPI Nor Flash
+0x80=MLC 2K Page(Physical)
+0x81=MLC 4K Page(Physical)
+0x82=SD Card
+0x83=MLC & SLC APP Area
+0x84=MLC 2k + 64byte(Physical)
+0x23=Nand OTP
+0x24=AutoWriteBootArea
+0x25=Register
+
+[ActionDescription]
+ACT_READ=Read
+ACT_WRITE=Write
+ACT_ERASE=Erase
+ACT_JUMP=Jump to Function
+ACT_INITNAND=Initial Nand Flash
+ACT_RESETDEVICE=Reset Device
+ACT_SETNONMOUNT=Set Non Mount
+ACT_SENDCOMMAND=Send Command
+ACT_LOWLEVELFORMAT=Low Level Format
+ACT_CHIPERASE=Chip Erase
+ACT_APPINIT=App Initial
+;ACT_COMPAREFILE=CompareFile
+;replan Send command 0xff40, 0xff29
+ACT_SETAPPVARIABLE=Set App Variable
+ACT_NANDFLASH=Write Nand Flush
+ACT_ERASEALLBLK=Erase All Block
+ACT_WRITESERIALNUMBER=Write Serial Number
+ACT_PROBE_FIRMWARE=ProbePath
+ACT_BACKUPSERIALNUMBER=Backup Serial Number
+ACT_DELAYCOMMAND=DelayStep
+ACT_WRITEROMCODE=Write To RomCode
+
+[NorFlashType]
+;Format : Device type = Block size
+;The below is manufactory Macronix
+MX29LV160T=35
+MX29LV160B=35
+MX29LV800T=11
+MX29LV800B=11
+MX29LV320T=71
+MX29LV320B=71
+;The below is manufactory SST
+SST39VF1601=32
+SST39VF3201=64
+SST39VF6401=128
+
+[FT68xxUIOpt]
+LOCK_ENABLE=1
+LOCK_BYTE=0
+LOCK_FULL=1
+LOCK_START_SEC=0
+LOCK_END_SEC=2
+;LVD Setting
+LVD_EN=0
+LVW_EN=0
+LVR_SEL=3
+LVW_SEL=0
+;clock setting
+FCK_MODE=0
+EC_MODE=0
+XT_GF_CFG=3
+XT_CUR_CFG=0
+SPEED2=1
+MCD_EN=1
+;watch-dog setting
+WDT_EN=0
+WDT_RST_EN=0
+WDT_BT_EN=0
+PRE_CHIP=0
+
+[NorFlashManufacturer]
+SST=1
+AMD/MX=2
+Intel=3
+
+[UserSelfDefineInfo]
+;icon name
+Icon_Name=usbtool.ico
+;company name
+Company_Name=G+ Mass Production Tool(Patch1)
+
+[ReadbackVerify_Status]
+Continue=0
+

+ 4247 - 0
KeilC51/Listings/Fortior_FOC_FU68x5.map

@@ -0,0 +1,4247 @@
+LX51 LINKER/LOCATER V4.66.100.0                                                         12/29/2025  08:49:06  PAGE 1
+
+
+LX51 LINKER/LOCATER V4.66.100.0, INVOKED BY:
+C:\PROGRAM FILES\KEIL\C51\BIN\LX51.EXE .\Output\main.obj, .\Output\AddFunction.obj, .\Output\Interrupt.obj, .\Output\Mot
+>> orControl.obj, .\Output\MotorControlFunction.obj, .\Output\MotorProtect.obj, .\Output\ADC.obj, .\Output\AMP.obj, .\Ou
+>> tput\CMP.obj, .\Output\CRC.obj, .\Output\DRIVER.obj, .\Output\GPIO.obj, .\Output\TIMER.obj, .\Output\UART.obj, .\Outp
+>> ut\TSD.obj, .\Output\SMDU.obj, .\Output\STARTUP_FU6805.obj TO .\Output\Fortior_FOC_FU68x5 PRINT (.\Listings\Fortior_F
+>> OC_FU68x5.map) REMOVEUNUSED
+
+
+CPU MODE:     8051 MODE
+MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC
+
+
+INPUT MODULES INCLUDED:
+  .\Output\main.obj (MAIN)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\AddFunction.obj (ADDFUNCTION)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\Interrupt.obj (INTERRUPT)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\MotorControl.obj (MOTORCONTROL)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\MotorControlFunction.obj (MOTORCONTROLFUNCTION)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\MotorProtect.obj (MOTORPROTECT)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\ADC.obj (ADC)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\AMP.obj (AMP)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\CMP.obj (CMP)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\CRC.obj (CRC)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\DRIVER.obj (DRIVER)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\GPIO.obj (GPIO)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\TIMER.obj (TIMER)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\UART.obj (UART)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\TSD.obj (TSD)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\SMDU.obj (SMDU)
+         COMMENT TYPE 0: C51 V9.60.7.0
+  .\Output\STARTUP_FU6805.obj (?C_STARTUP)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FPADD)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FPMUL)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FPDIV)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FPCMP)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FCAST)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?CASTF)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51FPL.LIB (?C?FPGETOPN)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C_INIT)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?LNEG)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?SLCMP)
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 2
+
+
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?SLSHR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?LSTXDATA)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?LSTKXDATA)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\PROGRAM FILES\KEIL\C51\LIB\C51L.LIB (?C?MEMSET)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+
+
+ACTIVE MEMORY CLASSES OF MODULE:  .\Output\Fortior_FOC_FU68x5 (MAIN)
+
+BASE        START       END         USED      MEMORY CLASS
+==========================================================
+C:000000H   C:000000H   C:00FFFFH   00144BH   CODE
+X:000000H   X:000000H   X:00FFFFH   000064H   XDATA
+I:000000H   I:000000H   I:00007FH   00000BH   DATA
+I:000020H.0 I:000020H.0 I:00002FH.7 000000H.1 BIT
+I:000000H   I:000000H   I:0000FFH   000003H   IDATA
+
+
+MEMORY MAP OF MODULE:  .\Output\Fortior_FOC_FU68x5 (MAIN)
+
+
+START     STOP      LENGTH    ALIGN  RELOC    MEMORY CLASS   SEGMENT NAME
+=========================================================================
+
+* * * * * * * * * * *   D A T A   M E M O R Y   * * * * * * * * * * * * *
+000000H   000007H   000008H   ---    AT..     DATA           "REG BANK 0"
+000008H   000008H   000001H   BYTE   UNIT     DATA           ?DT?MAIN
+000009H   000009H   000001H   BYTE   UNIT     DATA           ?DT?MOTORCONTROL
+00000AH   00000AH   000001H   BYTE   UNIT     DATA           ?DT?MOTORPROTECT
+00000BH   00000CH   000002H   BYTE   UNIT     IDATA          ?ID?INTERRUPT
+00000DH.0 00001FH.7 000013H.0 ---    ---      **GAP**
+000020H.0 000020H.0 000000H.1 BIT    UNIT     BIT            ?BI?ADDFUNCTION
+000020H.1 000020H   000000H.7 ---    ---      **GAP**
+000021H   000021H   000001H   BYTE   UNIT     IDATA          ?STACK
+
+* * * * * * * * * * *   C O D E   M E M O R Y   * * * * * * * * * * * * *
+000000H   000002H   000003H   ---    OFFS..   CODE           ?CO??C_STARTUP?0
+000003H   000005H   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?00003
+000006H   000009H   000004H   BYTE   UNIT     CODE           ?PR?GPIO_INIT?GPIO
+00000AH   00000AH   000001H   BYTE   UNIT     CODE           ?PR?UART2_INT?INTERRUPT
+00000BH   00000DH   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?0000B
+00000EH   00001AH   00000DH   BYTE   UNIT     CODE           ?PR?TARGETREF_PROCESS?ADDFUNCTION
+00001BH   00001DH   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?0001B
+00001EH   000045H   000028H   BYTE   UNIT     CODE           ?PR?FAULT_GETCURRENTOFFSET?MOTORPROTECT
+000046H   00004AH   000005H   ---    ---      **GAP**
+00004BH   00004DH   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?0004B
+00004EH   000052H   000005H   ---    ---      **GAP**
+000053H   000055H   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?00053
+000056H   000060H   00000BH   BYTE   UNIT     CODE           ?C_INITSEG
+000061H   000062H   000002H   ---    ---      **GAP**
+000063H   000065H   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?00063
+000066H   00006BH   000006H   BYTE   UNIT     CODE           ?PR?EXTERN0_INT?INTERRUPT
+00006CH   000072H   000007H   ---    ---      **GAP**
+000073H   000075H   000003H   BYTE   OFFS..   CODE           ?INTERRUPT?00073
+000076H   0004ECH   000477H   BYTE   UNIT     CODE           ?C?LIB_CODE
+0004EDH   000712H   000226H   BYTE   UNIT     CODE           ?PR?MC_CONTROL?MOTORCONTROL
+000713H   000887H   000175H   BYTE   UNIT     CODE           ?PR?_MOTOR_RAMP?ADDFUNCTION
+000888H   0009BEH   000137H   BYTE   UNIT     CODE           ?PR?GETCURRENTOFFSET?MOTORCONTROLFUNCTION
+0009BFH   000ADCH   00011EH   BYTE   UNIT     CODE           ?PR?FOC_INIT?MOTORCONTROLFUNCTION
+000ADDH   000BF4H   000118H   BYTE   UNIT     CODE           ?PR?MAIN?MAIN
+000BF5H   000CE2H   0000EEH   BYTE   UNIT     CODE           ?PR?SPEED_RESPONSE?ADDFUNCTION
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 3
+
+
+000CE3H   000DC6H   0000E4H   BYTE   UNIT     CODE           ?PR?MOTOR_CHARGE?MOTORCONTROLFUNCTION
+000DC7H   000E60H   00009AH   BYTE   UNIT     CODE           ?C_C51STARTUP
+000E61H   000EE1H   000081H   BYTE   UNIT     CODE           ?PR?MOTOR_STATIC_OPEN?MOTORCONTROLFUNCTION
+000EE2H   000F61H   000080H   BYTE   UNIT     CODE           ?PR?ATORAMP?ADDFUNCTION
+000F62H   000FDDH   00007CH   BYTE   UNIT     CODE           ?PR?ADC_INIT?ADC
+000FDEH   00104CH   00006FH   BYTE   UNIT     CODE           ?PR?MOTOR_ALIGN?MOTORCONTROLFUNCTION
+00104DH   0010B4H   000068H   BYTE   UNIT     CODE           ?PR?DRIVER_INIT?DRIVER
+0010B5H   001100H   00004CH   BYTE   UNIT     CODE           ?PR?TIMER3_INIT?TIMER
+001101H   001148H   000048H   BYTE   UNIT     CODE           ?PR?MOTOR_INIT?MOTORCONTROLFUNCTION
+001149H   001186H   00003EH   BYTE   UNIT     CODE           ?PR?HW_ZERO_PI_INIT?SMDU
+001187H   0011C2H   00003CH   BYTE   UNIT     CODE           ?PR?SYSTICK_INT?INTERRUPT
+0011C3H   0011FCH   00003AH   BYTE   UNIT     CODE           ?PR?SOFTWAREINIT?MAIN
+0011FDH   001236H   00003AH   BYTE   UNIT     CODE           ?PR?MOTOR_READY?MOTORCONTROLFUNCTION
+001237H   00126EH   000038H   BYTE   UNIT     CODE           ?PR?_LPF_ZERO_UPDATE?SMDU
+00126FH   0012A2H   000034H   BYTE   UNIT     CODE           ?PR?CMP3_INIT?CMP
+0012A3H   0012D3H   000031H   BYTE   UNIT     CODE           ?PR?AMP_INIT?AMP
+0012D4H   001301H   00002EH   BYTE   UNIT     CODE           ?PR?HW_ONE_PI_INIT?SMDU
+001302H   00132FH   00002EH   BYTE   UNIT     CODE           ?PR?HW_TWO_PI_INIT?SMDU
+001330H   00135DH   00002EH   BYTE   UNIT     CODE           ?PR?HW_THREE_PI_INIT?SMDU
+00135EH   001384H   000027H   BYTE   UNIT     CODE           ?PR?VREFCONFIGINIT?MAIN
+001385H   0013A9H   000025H   BYTE   UNIT     CODE           ?PR?HARDWAREINIT?MAIN
+0013AAH   0013CEH   000025H   BYTE   UNIT     CODE           ?PR?LVW_TSD_INT?INTERRUPT
+0013CFH   0013EBH   00001DH   BYTE   UNIT     CODE           ?PR?TIM3_INT?INTERRUPT
+0013ECH   001407H   00001CH   BYTE   UNIT     CODE           ?PR?_ABS_F16?ADDFUNCTION
+001408H   001420H   000019H   BYTE   UNIT     CODE           ?PR?_HW_ZERO_CALC?SMDU
+001421H   001437H   000017H   BYTE   UNIT     CODE           ?PR?DRV_ISR?INTERRUPT
+001438H   00144DH   000016H   BYTE   UNIT     CODE           ?PR?CMP3_INT?INTERRUPT
+00144EH   00145DH   000010H   BYTE   UNIT     CODE           ?PR?CMP3_INTERRUPT_INIT?CMP
+
+* * * * * * * * * * *  X D A T A   M E M O R Y  * * * * * * * * * * * * *
+000000H   000041H   000042H   BYTE   UNIT     XDATA          ?XD?ADDFUNCTION
+000042H   00005CH   00001BH   BYTE   UNIT     XDATA          ?XD?MOTORCONTROLFUNCTION
+00005DH   000062H   000006H   BYTE   UNIT     XDATA          _XDATA_GROUP_
+000063H   000063H   000001H   BYTE   UNIT     XDATA          ?XD?MOTORCONTROL
+
+* * * * * * * * *   R E M O V E D     S E G M E N T S   * * * * * * * *
+   *DEL*:           000041H   BYTE   UNIT     CODE           ?PR?_ABS_F32?ADDFUNCTION
+   *DEL*:           000004H   BYTE   UNIT     XDATA          ?XD?_ABS_F32?ADDFUNCTION
+   *DEL*:           000001H   BYTE   UNIT     CODE           ?PR?TICKCYCLE_1MS?ADDFUNCTION
+   *DEL*:           00002CH   BYTE   UNIT     CODE           ?PR?MC_BREAK?MOTORCONTROLFUNCTION
+   *DEL*:           000001H   BYTE   UNIT     CODE           ?PR?MOTORCONTROLINIT?MOTORCONTROLFUNCTION
+   *DEL*:           00004AH   BYTE   UNIT     CODE           ?PR?_CRC_CHECK?CRC
+   *DEL*:           000002H   BYTE   UNIT     XDATA          ?XD?_CRC_CHECK?CRC
+   *DEL*:           00002AH   BYTE   UNIT     CODE           ?PR?GPIO_DEFAULT_INIT?GPIO
+   *DEL*:           000040H   BYTE   UNIT     CODE           ?PR?TIMER2_INIT?TIMER
+   *DEL*:           00004EH   BYTE   UNIT     CODE           ?PR?TIMER4_INIT?TIMER
+   *DEL*:           00001FH   BYTE   UNIT     CODE           ?PR?UART1_INIT?UART
+   *DEL*:           000013H   BYTE   UNIT     CODE           ?PR?TSD_INIT?TSD
+   *DEL*:           000019H   BYTE   UNIT     CODE           ?PR?_HW_ONE_CALC?SMDU
+   *DEL*:           000019H   BYTE   UNIT     CODE           ?PR?_HW_TWO_CALC?SMDU
+   *DEL*:           000019H   BYTE   UNIT     CODE           ?PR?_HW_THREE_CALC?SMDU
+   *DEL*:           000038H   BYTE   UNIT     CODE           ?PR?_LPF_ONE_UPDATE?SMDU
+   *DEL*:           000002H   BYTE   UNIT     XDATA          ?XD?_LPF_ONE_UPDATE?SMDU
+   *DEL*:           000038H   BYTE   UNIT     CODE           ?PR?_LPF_TWO_UPDATE?SMDU
+   *DEL*:           000002H   BYTE   UNIT     XDATA          ?XD?_LPF_TWO_UPDATE?SMDU
+   *DEL*:           000038H   BYTE   UNIT     CODE           ?PR?_LPF_THREE_UPDATE?SMDU
+   *DEL*:           000002H   BYTE   UNIT     XDATA          ?XD?_LPF_THREE_UPDATE?SMDU
+   *DEL*:           000026H   BYTE   UNIT     CODE           ?PR?_ATAN_US_MDU?SMDU
+   *DEL*:           000029H   BYTE   UNIT     CODE           ?PR?_DIVQ_L_MDU?SMDU
+   *DEL*:           000029H   BYTE   UNIT     CODE           ?PR?_DIVQ_L_MDU2?SMDU
+   *DEL*:           000021H   BYTE   UNIT     CODE           ?PR?_SQRT_ALPBET?SMDU
+   *DEL*:           000021H   BYTE   UNIT     CODE           ?PR?_MULU_H_MDU?SMDU
+   *DEL*:           00003FH   BYTE   UNIT     CODE           ?PR?_MULS_H_MDU?SMDU
+
+
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 4
+
+
+
+OVERLAY MAP OF MODULE:   .\Output\Fortior_FOC_FU68x5 (MAIN)
+
+
+FUNCTION/MODULE                             XDATA_GROUP
+--> CALLED FUNCTION/MODULE                  START  STOP
+=======================================================
+LVW_TSD_INT/INTERRUPT                       ----- -----
+
+*** NEW ROOT ******************************
+
+EXTERN0_INT/INTERRUPT                       ----- -----
+
+*** NEW ROOT ******************************
+
+DRV_ISR/INTERRUPT                           ----- -----
+
+*** NEW ROOT ******************************
+
+TIM3_INT/INTERRUPT                          ----- -----
+
+*** NEW ROOT ******************************
+
+SYSTICK_INT/INTERRUPT                       ----- -----
+
+*** NEW ROOT ******************************
+
+CMP3_INT/INTERRUPT                          ----- -----
+
+*** NEW ROOT ******************************
+
+UART2_INT/INTERRUPT                         ----- -----
+
+*** NEW ROOT ******************************
+
+?C_C51STARTUP                               ----- -----
+  +--> MAIN/MAIN
+  +--> ?C_INITSEG
+
+MAIN/MAIN                                   005DH 005EH
+  +--> SOFTWAREINIT/MAIN
+  +--> HARDWAREINIT/MAIN
+  +--> GETCURRENTOFFSET/MOTORCONTROLFUNCTION
+  +--> MC_CONTROL/MOTORCONTROL
+  +--> _LPF_ZERO_UPDATE/SMDU
+  +--> _ABS_F16/ADDFUNCTION
+  +--> TARGETREF_PROCESS/ADDFUNCTION
+  +--> SPEED_RESPONSE/ADDFUNCTION
+  +--> ATORAMP/ADDFUNCTION
+
+SOFTWAREINIT/MAIN                           ----- -----
+
+HARDWAREINIT/MAIN                           ----- -----
+  +--> VREFCONFIGINIT/MAIN
+  +--> CMP3_INIT/CMP
+  +--> GPIO_INIT/GPIO
+  +--> ADC_INIT/ADC
+  +--> DRIVER_INIT/DRIVER
+  +--> AMP_INIT/AMP
+  +--> TIMER3_INIT/TIMER
+  +--> CMP3_INTERRUPT_INIT/CMP
+
+VREFCONFIGINIT/MAIN                         ----- -----
+
+CMP3_INIT/CMP                               ----- -----
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 5
+
+
+
+GPIO_INIT/GPIO                              ----- -----
+
+ADC_INIT/ADC                                ----- -----
+
+DRIVER_INIT/DRIVER                          ----- -----
+
+AMP_INIT/AMP                                ----- -----
+
+TIMER3_INIT/TIMER                           ----- -----
+
+CMP3_INTERRUPT_INIT/CMP                     ----- -----
+
+GETCURRENTOFFSET/MOTORCONTROLFUNCTION       ----- -----
+  +--> FAULT_GETCURRENTOFFSET/MOTORPROTECT
+
+FAULT_GETCURRENTOFFSET/MOTORPROTECT         ----- -----
+
+MC_CONTROL/MOTORCONTROL                     ----- -----
+  +--> MOTOR_READY/MOTORCONTROLFUNCTION
+  +--> MOTOR_INIT/MOTORCONTROLFUNCTION
+  +--> MOTOR_CHARGE/MOTORCONTROLFUNCTION
+  +--> MOTOR_ALIGN/MOTORCONTROLFUNCTION
+  +--> MOTOR_STATIC_OPEN/MOTORCONTROLFUNCTION
+
+MOTOR_READY/MOTORCONTROLFUNCTION            ----- -----
+
+MOTOR_INIT/MOTORCONTROLFUNCTION             ----- -----
+  +--> HW_ZERO_PI_INIT/SMDU
+  +--> HW_ONE_PI_INIT/SMDU
+  +--> HW_TWO_PI_INIT/SMDU
+  +--> HW_THREE_PI_INIT/SMDU
+
+HW_ZERO_PI_INIT/SMDU                        ----- -----
+
+HW_ONE_PI_INIT/SMDU                         ----- -----
+
+HW_TWO_PI_INIT/SMDU                         ----- -----
+
+HW_THREE_PI_INIT/SMDU                       ----- -----
+
+MOTOR_CHARGE/MOTORCONTROLFUNCTION           ----- -----
+
+MOTOR_ALIGN/MOTORCONTROLFUNCTION            ----- -----
+  +--> FOC_INIT/MOTORCONTROLFUNCTION
+
+FOC_INIT/MOTORCONTROLFUNCTION               ----- -----
+
+MOTOR_STATIC_OPEN/MOTORCONTROLFUNCTION      ----- -----
+  +--> FOC_INIT/MOTORCONTROLFUNCTION
+
+_LPF_ZERO_UPDATE/SMDU                       005FH 0060H
+
+_ABS_F16/ADDFUNCTION                        ----- -----
+
+TARGETREF_PROCESS/ADDFUNCTION               ----- -----
+
+SPEED_RESPONSE/ADDFUNCTION                  005FH 0062H
+  +--> _MOTOR_RAMP/ADDFUNCTION
+  +--> _HW_ZERO_CALC/SMDU
+
+_MOTOR_RAMP/ADDFUNCTION                     ----- -----
+
+_HW_ZERO_CALC/SMDU                          ----- -----
+
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 6
+
+
+ATORAMP/ADDFUNCTION                         ----- -----
+
+?C_INITSEG                                  ----- -----
+
+
+
+PUBLIC SYMBOLS OF MODULE:  .\Output\Fortior_FOC_FU68x5 (MAIN)
+
+
+      VALUE       CLASS    TYPE      PUBLIC SYMBOL NAME
+      =================================================
+      010003CBH   CODE     ---       ?C?CASTF
+      00000000H   NUMBER   ---       ?C?CODESEG
+      01000397H   CODE     ---       ?C?FCASTC
+      01000392H   CODE     ---       ?C?FCASTI
+      0100038DH   CODE     ---       ?C?FCASTL
+      0100007DH   CODE     ---       ?C?FPADD
+      01000316H   CODE     ---       ?C?FPCMP
+      01000314H   CODE     ---       ?C?FPCMP3
+      01000277H   CODE     ---       ?C?FPDIV
+      01000402H   CODE     ---       ?C?FPGETOPN2
+      0100016EH   CODE     ---       ?C?FPMUL
+      01000437H   CODE     ---       ?C?FPNANRESULT
+      01000441H   CODE     ---       ?C?FPOVERFLOW
+      01000419H   CODE     ---       ?C?FPRESULT
+      0100042DH   CODE     ---       ?C?FPRESULT2
+      01000079H   CODE     ---       ?C?FPSUB
+      0100043EH   CODE     ---       ?C?FPUNDERFLOW
+      0100044CH   CODE     ---       ?C?LNEG
+      01000490H   CODE     ---       ?C?LSTKXDATA
+      01000484H   CODE     ---       ?C?LSTXDATA
+      010004C1H   CODE     ---       ?C?MEMSET
+      0100045AH   CODE     ---       ?C?SLCMP
+      01000470H   CODE     ---       ?C?SLSHR
+      00000000H   NUMBER   ---       ?C?XDATASEG
+      01000E1CH   CODE     ---       ?C_START
+      01000000H   CODE     ---       ?C_STARTUP
+      010013ECH   CODE     ---       _Abs_F16
+*DEL*:00000000H   CODE     ---       _Abs_F32
+*DEL*:00000000H   CODE     ---       _Atan_Us_MDU
+*DEL*:00000000H   CODE     ---       _CRC_Check
+*DEL*:00000000H   CODE     ---       _DivQ_L_MDU
+*DEL*:00000000H   CODE     ---       _DivQ_L_MDU2
+*DEL*:00000000H   CODE     ---       _HW_One_Calc
+*DEL*:00000000H   CODE     ---       _HW_Three_Calc
+*DEL*:00000000H   CODE     ---       _HW_Two_Calc
+      01001408H   CODE     ---       _HW_Zero_Calc
+*DEL*:00000000H   CODE     ---       _LPF_One_Update
+*DEL*:00000000H   CODE     ---       _LPF_Three_Update
+*DEL*:00000000H   CODE     ---       _LPF_Two_Update
+      01001237H   CODE     ---       _LPF_Zero_Update
+      01000713H   CODE     ---       _Motor_Ramp
+*DEL*:00000000H   CODE     ---       _MULS_H_MDU
+*DEL*:00000000H   CODE     ---       _MULU_H_MDU
+*DEL*:00000000H   CODE     ---       _Sqrt_alpbet
+*SFR* 000000D0H.6 DATA     BIT       AC
+*SFR* 000000E0H   DATA     BYTE      ACC
+      01000F62H   CODE     ---       ADC_Init
+      010012A3H   CODE     ---       AMP_Init
+      01000EE2H   CODE     ---       ATORamp
+      0100126FH   CODE     ---       CMP3_Init
+      01001438H   CODE     ---       CMP3_INT
+      0100144EH   CODE     ---       CMP3_Interrupt_Init
+*SFR* 000000D5H   DATA     BYTE      CMP_CR0
+*SFR* 000000D6H   DATA     BYTE      CMP_CR1
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 7
+
+
+*SFR* 000000DAH   DATA     BYTE      CMP_CR2
+*SFR* 000000DCH   DATA     BYTE      CMP_CR3
+*SFR* 000000E1H   DATA     BYTE      CMP_CR4
+*SFR* 000000D7H   DATA     BYTE      CMP_SR
+*SFR* 000000D0H.7 DATA     BIT       CY
+*SFR* 00000082H   DATA     WORD      DPTR
+      0100104DH   CODE     ---       Driver_Init
+      01001421H   CODE     ---       DRV_ISR
+*SFR* 000000F8H   DATA     BYTE      DRV_OUT
+*SFR* 000000A8H.7 DATA     BIT       EA
+*SFR* 000000A8H.4 DATA     BIT       ES0
+*SFR* 000000D9H   DATA     BYTE      EVT_FILT
+*SFR* 000000A8H.0 DATA     BIT       EX0
+*SFR* 000000A8H.2 DATA     BIT       EX1
+      01000066H   CODE     ---       EXTERN0_INT
+*SFR* 000000D0H.5 DATA     BIT       F0
+*SFR* 000000D0H.1 DATA     BIT       F1
+      0100001EH   CODE     ---       Fault_GetCurrentOffset
+*SFR* 00000085H   DATA     BYTE      FLA_CR
+*SFR* 00000084H   DATA     BYTE      FLA_KEY
+      010009BFH   CODE     ---       FOC_Init
+      00000008H   DATA     BYTE      g_1mTick
+      01000888H   CODE     ---       GetCurrentOffset
+*SFR* 00000080H.0 DATA     BIT       GP00
+*SFR* 00000080H.1 DATA     BIT       GP01
+*SFR* 00000080H.2 DATA     BIT       GP02
+*SFR* 00000080H.3 DATA     BIT       GP03
+*SFR* 00000080H.4 DATA     BIT       GP04
+*SFR* 00000080H.5 DATA     BIT       GP05
+*SFR* 00000080H.6 DATA     BIT       GP06
+*SFR* 00000080H.7 DATA     BIT       GP07
+*SFR* 00000090H.0 DATA     BIT       GP10
+*SFR* 00000090H.1 DATA     BIT       GP11
+*SFR* 00000090H.2 DATA     BIT       GP12
+*SFR* 00000090H.3 DATA     BIT       GP13
+*SFR* 00000090H.4 DATA     BIT       GP14
+*SFR* 00000090H.5 DATA     BIT       GP15
+*SFR* 00000090H.6 DATA     BIT       GP16
+*SFR* 00000090H.7 DATA     BIT       GP17
+*SFR* 000000A0H.0 DATA     BIT       GP20
+*SFR* 000000A0H.1 DATA     BIT       GP21
+*SFR* 000000A0H.2 DATA     BIT       GP22
+*SFR* 000000A0H.3 DATA     BIT       GP23
+*SFR* 000000A0H.4 DATA     BIT       GP24
+*SFR* 000000A0H.5 DATA     BIT       GP25
+*SFR* 000000A0H.6 DATA     BIT       GP26
+*SFR* 000000A0H.7 DATA     BIT       GP27
+*SFR* 000000B0H.0 DATA     BIT       GP30
+*SFR* 000000B0H.1 DATA     BIT       GP31
+*SFR* 000000B0H.2 DATA     BIT       GP32
+*SFR* 000000B0H.3 DATA     BIT       GP33
+*SFR* 000000B0H.4 DATA     BIT       GP34
+*SFR* 000000B0H.5 DATA     BIT       GP35
+*SFR* 000000B0H.6 DATA     BIT       GP36
+*SFR* 000000B0H.7 DATA     BIT       GP37
+*SFR* 000000B8H.0 DATA     BIT       GP40
+*SFR* 000000B8H.1 DATA     BIT       GP41
+*SFR* 000000B8H.2 DATA     BIT       GP42
+*SFR* 000000B8H.3 DATA     BIT       GP43
+*SFR* 000000B8H.4 DATA     BIT       GP44
+*SFR* 000000B8H.5 DATA     BIT       GP45
+*SFR* 000000B8H.6 DATA     BIT       GP46
+*SFR* 000000B8H.7 DATA     BIT       GP47
+*SFR* 000000C0H.0 DATA     BIT       GP50
+*SFR* 000000C0H.1 DATA     BIT       GP51
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 8
+
+
+*SFR* 000000C0H.2 DATA     BIT       GP52
+*SFR* 000000C0H.3 DATA     BIT       GP53
+*DEL*:00000000H   CODE     ---       GPIO_Default_Init
+      01000006H   CODE     ---       GPIO_Init
+*SFR* 000000E2H   DATA     BYTE      HALL_CR
+      01001385H   CODE     ---       HardwareInit
+      010012D4H   CODE     ---       HW_One_PI_Init
+      01001330H   CODE     ---       HW_Three_PI_Init
+      01001302H   CODE     ---       HW_Two_PI_Init
+      01001149H   CODE     ---       HW_Zero_PI_Init
+*SFR* 000000A8H   DATA     BYTE      IE
+*SFR* 00000088H.2 DATA     BIT       IF0
+*SFR* 0000008AH   DATA     BYTE      IP0
+*SFR* 0000008BH   DATA     BYTE      IP1
+*SFR* 0000008CH   DATA     BYTE      IP2
+*SFR* 0000008DH   DATA     BYTE      IP3
+      00000020H.0 BIT      BIT       isCtrlPowOn
+*SFR* 00000088H.0 DATA     BIT       IT00
+*SFR* 00000088H.1 DATA     BIT       IT01
+*SFR* 00000088H.3 DATA     BIT       IT10
+*SFR* 00000088H.4 DATA     BIT       IT11
+*SFR* 000000DBH   DATA     BYTE      LVSR
+      010013AAH   CODE     ---       LVW_TSD_INT
+      01000ADDH   CODE     ---       main
+*DEL*:00000000H   CODE     ---       MC_Break
+      010004EDH   CODE     ---       MC_Control
+      02000042H   XDATA    ---       mcCurOffset
+      0000000AH   DATA     BYTE      mcFaultSource
+      0200000EH   XDATA    ---       mcFocCtrl
+      02000000H   XDATA    ---       mcRefRamp
+      02000063H   XDATA    ---       McStaSet
+      00000009H   DATA     BYTE      mcState
+*SFR* 000000C1H   DATA     BYTE      MDU_CR
+*SFR* 000000F8H.7 DATA     BIT       MOE
+      01000FDEH   CODE     ---       Motor_Align
+      01000CE3H   CODE     ---       Motor_Charge
+      01001101H   CODE     ---       Motor_Init
+      010011FDH   CODE     ---       Motor_Ready
+      01000E61H   CODE     ---       Motor_Static_Open
+*DEL*:00000000H   CODE     ---       MotorcontrolInit
+*SFR* 000000F8H.0 DATA     BIT       OISUH
+*SFR* 000000F8H.1 DATA     BIT       OISUL
+*SFR* 000000F8H.2 DATA     BIT       OISVH
+*SFR* 000000F8H.3 DATA     BIT       OISVL
+*SFR* 000000F8H.4 DATA     BIT       OISWH
+*SFR* 000000F8H.5 DATA     BIT       OISWL
+*SFR* 000000D0H.2 DATA     BIT       OV
+*SFR* 000000D0H.0 DATA     BIT       P
+*SFR* 00000080H   DATA     BYTE      P0
+*SFR* 000000FCH   DATA     BYTE      P0_OE
+*SFR* 00000090H   DATA     BYTE      P1
+*SFR* 000000D1H   DATA     BYTE      P1_IE
+*SFR* 000000D2H   DATA     BYTE      P1_IF
+*SFR* 000000FDH   DATA     BYTE      P1_OE
+*SFR* 000000A0H   DATA     BYTE      P2
+*SFR* 000000FEH   DATA     BYTE      P2_OE
+*SFR* 000000B0H   DATA     BYTE      P3
+*SFR* 000000FFH   DATA     BYTE      P3_OE
+*SFR* 000000B8H   DATA     BYTE      P4
+*SFR* 000000D3H   DATA     BYTE      P4_IE
+*SFR* 000000D4H   DATA     BYTE      P4_IF
+*SFR* 000000E9H   DATA     BYTE      P4_OE
+*SFR* 000000C0H   DATA     BYTE      P5
+*SFR* 000000FBH   DATA     BYTE      P5_OE
+*SFR* 00000087H   DATA     BYTE      PCON
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 9
+
+
+*SFR* 000000F9H   DATA     BYTE      PI_CR
+      0000000BH   IDATA    INT       Power_Currt
+*SFR* 000000D0H   DATA     BYTE      PSW
+*SFR* 00000098H.2 DATA     BIT       RB8
+      02000040H   XDATA    INT       refRampOut
+*SFR* 00000098H.4 DATA     BIT       REN
+*SFR* 00000098H.0 DATA     BIT       RI
+*SFR* 000000D0H.3 DATA     BIT       RS0
+*SFR* 000000D0H.4 DATA     BIT       RS1
+*SFR* 000000C9H   DATA     BYTE      RST_SR
+*SFR* 000000A8H.6 DATA     BIT       RTCIE
+*SFR* 00000098H.5 DATA     BIT       SM2
+      010011C3H   CODE     ---       SoftwareInit
+      01000BF5H   CODE     ---       Speed_response
+*SFR* 000000A8H.3 DATA     BIT       SPIIE
+      01001187H   CODE     ---       SYStick_INT
+      0100000EH   CODE     ---       TargetRef_Process
+*SFR* 00000098H.3 DATA     BIT       TB8
+*SFR* 00000088H   DATA     BYTE      TCON
+*SFR* 00000098H.1 DATA     BIT       TI
+*DEL*:00000000H   CODE     ---       TickCycle_1ms
+*SFR* 000000AEH   DATA     WORD      TIM2__ARR
+*SFR* 000000AAH   DATA     WORD      TIM2__CNTR
+*SFR* 000000ACH   DATA     WORD      TIM2__DR
+*SFR* 000000A1H   DATA     BYTE      TIM2_CR0
+*SFR* 000000A9H   DATA     BYTE      TIM2_CR1
+*SFR* 000000A6H   DATA     WORD      TIM3__ARR
+*SFR* 000000A2H   DATA     WORD      TIM3__CNTR
+*SFR* 000000A4H   DATA     WORD      TIM3__DR
+*SFR* 0000009CH   DATA     BYTE      TIM3_CR0
+*SFR* 0000009DH   DATA     BYTE      TIM3_CR1
+      010013CFH   CODE     ---       TIM3_INT
+*SFR* 00000096H   DATA     WORD      TIM4__ARR
+*SFR* 00000092H   DATA     WORD      TIM4__CNTR
+*SFR* 00000094H   DATA     WORD      TIM4__DR
+*SFR* 0000009EH   DATA     BYTE      TIM4_CR0
+*SFR* 0000009FH   DATA     BYTE      TIM4_CR1
+*DEL*:00000000H   CODE     ---       Timer2_Init
+      010010B5H   CODE     ---       Timer3_Init
+*DEL*:00000000H   CODE     ---       Timer4_Init
+*DEL*:00000000H   CODE     ---       TSD_Init
+*SFR* 000000A8H.1 DATA     BIT       TSDIE
+*SFR* 00000088H.5 DATA     BIT       TSDIF
+*DEL*:00000000H   CODE     ---       UART1_Init
+      0100000AH   CODE     ---       UART2_INT
+*SFR* 000000D8H   DATA     BYTE      UT2_CR
+*SFR* 00000089H   DATA     BYTE      UT2_DR
+*SFR* 000000D8H.6 DATA     BIT       UT2MOD0
+*SFR* 000000D8H.7 DATA     BIT       UT2MOD1
+*SFR* 000000D8H.2 DATA     BIT       UT2RB8
+*SFR* 000000D8H.4 DATA     BIT       UT2REN
+*SFR* 000000D8H.0 DATA     BIT       UT2RI
+*SFR* 000000D8H.5 DATA     BIT       UT2SM2
+*SFR* 000000D8H.3 DATA     BIT       UT2TB8
+*SFR* 000000D8H.1 DATA     BIT       UT2TI
+*SFR* 0000009AH   DATA     WORD      UT_BAUD
+*SFR* 00000098H   DATA     BYTE      UT_CR
+*SFR* 00000099H   DATA     BYTE      UT_DR
+*SFR* 00000098H.6 DATA     BIT       UT_MOD0
+*SFR* 00000098H.7 DATA     BIT       UT_MOD1
+      0100135EH   CODE     ---       VREFConfigInit
+
+
+
+SYMBOL TABLE OF MODULE:  .\Output\Fortior_FOC_FU68x5 (MAIN)
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 10
+
+
+
+      VALUE       REP       CLASS    TYPE      SYMBOL NAME
+      ====================================================
+      ---         MODULE    ---      ---       MAIN
+      00000008H   PUBLIC    DATA     BYTE      g_1mTick
+      01000ADDH   PUBLIC    CODE     ---       main
+      010011C3H   PUBLIC    CODE     ---       SoftwareInit
+      01001385H   PUBLIC    CODE     ---       HardwareInit
+      0100135EH   PUBLIC    CODE     ---       VREFConfigInit
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 11
+
+
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 12
+
+
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      0100135EH   BLOCK     CODE     ---       LVL=0
+      0100135EH   LINE      CODE     ---       #10
+      0100135EH   LINE      CODE     ---       #11
+      0100135EH   LINE      CODE     ---       #13
+      01001367H   LINE      CODE     ---       #15
+      0100136BH   LINE      CODE     ---       #17
+      01001372H   LINE      CODE     ---       #18
+      01001375H   LINE      CODE     ---       #21
+      01001379H   LINE      CODE     ---       #22
+      01001380H   LINE      CODE     ---       #24
+      01001384H   LINE      CODE     ---       #25
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001385H   BLOCK     CODE     ---       LVL=0
+      01001385H   LINE      CODE     ---       #31
+      01001385H   LINE      CODE     ---       #32
+      01001385H   LINE      CODE     ---       #33
+      01001388H   LINE      CODE     ---       #34
+      0100138BH   LINE      CODE     ---       #35
+      0100138EH   LINE      CODE     ---       #36
+      01001391H   LINE      CODE     ---       #37
+      01001394H   LINE      CODE     ---       #38
+      01001397H   LINE      CODE     ---       #39
+      0100139AH   LINE      CODE     ---       #41
+      0100139DH   LINE      CODE     ---       #43
+      010013A0H   LINE      CODE     ---       #44
+      010013A7H   LINE      CODE     ---       #45
+      010013A9H   LINE      CODE     ---       #46
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010011C3H   BLOCK     CODE     ---       LVL=0
+      010011C3H   LINE      CODE     ---       #54
+      010011C3H   LINE      CODE     ---       #55
+      010011C3H   LINE      CODE     ---       #56
+      010011D2H   LINE      CODE     ---       #58
+      010011D5H   LINE      CODE     ---       #60
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 13
+
+
+      010011D9H   LINE      CODE     ---       #61
+      010011E3H   LINE      CODE     ---       #62
+      010011EDH   LINE      CODE     ---       #63
+      010011F7H   LINE      CODE     ---       #64
+      010011FAH   LINE      CODE     ---       #65
+      010011FCH   LINE      CODE     ---       #66
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000ADDH   BLOCK     CODE     ---       LVL=0
+      01000ADDH   BLOCK     CODE     NEAR LAB  LVL=1
+      0200005DH   SYMBOL    XDATA    WORD      PowerUpCnt
+      ---         BLOCKEND  ---      ---       LVL=1
+      01000ADDH   LINE      CODE     ---       #70
+      01000ADDH   LINE      CODE     ---       #71
+      01000ADDH   LINE      CODE     ---       #72
+      01000AE4H   LINE      CODE     ---       #73
+      01000B11H   LINE      CODE     ---       #75
+      01000B14H   LINE      CODE     ---       #76
+      01000B17H   LINE      CODE     ---       #78
+      01000B17H   LINE      CODE     ---       #79
+      01000B17H   LINE      CODE     ---       #80
+      01000B1DH   LINE      CODE     ---       #81
+      01000B1DH   LINE      CODE     ---       #82
+      01000B20H   LINE      CODE     ---       #83
+      01000B22H   LINE      CODE     ---       #85
+      01000B22H   LINE      CODE     ---       #86
+      01000B25H   LINE      CODE     ---       #88
+      01000B29H   LINE      CODE     ---       #89
+      01000B29H   LINE      CODE     ---       #90
+      01000B33H   LINE      CODE     ---       #91
+      01000B33H   LINE      CODE     ---       #92
+      01000B52H   LINE      CODE     ---       #93
+      01000B54H   LINE      CODE     ---       #95
+      01000B54H   LINE      CODE     ---       #96
+      01000B5BH   LINE      CODE     ---       #97
+      01000B5BH   LINE      CODE     ---       #99
+      01000B62H   LINE      CODE     ---       #100
+      01000B6FH   LINE      CODE     ---       #101
+      01000B89H   LINE      CODE     ---       #102
+      01000BAFH   LINE      CODE     ---       #104
+      01000BB5H   LINE      CODE     ---       #105
+      01000BB5H   LINE      CODE     ---       #106
+      01000BD4H   LINE      CODE     ---       #107
+      01000BD6H   LINE      CODE     ---       #109
+      01000BD6H   LINE      CODE     ---       #110
+      01000BE5H   LINE      CODE     ---       #111
+      01000BE5H   LINE      CODE     ---       #113
+      01000BE8H   LINE      CODE     ---       #114
+      01000BEBH   LINE      CODE     ---       #115
+      01000BEEH   LINE      CODE     ---       #116
+      01000BF1H   LINE      CODE     ---       #117
+      01000BF1H   LINE      CODE     ---       #118
+      01000BF1H   LINE      CODE     ---       #119
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       ADDFUNCTION
+      00000020H.0 PUBLIC    BIT      BIT       isCtrlPowOn
+      02000040H   PUBLIC    XDATA    INT       refRampOut
+      0200000EH   PUBLIC    XDATA    ---       mcFocCtrl
+      02000000H   PUBLIC    XDATA    ---       mcRefRamp
+      01000EE2H   PUBLIC    CODE     ---       ATORamp
+      01000713H   PUBLIC    CODE     ---       _Motor_Ramp
+      01000BF5H   PUBLIC    CODE     ---       Speed_response
+      0100000EH   PUBLIC    CODE     ---       TargetRef_Process
+      010013ECH   PUBLIC    CODE     ---       _Abs_F16
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 14
+
+
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 15
+
+
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 16
+
+
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010013ECH   BLOCK     CODE     ---       LVL=0
+      00000004H   SYMBOL    DATA     INT       value
+      010013ECH   LINE      CODE     ---       #16
+      010013F0H   LINE      CODE     ---       #17
+      010013F0H   LINE      CODE     ---       #18
+      010013FBH   LINE      CODE     ---       #19
+      010013FBH   LINE      CODE     ---       #20
+      01001403H   LINE      CODE     ---       #21
+      01001403H   LINE      CODE     ---       #23
+      01001403H   LINE      CODE     ---       #24
+      01001407H   LINE      CODE     ---       #25
+      01001407H   LINE      CODE     ---       #26
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100000EH   BLOCK     CODE     ---       LVL=0
+      0100000EH   LINE      CODE     ---       #52
+      0100000EH   LINE      CODE     ---       #53
+      0100000EH   LINE      CODE     ---       #55
+      01000010H   LINE      CODE     ---       #56
+      0100001AH   LINE      CODE     ---       #59
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000BF5H   BLOCK     CODE     ---       LVL=0
+      01000BF5H   BLOCK     CODE     NEAR LAB  LVL=1
+      0200005FH   SYMBOL    XDATA    WORD      FOC_KSLIDE_Temp
+      02000061H   SYMBOL    XDATA    WORD      FOC_EKLPFMIN_Temp
+      ---         BLOCKEND  ---      ---       LVL=1
+      01000BF5H   LINE      CODE     ---       #66
+      01000BF5H   LINE      CODE     ---       #67
+      01000BF5H   LINE      CODE     ---       #68
+      01000BFCH   LINE      CODE     ---       #69
+      01000C00H   LINE      CODE     ---       #71
+      01000C0FH   LINE      CODE     ---       #72
+      01000C0FH   LINE      CODE     ---       #73
+      01000C1FH   LINE      CODE     ---       #74
+      01000C1FH   LINE      CODE     ---       #75
+      01000C1FH   LINE      CODE     ---       #76
+      01000C1FH   LINE      CODE     ---       #77
+      01000C30H   LINE      CODE     ---       #78
+      01000C30H   LINE      CODE     ---       #79
+      01000C36H   LINE      CODE     ---       #81
+      01000C3FH   LINE      CODE     ---       #82
+      01000C3FH   LINE      CODE     ---       #83
+      01000C45H   LINE      CODE     ---       #84
+      01000C4FH   LINE      CODE     ---       #85
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 17
+
+
+      01000C56H   LINE      CODE     ---       #86
+      01000C60H   LINE      CODE     ---       #87
+      01000C69H   LINE      CODE     ---       #89
+      01000C73H   LINE      CODE     ---       #90
+      01000C79H   LINE      CODE     ---       #91
+      01000C88H   LINE      CODE     ---       #92
+      01000C8FH   LINE      CODE     ---       #93
+      01000C99H   LINE      CODE     ---       #94
+      01000C99H   LINE      CODE     ---       #95
+      01000C9AH   LINE      CODE     ---       #97
+      01000C9AH   LINE      CODE     ---       #98
+      01000C9FH   LINE      CODE     ---       #99
+      01000C9FH   LINE      CODE     ---       #100
+      01000C9FH   LINE      CODE     ---       #101
+      01000CA0H   LINE      CODE     ---       #103
+      01000CA0H   LINE      CODE     ---       #104
+      01000CA0H   LINE      CODE     ---       #105
+      01000CA6H   LINE      CODE     ---       #107
+      01000CACH   LINE      CODE     ---       #108
+      01000CACH   LINE      CODE     ---       #109
+      01000CAEH   LINE      CODE     ---       #110
+      01000CC1H   LINE      CODE     ---       #111
+      01000CDBH   LINE      CODE     ---       #112
+      01000CE2H   LINE      CODE     ---       #113
+      01000CE2H   LINE      CODE     ---       #114
+      01000CE2H   LINE      CODE     ---       #115
+      01000CE2H   LINE      CODE     ---       #116
+      01000CE2H   LINE      CODE     ---       #117
+      01000CE2H   LINE      CODE     ---       #118
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000713H   BLOCK     CODE     ---       LVL=0
+      00000006H   SYMBOL    DATA     INT       ref
+      01000713H   LINE      CODE     ---       #130
+      01000713H   LINE      CODE     ---       #131
+      01000713H   LINE      CODE     ---       #132
+      0100071BH   LINE      CODE     ---       #134
+      01000738H   LINE      CODE     ---       #135
+      01000738H   LINE      CODE     ---       #136
+      01000782H   LINE      CODE     ---       #137
+      01000782H   LINE      CODE     ---       #138
+      010007A5H   LINE      CODE     ---       #139
+      010007A8H   LINE      CODE     ---       #141
+      010007A8H   LINE      CODE     ---       #142
+      010007BAH   LINE      CODE     ---       #143
+      010007BAH   LINE      CODE     ---       #144
+      010007BDH   LINE      CODE     ---       #145
+      010007E1H   LINE      CODE     ---       #146
+      010007E1H   LINE      CODE     ---       #147
+      01000829H   LINE      CODE     ---       #148
+      01000829H   LINE      CODE     ---       #149
+      0100084EH   LINE      CODE     ---       #150
+      01000850H   LINE      CODE     ---       #152
+      01000850H   LINE      CODE     ---       #153
+      01000862H   LINE      CODE     ---       #154
+      01000862H   LINE      CODE     ---       #155
+      01000864H   LINE      CODE     ---       #157
+      01000864H   LINE      CODE     ---       #158
+      01000876H   LINE      CODE     ---       #159
+      01000876H   LINE      CODE     ---       #161
+      01000887H   LINE      CODE     ---       #162
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000EE2H   BLOCK     CODE     ---       LVL=0
+      01000EE2H   LINE      CODE     ---       #169
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 18
+
+
+      01000EE2H   LINE      CODE     ---       #170
+      01000EE2H   LINE      CODE     ---       #171
+      01000EE8H   LINE      CODE     ---       #172
+      01000EE8H   LINE      CODE     ---       #173
+      01000EF5H   LINE      CODE     ---       #174
+      01000EF5H   LINE      CODE     ---       #175
+      01000EFFH   LINE      CODE     ---       #176
+      01000F07H   LINE      CODE     ---       #177
+      01000F08H   LINE      CODE     ---       #178
+      01000F0EH   LINE      CODE     ---       #179
+      01000F0EH   LINE      CODE     ---       #180
+      01000F18H   LINE      CODE     ---       #181
+      01000F20H   LINE      CODE     ---       #182
+      01000F21H   LINE      CODE     ---       #183
+      01000F27H   LINE      CODE     ---       #184
+      01000F27H   LINE      CODE     ---       #185
+      01000F31H   LINE      CODE     ---       #186
+      01000F39H   LINE      CODE     ---       #187
+      01000F3AH   LINE      CODE     ---       #188
+      01000F49H   LINE      CODE     ---       #189
+      01000F49H   LINE      CODE     ---       #190
+      01000F53H   LINE      CODE     ---       #191
+      01000F5BH   LINE      CODE     ---       #192
+      01000F61H   LINE      CODE     ---       #193
+      01000F61H   LINE      CODE     ---       #194
+      01000F61H   LINE      CODE     ---       #195
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       INTERRUPT
+      0000000BH   PUBLIC    IDATA    INT       Power_Currt
+      0100000AH   PUBLIC    CODE     ---       UART2_INT
+      01001438H   PUBLIC    CODE     ---       CMP3_INT
+      01001187H   PUBLIC    CODE     ---       SYStick_INT
+      010013CFH   PUBLIC    CODE     ---       TIM3_INT
+      01001421H   PUBLIC    CODE     ---       DRV_ISR
+      01000066H   PUBLIC    CODE     ---       EXTERN0_INT
+      010013AAH   PUBLIC    CODE     ---       LVW_TSD_INT
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 19
+
+
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 20
+
+
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010013AAH   BLOCK     CODE     ---       LVL=0
+      010013AAH   LINE      CODE     ---       #14
+      010013ACH   LINE      CODE     ---       #16
+      010013B1H   LINE      CODE     ---       #17
+      010013B1H   LINE      CODE     ---       #18
+      010013B6H   LINE      CODE     ---       #19
+      010013B6H   LINE      CODE     ---       #20
+      010013B9H   LINE      CODE     ---       #21
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 21
+
+
+      010013BCH   LINE      CODE     ---       #22
+      010013BCH   LINE      CODE     ---       #24
+      010013BFH   LINE      CODE     ---       #25
+      010013BFH   LINE      CODE     ---       #27
+      010013C2H   LINE      CODE     ---       #28
+      010013C2H   LINE      CODE     ---       #29
+      010013C7H   LINE      CODE     ---       #30
+      010013C7H   LINE      CODE     ---       #31
+      010013CAH   LINE      CODE     ---       #32
+      010013CAH   LINE      CODE     ---       #34
+      010013CCH   LINE      CODE     ---       #35
+      010013CCH   LINE      CODE     ---       #36
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000066H   BLOCK     CODE     ---       LVL=0
+      01000066H   LINE      CODE     ---       #43
+      01000066H   LINE      CODE     ---       #45
+      01000069H   LINE      CODE     ---       #46
+      01000069H   LINE      CODE     ---       #47
+      0100006BH   LINE      CODE     ---       #48
+      0100006BH   LINE      CODE     ---       #49
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001421H   BLOCK     CODE     ---       LVL=0
+      01001421H   LINE      CODE     ---       #56
+      01001427H   LINE      CODE     ---       #58
+      0100142EH   LINE      CODE     ---       #59
+      0100142EH   LINE      CODE     ---       #60
+      01001431H   LINE      CODE     ---       #61
+      01001431H   LINE      CODE     ---       #62
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010013CFH   BLOCK     CODE     ---       LVL=0
+      010013CFH   LINE      CODE     ---       #71
+      010013D1H   LINE      CODE     ---       #73
+      010013D6H   LINE      CODE     ---       #74
+      010013D6H   LINE      CODE     ---       #75
+      010013D9H   LINE      CODE     ---       #76
+      010013D9H   LINE      CODE     ---       #78
+      010013DEH   LINE      CODE     ---       #79
+      010013DEH   LINE      CODE     ---       #80
+      010013E1H   LINE      CODE     ---       #81
+      010013E1H   LINE      CODE     ---       #83
+      010013E6H   LINE      CODE     ---       #84
+      010013E6H   LINE      CODE     ---       #85
+      010013E9H   LINE      CODE     ---       #86
+      010013E9H   LINE      CODE     ---       #87
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001187H   BLOCK     CODE     ---       LVL=0
+      01001187H   LINE      CODE     ---       #95
+      0100118FH   LINE      CODE     ---       #97
+      01001196H   LINE      CODE     ---       #98
+      01001196H   LINE      CODE     ---       #99
+      01001199H   LINE      CODE     ---       #101
+      010011A8H   LINE      CODE     ---       #102
+      010011B4H   LINE      CODE     ---       #104
+      010011BAH   LINE      CODE     ---       #105
+      010011BAH   LINE      CODE     ---       #106
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001438H   BLOCK     CODE     ---       LVL=0
+      01001438H   LINE      CODE     ---       #116
+      0100143AH   LINE      CODE     ---       #118
+      0100143FH   LINE      CODE     ---       #119
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 22
+
+
+      0100143FH   LINE      CODE     ---       #120
+      01001445H   LINE      CODE     ---       #121
+      01001445H   LINE      CODE     ---       #122
+      01001448H   LINE      CODE     ---       #123
+      01001448H   LINE      CODE     ---       #125
+      0100144BH   LINE      CODE     ---       #126
+      0100144BH   LINE      CODE     ---       #127
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100000AH   BLOCK     CODE     ---       LVL=0
+      0100000AH   LINE      CODE     ---       #129
+      0100000AH   LINE      CODE     ---       #131
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       MOTORCONTROL
+      00000009H   PUBLIC    DATA     BYTE      mcState
+      02000063H   PUBLIC    XDATA    ---       McStaSet
+      010004EDH   PUBLIC    CODE     ---       MC_Control
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 23
+
+
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 24
+
+
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010004EDH   BLOCK     CODE     ---       LVL=0
+      010004EDH   LINE      CODE     ---       #11
+      010004EDH   LINE      CODE     ---       #12
+      010004EDH   LINE      CODE     ---       #13
+      0100051CH   LINE      CODE     ---       #14
+      0100051CH   LINE      CODE     ---       #15
+      0100051CH   LINE      CODE     ---       #16
+      0100051FH   LINE      CODE     ---       #18
+      01000523H   LINE      CODE     ---       #19
+      01000523H   LINE      CODE     ---       #20
+      01000526H   LINE      CODE     ---       #21
+      01000527H   LINE      CODE     ---       #22
+      01000538H   LINE      CODE     ---       #23
+      0100053BH   LINE      CODE     ---       #25
+      0100053CH   LINE      CODE     ---       #27
+      0100053CH   LINE      CODE     ---       #28
+      01000540H   LINE      CODE     ---       #29
+      01000540H   LINE      CODE     ---       #30
+      01000543H   LINE      CODE     ---       #31
+      01000544H   LINE      CODE     ---       #32
+      01000547H   LINE      CODE     ---       #33
+      01000547H   LINE      CODE     ---       #34
+      0100054AH   LINE      CODE     ---       #35
+      0100054BH   LINE      CODE     ---       #37
+      0100054BH   LINE      CODE     ---       #38
+      0100054EH   LINE      CODE     ---       #44
+      01000558H   LINE      CODE     ---       #45
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 25
+
+
+      0100055BH   LINE      CODE     ---       #46
+      01000565H   LINE      CODE     ---       #51
+      01000565H   LINE      CODE     ---       #53
+      01000566H   LINE      CODE     ---       #55
+      01000566H   LINE      CODE     ---       #56
+      0100056AH   LINE      CODE     ---       #57
+      0100056AH   LINE      CODE     ---       #58
+      0100056DH   LINE      CODE     ---       #59
+      0100056EH   LINE      CODE     ---       #60
+      01000571H   LINE      CODE     ---       #61
+      01000571H   LINE      CODE     ---       #62
+      01000574H   LINE      CODE     ---       #63
+      01000575H   LINE      CODE     ---       #65
+      01000575H   LINE      CODE     ---       #66
+      01000578H   LINE      CODE     ---       #68
+      01000585H   LINE      CODE     ---       #69
+      01000585H   LINE      CODE     ---       #70
+      01000587H   LINE      CODE     ---       #76
+      01000591H   LINE      CODE     ---       #77
+      01000594H   LINE      CODE     ---       #78
+      0100059EH   LINE      CODE     ---       #82
+      0100059EH   LINE      CODE     ---       #83
+      0100059EH   LINE      CODE     ---       #85
+      0100059FH   LINE      CODE     ---       #88
+      0100059FH   LINE      CODE     ---       #89
+      010005A3H   LINE      CODE     ---       #90
+      010005A3H   LINE      CODE     ---       #91
+      010005A6H   LINE      CODE     ---       #92
+      010005A7H   LINE      CODE     ---       #93
+      010005AAH   LINE      CODE     ---       #94
+      010005AAH   LINE      CODE     ---       #95
+      010005ADH   LINE      CODE     ---       #96
+      010005AEH   LINE      CODE     ---       #98
+      010005AEH   LINE      CODE     ---       #99
+      010005B1H   LINE      CODE     ---       #106
+      010005C0H   LINE      CODE     ---       #107
+      010005C0H   LINE      CODE     ---       #108
+      010005C5H   LINE      CODE     ---       #109
+      010005CFH   LINE      CODE     ---       #110
+      01000602H   LINE      CODE     ---       #111
+      01000603H   LINE      CODE     ---       #112
+      01000613H   LINE      CODE     ---       #113
+      01000613H   LINE      CODE     ---       #114
+      01000619H   LINE      CODE     ---       #115
+      01000623H   LINE      CODE     ---       #116
+      0100062DH   LINE      CODE     ---       #117
+      0100062EH   LINE      CODE     ---       #118
+      01000637H   LINE      CODE     ---       #119
+      01000637H   LINE      CODE     ---       #120
+      0100063DH   LINE      CODE     ---       #121
+      01000662H   LINE      CODE     ---       #122
+      01000686H   LINE      CODE     ---       #123
+      0100068EH   LINE      CODE     ---       #124
+      0100068FH   LINE      CODE     ---       #126
+      0100068FH   LINE      CODE     ---       #127
+      01000695H   LINE      CODE     ---       #128
+      01000698H   LINE      CODE     ---       #129
+      01000698H   LINE      CODE     ---       #132
+      01000698H   LINE      CODE     ---       #134
+      01000699H   LINE      CODE     ---       #137
+      01000699H   LINE      CODE     ---       #138
+      0100069CH   LINE      CODE     ---       #139
+      0100069FH   LINE      CODE     ---       #140
+      010006A0H   LINE      CODE     ---       #142
+      010006A0H   LINE      CODE     ---       #143
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 26
+
+
+      010006A4H   LINE      CODE     ---       #144
+      010006A4H   LINE      CODE     ---       #145
+      010006A7H   LINE      CODE     ---       #146
+      010006A8H   LINE      CODE     ---       #147
+      010006ABH   LINE      CODE     ---       #148
+      010006ABH   LINE      CODE     ---       #149
+      010006AEH   LINE      CODE     ---       #150
+      010006B8H   LINE      CODE     ---       #151
+      010006B8H   LINE      CODE     ---       #153
+      010006B9H   LINE      CODE     ---       #155
+      010006B9H   LINE      CODE     ---       #156
+      010006BDH   LINE      CODE     ---       #157
+      010006BDH   LINE      CODE     ---       #158
+      010006C0H   LINE      CODE     ---       #159
+      010006C1H   LINE      CODE     ---       #161
+      010006C1H   LINE      CODE     ---       #162
+      010006DCH   LINE      CODE     ---       #163
+      010006DCH   LINE      CODE     ---       #164
+      010006DEH   LINE      CODE     ---       #165
+      010006E5H   LINE      CODE     ---       #166
+      010006E9H   LINE      CODE     ---       #167
+      010006EBH   LINE      CODE     ---       #168
+      010006EBH   LINE      CODE     ---       #169
+      010006EBH   LINE      CODE     ---       #171
+      010006ECH   LINE      CODE     ---       #173
+      010006ECH   LINE      CODE     ---       #174
+      010006F0H   LINE      CODE     ---       #175
+      010006F0H   LINE      CODE     ---       #176
+      010006F2H   LINE      CODE     ---       #177
+      010006F3H   LINE      CODE     ---       #179
+      010006F3H   LINE      CODE     ---       #180
+      01000709H   LINE      CODE     ---       #181
+      01000710H   LINE      CODE     ---       #182
+      01000712H   LINE      CODE     ---       #183
+      01000712H   LINE      CODE     ---       #185
+      01000712H   LINE      CODE     ---       #186
+      01000712H   LINE      CODE     ---       #187
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       MOTORCONTROLFUNCTION
+      02000042H   PUBLIC    XDATA    ---       mcCurOffset
+      01001101H   PUBLIC    CODE     ---       Motor_Init
+      010011FDH   PUBLIC    CODE     ---       Motor_Ready
+      01000888H   PUBLIC    CODE     ---       GetCurrentOffset
+      01000E61H   PUBLIC    CODE     ---       Motor_Static_Open
+      01000FDEH   PUBLIC    CODE     ---       Motor_Align
+      01000CE3H   PUBLIC    CODE     ---       Motor_Charge
+      010009BFH   PUBLIC    CODE     ---       FOC_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 27
+
+
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 28
+
+
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 29
+
+
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010009BFH   BLOCK     CODE     ---       LVL=0
+      010009BFH   LINE      CODE     ---       #21
+      010009BFH   LINE      CODE     ---       #22
+      010009BFH   LINE      CODE     ---       #23
+      010009C9H   LINE      CODE     ---       #25
+      010009D0H   LINE      CODE     ---       #26
+      010009D4H   LINE      CODE     ---       #27
+      010009D8H   LINE      CODE     ---       #28
+      010009DFH   LINE      CODE     ---       #29
+      010009E3H   LINE      CODE     ---       #30
+      010009E9H   LINE      CODE     ---       #32
+      010009EEH   LINE      CODE     ---       #33
+      010009F0H   LINE      CODE     ---       #34
+      010009F6H   LINE      CODE     ---       #35
+      010009FAH   LINE      CODE     ---       #36
+      01000A00H   LINE      CODE     ---       #37
+      01000A06H   LINE      CODE     ---       #38
+      01000A0CH   LINE      CODE     ---       #39
+      01000A10H   LINE      CODE     ---       #40
+      01000A16H   LINE      CODE     ---       #41
+      01000A1CH   LINE      CODE     ---       #43
+      01000A26H   LINE      CODE     ---       #44
+      01000A2EH   LINE      CODE     ---       #45
+      01000A36H   LINE      CODE     ---       #46
+      01000A3EH   LINE      CODE     ---       #48
+      01000A48H   LINE      CODE     ---       #49
+      01000A50H   LINE      CODE     ---       #50
+      01000A5AH   LINE      CODE     ---       #51
+      01000A62H   LINE      CODE     ---       #54
+      01000A62H   LINE      CODE     ---       #55
+      01000A69H   LINE      CODE     ---       #56
+      01000A73H   LINE      CODE     ---       #57
+      01000A7AH   LINE      CODE     ---       #58
+      01000A81H   LINE      CODE     ---       #59
+      01000A88H   LINE      CODE     ---       #60
+      01000A88H   LINE      CODE     ---       #74
+      01000A92H   LINE      CODE     ---       #75
+      01000A9AH   LINE      CODE     ---       #76
+      01000AA0H   LINE      CODE     ---       #77
+      01000AA7H   LINE      CODE     ---       #90
+      01000AA7H   LINE      CODE     ---       #91
+      01000AABH   LINE      CODE     ---       #92
+      01000AB1H   LINE      CODE     ---       #93
+      01000AB7H   LINE      CODE     ---       #95
+      01000ABEH   LINE      CODE     ---       #96
+      01000ABEH   LINE      CODE     ---       #157
+      01000ABEH   LINE      CODE     ---       #159
+      01000AC2H   LINE      CODE     ---       #160
+      01000AD1H   LINE      CODE     ---       #161
+      01000AD1H   LINE      CODE     ---       #191
+      01000AD8H   LINE      CODE     ---       #192
+      01000ADCH   LINE      CODE     ---       #193
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000CE3H   BLOCK     CODE     ---       LVL=0
+      01000CE3H   LINE      CODE     ---       #202
+      01000CE3H   LINE      CODE     ---       #203
+      01000CE3H   LINE      CODE     ---       #204
+      01000CEAH   LINE      CODE     ---       #205
+      01000CEAH   LINE      CODE     ---       #206
+      01000CEEH   LINE      CODE     ---       #207
+      01000CF5H   LINE      CODE     ---       #208
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 30
+
+
+      01000D17H   LINE      CODE     ---       #209
+      01000D2DH   LINE      CODE     ---       #215
+      01000D34H   LINE      CODE     ---       #216
+      01000D39H   LINE      CODE     ---       #217
+      01000D39H   LINE      CODE     ---       #219
+      01000D4EH   LINE      CODE     ---       #220
+      01000D4EH   LINE      CODE     ---       #221
+      01000D50H   LINE      CODE     ---       #222
+      01000D66H   LINE      CODE     ---       #223
+      01000D68H   LINE      CODE     ---       #224
+      01000D68H   LINE      CODE     ---       #226
+      01000D7EH   LINE      CODE     ---       #227
+      01000D7EH   LINE      CODE     ---       #228
+      01000D81H   LINE      CODE     ---       #229
+      01000D97H   LINE      CODE     ---       #230
+      01000D97H   LINE      CODE     ---       #232
+      01000DADH   LINE      CODE     ---       #233
+      01000DADH   LINE      CODE     ---       #234
+      01000DB0H   LINE      CODE     ---       #235
+      01000DC6H   LINE      CODE     ---       #236
+      01000DC6H   LINE      CODE     ---       #237
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000FDEH   BLOCK     CODE     ---       LVL=0
+      01000FDEH   LINE      CODE     ---       #244
+      01000FDEH   LINE      CODE     ---       #245
+      01000FDEH   LINE      CODE     ---       #246
+      01000FE5H   LINE      CODE     ---       #247
+      01000FE5H   LINE      CODE     ---       #248
+      01000FE9H   LINE      CODE     ---       #250
+      01000FECH   LINE      CODE     ---       #252
+      01000FF3H   LINE      CODE     ---       #253
+      01000FFBH   LINE      CODE     ---       #254
+      01001005H   LINE      CODE     ---       #255
+      0100100FH   LINE      CODE     ---       #256
+      01001019H   LINE      CODE     ---       #257
+      01001021H   LINE      CODE     ---       #258
+      01001028H   LINE      CODE     ---       #259
+      0100102CH   LINE      CODE     ---       #260
+      01001033H   LINE      CODE     ---       #262
+      0100103DH   LINE      CODE     ---       #269
+      0100103DH   LINE      CODE     ---       #270
+      0100104AH   LINE      CODE     ---       #271
+      0100104AH   LINE      CODE     ---       #275
+      0100104CH   LINE      CODE     ---       #276
+      0100104CH   LINE      CODE     ---       #277
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000E61H   BLOCK     CODE     ---       LVL=0
+      01000E61H   LINE      CODE     ---       #285
+      01000E61H   LINE      CODE     ---       #286
+      01000E61H   LINE      CODE     ---       #287
+      01000E64H   LINE      CODE     ---       #288
+      01000E66H   LINE      CODE     ---       #289
+      01000E75H   LINE      CODE     ---       #291
+      01000E7CH   LINE      CODE     ---       #292
+      01000E86H   LINE      CODE     ---       #293
+      01000E90H   LINE      CODE     ---       #294
+      01000E9AH   LINE      CODE     ---       #295
+      01000EA2H   LINE      CODE     ---       #296
+      01000EA9H   LINE      CODE     ---       #297
+      01000EADH   LINE      CODE     ---       #300
+      01000EADH   LINE      CODE     ---       #301
+      01000EB5H   LINE      CODE     ---       #302
+      01000EBDH   LINE      CODE     ---       #303
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 31
+
+
+      01000EC5H   LINE      CODE     ---       #304
+      01000ECEH   LINE      CODE     ---       #305
+      01000ECEH   LINE      CODE     ---       #332
+      01000ECEH   LINE      CODE     ---       #335
+      01000ECEH   LINE      CODE     ---       #336
+      01000ED7H   LINE      CODE     ---       #337
+      01000ED7H   LINE      CODE     ---       #345
+      01000ED7H   LINE      CODE     ---       #347
+      01000EE1H   LINE      CODE     ---       #348
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000888H   BLOCK     CODE     ---       LVL=0
+      01000888H   LINE      CODE     ---       #385
+      01000888H   LINE      CODE     ---       #386
+      01000888H   LINE      CODE     ---       #387
+      0100088FH   LINE      CODE     ---       #389
+      01000896H   LINE      CODE     ---       #392
+      01000896H   LINE      CODE     ---       #393
+      010008C5H   LINE      CODE     ---       #394
+      010008E0H   LINE      CODE     ---       #395
+      01000916H   LINE      CODE     ---       #396
+      01000945H   LINE      CODE     ---       #397
+      01000960H   LINE      CODE     ---       #398
+      01000996H   LINE      CODE     ---       #399
+      01000996H   LINE      CODE     ---       #422
+      010009A4H   LINE      CODE     ---       #424
+      010009B5H   LINE      CODE     ---       #425
+      010009B5H   LINE      CODE     ---       #426
+      010009BBH   LINE      CODE     ---       #428
+      010009BBH   LINE      CODE     ---       #429
+      010009BEH   LINE      CODE     ---       #430
+      010009BEH   LINE      CODE     ---       #432
+      010009BEH   LINE      CODE     ---       #433
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010011FDH   BLOCK     CODE     ---       LVL=0
+      010011FDH   LINE      CODE     ---       #441
+      010011FDH   LINE      CODE     ---       #442
+      010011FDH   LINE      CODE     ---       #443
+      01001204H   LINE      CODE     ---       #444
+      01001204H   LINE      CODE     ---       #445
+      01001208H   LINE      CODE     ---       #446
+      0100120AH   LINE      CODE     ---       #447
+      01001211H   LINE      CODE     ---       #448
+      01001215H   LINE      CODE     ---       #449
+      0100121AH   LINE      CODE     ---       #450
+      01001220H   LINE      CODE     ---       #452
+      01001220H   LINE      CODE     ---       #453
+      01001236H   LINE      CODE     ---       #454
+      01001236H   LINE      CODE     ---       #460
+      01001236H   LINE      CODE     ---       #461
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001101H   BLOCK     CODE     ---       LVL=0
+      01001101H   LINE      CODE     ---       #470
+      01001101H   LINE      CODE     ---       #471
+      01001101H   LINE      CODE     ---       #473
+      01001101H   LINE      CODE     ---       #474
+      01001117H   LINE      CODE     ---       #475
+      01001117H   LINE      CODE     ---       #481
+      01001126H   LINE      CODE     ---       #483
+      0100112BH   LINE      CODE     ---       #484
+      0100112FH   LINE      CODE     ---       #485
+      01001133H   LINE      CODE     ---       #486
+      01001137H   LINE      CODE     ---       #488
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 32
+
+
+      0100113CH   LINE      CODE     ---       #489
+      0100113FH   LINE      CODE     ---       #490
+      01001142H   LINE      CODE     ---       #491
+      01001145H   LINE      CODE     ---       #492
+      01001148H   LINE      CODE     ---       #494
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       MOTORPROTECT
+      0000000AH   PUBLIC    DATA     BYTE      mcFaultSource
+      0100001EH   PUBLIC    CODE     ---       Fault_GetCurrentOffset
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 33
+
+
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 34
+
+
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      0100001EH   BLOCK     CODE     ---       LVL=0
+      0100001EH   LINE      CODE     ---       #13
+      0100001EH   LINE      CODE     ---       #14
+      0100001EH   LINE      CODE     ---       #15
+      01000025H   LINE      CODE     ---       #16
+      01000025H   LINE      CODE     ---       #18
+      01000025H   LINE      CODE     ---       #20
+      01000025H   LINE      CODE     ---       #21
+      01000042H   LINE      CODE     ---       #22
+      01000042H   LINE      CODE     ---       #23
+      01000045H   LINE      CODE     ---       #24
+      01000045H   LINE      CODE     ---       #25
+      01000045H   LINE      CODE     ---       #44
+      01000045H   LINE      CODE     ---       #72
+      01000045H   LINE      CODE     ---       #73
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       ADC
+      01000F62H   PUBLIC    CODE     ---       ADC_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 35
+
+
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 36
+
+
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 37
+
+
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      01000F62H   BLOCK     CODE     ---       LVL=0
+      01000F62H   LINE      CODE     ---       #4
+      01000F62H   LINE      CODE     ---       #5
+      01000F62H   LINE      CODE     ---       #7
+      01000F69H   LINE      CODE     ---       #8
+      01000F6DH   LINE      CODE     ---       #9
+      01000F71H   LINE      CODE     ---       #10
+      01000F75H   LINE      CODE     ---       #11
+      01000F79H   LINE      CODE     ---       #12
+      01000F7DH   LINE      CODE     ---       #18
+      01000F82H   LINE      CODE     ---       #19
+      01000F86H   LINE      CODE     ---       #21
+      01000F8DH   LINE      CODE     ---       #25
+      01000F91H   LINE      CODE     ---       #28
+      01000F95H   LINE      CODE     ---       #29
+      01000F98H   LINE      CODE     ---       #31
+      01000F9CH   LINE      CODE     ---       #33
+      01000FB4H   LINE      CODE     ---       #35
+      01000FCAH   LINE      CODE     ---       #37
+      01000FD0H   LINE      CODE     ---       #40
+      01000FD5H   LINE      CODE     ---       #42
+      01000FD9H   LINE      CODE     ---       #43
+      01000FDDH   LINE      CODE     ---       #45
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       AMP
+      010012A3H   PUBLIC    CODE     ---       AMP_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 38
+
+
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 39
+
+
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010012A3H   BLOCK     CODE     ---       LVL=0
+      010012A3H   LINE      CODE     ---       #3
+      010012A3H   LINE      CODE     ---       #4
+      010012A3H   LINE      CODE     ---       #6
+      010012A3H   LINE      CODE     ---       #20
+      010012A3H   LINE      CODE     ---       #21
+      010012AAH   LINE      CODE     ---       #22
+      010012AEH   LINE      CODE     ---       #23
+      010012B5H   LINE      CODE     ---       #25
+      010012BCH   LINE      CODE     ---       #26
+      010012C0H   LINE      CODE     ---       #28
+      010012C4H   LINE      CODE     ---       #38
+      010012C4H   LINE      CODE     ---       #39
+      010012CBH   LINE      CODE     ---       #40
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 40
+
+
+      010012CFH   LINE      CODE     ---       #41
+      010012D3H   LINE      CODE     ---       #42
+      010012D3H   LINE      CODE     ---       #56
+      010012D3H   LINE      CODE     ---       #58
+      010012D3H   LINE      CODE     ---       #134
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       CMP
+      0100144EH   PUBLIC    CODE     ---       CMP3_Interrupt_Init
+      0100126FH   PUBLIC    CODE     ---       CMP3_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 41
+
+
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 42
+
+
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      0100126FH   BLOCK     CODE     ---       LVL=0
+      0100126FH   LINE      CODE     ---       #4
+      0100126FH   LINE      CODE     ---       #5
+      0100126FH   LINE      CODE     ---       #9
+      0100126FH   LINE      CODE     ---       #10
+      01001276H   LINE      CODE     ---       #11
+      01001279H   LINE      CODE     ---       #12
+      0100127CH   LINE      CODE     ---       #13
+      0100127CH   LINE      CODE     ---       #36
+      0100127CH   LINE      CODE     ---       #41
+      01001283H   LINE      CODE     ---       #46
+      01001287H   LINE      CODE     ---       #50
+      0100128DH   LINE      CODE     ---       #51
+      0100128DH   LINE      CODE     ---       #54
+      01001290H   LINE      CODE     ---       #59
+      01001293H   LINE      CODE     ---       #67
+      01001296H   LINE      CODE     ---       #68
+      01001299H   LINE      CODE     ---       #78
+      0100129CH   LINE      CODE     ---       #79
+      0100129FH   LINE      CODE     ---       #81
+      010012A2H   LINE      CODE     ---       #82
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100144EH   BLOCK     CODE     ---       LVL=0
+      0100144EH   LINE      CODE     ---       #97
+      0100144EH   LINE      CODE     ---       #98
+      0100144EH   LINE      CODE     ---       #99
+      01001451H   LINE      CODE     ---       #107
+      01001454H   LINE      CODE     ---       #108
+      01001457H   LINE      CODE     ---       #110
+      0100145AH   LINE      CODE     ---       #111
+      0100145DH   LINE      CODE     ---       #113
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       CRC
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 43
+
+
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 44
+
+
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 45
+
+
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+      00000001H   SYMBOL    DATA     BYTE      start_sector
+      00000005H   SYMBOL    DATA     BYTE      offset_sector
+      00000006H   SYMBOL    DATA     WORD      tempH
+      00000002H   SYMBOL    DATA     WORD      tempL
+
+      ---         MODULE    ---      ---       DRIVER
+      0100104DH   PUBLIC    CODE     ---       Driver_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 46
+
+
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 47
+
+
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      0100104DH   BLOCK     CODE     ---       LVL=0
+      0100104DH   LINE      CODE     ---       #4
+      0100104DH   LINE      CODE     ---       #5
+      0100104DH   LINE      CODE     ---       #6
+      01001057H   LINE      CODE     ---       #7
+      0100105BH   LINE      CODE     ---       #8
+      01001062H   LINE      CODE     ---       #9
+      0100106CH   LINE      CODE     ---       #10
+      0100106FH   LINE      CODE     ---       #14
+      0100106FH   LINE      CODE     ---       #15
+      01001072H   LINE      CODE     ---       #16
+      01001075H   LINE      CODE     ---       #17
+      01001075H   LINE      CODE     ---       #36
+      0100107CH   LINE      CODE     ---       #39
+      01001080H   LINE      CODE     ---       #46
+      01001084H   LINE      CODE     ---       #47
+      01001088H   LINE      CODE     ---       #50
+      01001092H   LINE      CODE     ---       #52
+      01001095H   LINE      CODE     ---       #53
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 48
+
+
+      01001098H   LINE      CODE     ---       #54
+      0100109FH   LINE      CODE     ---       #56
+      010010A4H   LINE      CODE     ---       #59
+      010010A8H   LINE      CODE     ---       #61
+      010010ACH   LINE      CODE     ---       #62
+      010010B0H   LINE      CODE     ---       #63
+      010010B4H   LINE      CODE     ---       #64
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       GPIO
+      01000006H   PUBLIC    CODE     ---       GPIO_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 49
+
+
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 50
+
+
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      01000006H   BLOCK     CODE     ---       LVL=0
+      01000006H   LINE      CODE     ---       #23
+      01000006H   LINE      CODE     ---       #24
+      01000006H   LINE      CODE     ---       #25
+      01000009H   LINE      CODE     ---       #29
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       TIMER
+      010010B5H   PUBLIC    CODE     ---       Timer3_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 51
+
+
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 52
+
+
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      010010B5H   BLOCK     CODE     ---       LVL=0
+      010010B5H   LINE      CODE     ---       #36
+      010010B5H   LINE      CODE     ---       #37
+      010010B5H   LINE      CODE     ---       #38
+      010010B8H   LINE      CODE     ---       #39
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 53
+
+
+      010010BFH   LINE      CODE     ---       #40
+      010010C4H   LINE      CODE     ---       #42
+      010010C7H   LINE      CODE     ---       #43
+      010010CAH   LINE      CODE     ---       #44
+      010010CDH   LINE      CODE     ---       #46
+      010010D0H   LINE      CODE     ---       #47
+      010010D3H   LINE      CODE     ---       #49
+      010010D6H   LINE      CODE     ---       #50
+      010010D9H   LINE      CODE     ---       #52
+      010010DCH   LINE      CODE     ---       #53
+      010010DFH   LINE      CODE     ---       #55
+      010010E2H   LINE      CODE     ---       #56
+      010010E5H   LINE      CODE     ---       #58
+      010010E8H   LINE      CODE     ---       #59
+      010010EBH   LINE      CODE     ---       #61
+      010010F1H   LINE      CODE     ---       #62
+      010010F7H   LINE      CODE     ---       #63
+      010010FDH   LINE      CODE     ---       #65
+      01001100H   LINE      CODE     ---       #66
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       UART
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 54
+
+
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 55
+
+
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      ---         MODULE    ---      ---       TSD
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 56
+
+
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 57
+
+
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      ---         MODULE    ---      ---       SMDU
+      01001237H   PUBLIC    CODE     ---       _LPF_Zero_Update
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 58
+
+
+      01001408H   PUBLIC    CODE     ---       _HW_Zero_Calc
+      01001330H   PUBLIC    CODE     ---       HW_Three_PI_Init
+      01001302H   PUBLIC    CODE     ---       HW_Two_PI_Init
+      010012D4H   PUBLIC    CODE     ---       HW_One_PI_Init
+      01001149H   PUBLIC    CODE     ---       HW_Zero_PI_Init
+      000000C0H.2 SFRSYM    DATA     BIT       GP52
+      000000B8H.3 SFRSYM    DATA     BIT       GP43
+      000000B0H.4 SFRSYM    DATA     BIT       GP34
+      000000A0H.5 SFRSYM    DATA     BIT       GP25
+      00000090H.6 SFRSYM    DATA     BIT       GP16
+      00000080H.7 SFRSYM    DATA     BIT       GP07
+      00000088H.1 SFRSYM    DATA     BIT       IT01
+      00000088H.3 SFRSYM    DATA     BIT       IT10
+      000000C0H.3 SFRSYM    DATA     BIT       GP53
+      000000B8H.4 SFRSYM    DATA     BIT       GP44
+      000000B0H.5 SFRSYM    DATA     BIT       GP35
+      000000A0H.6 SFRSYM    DATA     BIT       GP26
+      00000090H.7 SFRSYM    DATA     BIT       GP17
+      00000080H   SFRSYM    DATA     BYTE      P0
+      00000088H.4 SFRSYM    DATA     BIT       IT11
+      000000C9H   SFRSYM    DATA     BYTE      RST_SR
+      000000D9H   SFRSYM    DATA     BYTE      EVT_FILT
+      000000B8H.5 SFRSYM    DATA     BIT       GP45
+      000000B0H.6 SFRSYM    DATA     BIT       GP36
+      000000A0H.7 SFRSYM    DATA     BIT       GP27
+      00000090H   SFRSYM    DATA     BYTE      P1
+      000000B8H.6 SFRSYM    DATA     BIT       GP46
+      000000B0H.7 SFRSYM    DATA     BIT       GP37
+      000000A0H   SFRSYM    DATA     BYTE      P2
+      000000B8H.7 SFRSYM    DATA     BIT       GP47
+      000000B0H   SFRSYM    DATA     BYTE      P3
+      000000B8H   SFRSYM    DATA     BYTE      P4
+      000000D0H.6 SFRSYM    DATA     BIT       AC
+      000000C0H   SFRSYM    DATA     BYTE      P5
+      000000A8H.7 SFRSYM    DATA     BIT       EA
+      000000D5H   SFRSYM    DATA     BYTE      CMP_CR0
+      000000D6H   SFRSYM    DATA     BYTE      CMP_CR1
+      000000DAH   SFRSYM    DATA     BYTE      CMP_CR2
+      000000DCH   SFRSYM    DATA     BYTE      CMP_CR3
+      000000F8H.0 SFRSYM    DATA     BIT       OISUH
+      000000E1H   SFRSYM    DATA     BYTE      CMP_CR4
+      000000F8H.2 SFRSYM    DATA     BIT       OISVH
+      000000F8H.4 SFRSYM    DATA     BIT       OISWH
+      000000F8H.1 SFRSYM    DATA     BIT       OISUL
+      000000A8H   SFRSYM    DATA     BYTE      IE
+      000000F8H.3 SFRSYM    DATA     BIT       OISVL
+      000000F9H   SFRSYM    DATA     BYTE      PI_CR
+      000000F8H.5 SFRSYM    DATA     BIT       OISWL
+      000000AAH   SFRSYM    DATA     WORD      TIM2__CNTR
+      000000A2H   SFRSYM    DATA     WORD      TIM3__CNTR
+      000000E2H   SFRSYM    DATA     BYTE      HALL_CR
+      00000092H   SFRSYM    DATA     WORD      TIM4__CNTR
+      00000098H.0 SFRSYM    DATA     BIT       RI
+      00000098H.6 SFRSYM    DATA     BIT       UT_MOD0
+      00000098H.7 SFRSYM    DATA     BIT       UT_MOD1
+      000000D0H.7 SFRSYM    DATA     BIT       CY
+      00000098H.1 SFRSYM    DATA     BIT       TI
+      00000084H   SFRSYM    DATA     BYTE      FLA_KEY
+      00000098H   SFRSYM    DATA     BYTE      UT_CR
+      00000099H   SFRSYM    DATA     BYTE      UT_DR
+      000000D0H.2 SFRSYM    DATA     BIT       OV
+      0000009AH   SFRSYM    DATA     WORD      UT_BAUD
+      000000D8H.2 SFRSYM    DATA     BIT       UT2RB8
+      000000D8H.3 SFRSYM    DATA     BIT       UT2TB8
+      000000D8H.5 SFRSYM    DATA     BIT       UT2SM2
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 59
+
+
+      00000087H   SFRSYM    DATA     BYTE      PCON
+      00000088H   SFRSYM    DATA     BYTE      TCON
+      00000082H   SFRSYM    DATA     WORD      DPTR
+      00000088H.2 SFRSYM    DATA     BIT       IF0
+      000000D8H.4 SFRSYM    DATA     BIT       UT2REN
+      000000AEH   SFRSYM    DATA     WORD      TIM2__ARR
+      000000A1H   SFRSYM    DATA     BYTE      TIM2_CR0
+      000000A6H   SFRSYM    DATA     WORD      TIM3__ARR
+      0000009CH   SFRSYM    DATA     BYTE      TIM3_CR0
+      000000A9H   SFRSYM    DATA     BYTE      TIM2_CR1
+      00000096H   SFRSYM    DATA     WORD      TIM4__ARR
+      0000009EH   SFRSYM    DATA     BYTE      TIM4_CR0
+      0000009DH   SFRSYM    DATA     BYTE      TIM3_CR1
+      000000F8H   SFRSYM    DATA     BYTE      DRV_OUT
+      0000009FH   SFRSYM    DATA     BYTE      TIM4_CR1
+      000000E0H   SFRSYM    DATA     BYTE      ACC
+      000000DBH   SFRSYM    DATA     BYTE      LVSR
+      000000A8H.4 SFRSYM    DATA     BIT       ES0
+      00000085H   SFRSYM    DATA     BYTE      FLA_CR
+      0000008AH   SFRSYM    DATA     BYTE      IP0
+      0000008BH   SFRSYM    DATA     BYTE      IP1
+      0000008CH   SFRSYM    DATA     BYTE      IP2
+      00000098H.2 SFRSYM    DATA     BIT       RB8
+      0000008DH   SFRSYM    DATA     BYTE      IP3
+      000000A8H.0 SFRSYM    DATA     BIT       EX0
+      00000098H.3 SFRSYM    DATA     BIT       TB8
+      000000A8H.2 SFRSYM    DATA     BIT       EX1
+      000000D0H.0 SFRSYM    DATA     BIT       P
+      000000D8H   SFRSYM    DATA     BYTE      UT2_CR
+      00000089H   SFRSYM    DATA     BYTE      UT2_DR
+      00000098H.5 SFRSYM    DATA     BIT       SM2
+      000000D0H.3 SFRSYM    DATA     BIT       RS0
+      000000D0H.4 SFRSYM    DATA     BIT       RS1
+      000000C1H   SFRSYM    DATA     BYTE      MDU_CR
+      000000F8H.7 SFRSYM    DATA     BIT       MOE
+      00000098H.4 SFRSYM    DATA     BIT       REN
+      000000D7H   SFRSYM    DATA     BYTE      CMP_SR
+      000000D8H.6 SFRSYM    DATA     BIT       UT2MOD0
+      000000D8H.7 SFRSYM    DATA     BIT       UT2MOD1
+      000000D1H   SFRSYM    DATA     BYTE      P1_IE
+      000000D2H   SFRSYM    DATA     BYTE      P1_IF
+      000000D3H   SFRSYM    DATA     BYTE      P4_IE
+      000000D4H   SFRSYM    DATA     BYTE      P4_IF
+      000000ACH   SFRSYM    DATA     WORD      TIM2__DR
+      000000FCH   SFRSYM    DATA     BYTE      P0_OE
+      000000A4H   SFRSYM    DATA     WORD      TIM3__DR
+      000000FDH   SFRSYM    DATA     BYTE      P1_OE
+      00000094H   SFRSYM    DATA     WORD      TIM4__DR
+      000000D0H.5 SFRSYM    DATA     BIT       F0
+      000000FEH   SFRSYM    DATA     BYTE      P2_OE
+      000000D0H.1 SFRSYM    DATA     BIT       F1
+      000000FFH   SFRSYM    DATA     BYTE      P3_OE
+      00000080H.0 SFRSYM    DATA     BIT       GP00
+      000000D8H.0 SFRSYM    DATA     BIT       UT2RI
+      000000E9H   SFRSYM    DATA     BYTE      P4_OE
+      00000090H.0 SFRSYM    DATA     BIT       GP10
+      00000080H.1 SFRSYM    DATA     BIT       GP01
+      000000A8H.6 SFRSYM    DATA     BIT       RTCIE
+      000000FBH   SFRSYM    DATA     BYTE      P5_OE
+      000000A0H.0 SFRSYM    DATA     BIT       GP20
+      00000090H.1 SFRSYM    DATA     BIT       GP11
+      00000080H.2 SFRSYM    DATA     BIT       GP02
+      000000D8H.1 SFRSYM    DATA     BIT       UT2TI
+      000000B0H.0 SFRSYM    DATA     BIT       GP30
+      000000A0H.1 SFRSYM    DATA     BIT       GP21
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 60
+
+
+      00000090H.2 SFRSYM    DATA     BIT       GP12
+      00000080H.3 SFRSYM    DATA     BIT       GP03
+      000000A8H.1 SFRSYM    DATA     BIT       TSDIE
+      000000D0H   SFRSYM    DATA     BYTE      PSW
+      000000B8H.0 SFRSYM    DATA     BIT       GP40
+      000000B0H.1 SFRSYM    DATA     BIT       GP31
+      000000A0H.2 SFRSYM    DATA     BIT       GP22
+      00000090H.3 SFRSYM    DATA     BIT       GP13
+      00000080H.4 SFRSYM    DATA     BIT       GP04
+      000000A8H.3 SFRSYM    DATA     BIT       SPIIE
+      00000088H.5 SFRSYM    DATA     BIT       TSDIF
+      000000C0H.0 SFRSYM    DATA     BIT       GP50
+      000000B8H.1 SFRSYM    DATA     BIT       GP41
+      000000B0H.2 SFRSYM    DATA     BIT       GP32
+      000000A0H.3 SFRSYM    DATA     BIT       GP23
+      00000090H.4 SFRSYM    DATA     BIT       GP14
+      00000080H.5 SFRSYM    DATA     BIT       GP05
+      000000C0H.1 SFRSYM    DATA     BIT       GP51
+      000000B8H.2 SFRSYM    DATA     BIT       GP42
+      000000B0H.3 SFRSYM    DATA     BIT       GP33
+      000000A0H.4 SFRSYM    DATA     BIT       GP24
+      00000090H.5 SFRSYM    DATA     BIT       GP15
+      00000080H.6 SFRSYM    DATA     BIT       GP06
+      00000088H.0 SFRSYM    DATA     BIT       IT00
+
+      01001149H   BLOCK     CODE     ---       LVL=0
+      01001149H   LINE      CODE     ---       #11
+      01001149H   LINE      CODE     ---       #12
+      01001149H   LINE      CODE     ---       #13
+      01001153H   LINE      CODE     ---       #14
+      0100115DH   LINE      CODE     ---       #15
+      01001164H   LINE      CODE     ---       #16
+      0100116AH   LINE      CODE     ---       #17
+      01001174H   LINE      CODE     ---       #18
+      0100117BH   LINE      CODE     ---       #19
+      01001182H   LINE      CODE     ---       #20
+      01001186H   LINE      CODE     ---       #21
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010012D4H   BLOCK     CODE     ---       LVL=0
+      010012D4H   LINE      CODE     ---       #29
+      010012D4H   LINE      CODE     ---       #30
+      010012D4H   LINE      CODE     ---       #31
+      010012DBH   LINE      CODE     ---       #32
+      010012E1H   LINE      CODE     ---       #33
+      010012E7H   LINE      CODE     ---       #34
+      010012EDH   LINE      CODE     ---       #35
+      010012F3H   LINE      CODE     ---       #36
+      010012F7H   LINE      CODE     ---       #37
+      010012FDH   LINE      CODE     ---       #38
+      01001301H   LINE      CODE     ---       #39
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001302H   BLOCK     CODE     ---       LVL=0
+      01001302H   LINE      CODE     ---       #46
+      01001302H   LINE      CODE     ---       #47
+      01001302H   LINE      CODE     ---       #48
+      01001309H   LINE      CODE     ---       #49
+      0100130FH   LINE      CODE     ---       #50
+      01001315H   LINE      CODE     ---       #51
+      0100131BH   LINE      CODE     ---       #52
+      01001321H   LINE      CODE     ---       #53
+      01001325H   LINE      CODE     ---       #54
+      0100132BH   LINE      CODE     ---       #55
+      0100132FH   LINE      CODE     ---       #56
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 61
+
+
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001330H   BLOCK     CODE     ---       LVL=0
+      01001330H   LINE      CODE     ---       #63
+      01001330H   LINE      CODE     ---       #64
+      01001330H   LINE      CODE     ---       #65
+      01001337H   LINE      CODE     ---       #66
+      0100133DH   LINE      CODE     ---       #67
+      01001343H   LINE      CODE     ---       #68
+      01001349H   LINE      CODE     ---       #69
+      0100134FH   LINE      CODE     ---       #70
+      01001353H   LINE      CODE     ---       #71
+      01001359H   LINE      CODE     ---       #72
+      0100135DH   LINE      CODE     ---       #73
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001408H   BLOCK     CODE     ---       LVL=0
+      00000006H   SYMBOL    DATA     INT       Xn0
+      01001408H   LINE      CODE     ---       #83
+      01001408H   LINE      CODE     ---       #84
+      01001408H   LINE      CODE     ---       #85
+      01001410H   LINE      CODE     ---       #86
+      01001418H   LINE      CODE     ---       #87
+      01001420H   LINE      CODE     ---       #88
+      ---         BLOCKEND  ---      ---       LVL=0
+      00000006H   SYMBOL    DATA     INT       Xn0
+      00000006H   SYMBOL    DATA     INT       Xn0
+      00000006H   SYMBOL    DATA     INT       Xn0
+
+      01001237H   BLOCK     CODE     ---       LVL=0
+      0200005FH   SYMBOL    XDATA    INT       Xn1
+      00000004H   SYMBOL    DATA     INT       Xn0
+      00000002H   SYMBOL    DATA     INT       K
+      01001237H   LINE      CODE     ---       #144
+      0100123FH   LINE      CODE     ---       #145
+      0100123FH   LINE      CODE     ---       #146
+      01001247H   LINE      CODE     ---       #147
+      01001256H   LINE      CODE     ---       #148
+      0100125EH   LINE      CODE     ---       #149
+      01001266H   LINE      CODE     ---       #150
+      0100126EH   LINE      CODE     ---       #151
+      ---         BLOCKEND  ---      ---       LVL=0
+      00000004H   SYMBOL    DATA     INT       Xn0
+      00000002H   SYMBOL    DATA     INT       K
+      00000004H   SYMBOL    DATA     INT       Xn0
+      00000002H   SYMBOL    DATA     INT       K
+      00000004H   SYMBOL    DATA     INT       Xn0
+      00000002H   SYMBOL    DATA     INT       K
+      00000006H   SYMBOL    DATA     INT       Xn1
+      00000004H   SYMBOL    DATA     INT       Xn0
+      00000006H   SYMBOL    DATA     WORD      Xn1
+      00000004H   SYMBOL    DATA     WORD      Xn0
+      00000002H   SYMBOL    DATA     WORD      Yn
+      00000006H   SYMBOL    DATA     WORD      Xn1
+      00000004H   SYMBOL    DATA     WORD      Xn0
+      00000002H   SYMBOL    DATA     WORD      Yn
+      00000006H   SYMBOL    DATA     INT       i_alp
+      00000004H   SYMBOL    DATA     INT       i_bet
+      00000006H   SYMBOL    DATA     WORD      Xn0
+      00000004H   SYMBOL    DATA     WORD      Xn1
+      00000006H   SYMBOL    DATA     INT       Xn0
+      00000004H   SYMBOL    DATA     INT       Xn1
+      00000002H   SYMBOL    DATA     ---       lusResult32
+
+      ---         MODULE    ---      ---       ?C_STARTUP
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 62
+
+
+      01000000H   PUBLIC    CODE     ---       ?C_STARTUP
+      000000E0H   SYMBOL    DATA     ---       ACC
+      000000F0H   SYMBOL    DATA     ---       B
+      00000083H   SYMBOL    DATA     ---       DPH
+      00000082H   SYMBOL    DATA     ---       DPL
+      00000000H   SYMBOL    NUMBER   ---       IBPSTACK
+      00000100H   SYMBOL    NUMBER   ---       IBPSTACKTOP
+      000000FFH   SYMBOL    NUMBER   ---       IDATALEN
+      01000DCAH   SYMBOL    CODE     ---       IDATALOOP
+      00000000H   SYMBOL    NUMBER   ---       PBPSTACK
+      00000100H   SYMBOL    NUMBER   ---       PBPSTACKTOP
+      00000000H   SYMBOL    NUMBER   ---       PDATALEN
+      00000000H   SYMBOL    NUMBER   ---       PDATASTART
+      00000000H   SYMBOL    NUMBER   ---       PPAGE
+      00000000H   SYMBOL    NUMBER   ---       PPAGEENABLE
+      000000A0H   SYMBOL    DATA     ---       PPAGE_SFR
+      00000081H   SYMBOL    DATA     ---       SP
+      01000DC7H   SYMBOL    CODE     ---       STARTUP1
+      00000000H   SYMBOL    NUMBER   ---       XBPSTACK
+      00000000H   SYMBOL    NUMBER   ---       XBPSTACKTOP
+      00000FD8H   SYMBOL    NUMBER   ---       XDATALEN
+      01000DD5H   SYMBOL    CODE     ---       XDATALOOP
+      00000000H   SYMBOL    NUMBER   ---       XDATASTART
+      01000000H   LINE      CODE     ---       #126
+      01000DC7H   LINE      CODE     ---       #133
+      01000DC9H   LINE      CODE     ---       #134
+      01000DCAH   LINE      CODE     ---       #135
+      01000DCBH   LINE      CODE     ---       #136
+      01000DCDH   LINE      CODE     ---       #140
+      01000DD0H   LINE      CODE     ---       #141
+      01000DD2H   LINE      CODE     ---       #143
+      01000DD4H   LINE      CODE     ---       #147
+      01000DD5H   LINE      CODE     ---       #148
+      01000DD6H   LINE      CODE     ---       #149
+      01000DD7H   LINE      CODE     ---       #150
+      01000DD9H   LINE      CODE     ---       #151
+      01000DDBH   LINE      CODE     ---       #185
+      01000DDEH   LINE      CODE     ---       #196
+
+      ---         MODULE    ---      ---       ?C?FPADD
+      0100007DH   PUBLIC    CODE     ---       ?C?FPADD
+      01000079H   PUBLIC    CODE     ---       ?C?FPSUB
+
+      ---         MODULE    ---      ---       ?C?FPMUL
+      0100016EH   PUBLIC    CODE     ---       ?C?FPMUL
+
+      ---         MODULE    ---      ---       ?C?FPDIV
+      01000277H   PUBLIC    CODE     ---       ?C?FPDIV
+
+      ---         MODULE    ---      ---       ?C?FPCMP
+      01000316H   PUBLIC    CODE     ---       ?C?FPCMP
+      01000314H   PUBLIC    CODE     ---       ?C?FPCMP3
+
+      ---         MODULE    ---      ---       ?C?FCAST
+      01000397H   PUBLIC    CODE     ---       ?C?FCASTC
+      01000392H   PUBLIC    CODE     ---       ?C?FCASTI
+      0100038DH   PUBLIC    CODE     ---       ?C?FCASTL
+
+      ---         MODULE    ---      ---       ?C?CASTF
+      010003CBH   PUBLIC    CODE     ---       ?C?CASTF
+
+      ---         MODULE    ---      ---       ?C?FPGETOPN
+      01000402H   PUBLIC    CODE     ---       ?C?FPGETOPN2
+      01000437H   PUBLIC    CODE     ---       ?C?FPNANRESULT
+      01000441H   PUBLIC    CODE     ---       ?C?FPOVERFLOW
+LX51 LINKER/LOCATER V4.66.100.0                                                       12/29/2025  08:49:06  PAGE 63
+
+
+      01000419H   PUBLIC    CODE     ---       ?C?FPRESULT
+      0100042DH   PUBLIC    CODE     ---       ?C?FPRESULT2
+      0100043EH   PUBLIC    CODE     ---       ?C?FPUNDERFLOW
+
+      ---         MODULE    ---      ---       ?C_INIT
+      01000E1CH   PUBLIC    CODE     ---       ?C_START
+
+      ---         MODULE    ---      ---       ?C?LNEG
+      0100044CH   PUBLIC    CODE     ---       ?C?LNEG
+
+      ---         MODULE    ---      ---       ?C?SLCMP
+      0100045AH   PUBLIC    CODE     ---       ?C?SLCMP
+
+      ---         MODULE    ---      ---       ?C?SLSHR
+      01000470H   PUBLIC    CODE     ---       ?C?SLSHR
+
+      ---         MODULE    ---      ---       ?C?LSTXDATA
+      01000484H   PUBLIC    CODE     ---       ?C?LSTXDATA
+
+      ---         MODULE    ---      ---       ?C?LSTKXDATA
+      01000490H   PUBLIC    CODE     ---       ?C?LSTKXDATA
+
+      ---         MODULE    ---      ---       ?C?MEMSET
+      010004C1H   PUBLIC    CODE     ---       ?C?MEMSET
+
+Program Size: data=14.1 xdata=100 const=0 code=5195
+LX51 RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)

+ 43 - 0
System/FU6522_72.h

@@ -0,0 +1,43 @@
+/**
+ * @file     FU6522_72.h
+ * @version  V1.0.0
+ * @author   FortiorTech Hardware Team
+ * @date     2021-07-15 20:50:54
+ * @brief    This file contains ...
+ * 
+ * @copyright Copyright(C) 2022, Fortior Technology Co., Ltd. All rights reserved.
+ */
+
+#ifndef __FU6522_72_H__
+#define __FU6522_72_H__
+
+// Include external header file.
+#include <ctype.h>                      //ctype.h包含ASCII字符的分类和转换函数
+#include <intrins.h>                    //intrins.h包含空操作,左右位移等内嵌代码
+#include <math.h>                       //math.h包含算术运算的数学函数
+#include <setjmp.h>                     //setjmp.h包含setjump和longjump程序的jump_buf类型
+#include <stdarg.h>                     //stdarg.h包含访问函数参数的宏
+#include <stdio.h>                      //stdio.h包含流输入输出的函数原型
+#include <stdlib.h>                     //stdlib.h包含数据类型装换、产生随机数和存储器定位函数
+#include <string.h>                     //string.h包含字符串和缓存操作函数
+
+#include <FU6522_72_MCU.h>
+#include <FU6522_72_DMA.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Your code.
+// ...
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  //__FU6522_72_H__
+
+
+/*** (C) Copyright 2011-2022 Fortior Technology Co., Ltd. ***/
+

+ 38 - 0
System/FU6522_72_DMA.h

@@ -0,0 +1,38 @@
+#ifndef __FU6522_72_DMA_H__
+#define __FU6522_72_DMA_H__
+
+#include <FU6522_72_MCU.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// DMA Pipe Config
+#define DMA_PIPE        (DMACFG2 | DMACFG1 | DMACFG0)
+#define UART1_XDATA     0x00                                         // DMA管道--UART1-->XDATA
+#define XDATA_UART1     (DMACFG0)                                    // DMA管道--UART1<--XDATA
+#define I2C_XDATA       (DMACFG1)                                    // DMA管道--I2C  -->XDATA
+#define XDATA_I2C       (DMACFG0 | DMACFG1)                          // DMA管道--I2C  <--XDATA
+#define SPI_XDATA       (DMACFG2)                                    // DMA管道--SPI  -->XDATA
+#define XDATA_SPI       (DMACFG2 | DMACFG0)                          // DMA管道--SPI  <--XDATA
+#define UART2_XDATA     (DMACFG2 | DMACFG1)                          // DMA管道--UART2-->XDATA
+#define XDATA_UART2     (DMACFG2 | DMACFG1 | DMACFG0)                // DMA管道--UART2<--XDATA
+
+// DMA IE config
+#define DMA_IE_EN       DMAIE                                        // 使能DMA中断
+#define DMA_IE_DIS      0x00                                         // 禁能DMA中断
+
+// DMA transmission order
+#define DMA_FHSB        ENDIAN                                       // DMA先发高8位
+#define DMA_FLSB        0x00                                         // DMA先发低8位
+
+#define Wait_DMA(a)       while (ReadBit(*(&DMA0_CR0 + a), DMABSY))
+#define Switch_DMA(a)     SetBit(*(&DMA0_CR0 + a), DMAEN | DMABSY)
+
+void Conf_DMA(uint8_t DMAx, uint8_t DMAPipe, uint16_t DMAAddr, uint8_t DMALen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 1305 - 0
System/FU6522_72_MCU.h

@@ -0,0 +1,1305 @@
+/******************* (C) COPYRIGHT 2021 Fortiortech Shenzhen *******************
+* File Name          : FU65xx_2_MCU.h
+* Creat Author       : Bruce, R&D
+* Modify Author      : Bruce, R&D
+* Creat Date         : 2021-08-06
+* Modify Date        : 2021-12-16
+* Description        : Application Department Version V1.0.1, update date 2025-08-14
+********************************************************************************
+* All Rights Reserved
+*******************************************************************************/
+
+#ifndef __FU6522_72_MCU_H__
+#define __FU6522_72_MCU_H__ 
+
+/**************************************************************************************************///Including Header Files
+#include <FU6522_72_Type.h>
+/**************************************************************************************************///Define Macro
+#define FREC                            (24000000)                              // MCU工作频率
+/**************************************************************************************************///Function Subject
+#define SetReg(reg, val1, val2)         ((reg) = (reg) & (~(val1)) | (val2))    // 将reg中val1对应的位写val2
+#define SetBit(reg, val)                ((reg) |=  (val))                       // 将reg中val对应的位写1
+#define ClrBit(reg, val)                ((reg) &= ~(val))                       // 将reg中val对应的位写0
+#define XorBit(reg, val)                ((reg) ^=  (val))                       // 将reg中val对应的位取反
+#define ReadBit(reg, val)               (((reg) & (val)) != 0)                  // 判断reg中val对应的位是否为1
+/**************************************************************************************************///Register Map
+// 搜索快照寄存器请在Keil搜索"[0-9A-Z]__[A-Z]",勾选"Match Case"和"Regular Expressior"
+// 快速搜索外设方法:在搜索对话框中输入"//"+外设名称.例:搜索TIMER1,则输入"//TIM1"
+
+/******************************************************************************///SFR
+ SFR16(DPTR, 0x82);                                 							// RV:0000H  8051指针
+ SFR(PSW, 0xd0);                                 								// RV:  00H  8051状态寄存器
+ SBIT(CY, 0xd0,	7);                      										//               rw-- 进/借位标志
+ SBIT(AC, 0xd0,	6);                      										//               rw-- BCD进/借位标志
+ SBIT(F0, 0xd0,	5);                      										//               rw-- 用户自定义标志0
+ SBIT(RS1,0xd0,	4);                      										//               rw-- R寄存器换页位1
+ SBIT(RS0,0xd0,	3);                      										//               rw-- R寄存器换页位0
+ SBIT(OV, 0xd0,	2);                      										//               rw-- 算术运算溢出标志
+ SBIT(F1, 0xd0,	1);                      										//               rw-- 用户自定义标志1
+ SBIT(P,  0xd0,	0);                      										//               rw-- 奇偶标志
+
+ SFR(ACC, 0xe0);                                 								// RV:  00H  8051 A寄存器
+/******************************************************************************///RST
+ SFR(RST_SR, 0xc9);                                 								// RV:  xxH  复位状态寄存器
+ #define RSTPOW                                   0x80                          //               r--- 上电复位标志
+ #define RSTCLR                                   0x80                          //               w1-- 复位标志清零
+ #define RSTEXT                                   0x40                          //               r--- 外部复位标志
+ #define RSTLVD                                   0x20                          //               r--- 低压复位标志
+ #define RSTWDT                                   0x08                          //               r--- 看门狗复位标志
+ #define RSTFED                                   0x04                          //               r--- 代码保护复位
+ #define RSTDBG                                   0x02                          //               r--- 调试接口复位
+ #define SOFTR                                    0x01                          //               rw1- 软复位标志位
+/******************************************************************************///RTC
+ #define RTC_TM                         *(_IO uint16 xdata *)0x402c             // RV:FFFFH  RTC计数寄存器
+ #define RTC_STA                        *(_IO  uint8 xdata *)0x402e             // RV:  00H  RTC控制寄存器
+ #define RTC_EN                                   0x80                          //               rw-- RTC使能
+ #define RTC_IF                                   0x40                          //               rw0- RTC中断标志
+ #define ISOSCEN                                  0x10                          //               rw-- 内部慢时钟使能
+ 
+/******************************************************************************///CLOCK_CAL
+ #define CAL_CR0                        *(_IO  uint8 xdata *)0x4044             // RV:  00H  时钟校准寄存器
+ #define CAL_STA                                  0x80                          //               rw1- CLOCK_CAL使能, r-- 0-->Done 1-->ING
+ #define CAL_CR1                        *(_IO  uint8 xdata *)0x4045             // RV:  00H  时钟校准寄存器
+/******************************************************************************///IRQ
+ // IRQ Channel
+ // LVW/TSD         interrupt 0
+ // INT0            interrupt 1
+ // INT1            interrupt 2
+ // DRV             interrupt 3
+ // TIM2            interrupt 4
+ // TIM1            interrupt 5
+ // ADC             interrupt 6
+ // CMP/HALL        interrupt 7
+ // RTC             interrupt 8
+ // TIM3            interrupt 9
+ // SysTick         interrupt 10
+ // TIM4            interrupt 11
+ // CMP3            interrupt 12
+ // I2C/UART1       interrupt 13
+ // SPI/UART2/LIN   interrupt 14
+ // DMA             interrupt 15
+
+ SFR(TCON,	0x88);                                 								// RV:  00H  8051中断控制寄存器
+ SBIT(TSDIF,0x88, 5);                     										//               rw0-  TSD温度感应中断标志
+ SBIT(IT11,	0x88, 4);                     										//               rw--  外部中断1触发配置1
+ SBIT(IT10,	0x88, 3);                     										//               rw--  外部中断1触发配置0
+ SBIT(IF0,	0x88, 2);                     										//               rw0-  外部中断0标志
+ SBIT(IT01,	0x88, 1);                     										//               rw--  外部中断0触发配置1
+ SBIT(IT00,	0x88, 0);                     										//               rw--  外部中断0触发配置0
+
+ SFR(IE,	0xa8);                                 								// RV:  00H  8051 中断开关
+ SBIT(EA,	0xa8, 7);                       									//               rw-- MCU总中断使能
+ SBIT(RTCIE,0xa8, 6);                       									//               rw-- RTC中断使能
+ SBIT(ES0,	0xa8, 4);                       									//               rw-- UART中断使能
+ SBIT(SPIIE,0xa8, 3);                       									//               rw-- SPI中断使能
+ SBIT(EX1,	0xa8, 2);                       									//               rw-- 外部中断1使能
+ SBIT(TSDIE,0xa8, 1);                       									//               rw-- TSD中断使能
+ SBIT(EX0,	0xa8, 0);                       									//               rw-- 外部中断0使能
+
+ SFR(IP0, 0x8a);                                 								// RV:  00H  外设中断优先级设置G0
+ #define PDRV1                                    0x80                          //               rw-- DRV优先级配置1
+ #define PDRV0                                    0x40                          //               rw-- DRV优先级配置0
+ #define PX11                                     0x20                          //               rw-- 外部中断1优先级配置1
+ #define PX10                                     0x10                          //               rw-- 外部中断1优先级配置0
+ #define PX01                                     0x08                          //               rw-- 外部中断0优先级配置1
+ #define PX00                                     0x04                          //               rw-- 外部中断0优先级配置0
+ #define PLVW_TSD1                                0x02                          //               rw-- LVW/TSD优先级配置1
+ #define PLVW_TSD0                                0x01                          //               rw-- LVW/TSD优先级配置0
+
+ SFR(IP1, 0x8b);                                 								// RV:  00H  外设中断优先级设置G1
+ #define PCMP_HALL1                               0x80                          //               rw-- CMP0/1/2/HALL优先级配置1
+ #define PCMP_HALL0                               0x40                          //               rw-- CMP0/1/2/HALL优先级配置0
+ #define PADC1                                    0x20                          //               rw-- ADC优先级配置1
+ #define PADC0                                    0x10                          //               rw-- ADC优先级配置0
+ #define PTIM11                                   0x08                          //               rw-- TIM1优先级配置1
+ #define PTIM10                                   0x04                          //               rw-- TIM1优先级配置0
+ #define PTIM21                                   0x02                          //               rw-- TIM2优先级配置1
+ #define PTIM20                                   0x01                          //               rw-- TIM2优先级配置0
+
+ SFR(IP2, 0x8c);                                 								// RV:  00H  外设中断优先级设置G2
+ #define PTIM41                                   0x80                          //               rw-- TIM4优先级配置1
+ #define PTIM40                                   0x40                          //               rw-- TIM4优先级配置0
+ #define PSYSTICK1                                0x20                          //               rw-- SysTick优先级配置1
+ #define PSYSTICK0                                0x10                          //               rw-- SysTick优先级配置0
+ #define PTIM31                                   0x08                          //               rw-- TIM3优先级配置1
+ #define PTIM30                                   0x04                          //               rw-- TIM3优先级配置0
+ #define PRTC1                                    0x02                          //               rw-- RTC优先级配置1
+ #define PRTC0                                    0x01                          //               rw-- RTC优先级配置0
+
+ SFR(IP3, 0x8d);                                 								// RV:  00H  外设中断优先级设置G3
+ #define PDMA1                                    0x80                          //               rw-- DMA优先级配置1
+ #define PDMA0                                    0x40                          //               rw-- DMA优先级配置0
+ #define PSPI_UT21                                0x20                          //               rw-- SPI/UT2优先级配置1
+ #define PSPI_UT20                                0x10                          //               rw-- SPI/UT2优先级配置0
+ #define PI2C_UT11                                0x08                          //               rw-- I2C/UT1优先级配置1
+ #define PI2C_UT10                                0x04                          //               rw-- I2C/UT1优先级配置0
+ #define PCMP31                                   0x02                          //               rw-- CMP3优先级配置1
+ #define PCMP30                                   0x01                          //               rw-- CMP3优先级配置0
+/******************************************************************************///I2C
+ #define I2C_CR                         *(_IO  uint8 xdata *)0x4028             // RV:  00H  I2C控制寄存器
+ #define I2CEN                                    0x80                          //               rw-- I2C使能
+ #define I2CMS                                    0x40                          //               rw-- 主/从机模式选择
+ #define I2CDMANAKINT                             0x10                          //               rw-- 使能后当DMA传输时忽略NAK应答引起的传输中断
+ #define I2CDMAAUTO                               0x08                          //               rw-- 使能后当DMA传输时不用手动发送第一个数据字节
+ #define I2CSPD1                                  0x04                          //               rw-- I2C传输频率配置1
+ #define I2CSPD0                                  0x02                          //               rw-- I2C传输频率配置0
+ #define I2CIE                                    0x01                          //               rw-- 中断控制
+
+ #define I2C_SR                         *(_IO  uint8 xdata *)0x402b             // RV:  00H  I2C状态寄存器
+ #define I2CBSY                                   0x80                          //               r--- I2C忙标志
+ #define DMOD                                     0x40                          //               rw-- I2C读写控制
+ #define I2CSTA                                   0x10                          //               rw-- START信号控制
+ #define I2CSTP                                   0x08                          //               rw-- STOP信号控制
+ #define STR                                      0x04                          //               rw0- I2C事件完成标志
+ #define NACK                                     0x02                          //               rw-- 应答信号控制
+ #define I2CIF                                    0x01                          //               r--- 中断标志
+
+ #define I2C_ID                         *(_IO  uint8 xdata *)0x4029             // RV:  AAH  本机2C地址
+ #define GC                                       0x01                          //               rw-- 广播模式
+
+ #define I2C_DR                         *(_IO  uint8 xdata *)0x402a             // RV:  00H  I2C数据寄存器
+/******************************************************************************///SPI
+ #define SPI_CR0                        *(_IO  uint8 xdata *)0x4030             // RV:  07H  SPI控制寄存器1
+ #define SPIBSY                                   0x80                          //               r--- 忙标志
+ #define SPIMS                                    0x40                          //               rw-- 主/从机配置
+ #define CPHA                                     0x20                          //               rw-- 时钟相位
+ #define CPOL                                     0x10                          //               rw-- 时钟空闲电平
+ #define SLVSEL                                   0x08                          //               r--- NSS滤波后的信号
+ #define NSSIN                                    0x04                          //               r--- NSS即时信号
+ #define SRMT                                     0x02                          //               r--- 移位寄存器空标志
+ #define RXBMT                                    0x01                          //               r--- 接收缓冲器空标志
+
+ #define SPI_CR1                        *(_IO  uint8 xdata *)0x4031             // RV:  02H  SPI控制寄存器2
+ #define SPIIF                                    0x80                          //               rw0- 中断标志
+ #define WCOL                                     0x40                          //               rw0- 写冲突标志
+ #define MODF                                     0x20                          //               rw0- 模式错误标志
+ #define RXOVRN                                   0x10                          //               rw0- 接收溢出标志
+ #define NSSMOD1                                  0x08                          //               rw-- SPI模式配置位1
+ #define NSSMOD0                                  0x04                          //               rw-- SPI模式配置位0
+ #define TXBMT                                    0x02                          //               r--- 发送缓冲器空标志
+ #define SPIEN                                    0x01                          //               rw-- SPI使能
+
+ #define SPI_CLK                        *(_IO  uint8 xdata *)0x4032             // RV:  00H  SPI时钟配置寄存器
+ #define SPI_DR                         *(_IO  uint8 xdata *)0x4033             // RV:  00H  SPI数据寄存器
+/******************************************************************************///UART
+ SFR(UT_CR,	  0x98);                                 							// RV:  00H  UART控制寄存器
+ SBIT(UT_MOD1,0x98,	7);                    										//               rw-- UART模式配置1
+ SBIT(UT_MOD0,0x98,	6);                    										//               rw-- UART模式配置0
+ SBIT(SM2,	  0x98,	5);                    										//               rw-- 多机通信使能
+ SBIT(REN,	  0x98,	4);                    										//               rw-- 接收使能
+ SBIT(TB8,	  0x98,	3);                    										//               rw-- 9位模式下发送的第9位
+ SBIT(RB8,	  0x98,	2);                    										//               rw-- 9位模式下接收的第9位
+ SBIT(TI,	  0x98,	1);                    										//               rw-- 发送完成标志
+ SBIT(RI,	  0x98,	0);                    										//               rw-- 接收完成标志
+
+ SFR(UT_DR,	0x99);                                 								// RV:  00H  UART数据寄存器
+
+ SFR16(UT_BAUD,	0x9a);                                 							// RV:009bH  UART波特率控制寄存器
+ #define BAUD_SEL                                 0x8000                        //               rw-- 倍频使能
+ #define UART_RX_INV                              0x4000                        //               rw-- RXD反相使能
+ #define UART_TX_INV                              0x2000                        //               rw-- TXD反相使能
+
+ SFR(UT2_CR, 0xd8);                                 							// RV:  00H  UART2控制寄存器
+ SBIT(UT2MOD1,	0xd8, 7);                   									//               rw-- UART2模式配置1
+ SBIT(UT2MOD0,	0xd8, 6);                   									//               rw-- UART2模式配置0
+ SBIT(UT2SM2,	0xd8, 5);                   									//               rw-- 多机通信使能
+ SBIT(UT2REN,	0xd8, 4);                   									//               rw-- 接收使能
+ SBIT(UT2TB8,	0xd8, 3);                   									//               rw-- 9位模式下发送的第9位
+ SBIT(UT2RB8,	0xd8, 2);                   									//               rw-- 9位模式下接收的第9位
+ SBIT(UT2TI,	0xd8, 1);                   									//               rw-- 发送完成标志
+ SBIT(UT2RI,	0xd8, 0);                   									//               rw-- 接收完成标志
+
+ #define UT2_BAUD                       *(_IO uint16 xdata *)0x4042             // RV:009bH  UART2波特率控制寄存器
+ #define BAUD2_SEL                                0x8000                        //               rw-- 倍频使能
+ #define UART2_RX_INV                             0x4000                        //               rw-- RXD反相使能
+ #define UART2_TX_INV                             0x2000                        //               rw-- TXD反相使能
+ #define UART2IEN                                 0x1000                        //               rw-- UART2中断使能
+ SFR(UT2_DR, 0x89);                                 							// RV:  00H  UART2数据寄存器
+
+/******************************************************************************///MDU
+ SFR(MDU_CR, 0xc1);                                 							// RV:  00H  MDU控制寄存器
+ #define MDUBSY                                   0x80                          //                 r--- 当使能SMDU时, 用于表示MDU繁忙
+ #define MDUSTA3                                  0x40                          //                 rw1- 当使能SMDU时, 用于表示启动计算单元3
+ #define MDUSTA2                                  0x20                          //                 rw1- 当使能SMDU时, 用于表示启动计算单元2
+ #define MDUSTA1                                  0x10                          //                 rw1- 当使能SMDU时, 用于表示启动计算单元1
+ #define MDUSTA0                                  0x08                          //                 rw1- 当使能SMDU时, 用于表示启动计算单元0
+ #define MDUMOD2                                  0x04                          //                 rw-- 当使能SMDU时, 用于表示MDU运行模式配置2
+ #define MDUMOD1                                  0x02                          //                 rw-- 当使能SMDU时, 用于表示MDU运行模式配置1
+ #define MDUMOD0                                  0x01                          //                 rw-- 当使能SMDU时, 用于表示MDU运行模式配置0
+ 
+ SFR(PI_CR,	0xf9);                                 								// RV:  00H  PI控制寄存器
+ #define T2TSS                                    0x80                          //               rw-- TIM2步进模式输入使能&PRD使能
+ #define DRV_MD                                   0x04                          //               rw-- 0:中央对齐 1:锯齿波
+ #define HINV                                     0x02                          //               rw-- 上管反相使能
+ #define LINV                                     0x01                          //               rw-- 下管反相使能
+ 
+/******************************************************************************///SMDU
+ #define MUL_LEN                        8                                       // 乘法单元所占字节数
+ #define DIV_LEN                        12                                      // 除法单元所占字节数
+ #define LPF_LEN                        8                                       // 低通滤波单元所占字节数
+ #define SCAT_LEN                       10                                      // Sin/Cos/ATan单元所占字节数
+ #define PI_LEN                         16                                      // PI单元所占字节数
+ #define PID_LEN                        20                                      // PID单元所占字节数
+
+ #define SCAT3_BADR                     0x0ef8                                  // SMDU基地址/Sin/Cos/ATan单元3首地址
+ #define SCAT2_BADR                     (SCAT3_BADR + SCAT_LEN)                 // Sin/Cos/ATan单元2首地址
+ #define SCAT1_BADR                     (SCAT2_BADR + SCAT_LEN)                 // Sin/Cos/ATan单元1首地址
+ #define SCAT0_BADR                     (SCAT1_BADR + SCAT_LEN)                 // Sin/Cos/ATan单元0首地址
+ #define DIV3_BADR                      (SCAT0_BADR + SCAT_LEN)                 // 除法单元3首地址
+ #define DIV2_BADR                      (DIV3_BADR  + DIV_LEN)                  // 除法单元2首地址
+ #define MUL3_BADR                      (DIV2_BADR  + DIV_LEN)                  // 乘法单元3首地址
+ #define MUL2_BADR                      (MUL3_BADR  + MUL_LEN)                  // 乘法单元2首地址
+ #define PI3_BADR                       (MUL2_BADR  + MUL_LEN)                  // PI单元3首地址
+ #define PI2_BADR                       (PI3_BADR   + PID_LEN)                  // PI单元2首地址
+ #define LPF3_BADR                      (PI2_BADR   + PID_LEN)                  // 低通滤波单元3首地址
+ #define LPF2_BADR                      (LPF3_BADR  + LPF_LEN)                  // 低通滤波单元2首地址
+ #define DIV1_BADR                      (LPF2_BADR  + LPF_LEN)                  // 除法单元 1首地址
+ #define DIV0_BADR                      (DIV1_BADR  + DIV_LEN)                  // 除法单元0首地址
+ #define MUL1_BADR                      (DIV0_BADR  + DIV_LEN)                  // 乘法单元1首地址
+ #define MUL0_BADR                      (MUL1_BADR  + MUL_LEN)                  // 乘法单元0首地址
+ #define PI1_BADR                       (MUL0_BADR  + MUL_LEN)                  // PI单元1首地址
+ #define PI0_BADR                       (PI1_BADR   + PI_LEN)                   // PI单元0首地址
+ #define LPF1_BADR                      (PI0_BADR   + PI_LEN)                   // 低通滤波单元1首地址
+ #define LPF0_BADR                      (LPF1_BADR  + LPF_LEN)                  // 低通滤波单元0首地址
+
+ #define SCAT3_COS                *(_IO uint16 xdata *)(SCAT3_BADR + 0x00)      // rw-- Cos
+ #define SCAT3_SIN                *(_IO uint16 xdata *)(SCAT3_BADR + 0x02)      // rw-- Sin
+ #define SCAT3_THE                *(_IO uint16 xdata *)(SCAT3_BADR + 0x04)      // rw-- Angle
+ #define SCAT3_RES1               *(_IO uint16 xdata *)(SCAT3_BADR + 0x06)      // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
+ #define SCAT3_RES2               *(_IO uint16 xdata *)(SCAT3_BADR + 0x08)      // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
+
+ #define SCAT2_COS                *(_IO uint16 xdata *)(SCAT2_BADR + 0x00)      // rw-- Cos
+ #define SCAT2_SIN                *(_IO uint16 xdata *)(SCAT2_BADR + 0x02)      // rw-- Sin
+ #define SCAT2_THE                *(_IO uint16 xdata *)(SCAT2_BADR + 0x04)      // rw-- Angle
+ #define SCAT2_RES1               *(_IO uint16 xdata *)(SCAT2_BADR + 0x06)      // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
+ #define SCAT2_RES2               *(_IO uint16 xdata *)(SCAT2_BADR + 0x08)      // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
+
+ #define SCAT1_COS                *(_IO uint16 xdata *)(SCAT1_BADR + 0x00)      // rw-- Cos
+ #define SCAT1_SIN                *(_IO uint16 xdata *)(SCAT1_BADR + 0x02)      // rw-- Sin
+ #define SCAT1_THE                *(_IO uint16 xdata *)(SCAT1_BADR + 0x04)      // rw-- Angle
+ #define SCAT1_RES1               *(_IO uint16 xdata *)(SCAT1_BADR + 0x06)      // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
+ #define SCAT1_RES2               *(_IO uint16 xdata *)(SCAT1_BADR + 0x08)      // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
+
+ #define SCAT0_COS                *(_IO uint16 xdata *)(SCAT0_BADR + 0x00)      // rw-- Cos
+ #define SCAT0_SIN                *(_IO uint16 xdata *)(SCAT0_BADR + 0x02)      // rw-- Sin
+ #define SCAT0_THE                *(_IO uint16 xdata *)(SCAT0_BADR + 0x04)      // rw-- Angle
+ #define SCAT0_RES1               *(_IO uint16 xdata *)(SCAT0_BADR + 0x06)      // rw-- Sin/Cos模式下为Cos; ATan模式下为幅值
+ #define SCAT0_RES2               *(_IO uint16 xdata *)(SCAT0_BADR + 0x08)      // rw-- Sin/Cos模式下为Sin; ATan模式下为角度
+
+ #define DIV3_DAH                 *(_IO uint16 xdata *)(DIV3_BADR  + 0x00)      // rw-- 被除数高16位
+ #define DIV3_DAL                 *(_IO uint16 xdata *)(DIV3_BADR  + 0x02)      // rw-- 被除数低16位
+ #define DIV3_DB                  *(_IO uint16 xdata *)(DIV3_BADR  + 0x04)      // rw-- 除数
+ #define DIV3_DQH                 *(_IO uint16 xdata *)(DIV3_BADR  + 0x06)      // rw-- 商高16位
+ #define DIV3_DQL                 *(_IO uint16 xdata *)(DIV3_BADR  + 0x08)      // rw-- 商低16位
+ #define DIV3_DR                  *(_IO uint16 xdata *)(DIV3_BADR  + 0x0a)      // rw-- 余数
+
+ #define DIV2_DAH                 *(_IO uint16 xdata *)(DIV2_BADR  + 0x00)      // rw-- 被除数高16位
+ #define DIV2_DAL                 *(_IO uint16 xdata *)(DIV2_BADR  + 0x02)      // rw-- 被除数低16位
+ #define DIV2_DB                  *(_IO uint16 xdata *)(DIV2_BADR  + 0x04)      // rw-- 除数
+ #define DIV2_DQH                 *(_IO uint16 xdata *)(DIV2_BADR  + 0x06)      // rw-- 商高16位
+ #define DIV2_DQL                 *(_IO uint16 xdata *)(DIV2_BADR  + 0x08)      // rw-- 商低16位
+ #define DIV2_DR                  *(_IO uint16 xdata *)(DIV2_BADR  + 0x0a)      // rw-- 余数
+
+ #define DIV1_DAH                 *(_IO uint16 xdata *)(DIV1_BADR  + 0x00)      // rw-- 被除数高16位
+ #define DIV1_DAL                 *(_IO uint16 xdata *)(DIV1_BADR  + 0x02)      // rw-- 被除数低16位
+ #define DIV1_DB                  *(_IO uint16 xdata *)(DIV1_BADR  + 0x04)      // rw-- 除数
+ #define DIV1_DQH                 *(_IO uint16 xdata *)(DIV1_BADR  + 0x06)      // rw-- 商高16位
+ #define DIV1_DQL                 *(_IO uint16 xdata *)(DIV1_BADR  + 0x08)      // rw-- 商低16位
+ #define DIV1_DR                  *(_IO uint16 xdata *)(DIV1_BADR  + 0x0a)      // rw-- 余数
+
+ #define DIV0_DAH                 *(_IO uint16 xdata *)(DIV0_BADR  + 0x00)      // rw-- 被除数高16位
+ #define DIV0_DAL                 *(_IO uint16 xdata *)(DIV0_BADR  + 0x02)      // rw-- 被除数低16位
+ #define DIV0_DB                  *(_IO uint16 xdata *)(DIV0_BADR  + 0x04)      // rw-- 除数
+ #define DIV0_DQH                 *(_IO uint16 xdata *)(DIV0_BADR  + 0x06)      // rw-- 商高16位
+ #define DIV0_DQL                 *(_IO uint16 xdata *)(DIV0_BADR  + 0x08)      // rw-- 商低16位
+ #define DIV0_DR                  *(_IO uint16 xdata *)(DIV0_BADR  + 0x0a)      // rw-- 余数
+
+ #define MUL3_MA                  *(_IO uint16 xdata *)(MUL3_BADR  + 0x00)      // rw-- 被乘数
+ #define MUL3_MB                  *(_IO uint16 xdata *)(MUL3_BADR  + 0x02)      // rw-- 乘数
+ #define MUL3_MCH                 *(_IO uint16 xdata *)(MUL3_BADR  + 0x04)      // rw-- 积高16位
+ #define MUL3_MCL                 *(_IO uint16 xdata *)(MUL3_BADR  + 0x06)      // rw-- 积低16位
+
+ #define MUL2_MA                  *(_IO uint16 xdata *)(MUL2_BADR  + 0x00)      // rw-- 被乘数
+ #define MUL2_MB                  *(_IO uint16 xdata *)(MUL2_BADR  + 0x02)      // rw-- 乘数
+ #define MUL2_MCH                 *(_IO uint16 xdata *)(MUL2_BADR  + 0x04)      // rw-- 积高16位
+ #define MUL2_MCL                 *(_IO uint16 xdata *)(MUL2_BADR  + 0x06)      // rw-- 积低16位
+
+ #define MUL1_MA                  *(_IO uint16 xdata *)(MUL1_BADR  + 0x00)      // rw-- 被乘数
+ #define MUL1_MB                  *(_IO uint16 xdata *)(MUL1_BADR  + 0x02)      // rw-- 乘数
+ #define MUL1_MCH                 *(_IO uint16 xdata *)(MUL1_BADR  + 0x04)      // rw-- 积高16位
+ #define MUL1_MCL                 *(_IO uint16 xdata *)(MUL1_BADR  + 0x06)      // rw-- 积低16位
+
+ #define MUL0_MA                  *(_IO uint16 xdata *)(MUL0_BADR  + 0x00)      // rw-- 被乘数
+ #define MUL0_MB                  *(_IO uint16 xdata *)(MUL0_BADR  + 0x02)      // rw-- 乘数
+ #define MUL0_MCH                 *(_IO uint16 xdata *)(MUL0_BADR  + 0x04)      // rw-- 积高16位
+ #define MUL0_MCL                 *(_IO uint16 xdata *)(MUL0_BADR  + 0x06)      // rw-- 积低16位
+
+ #define LPF3_K                   *(_IO  int16 xdata *)(LPF3_BADR  + 0x00)      // rw-- 滤波系数[32767, 0]
+ #define LPF3_X                   *(_IO  int16 xdata *)(LPF3_BADR  + 0x02)      // rw-- 滤波输入
+ #define LPF3_YH                  *(_IO uint16 xdata *)(LPF3_BADR  + 0x04)      // rw-- 滤波结果高16位
+ #define LPF3_YL                  *(_IO uint16 xdata *)(LPF3_BADR  + 0x06)      // rw-- 滤波结果低16位
+
+ #define LPF2_K                   *(_IO  int16 xdata *)(LPF2_BADR  + 0x00)      // rw-- 滤波系数[32767, 0]
+ #define LPF2_X                   *(_IO  int16 xdata *)(LPF2_BADR  + 0x02)      // rw-- 滤波输入
+ #define LPF2_YH                  *(_IO uint16 xdata *)(LPF2_BADR  + 0x04)      // rw-- 滤波结果高16位
+ #define LPF2_YL                  *(_IO uint16 xdata *)(LPF2_BADR  + 0x06)      // rw-- 滤波结果低16位
+
+ #define LPF1_K                   *(_IO  int16 xdata *)(LPF1_BADR  + 0x00)      // rw-- 滤波系数[32767, 0]
+ #define LPF1_X                   *(_IO  int16 xdata *)(LPF1_BADR  + 0x02)      // rw-- 滤波输入
+ #define LPF1_YH                  *(_IO uint16 xdata *)(LPF1_BADR  + 0x04)      // rw-- 滤波结果高16位
+ #define LPF1_YL                  *(_IO uint16 xdata *)(LPF1_BADR  + 0x06)      // rw-- 滤波结果低16位
+
+ #define LPF0_K                   *(_IO  int16 xdata *)(LPF0_BADR  + 0x00)      // rw-- 滤波系数[32767, 0]
+ #define LPF0_X                   *(_IO  int16 xdata *)(LPF0_BADR  + 0x02)      // rw-- 滤波输入
+ #define LPF0_YH                  *(_IO uint16 xdata *)(LPF0_BADR  + 0x04)      // rw-- 滤波结果高16位
+ #define LPF0_YL                  *(_IO uint16 xdata *)(LPF0_BADR  + 0x06)      // rw-- 滤波结果低16位
+
+ #define PI3_KP                   *(_IO  int16 xdata *)(PI3_BADR   + 0x00)      // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
+ #define PI3_EK1                  *(_IO  int16 xdata *)(PI3_BADR   + 0x02)      // rw-- 上一次的误差
+ #define PI3_EK                   *(_IO  int16 xdata *)(PI3_BADR   + 0x04)      // rw-- 当前的误差
+ #define PI3_KI                   *(_IO  int16 xdata *)(PI3_BADR   + 0x06)      // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
+ #define PI3_UKH                  *(_IO  int16 xdata *)(PI3_BADR   + 0x08)      // rw-- PI计算结果高16位
+ #define PI3_UKL                  *(_IO  int16 xdata *)(PI3_BADR   + 0x0a)      // rw-- PI计算结果低16位
+ #define PI3_UKMAX                *(_IO  int16 xdata *)(PI3_BADR   + 0x0c)      // rw-- UK限幅最大值
+ #define PI3_UKMIN                *(_IO  int16 xdata *)(PI3_BADR   + 0x0e)      // rw-- UK限幅最小值
+ #define PI3_KD                   *(_IO  int16 xdata *)(PI3_BADR   + 0x10)      // rw-- Kd系数, Q12格式, 有效范围[32767, 0]
+ #define PI3_EK2                  *(_IO  int16 xdata *)(PI3_BADR   + 0x12)      // rw-- 上两次的误差
+
+ #define PI2_KP                   *(_IO  int16 xdata *)(PI2_BADR   + 0x00)      // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
+ #define PI2_EK1                  *(_IO  int16 xdata *)(PI2_BADR   + 0x02)      // rw-- 上一次的误差
+ #define PI2_EK                   *(_IO  int16 xdata *)(PI2_BADR   + 0x04)      // rw-- 当前的误差
+ #define PI2_KI                   *(_IO  int16 xdata *)(PI2_BADR   + 0x06)      // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
+ #define PI2_UKH                  *(_IO  int16 xdata *)(PI2_BADR   + 0x08)      // rw-- PI计算结果高16位
+ #define PI2_UKL                  *(_IO  int16 xdata *)(PI2_BADR   + 0x0a)      // rw-- PI计算结果低16位
+ #define PI2_UKMAX                *(_IO  int16 xdata *)(PI2_BADR   + 0x0c)      // rw-- UK限幅最大值
+ #define PI2_UKMIN                *(_IO  int16 xdata *)(PI2_BADR   + 0x0e)      // rw-- UK限幅最小值
+ #define PI2_KD                   *(_IO  int16 xdata *)(PI2_BADR   + 0x10)      // rw-- Kd系数, Q12格式, 有效范围[32767, 0]
+ #define PI2_EK2                  *(_IO  int16 xdata *)(PI2_BADR   + 0x12)      // rw-- 上两次的误差
+
+ #define PI1_KP                   *(_IO  int16 xdata *)(PI1_BADR   + 0x00)      // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
+ #define PI1_EK1                  *(_IO  int16 xdata *)(PI1_BADR   + 0x02)      // rw-- 上一次的误差
+ #define PI1_EK                   *(_IO  int16 xdata *)(PI1_BADR   + 0x04)      // rw-- 当前的误差
+ #define PI1_KI                   *(_IO  int16 xdata *)(PI1_BADR   + 0x06)      // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
+ #define PI1_UKH                  *(_IO  int16 xdata *)(PI1_BADR   + 0x08)      // rw-- PI计算结果高16位
+ #define PI1_UKL                  *(_IO  int16 xdata *)(PI1_BADR   + 0x0a)      // rw-- PI计算结果低16位
+ #define PI1_UKMAX                *(_IO  int16 xdata *)(PI1_BADR   + 0x0c)      // rw-- UK限幅最大值
+ #define PI1_UKMIN                *(_IO  int16 xdata *)(PI1_BADR   + 0x0e)      // rw-- UK限幅最小值
+
+ #define PI0_KP                   *(_IO  int16 xdata *)(PI0_BADR   + 0x00)      // rw-- Kp系数, Q12格式, 有效范围[32767, 0]
+ #define PI0_EK1                  *(_IO  int16 xdata *)(PI0_BADR   + 0x02)      // rw-- 上一次的误差
+ #define PI0_EK                   *(_IO  int16 xdata *)(PI0_BADR   + 0x04)      // rw-- 当前的误差
+ #define PI0_KI                   *(_IO  int16 xdata *)(PI0_BADR   + 0x06)      // rw-- Ki系数, Q15格式, 有效范围[32767, 0]
+ #define PI0_UKH                  *(_IO  int16 xdata *)(PI0_BADR   + 0x08)      // rw-- PI计算结果高16位
+ #define PI0_UKL                  *(_IO  int16 xdata *)(PI0_BADR   + 0x0a)      // rw-- PI计算结果低16位
+ #define PI0_UKMAX                *(_IO  int16 xdata *)(PI0_BADR   + 0x0c)      // rw-- UK限幅最大值
+ #define PI0_UKMIN                *(_IO  int16 xdata *)(PI0_BADR   + 0x0e)      // rw-- UK限幅最小值
+/******************************************************************************///FOC
+ #define FOC_CR0                        *(_IO  uint8 xdata *)0x409f             // RV:  00H  FOC控制寄存器0
+ #define OMIF                                     0x80                          //               r--- 当前转速<FOC_EFREQMIN为1
+ #define OMAF                                     0x40                          //               r--- 当前转速>FOC_EFREQMAX为1
+ #define MERRS1                                   0x20                          //               rw-- 滑膜算法的MAX ERR选择
+ #define MERRS0                                   0x10                          //               rw-- 滑膜算法的MAX ERR选择
+ #define UCSEL                                    0x08                          //               rw-- UDC采样通道选择0:AD2 1:AD14
+ #define OMAS                                     0x04                          //               rw-- 估算速度过大时输出选择位
+ #define ESCMS                                    0x02                          //               rw-- omega计算模式为ATAN
+ #define EDIS                                     0x01                          //               rw-- EALPHA/EBETA自动更新禁止
+
+ #define FOC_CR1                        *(_IO  uint8 xdata *)0x40a0             // RV:  00H  FOC控制寄存器1
+ #define OVMDL                                    0x80                          //               rw-- 过调制使能
+ #define EFAE                                     0x40                          //               rw-- 估算器强制角度使能
+ #define RFAE                                     0x20                          //               rw-- 强制爬坡角度使能
+ #define ANGM                                     0x10                          //               rw-- 角度模式选择
+ #define CSM1                                     0x08                          //               rw-- 电流采样模式配置1
+ #define CSM0                                     0x04                          //               rw-- 电流采样模式配置0
+ #define SPWMSEL                                  0x02                          //               rw-- SPWM模式选择
+ #define SVPWMEN                                  0x01                          //               rw-- SVPWM/SPWM选择
+
+ #define FOC_CR2                        *(_IO  uint8 xdata *)0x40a1             // RV:  00H  FOC控制寄存器2
+ #define ESEL                                     0x80                          //               rw-- 估算器模式
+ #define ICLR                                     0x40                          //               rw1- FOC__IA/B/CMAX清零
+ #define F5SEG                                    0x20                          //               rw-- 7/5段式SVPWM模式
+ #define DSS                                      0x10                          //               rw-- 2/3电阻采样模式
+ #define CSOC1                                    0x08                          //               rw-- 电流采样基准校准配置1
+ #define CSOC0                                    0x04                          //               rw-- 电流采样基准校准配置0
+ #define UQD                                      0x02                          //               rw-- 禁能Q轴PI
+ #define UDD                                      0x01                          //               rw-- 禁能D轴PI
+ 
+ #define FOC_CR3                        *(_IO  uint8 xdata *)0x409e             // RV:  00H  FOC控制寄存器3
+ #define EFAM                                     0x80                          //               rw-- 新算法
+ #define TAMD                                     0x40                          //               rw-- Theta ATAN MODE
+ #define MFP_EN                                   0x20                          //               rw-- MFP使能
+ #define FOC_THECOMP_DIS                          0x10                          //               rw-- 不加补偿角算法
+ #define FOCFEN                                   0x08                          //               rw-- FOC强制使能
+ #define HALL_PLL_EN                              0x04                          //               rw-- PLL模式下HALL滤波处理
+ #define TSMINH9                                  0x02                          //               rw-- 单电阻模式下的ADC采样窗口  或  双三电阻模式下死区补偿
+ #define TSMINH8                                  0x01                          //               rw-- 单电阻模式下的ADC采样窗口  或  双三电阻模式下死区补偿
+
+ #define FOC_EKP                        *(_IO  int16 xdata *)0x4074             // RV:0000H  估算器的PI的P参数
+ #define FOC_EKI                        *(_IO  int16 xdata *)0x4076             // RV:0000H  估算器的PI的I参数
+ #define FOC_KSLIDE                     *(_IO  int16 xdata *)0x4078             // RV:0000H  估算器SMO模式下的KSLIDE  或  PLL模式下的KP
+ #define FOC_EKLPFMIN                   *(_IO  int16 xdata *)0x407a             // RV:0000H  估算器SMO模式下EMF的LPF系数最小值  或  PLL模式下的KI
+ #define FOC_OMEKLPF                    *(_IO  int16 xdata *)0x407e             // RV:0000H  估算器速度计算的LPF系数
+ #define FOC_FBASE                      *(_IO  int16 xdata *)0x4080             // RV:0000H  估算器角度增量(OMEGA)的系数
+ #define FOC_EFREQACC                   *(_IO uint16 xdata *)0x4082             // RV:0000H  估算器在强制角度模式下的OMEGA增量
+ #define FOC_EFREQMIN                   *(_IO  int16 xdata *)0x4084             // RV:0000H  估算器在强制角度模式下的OMEGA最小值
+ #define FOC_EFREQHOLD                  *(_IO  int16 xdata *)0x4086             // RV:0000H  估算器在强制角度模式下的OMEGA保持值
+ #define FOC_EFREQMAX                   *(_IO  uint8 xdata *)0x406f             // RV:  7FH  估算器的强制角度模式下的OMEGA最大值
+ #define FOC_EK3                        *(_IO  int16 xdata *)0x4088             // RV:0000H  估算器估算电流的系数3
+ #define FOC_EK4                        *(_IO  int16 xdata *)0x408a             // RV:0000H  估算器估算电流的系数4
+ #define FOC_EK1                        *(_IO  int16 xdata *)0x408c             // RV:0000H  估算器估算电流的系数1
+ #define FOC_EK2                        *(_IO  int16 xdata *)0x408e             // RV:0000H  估算器估算电流的系数2
+ #define FOC_IDREF                      *(_IO  int16 xdata *)0x4090             // RV:0000H  D轴电流参考值
+ #define FOC_IQREF                      *(_IO  int16 xdata *)0x4092             // RV:0000H  Q轴电流参考值
+ #define FOC_QKP                        *(_IO  int16 xdata *)0x4094             // RV:0000H  Q轴PI的比例参数
+ #define FOC_QKI                        *(_IO  int16 xdata *)0x4096             // RV:0000H  Q轴PI的积分参数
+ #define FOC_DKP                        *(_IO  int16 xdata *)0x4070             // RV:0000H  D轴PI的比例参数
+ #define FOC_DKI                        *(_IO  int16 xdata *)0x407c             // RV:0000H  D轴PI的积分参数
+ #define FOC__UDCFLT                    *(_I   int16 xdata *)0x4098             // RV:0000H  滤波后的母线电压
+ #define FOC_TSMIN                      *(_IO  uint8 xdata *)0x40a2             // RV:  00H  单电阻模式下的ADC采样窗口  或  双三电阻模式下死区补偿
+ #define FOC_TGLI                       *(_IO  uint8 xdata *)0x40a3             // RV:  00H  上桥导通窄脉冲消除
+ #define FOC_TBLO                       *(_IO  uint8 xdata *)0x40a4             // RV:  00H  三电阻电流采样的屏蔽时间
+ #define FOC_TRGDLY                     *(_IO   int8 xdata *)0x40a5             // RV:  00H  单电阻模式下ADC采样触发延迟  或  双三电阻模式下电流采样时机
+ #define FOC_CSO                        *(_IO  int16 xdata *)0x40a6             // RV:4000H  电流采样基准值
+ #define FOC__RTHESTEP                  *(_IO  int16 xdata *)0x40a8             // RV:0000H  爬坡速度
+ #define FOC_RTHEACC                    *(_O   int16 xdata *)0x40aa             // RV:0000H  爬坡加速度
+ #define FOC__EOMELPF                   *(_I   int16 xdata *)0x40aa             // RV:0000H  滤波后速度
+ #define FOC_RTHECNT                    *(_IO  uint8 xdata *)0x40ac             // RV:  00H  爬坡次数
+ #define FOC_THECOR                     *(_IO  uint8 xdata *)0x40ad             // RV:  01H  爬坡模式切换到估算模式的角度修正值
+ #define FOC__EMF                       *(_I   int16 xdata *)0x40ae             // RV:0000H  估算器估算的反电动势EMF
+ #define FOC_THECOMP                    *(_O   int16 xdata *)0x40ae             // RV:0000H  角度补偿值,用于补偿估算器估算出的角度
+ #define FOC_DMAX                       *(_O   int16 xdata *)0x40b0             // RV:0000H  D轴PI控制器的输出上限 
+ #define FOC__OMEEST                    *(_I   int16 xdata *)0x40b0             // RV:0000H  FOC估算的速度
+ #define FOC__ATAN_THETA                *(_I   int16 xdata *)0x40b2             // RV:0000H  ATAN模式下atan角度,由FOC__EALP/FOC__EBET直接计算
+ #define FOC_DMIN                       *(_O   int16 xdata *)0x40b2             // RV:0000H  D轴PI控制器的输出下限
+ #define FOC_QMAX                       *(_IO  int16 xdata *)0x40b4             // RV:0000H  Q轴PI控制器的输出上限
+ #define FOC_QMIN                       *(_IO  int16 xdata *)0x40b6             // RV:0000H  Q轴PI控制器的输出下限
+ #define FOC__UD                        *(_IO  int16 xdata *)0x40b8             // RV:0000H  D轴电压输出值
+ #define FOC__UQ                        *(_IO  int16 xdata *)0x40ba             // RV:0000H  Q轴电压输出值
+ #define FOC__ID                        *(_I   int16 xdata *)0x40bc             // RV:0000H  D轴反馈电流值
+ #define FOC__IQ                        *(_I   int16 xdata *)0x40be             // RV:0000H  Q轴反馈电流值
+ #define FOC_IQ_LPFK                    *(_O   uint8 xdata *)0x40c0             // RV:  FFH  FOC IQ低通滤波系数
+ #define FOC_ID_LPFK                    *(_O   uint8 xdata *)0x40c1             // RV:  FFH  FOC ID低通滤波系数
+ #define FOC__IBET                      *(_I   int16 xdata *)0x40c0             // RV:0000H  β轴采样电流值
+ #define FOC__VBET                      *(_I   int16 xdata *)0x40c2             // RV:0000H  β轴电压输出值
+ #define FOC_UDCPS                      *(_O   int16 xdata *)0x40c2             // RV:0000H  D轴的电压前馈补偿
+ #define FOC__VALP                      *(_I   int16 xdata *)0x40c4             // RV:0000H  α轴电压输出值
+ #define FOC_UQCPS                      *(_O   int16 xdata *)0x40c4             // RV:0000H  Q轴的电压前馈补偿
+ #define FOC__IC                        *(_I   int16 xdata *)0x40c6             // RV:0000H  C相电流
+ #define FOC_FLUX                       *(_O   int16 xdata *)0x40c6             // RV:0000H  电机磁链
+ #define FOC__IB                        *(_I   int16 xdata *)0x40c8             // RV:0000H  B相电流
+ #define FOC_LQ                         *(_O   int16 xdata *)0x40c8             // RV:0000H  
+ #define FOC__IA                        *(_I   int16 xdata *)0x40ca             // RV:0000H  A相电流
+ #define FOC_LD                         *(_O   int16 xdata *)0x40ca             // RV:0000H
+ #define FOC__THETA                     *(_IO  int16 xdata *)0x40cc             // RV:0000H  电机电角度
+ #define FOC__ETHETA                    *(_IO  int16 xdata *)0x40ce             // RV:0000H  估算器估算的角度
+ #define FOC__EALP                      *(_IO  int16 xdata *)0x40d0             // RV:0000H  估算器估算反电动势的α轴值
+ #define FOC__EBET                      *(_IO  int16 xdata *)0x40d2             // RV:0000H  估算器估算反电动势的β轴值
+ #define FOC__EOME                      *(_IO  int16 xdata *)0x40d4             // RV:0000H  估算器估算的速度
+ #define FOC__UQEX                      *(_I   int16 xdata *)0x40d6             // RV:0000H  Q轴的电压溢出值,用于弱磁控制
+ #define FOC_KFG                        *(_O  uint16 xdata *)0x40d6             // RV:0000H  FG计算系数
+ #define FOC__POW                       *(_I   int16 xdata *)0x40d8             // RV:0000H  电机当前运行功率
+ #define FOC_EOMEKLPF                   *(_O   uint8 xdata *)0x40d8             // RV:0000H  EOMELPF的滤波系数
+ #define FOC__IAMAX                     *(_I   int16 xdata *)0x40da             // RV:0000H  A相电流最大值
+ #define FOC__IBMAX                     *(_I   int16 xdata *)0x40dc             // RV:0000H  B相电流最大值
+ #define FOC__ICMAX                     *(_I   int16 xdata *)0x40de             // RV:0000H  C相电流最大值
+/******************************************************************************///TIM1
+ #define TIM1_CR0                       *(_IO  uint8 xdata *)0x4068             // RV:  00H  TIMER1控制寄存器0
+ #define T1RWEN                                   0x80                          //               w1-- T1RCEN操作允许
+ #define T1CFLT1                                  0x40                          //               rw-- 换相滤波配置1
+ #define T1CFLT0                                  0x20                          //               rw-- 换相滤波配置0
+ #define T1FORC                                   0x10                          //               rw-- 60°强制换相
+ #define T1OPS1                                   0x08                          //               rw-- 数据传输方式配置1
+ #define T1OPS0                                   0x04                          //               rw-- 数据传输方式配置0
+ #define T1BCEN                                   0x02                          //               rw-- 基本定时器计数使能
+ #define T1RCEN                                   0x01                          //               rw-- 重载定时器计数使能
+
+ #define TIM1_CR1                       *(_IO  uint8 xdata *)0x4069             // RV:  00H  TIMER1控制寄存器1
+ #define T1BAPE                                   0x80                          //               rw-- TIM1__BARR自动装载使能
+
+ #define TIM1_CR2                       *(_IO  uint8 xdata *)0x406a             // RV:  00H  TIMER1控制寄存器2
+ #define T1BRS                                    0x80                          //               rw-- 基本定时器复位源选择
+
+ #define TIM1_CR3                       *(_IO  uint8 xdata *)0x406b             // RV:  00H  TIMER1控制寄存器3
+ #define T1COM_MD                                 0x80                          //               rw-- 方波换相模式选择   
+ #define T1PSC2                                   0x40                          //               rw-- 定时器分频配置2
+ #define T1PSC1                                   0x20                          //               rw-- 定时器分频配置1
+ #define T1PSC0                                   0x10                          //               rw-- 定时器分频配置0
+ #define T1TIS1                                   0x08                          //               rw-- 输入源选择配置1
+ #define T1TIS0                                   0x04                          //               rw-- 输入源选择配置0
+ #define T1INM1                                   0x02                          //               rw-- 输入源噪声滤波配置1
+ #define T1INM0                                   0x01                          //               rw-- 输入源噪声滤波配置0
+
+ #define TIM1_CR4                       *(_IO  uint8 xdata *)0x406c             // RV:  00H  TIMER1控制寄存器4
+ #define T1CST2                                   0x04                          //               rw-- 换相状态机配置2
+ #define T1CST1                                   0x02                          //               rw-- 换相状态机配置1
+ #define T1CST0                                   0x01                          //               rw-- 换相状态机配置0
+ 
+ #define TIM1_CR5                       *(_IO  uint8 xdata *)0x4072             // RV:  00H  TIMER1控制寄存器5
+ #define T1POP                                    0x80                          //               rw-- DRV计数器上溢事件触发数据传输使能 
+ #define T1WTS                                    0x40                          //               rw-- PWM OFF时候换相,消除窄脉冲  
+ #define ITRIP_DIS                                0x08                          //               rw-- 方波忽略ITRIP电流采样
+ #define UCOP_DIS                                 0x04                          //               rw-- 方波忽略导通相电压
+ #define T1AFL1                                   0x02                          //               rw-- ADC采样点压计算结果滤波
+ #define T1AFL0                                   0x01                          //               rw-- ADC采样点压计算结果滤波
+ 
+ #define TIM1_IER                       *(_IO  uint8 xdata *)0x406d             // RV:  00H  TIMER1中断控制
+ #define T1UPD                                    0x80                          //               w1-- OPS=00时,触发数据传输
+ #define T1MAME                                   0x40                          //               rw-- TIM1手动模式使能
+ #define T1ADIE                                   0x20                          //               rw-- ADC检测中断使能
+ #define T1BOIE                                   0x10                          //               rw-- 基本定时器上溢中断使能
+ #define T1ROIE                                   0x08                          //               rw-- 重载定时器上溢中断使能
+ #define T1WTIE                                   0x04                          //               rw-- 写入时序中断使能
+ #define T1PDIE                                   0x02                          //               rw-- 位置检测中断使能
+ #define T1BDIE                                   0x01                          //               rw-- 屏蔽续流结束中断使能
+
+ #define TIM1_SR                        *(_IO  uint8 xdata *)0x406e             // RV:  00H  TIMER1状态        
+ #define T1ADIF                                   0x20                          //               rw0- ADC检测中断标志
+ #define T1BOIF                                   0x10                          //               rw0- 基本定时器上溢中断标志
+ #define T1ROIF                                   0x08                          //               rw0- 重载定时器上溢中断标志
+ #define T1WTIF                                   0x04                          //               rw0- 写入时序中断标志
+ #define T1PDIF                                   0x02                          //               rw0- 位置检测中断标志
+ #define T1BDIF                                   0x01                          //               rw0- 屏蔽续流结束中断标志
+
+ #define TIM1_DBR1                      *(_IO uint16 xdata *)0x4074             // RV:0000H  TIMER1在CST=1的数据
+ #define TIM1_DBR2                      *(_IO uint16 xdata *)0x4076             // RV:0000H  TIMER1在CST=2的数据
+ #define TIM1_DBR3                      *(_IO uint16 xdata *)0x4078             // RV:0000H  TIMER1在CST=3的数据
+ #define TIM1_DBR4                      *(_IO uint16 xdata *)0x407a             // RV:0000H  TIMER1在CST=4的数据
+ #define TIM1_DBR5                      *(_IO uint16 xdata *)0x407c             // RV:0000H  TIMER1在CST=5的数据
+ #define TIM1_DBR6                      *(_IO uint16 xdata *)0x407e             // RV:0000H  TIMER1在CST=6的数据
+ #define TIM1_DBR7                      *(_IO uint16 xdata *)0x4080             // RV:0000H  TIMER1在CST=7的数据
+ #define T1CPE2                                   0x4000                        //               rw-- 输入沿极性和比较器选择配置2
+ #define T1CPE1                                   0x2000                        //               rw-- 输入沿极性和比较器选择配置1
+ #define T1CPE0                                   0x1000                        //               rw-- 输入沿极性和比较器选择配置0
+ #define T1WHP                                    0x0800                        //               rw-- W相上管反相使能
+ #define T1WLP                                    0x0400                        //               rw-- W相下管反相使能
+ #define T1VHP                                    0x0200                        //               rw-- V相上管反相使能
+ #define T1VLP                                    0x0100                        //               rw-- V相下管反相使能
+ #define T1UHP                                    0x0080                        //               rw-- U相上管反相使能
+ #define T1ULP                                    0x0040                        //               rw-- U相下管反相使能
+ #define T1WHE                                    0x0020                        //               rw-- W相上管输出使能
+ #define T1WLE                                    0x0010                        //               rw-- W相下管输出使能
+ #define T1VHE                                    0x0008                        //               rw-- V相上管输出使能
+ #define T1VLE                                    0x0004                        //               rw-- V相下管输出使能
+ #define T1UHE                                    0x0002                        //               rw-- U相上管输出使能
+ #define T1ULE                                    0x0001                        //               rw-- U相下管输出使能
+
+ #define TIM1__BCOR                     *(_IO uint16 xdata *)0x4070             // RV:0000H  捕获基本定时器计数值滤波值
+ #define TIM1__BCNTR                    *(_IO uint16 xdata *)0x4082             // RV:0000H  基本定时器计数值
+ #define TIM1__BCCR                     *(_IO uint16 xdata *)0x4084             // RV:0000H  捕获基本定时器计数值
+ #define TIM1__BARR                     *(_IO uint16 xdata *)0x4086             // RV:0000H  基本定时器自动重载值
+ #define TIM1__RARR                     *(_IO uint16 xdata *)0x4088             // RV:0000H  重载定时器自动重载值
+ #define TIM1__RCNTR                    *(_IO uint16 xdata *)0x408a             // RV:FFFFH  重载定时器计数值
+ #define TIM1__ITRIP                    *(_I  uint16 xdata *)0x4098             // RV:0000H  滤波后的母线电流
+ #define TIM1__UCOP                     *(_IO uint16 xdata *)0x408c             // RV:0000H  导通相电压
+ #define TIM1__UFLP                     *(_IO uint16 xdata *)0x408e             // RV:0000H  悬空相电压
+ #define TIM1__URES                     *(_IO  int16 xdata *)0x4090             // RV:0000H  计算结果,公式发生符号变化即产生换相信号
+ #define TIM1_KRMAX                     *(_IO  uint8 xdata *)0x4092             // RV:  00H  上升沿系数最大值					
+ #define TIM1_KFMIN                     *(_IO  uint8 xdata *)0x4093             // RV:  00H  下降沿系数最小值
+ #define TIM1_KF                        *(_IO uint16 xdata *)0x4094             // RV:0000H  下降沿系数
+ #define TIM1_KR                        *(_IO uint16 xdata *)0x4096             // RV:0000H  上升沿系数
+/******************************************************************************///TIM2
+ SFR(TIM2_CR0, 0xa1);                                 							// RV:  00H  TIMER2控制寄存器0
+ #define T2PSC2                                   0x80                          //               rw-- 定时器分频配置2
+ #define T2PSC1                                   0x40                          //               rw-- 定时器分频配置1
+ #define T2PSC0                                   0x20                          //               rw-- 定时器分频配置0
+ #define T2OCM                                    0x10                          //               rw-- 定时器比较匹配模式/QEP&步进模式配置
+ #define T2IRE                                    0x08                          //               rw-- 比较匹配/脉宽检测/方向改变中断使能
+ #define T2CES                                    0x04                          //               rw-- 边沿模式选择
+ #define T2MOD1                                   0x02                          //               rw-- 定时器模式配置1
+ #define T2MOD0                                   0x01                          //               rw-- 定时器模式配置0
+
+ SFR(TIM2_CR1, 0xa9);                                 							// RV:  00H  TIMER2控制寄存器1
+ #define T2IR                                     0x80                          //               rw0- 比较匹配标志
+ #define T2IP                                     0x40                          //               rw0- 周期检测/计数匹配标志
+ #define T2IF                                     0x20                          //               rw0- 计数上溢标志
+ #define T2IPE                                    0x10                          //               rw-- 周期检测/计数匹配中断使能
+ #define T2IFE                                    0x08                          //               rw-- 上溢中断使能
+ #define T2FE                                     0x04                          //               rw-- 噪声滤波使能
+ #define T2DIR                                    0x02                          //               r--- QEP/步进方向信号
+ #define T2CEN                                    0x01                          //               rw-- 定时器使能
+
+ SFR16(TIM2__DR, 0xac);															// RV:0000H	 TIMER2匹配值
+ SFR16(TIM2__ARR, 0xae);														// RV:0000H	 TIMER2重载值
+ SFR16(TIM2__CNTR, 0xaa);														// RV:0000H	 TIMER2计数值
+/******************************************************************************///TIM3
+ SFR(TIM3_CR0, 0x9c);                                 							// RV:  00H  TIMER3控制寄存器0
+ #define T3PSC2                                   0x80                          //               rw-- 定时器分频配置2
+ #define T3PSC1                                   0x40                          //               rw-- 定时器分频配置1
+ #define T3PSC0                                   0x20                          //               rw-- 定时器分频配置0
+ #define T3OCM                                    0x10                          //               rw-- 定时器比较匹配/捕获脉宽模式配置
+ #define T3IRE                                    0x08                          //               rw-- 比较匹配/捕获脉宽中断
+ #define T3OPM                                    0x02                          //               rw-- 单次模式使能
+ #define T3MOD                                    0x01                          //               rw-- 定时器模式配置0
+
+ SFR(TIM3_CR1, 0x9d);                                 							// RV:  00H  TIMER3控制寄存器1
+ #define T3IR                                     0x80                          //               rw0- 比较匹配/捕获脉宽标志
+ #define T3IP                                     0x40                          //               rw0- 周期检测标志
+ #define T3IF                                     0x20                          //               rw0- 计数上溢标志
+ #define T3IPE                                    0x10                          //               rw-- 周期检测中断使能
+ #define T3IFE                                    0x08                          //               rw-- 上溢中断使能
+ #define T3NM1                                    0x04                          //               rw-- 噪音滤波配置1
+ #define T3NM0                                    0x02                          //               rw-- 噪音滤波配置0
+ #define T3EN                                     0x01                          //               rw-- 定时器使能
+
+ SFR16(TIM3__DR, 0xa4);															// RV:0000H	 TIMER3匹配值
+ SFR16(TIM3__ARR, 0xa6);														// RV:0000H	 TIMER3重载值
+ SFR16(TIM3__CNTR, 0xa2);														// RV:0000H	 TIMER3计数值
+/******************************************************************************///TIM4
+ SFR(TIM4_CR0, 0x9e);                                 							// RV:  00H  TIMER4控制寄存器0
+ #define T4PSC2                                   0x80                          //               rw-- 定时器分频配置2
+ #define T4PSC1                                   0x40                          //               rw-- 定时器分频配置1
+ #define T4PSC0                                   0x20                          //               rw-- 定时器分频配置0
+ #define T4OCM                                    0x10                          //               rw-- 定时器比较匹配/捕获脉宽模式配置
+ #define T4IRE                                    0x08                          //               rw-- 比较匹配/捕获脉宽中断
+ #define T4OPM                                    0x02                          //               rw-- 单次模式使能
+ #define T4MOD                                    0x01                          //               rw-- 定时器模式配置0
+
+ SFR(TIM4_CR1, 0x9f);                                 							// RV:  00H  TIMER4控制寄存器1
+ #define T4IR                                     0x80                          //               rw0- 比较匹配/捕获脉宽标志
+ #define T4IP                                     0x40                          //               rw0- 周期检测标志
+ #define T4IF                                     0x20                          //               rw0- 计数上溢标志
+ #define T4IPE                                    0x10                          //               rw-- 周期检测中断使能
+ #define T4IFE                                    0x08                          //               rw-- 上溢中断使能
+ #define T4NM1                                    0x04                          //               rw-- 噪音滤波配置1
+ #define T4NM0                                    0x02                          //               rw-- 噪音滤波配置0
+ #define T4EN                                     0x01                          //               rw-- 定时器使能
+
+ SFR16(TIM4__DR, 0x94);															// RV:0000H	 TIMER4匹配值
+ SFR16(TIM4__ARR, 0x96);														// RV:0000H	 TIMER4重载值
+ SFR16(TIM4__CNTR, 0x92);														// RV:0000H	 TIMER4计数值
+/******************************************************************************///SYSTICK
+ #define SYST_ARR                       *(_IO uint16 xdata *)0x4064             // RV:5dbfH  SysTick重载值
+/******************************************************************************///DRV
+ SFR(DRV_OUT, 0xf8);                                 							// RV:  00H  驱动输出控制寄存器
+ SBIT(MOE,	 0xf8, 7);                  										//               rw-- 主输出使能
+ SBIT(OISWL, 0xf8, 5);                  										//               rw-- WL & XL输出空闲电平
+ SBIT(OISWH, 0xf8, 4);                  										//               rw-- WH & XH输出空闲电平
+ SBIT(OISVL, 0xf8, 3);                  										//               rw-- VL输出空闲电平
+ SBIT(OISVH, 0xf8, 2);                  										//               rw-- VH输出空闲电平
+ SBIT(OISUL, 0xf8, 1);                  										//               rw-- UL输出空闲电平
+ SBIT(OISUH, 0xf8, 0);                  										//               rw-- UH输出空闲电平
+
+ #define DRV_DR                         *(_IO uint16 xdata *)0x4058             // RV:0000H  手动控制输出时设定的比较值
+ #define DRV_COMR                       *(_IO uint16 xdata *)0x405a             // RV:0000H  计数器的比较匹配值
+
+ #define DRV_CMR                        *(_IO uint16 xdata *)0x405c             // RV:0000H  输出配置寄存器
+ #define XHP                                      0x8000                        //               rw-- X相上管反相使能
+ #define XLP                                      0x4000                        //               rw-- X相下管反相使能
+ #define XHE                                      0x2000                        //               rw-- X相上管输出使能
+ #define XLE                                      0x1000                        //               rw-- X相下管输出使能
+ #define WHP                                      0x0800                        //               rw-- W相上管反相使能
+ #define WLP                                      0x0400                        //               rw-- W相下管反相使能
+ #define VHP                                      0x0200                        //               rw-- V相上管反相使能
+ #define VLP                                      0x0100                        //               rw-- V相下管反相使能
+ #define UHP                                      0x0080                        //               rw-- U相上管反相使能
+ #define ULP                                      0x0040                        //               rw-- U相下管反相使能
+ #define WHE                                      0x0020                        //               rw-- W相上管输出使能
+ #define WLE                                      0x0010                        //               rw-- W相下管输出使能
+ #define VHE                                      0x0008                        //               rw-- V相上管输出使能
+ #define VLE                                      0x0004                        //               rw-- V相下管输出使能
+ #define UHE                                      0x0002                        //               rw-- U相上管输出使能
+ #define ULE                                      0x0001                        //               rw-- U相下管输出使能
+
+ #define DRV_ARR                        *(_IO uint16 xdata *)0x405e             // RV:0000H  计数器重载值
+ #define DRV_DTR                        *(_IO  uint8 xdata *)0x4060             // RV:  00H  上下管死区时间
+ #define DRV__CNTR                      *(_IO uint16 xdata *)0x4066             // RV:0000H  计数器值
+
+ #define DRV_SR                         *(_IO  uint8 xdata *)0x4061             // RV:  00H  Driver状态寄存器
+ #define SYSTIF                                   0x80                          //               rw0- SysTick中断标志
+ #define SYSTIE                                   0x40                          //               rw-- SysTick中断使能
+ #define FGIF                                     0x20                          //               rw0- FG中断标志
+ #define DCIF                                     0x10                          //               rw0- 比较匹配中断标志
+ #define FGIE                                     0x08                          //               rw-- FG中断使能
+ #define DCIP                                     0x04                          //               rw-- 产生比较匹配中断的间隔
+ #define DCIM1                                    0x02                          //               rw-- 比较匹配中断模式配置1
+ #define DCIM0                                    0x01                          //               rw-- 比较匹配中断模式配置0
+
+ #define DRV_CR                         *(_IO  uint8 xdata *)0x4062             // RV:  00H  Driver控制寄存器
+ #define DRVEN                                    0x80                          //               rw-- 计数器使能
+ #define DDIR                                     0x40                          //               rw-- 输出方向
+ #define FOCEN                                    0x20                          //               rw-- FOC/SVPWM/SPWM模块使能
+ #define DRPE                                     0x10                          //               rw-- DRV_DR预装载使能
+ #define OCS                                      0x08                          //               rw-- 比较值来源选择
+ #define MESEL                                    0x04                          //               rw-- ME核工作模式选择
+ #define DRVOE                                    0x01                          //               rw-- Driver输出使能
+
+/******************************************************************************///WDT
+ #define WDT_CR                         *(_IO  uint8 xdata *)0x4026             // RV:  00H  看门狗控制寄存器
+ #define WDTRF                                    0x01                          //               rw-- 看门狗初始化标志
+
+ #define WDT_ARR                        *(_IO  uint8 xdata *)0x4027             // RV:  00H  看门狗重载计数器
+/******************************************************************************///GPIO
+ SFR(P0, 0x80);                                 								// RV:  00H  Port 0
+ SBIT(GP00,	0x80, 0);
+ SBIT(GP01,	0x80, 1);
+ SBIT(GP02,	0x80, 2);
+ SBIT(GP03,	0x80, 3);
+ SBIT(GP04,	0x80, 4);
+ SBIT(GP05,	0x80, 5);
+ SBIT(GP06,	0x80, 6);
+ SBIT(GP07,	0x80, 7);
+
+ SFR(P1, 0x90);                                 								// RV:  00H  Port 1
+ SBIT(GP10,	0x90, 0);
+ SBIT(GP11,	0x90, 1);
+ SBIT(GP12,	0x90, 2);
+ SBIT(GP13,	0x90, 3);
+ SBIT(GP14,	0x90, 4);
+ SBIT(GP15,	0x90, 5);
+ SBIT(GP16,	0x90, 6);
+ SBIT(GP17,	0x90, 7);
+
+ SFR(P2, 0xa0);                                 								// RV:  00H  Port 2
+ SBIT(GP20,	0xa0, 0);
+ SBIT(GP21,	0xa0, 1);
+ SBIT(GP22,	0xa0, 2);
+ SBIT(GP23,	0xa0, 3);
+ SBIT(GP24,	0xa0, 4);
+ SBIT(GP25,	0xa0, 5);
+ SBIT(GP26,	0xa0, 6);
+ SBIT(GP27,	0xa0, 7);
+
+ SFR(P3, 0xb0);                                 								// RV:  00H  Port 3
+ SBIT(GP30,	0xb0, 0);
+ SBIT(GP31,	0xb0, 1);
+ SBIT(GP32,	0xb0, 2);
+ SBIT(GP33,	0xb0, 3);
+ SBIT(GP34,	0xb0, 4);
+ SBIT(GP35,	0xb0, 5);
+ SBIT(GP36,	0xb0, 6);
+ SBIT(GP37,	0xb0, 7);
+
+ SFR(P4, 0xb8);                                 								// RV:  00H  Port 4
+ SBIT(GP40,	0xb8, 0);
+ SBIT(GP41,	0xb8, 1);
+ SBIT(GP42,	0xb8, 2);
+ SBIT(GP43,	0xb8, 3);
+ SBIT(GP44,	0xb8, 4);
+ SBIT(GP45,	0xb8, 5);
+ SBIT(GP46,	0xb8, 6);
+ SBIT(GP47,	0xb8, 7);
+ 
+ SFR(P5, 0xc0);                                 								// RV:  00H  Port 5
+ SBIT(GP50,	0xc0, 0);
+ SBIT(GP51,	0xc0, 1);
+ SBIT(GP52,	0xc0, 2);
+ SBIT(GP53,	0xc0, 3);
+
+ SFR(P0_OE,	0xfc);                                 								// RV:  00H  P0输出使能寄存器
+ #define P07_OE                                  0x80                           //               rw-- 端口7输出使能
+ #define P06_OE                                  0x40                           //               rw-- 端口6输出使能
+ #define P05_OE                                  0x20                           //               rw-- 端口5输出使能
+ #define P04_OE                                  0x10                           //               rw-- 端口4输出使能
+ #define P03_OE                                  0x08                           //               rw-- 端口3输出使能
+ #define P02_OE                                  0x04                           //               rw-- 端口2输出使能
+ #define P01_OE                                  0x02                           //               rw-- 端口1输出使能
+ #define P00_OE                                  0x01                           //               rw-- 端口0输出使能
+ 
+ #define P0_PU                          *(_IO  uint8 xdata *)0x4053             // RV:  00H  P0上拉使能寄存器
+ #define P07_PU                                  0x80                           //               rw-- 端口7上拉使能
+ #define P06_PU                                  0x40                           //               rw-- 端口6上拉使能
+ #define P05_PU                                  0x20                           //               rw-- 端口5上拉使能
+ #define P04_PU                                  0x10                           //               rw-- 端口4上拉使能
+ #define P03_PU                                  0x08                           //               rw-- 端口3上拉使能
+ #define P02_PU                                  0x04                           //               rw-- 端口2上拉使能
+ #define P01_PU                                  0x02                           //               rw-- 端口1上拉使能
+ #define P00_PU                                  0x01                           //               rw-- 端口0上拉使能
+
+ #define P07                                     0x80                           //               rw-- 使能端口7
+ #define P06                                     0x40                           //               rw-- 使能端口6
+ #define P05                                     0x20                           //               rw-- 使能端口5
+ #define P04                                     0x10                           //               rw-- 使能端口4
+ #define P03                                     0x08                           //               rw-- 使能端口3
+ #define P02                                     0x04                           //               rw-- 使能端口2
+ #define P01                                     0x02                           //               rw-- 使能端口1
+ #define P00                                     0x01                           //               rw-- 使能端口0
+
+ SFR(P1_IE,	0xd1);                                 								// RV:  00H  P1外部中断使能寄存器
+ #define P17_IE                                  0x80                           //               rw-- 端口7外部中断使能
+ #define P16_IE                                  0x40                           //               rw-- 端口6外部中断使能
+ #define P15_IE                                  0x20                           //               rw-- 端口5外部中断使能
+ #define P14_IE                                  0x10                           //               rw-- 端口4外部中断使能
+ #define P13_IE                                  0x08                           //               rw-- 端口3外部中断使能
+ #define P12_IE                                  0x04                           //               rw-- 端口2外部中断使能
+ #define P11_IE                                  0x02                           //               rw-- 端口1外部中断使能
+ #define P10_IE                                  0x01                           //               rw-- 端口0外部中断使能
+
+ SFR(P1_IF,	0xd2);                                 								// RV:  00H  P1外部中断状态寄存器
+ #define P17_IF                                  0x80                           //               rw0- 端口P17外部中断标志位
+ #define P16_IF                                  0x40                           //               rw0- 端口P16外部中断标志位
+ #define P15_IF                                  0x20                           //               rw0- 端口P15外部中断标志位
+ #define P14_IF                                  0x10                           //               rw0- 端口P14外部中断标志位
+ #define P13_IF                                  0x08                           //               rw0- 端口P13外部中断标志位
+ #define P12_IF                                  0x04                           //               rw0- 端口P12外部中断标志位
+ #define P11_IF                                  0x02                           //               rw0- 端口P11外部中断标志位
+ #define P10_IF                                  0x01                           //               rw0- 端口P10外部中断标志位
+
+ SFR(P1_OE,	0xfd);                                 								// RV:  00H  P1输出使能寄存器
+ #define P17_OE                                  0x80                           //               rw-- 端口7输出使能
+ #define P16_OE                                  0x40                           //               rw-- 端口6输出使能
+ #define P15_OE                                  0x20                           //               rw-- 端口5输出使能
+ #define P14_OE                                  0x10                           //               rw-- 端口4输出使能
+ #define P13_OE                                  0x08                           //               rw-- 端口3输出使能
+ #define P12_OE                                  0x04                           //               rw-- 端口2输出使能
+ #define P11_OE                                  0x02                           //               rw-- 端口1输出使能
+ #define P10_OE                                  0x01                           //               rw-- 端口0输出使能
+
+ #define P1_PU                          *(_IO  uint8 xdata *)0x4054             // RV:  00H  P1上拉使能寄存器
+ #define P17_PU                                  0x80                           //               rw-- 端口7上拉使能
+ #define P16_PU                                  0x40                           //               rw-- 端口6上拉使能
+ #define P15_PU                                  0x20                           //               rw-- 端口5上拉使能
+ #define P14_PU                                  0x10                           //               rw-- 端口4上拉使能
+ #define P13_PU                                  0x08                           //               rw-- 端口3上拉使能
+ #define P12_PU                                  0x04                           //               rw-- 端口2上拉使能
+ #define P11_PU                                  0x02                           //               rw-- 端口1上拉使能
+ #define P10_PU                                  0x01                           //               rw-- 端口0上拉使能
+
+ #define P1_AN                          *(_IO  uint8 xdata *)0x4050             // RV:  00H  P1模拟使能寄存器
+ #define P17_AN                                   0x80                          //               rw-- 端口7模拟使能
+ #define P16_AN                                   0x40                          //               rw-- 端口6模拟使能
+ #define P15_AN                                   0x20                          //               rw-- 端口5模拟使能
+ #define P14_AN                                   0x10                          //               rw-- 端口4模拟使能
+ #define HBMOD                                    0x08                          //               rw-- 端口P13模式配置
+ #define HDIO                                     0x04                          //               rw-- PWM输出驱动能力选择
+ #define ODE1                                     0x02                          //               rw-- P01漏极开路使能
+ #define ODE0                                     0x01                          //               rw-- P00漏极开路使能
+
+ #define P17                                      0x80                          //               rw-- 使能端口7
+ #define P16                                      0x40                          //               rw-- 使能端口6
+ #define P15                                      0x20                          //               rw-- 使能端口5
+ #define P14                                      0x10                          //               rw-- 使能端口4
+ #define P13                                      0x08                          //               rw-- 使能端口3
+ #define P12                                      0x04                          //               rw-- 使能端口2
+ #define P11                                      0x02                          //               rw-- 使能端口1
+ #define P10                                      0x01                          //               rw-- 使能端口0
+ 
+ SFR(P2_OE,	0xfe);                                 								// RV:  00H  P2输出使能寄存器
+ #define P27_OE                                  0x80                           //               rw-- 端口7输出使能
+ #define P26_OE                                  0x40                           //               rw-- 端口6输出使能
+ #define P25_OE                                  0x20                           //               rw-- 端口5输出使能
+ #define P24_OE                                  0x10                           //               rw-- 端口4输出使能
+ #define P23_OE                                  0x08                           //               rw-- 端口3输出使能
+ #define P22_OE                                  0x04                           //               rw-- 端口2输出使能
+ #define P21_OE                                  0x02                           //               rw-- 端口1输出使能
+ #define P20_OE                                  0x01                           //               rw-- 端口0输出使能
+
+ #define P2_PU                          *(_IO  uint8 xdata *)0x4055             // RV:  00H  P2上拉使能寄存器
+ #define P27_PU                                  0x80                           //               rw-- 端口7上拉使能
+ #define P26_PU                                  0x40                           //               rw-- 端口6上拉使能
+ #define P25_PU                                  0x20                           //               rw-- 端口5上拉使能
+ #define P24_PU                                  0x10                           //               rw-- 端口4上拉使能
+ #define P23_PU                                  0x08                           //               rw-- 端口3上拉使能
+ #define P22_PU                                  0x04                           //               rw-- 端口2上拉使能
+ #define P21_PU                                  0x02                           //               rw-- 端口1上拉使能
+ #define P20_PU                                  0x01                           //               rw-- 端口0上拉使能
+
+ #define P2_AN                          *(_IO  uint8 xdata *)0x4051             // RV:  00H  P2模拟使能寄存器
+ #define P27_AN                                  0x80                           //               rw-- 端口7模拟使能
+ #define P26_AN                                  0x40                           //               rw-- 端口6模拟使能
+ #define P25_AN                                  0x20                           //               rw-- 端口5模拟使能
+ #define P24_AN                                  0x10                           //               rw-- 端口4模拟使能
+ #define P23_AN                                  0x08                           //               rw-- 端口3模拟使能
+ #define P22_AN                                  0x04                           //               rw-- 端口2模拟使能
+ #define P21_AN                                  0x02                           //               rw-- 端口1模拟使能
+ #define P20_AN                                  0x01                           //               rw-- 端口0模拟使能
+
+ #define P27                                      0x80                          //               rw-- 使能端口7
+ #define P26                                      0x40                          //               rw-- 使能端口6
+ #define P25                                      0x20                          //               rw-- 使能端口5
+ #define P24                                      0x10                          //               rw-- 使能端口4
+ #define P23                                      0x08                          //               rw-- 使能端口3
+ #define P22                                      0x04                          //               rw-- 使能端口2
+ #define P21                                      0x02                          //               rw-- 使能端口1
+ #define P20                                      0x01                          //               rw-- 使能端口0
+
+ SFR(P3_OE,	0xff);                                 								// RV:  00H  P3输出使能寄存器
+ #define P37_OE                                  0x80                           //               rw-- 端口7输出使能
+ #define P36_OE                                  0x40                           //               rw-- 端口6输出使能
+ #define P35_OE                                  0x20                           //               rw-- 端口5输出使能
+ #define P34_OE                                  0x10                           //               rw-- 端口4输出使能
+ #define P33_OE                                  0x08                           //               rw-- 端口3输出使能
+ #define P32_OE                                  0x04                           //               rw-- 端口2输出使能
+ #define P31_OE                                  0x02                           //               rw-- 端口1输出使能
+ #define P30_OE                                  0x01                           //               rw-- 端口0输出使能
+
+ #define P3_PU                          *(_IO  uint8 xdata *)0x4056             // RV:  00H  P3上拉使能寄存器
+ #define P37_PU                                  0x80                           //               rw-- 端口7上拉使能
+ #define P36_PU                                  0x40                           //               rw-- 端口6上拉使能
+ #define P35_PU                                  0x20                           //               rw-- 端口5上拉使能
+ #define P34_PU                                  0x10                           //               rw-- 端口4上拉使能
+ #define P33_PU                                  0x08                           //               rw-- 端口3上拉使能
+ #define P32_PU                                  0x04                           //               rw-- 端口2上拉使能
+ #define P31_PU                                  0x02                           //               rw-- 端口1上拉使能
+ #define P30_PU                                  0x01                           //               rw-- 端口0上拉使能
+
+ #define P3_AN                          *(_IO  uint8 xdata *)0x4052             // RV:  00H  P3模拟使能寄存器
+ #define P11_PL                                   0x80                          //               rw-- P11下拉使能
+ #define P01_PL                                   0x40                          //               rw-- P01下拉使能
+ #define P35_AN                                   0x20                          //               rw-- 端口5模拟使能
+ #define P34_AN                                   0x10                          //               rw-- 端口4模拟使能
+ #define P33_AN                                   0x08                          //               rw-- 端口3模拟使能
+ #define P32_AN                                   0x04                          //               rw-- 端口2模拟使能
+ #define P31_AN                                   0x02                          //               rw-- 端口1模拟使能
+ #define P30_AN                                   0x01                          //               rw-- 端口0模拟使能
+
+ #define P37                                      0x80                          //               rw-- 使能端口7
+ #define P36                                      0x40                          //               rw-- 使能端口6
+ #define P35                                      0x20                          //               rw-- 使能端口5
+ #define P34                                      0x10                          //               rw-- 使能端口4
+ #define P33                                      0x08                          //               rw-- 使能端口3
+ #define P32                                      0x04                          //               rw-- 使能端口2
+ #define P31                                      0x02                          //               rw-- 使能端口1
+ #define P30                                      0x01                          //               rw-- 使能端口0
+
+ SFR(P4_IE,	0xd3);                                 								// RV:  00H  P4外部中断使能寄存器
+ #define P04_IE                                  0x80                           //               rw-- 端口P04外部中断使能
+ #define P46_IE                                  0x40                           //               rw-- 端口P46外部中断使能
+ #define P45_IE                                  0x20                           //               rw-- 端口P45外部中断使能
+ #define P44_IE                                  0x10                           //               rw-- 端口P44外部中断使能
+ #define P43_IE                                  0x08                           //               rw-- 端口P43外部中断使能
+ #define P42_IE                                  0x04                           //               rw-- 端口P42外部中断使能
+ #define P41_IE                                  0x02                           //               rw-- 端口P41外部中断使能
+ #define P40_IE                                  0x01                           //               rw-- 端口P40外部中断使能
+
+ SFR(P4_IF,	0xd4);                                 								// RV:  00H  P4外部中断状态寄存器
+ #define P04_IF                                  0x80                           //               rw0- 端口P04外部中断标志位
+ #define P46_IF                                  0x40                           //               rw0- 端口P46外部中断标志位
+ #define P45_IF                                  0x20                           //               rw0- 端口P45外部中断标志位
+ #define P44_IF                                  0x10                           //               rw0- 端口P44外部中断标志位
+ #define P43_IF                                  0x08                           //               rw0- 端口P43外部中断标志位
+ #define P42_IF                                  0x04                           //               rw0- 端口P42外部中断标志位
+ #define P41_IF                                  0x02                           //               rw0- 端口P41外部中断标志位
+ #define P40_IF                                  0x01                           //               rw0- 端口P40外部中断标志位
+
+ SFR(P4_OE,	0xe9);                                 								// RV:  00H  P4输出使能寄存器
+ #define P46_OE                                  0x40                           //               rw-- 端口6输出使能
+ #define P45_OE                                  0x20                           //               rw-- 端口5输出使能
+ #define P44_OE                                  0x10                           //               rw-- 端口4输出使能
+ #define P43_OE                                  0x08                           //               rw-- 端口3输出使能
+ #define P42_OE                                  0x04                           //               rw-- 端口2输出使能
+ #define P41_OE                                  0x02                           //               rw-- 端口1输出使能
+ #define P40_OE                                  0x01                           //               rw-- 端口0输出使能
+
+ #define P4_PU                          *(_IO  uint8 xdata *)0x4057             // RV:  00H  P4上拉使能寄存器
+ #define P47_PU                                  0x80                           //               rw-- 端口7上拉使能
+ #define P46_PU                                  0x40                           //               rw-- 端口6上拉使能
+ #define P45_PU                                  0x20                           //               rw-- 端口5上拉使能
+ #define P44_PU                                  0x10                           //               rw-- 端口4上拉使能
+ #define P43_PU                                  0x08                           //               rw-- 端口3上拉使能
+ #define P42_PU                                  0x04                           //               rw-- 端口2上拉使能
+ #define P41_PU                                  0x02                           //               rw-- 端口1上拉使能
+ #define P40_PU                                  0x01                           //               rw-- 端口0上拉使能
+
+ #define P4_AN                          *(_IO  uint8 xdata *)0x4047             // RV:  00H  P4模拟使能寄存器
+ #define P46_AN                                  0x40                           //               rw-- 端口6模拟使能
+ #define P45_AN                                  0x20                           //               rw-- 端口5模拟使能
+ 
+ #define P47                                      0x80                          //               rw-- 使能端口7
+ #define P46                                      0x40                          //               rw-- 使能端口6
+ #define P45                                      0x20                          //               rw-- 使能端口5
+ #define P44                                      0x10                          //               rw-- 使能端口4
+ #define P43                                      0x08                          //               rw-- 使能端口3
+ #define P42                                      0x04                          //               rw-- 使能端口2
+ #define P41                                      0x02                          //               rw-- 使能端口1
+ #define P40                                      0x01                          //               rw-- 使能端口0
+
+ SFR(P5_OE,	0xfb);                                 								// RV:  00H  P5输出使能寄存器
+ #define P53_OE                                   0x08                          //               rw-- 端口3输出使能
+ #define P52_OE                                   0x04                          //               rw-- 端口2输出使能
+ #define P51_OE                                   0x02                          //               rw-- 端口1输出使能
+ #define P50_OE                                   0x01                          //               rw-- 端口0输出使能
+
+ #define P5_PU                          *(_IO  uint8 xdata *)0x4048             // RV:  00H  P5上拉使能寄存器
+ #define P47_PL                                   0x10                          //               rw-- P47下拉使能
+ #define P53_PU                                   0x08                          //               rw-- 端口3上拉使能
+ #define P52_PU                                   0x04                          //               rw-- 端口2上拉使能
+ #define P51_PU                                   0x02                          //               rw-- 端口1上拉使能
+ #define P50_PU                                   0x01                          //               rw-- 端口0上拉使能
+
+ #define P53                                      0x08                          //               rw-- 使能端口3
+ #define P52                                      0x04                          //               rw-- 使能端口2
+ #define P51                                      0x02                          //               rw-- 使能端口1
+ #define P50                                      0x01                          //               rw-- 使能端口0
+
+ #define PIN7                                     0x80                          //               rw-- PIN7, 用于替代上面的端口编号
+ #define PIN6                                     0x40                          //               rw-- PIN6, 用于替代上面的端口编号
+ #define PIN5                                     0x20                          //               rw-- PIN5, 用于替代上面的端口编号
+ #define PIN4                                     0x10                          //               rw-- PIN4, 用于替代上面的端口编号
+ #define PIN3                                     0x08                          //               rw-- PIN3, 用于替代上面的端口编号
+ #define PIN2                                     0x04                          //               rw-- PIN2, 用于替代上面的端口编号
+ #define PIN1                                     0x02                          //               rw-- PIN1, 用于替代上面的端口编号
+ #define PIN0                                     0x01                          //               rw-- PIN0, 用于替代上面的端口编号
+
+ #define PH_SEL                         *(_IO  uint8 xdata *)0x404c             // RV:  00H  端口复用
+ #define SPITMOD                                  0x80                          //               rw-- SPI从机发送端在发送完成后变为高阻态
+ #define UART1EN                                  0x40                          //               rw-- 端口复用为UART1
+ #define UART2EN                                  0x20                          //               rw-- 端口复用为UART2
+ #define T4SEL                                    0x10                          //               rw-- 端口复用为TIM4
+ #define T3SEL                                    0x08                          //               rw-- 端口复用为TIM3
+ #define T2SEL                                    0x04                          //               rw-- 端口复用为TIM2
+ #define T2SSEL                                   0x02                          //               rw-- 端口复用为TIM2S
+ #define XOE                                      0x01                          //               rw-- 端口复用为X相驱动端
+
+ #define PH_SEL1                        *(_IO  uint8 xdata *)0x404d             // RV:  00H  端口复用
+ #define UART2CH1                                 0x80                          //               rw-- UART2功能转移使能(P36-->P01 P37-->P00)
+ #define UART2CH0                                 0x40                          //               rw-- UART2功能转移使能(P36-->P47 P37-->P12)
+ #define CMPXO_P01                                0x20                          //               rw-- P01比较器输出功能转移-->P34
+ #define SPICT0                                   0x10                          //               rw-- 单线制SPI Debug功能转移(P05-->P00)
+ #define T4CT1                                    0x08                          //               rw-- TIM4功能转移
+ #define T4CT0                                    0x04                          //               rw-- TIM4功能转移
+ #define T3CT1                                    0x02                          //               rw-- TIM3功能转移
+ #define T3CT0                                    0x01                          //               rw-- TIM3功能转移
+ 
+ #define PH_SEL2                        *(_IO  uint8 xdata *)0x4049             // RV:  0CH  端口复用
+ #define ADC_SCYCH7                               0x20                          //               rw-- ADC CH2采样时间配置3
+ #define ADC_SCYCH6                               0x10                          //               rw-- ADC CH2采样时间配置2
+ #define ADC_SCYCH5                               0x08                          //               rw-- ADC CH2采样时间配置1
+ #define ADC_SCYCH4                               0x04                          //               rw-- ADC CH2采样时间配置0
+ #define SPICT1                                   0x01                          //               rw-- 单线制SPI Debug功能转移(P05-->P34)
+
+/******************************************************************************///ADC
+ #define ADC_MASK                       *(_IO uint16 xdata *)0x4036             // RV:0000H  ADC通道使能
+ #define CH15EN                                   0x8000                        //               rw-- ADC通道15使能
+ #define CH14EN                                   0x4000                        //               rw-- ADC通道14使能
+ #define CH13EN                                   0x2000                        //               rw-- ADC通道13使能
+ #define CH12EN                                   0x1000                        //               rw-- ADC通道12使能
+ #define CH11EN                                   0x0800                        //               rw-- ADC通道11使能
+ #define CH10EN                                   0x0400                        //               rw-- ADC通道10使能
+ #define CH9EN                                    0x0200                        //               rw-- ADC通道9使能
+ #define CH8EN                                    0x0100                        //               rw-- ADC通道8使能
+ #define CH7EN                                    0x0080                        //               rw-- ADC通道7使能
+ #define CH6EN                                    0x0040                        //               rw-- ADC通道6使能
+ #define CH5EN                                    0x0020                        //               rw-- ADC通道5使能
+ #define CH4EN                                    0x0010                        //               rw-- ADC通道4使能
+ #define CH3EN                                    0x0008                        //               rw-- ADC通道3使能
+ #define CH2EN                                    0x0004                        //               rw-- ADC通道2使能
+ #define CH1EN                                    0x0002                        //               rw-- ADC通道1使能
+ #define CH0EN                                    0x0001                        //               rw-- ADC通道0使能
+
+ #define ADC_SCYC                       *(_IO  uint8 xdata *)0x4038             // RV:  33H  ADC通道采样时间配置
+
+ #define ADC_CR                         *(_IO  uint8 xdata *)0x4039             // RV:  00H  ADC控制寄存器
+ #define ADCEN                                    0x80                          //               rw-- 使能ADC
+ #define ADCBSY                                   0x40                          //               rw1- ADC启动 & ADC忙标志
+ #define ADCTM1                                   0x10                          //               rw-- DRV触发ADC启动模式
+ #define ADCTM0                                   0x08                          //               rw-- 00不触发01上升沿10下降沿11双沿
+ #define ADCALIGN                                 0x04                          //               rw-- ADC数据次高位对齐
+ #define ADCIE                                    0x02                          //               rw-- ADC中断使能
+ #define ADCIF                                    0x01                          //               rw0- ADC中断标志
+
+ #define ADC0_DR                        *(_I  uint16 xdata *)0x0fd8             // RV:0000H  ADC通道0转换结果
+ #define ADC1_DR                        *(_I  uint16 xdata *)0x0fda             // RV:0000H  ADC通道1转换结果
+ #define ADC2_DR                        *(_I  uint16 xdata *)0x0fdc             // RV:0000H  ADC通道2转换结果
+ #define ADC3_DR                        *(_I  uint16 xdata *)0x0fde             // RV:0000H  ADC通道3转换结果
+ #define ADC4_DR                        *(_I  uint16 xdata *)0x0fe0             // RV:0000H  ADC通道4转换结果
+ #define ADC5_DR                        *(_I  uint16 xdata *)0x0fe2             // RV:0000H  ADC通道5转换结果
+ #define ADC6_DR                        *(_I  uint16 xdata *)0x0fe4             // RV:0000H  ADC通道6转换结果
+ #define ADC7_DR                        *(_I  uint16 xdata *)0x0fe6             // RV:0000H  ADC通道7转换结果
+ #define ADC8_DR                        *(_I  uint16 xdata *)0x0fe8             // RV:0000H  ADC通道8转换结果
+ #define ADC9_DR                        *(_I  uint16 xdata *)0x0fea             // RV:0000H  ADC通道9转换结果
+ #define ADC10_DR                       *(_I  uint16 xdata *)0x0fec             // RV:0000H  ADC通道10转换结果
+ #define ADC11_DR                       *(_I  uint16 xdata *)0x0fee             // RV:0000H  ADC通道11转换结果
+ #define ADC12_DR                       *(_I  uint16 xdata *)0x0ff0             // RV:0000H  ADC通道12转换结果
+ #define ADC13_DR                       *(_I  uint16 xdata *)0x0ff2             // RV:0000H  ADC通道13转换结果
+ #define ADC14_DR                       *(_I  uint16 xdata *)0x0ff4             // RV:0000H  ADC通道14转换结果
+ #define ADC15_DR                       *(_I  uint16 xdata *)0x0ff6             // RV:0000H  ADC通道15转换结果
+/*****************************************************************************///DAC
+ #define DAC_CR                         *(_IO  uint8 xdata *)0x4035             // RV:  0CH  DAC控制寄存器
+ #define DAC0_1EN                                 0x80                          //               rw-- DAC0&1使能
+ #define DACMOD                                   0x40                          //               rw-- DAC模式配置
+ #define ADC_SCYCH3                               0x20                          //               rw-- ADC CH8~CH13采样时间配置3
+ #define ADC_SCYCH2                               0x10                          //               rw-- ADC CH8~CH13采样时间配置2
+ #define ADC_SCYCH1                               0x08                          //               rw-- ADC CH8~CH13采样时间配置1
+ #define ADC_SCYCH0                               0x04                          //               rw-- ADC CH8~CH13采样时间配置0
+
+ #define DAC0_DR                        *(_IO  uint8 xdata *)0x404b             // RV:  00H  DAC0输出值[8:1]
+ #define DAC1_DR                        *(_IO  uint8 xdata *)0x404a             // RV:  00H  DAC1输出值
+ #define DAC0_DR_0                                0x80                          // RV:           rw-- DAC0输出值[0]
+ 
+/******************************************************************************///DMA
+ #define DMA0_CR0                       *(_IO  uint8 xdata *)0x403a             // RV:  00H  DMA通道0配置 & DMA公共配置
+ #define DMA1_CR0                       *(_IO  uint8 xdata *)0x403b             // RV:  00H  DMA通道1配置 & Debug设置
+ #define DMAEN                                    0x80                          //               rw-- DMA通道0/1使能
+ #define DMABSY                                   0x40                          //               rw1- DMA通道0/1状态/启动
+ #define DMACFG2                                  0x20                          //               rw-- DMA通道0/1外设与方向选择位2
+ #define DMACFG1                                  0x10                          //               rw-- DMA通道0/1外设与方向选择位1
+ #define DMACFG0                                  0x08                          //               rw-- DMA通道0/1外设与方向选择位0
+ #define DBGSW                                    0x04                          //               rw-- DMA通道1 DBG模式指向区域,位于DMA1_CR0
+ #define DBGEN                                    0x02                          //               rw-- DMA通道1 DBG模式使能,位于DMA1_CR0
+ #define DMAIE                                    0x04                          //               rw-- DMA中断使能,位于DMA0_CR0
+ #define ENDIAN                                   0x02                          //               rw-- DMA数据传输顺序,位于DMA0_CR0
+ #define DMAIF                                    0x01                          //               rw-- DMA通道0/1中断标志位
+
+ #define DMA0_LEN                       *(_IO  uint8 xdata *)0x403c             // RV:  00H  DMA通道0传输长度配置
+ #define DMA1_LEN                       *(_IO  uint8 xdata *)0x403d             // RV:  00H  DMA通道1传输长度配置
+
+ #define DMA0_BA                        *(_IO uint16 xdata *)0x403e             // RV:0000H  DMA通道0传输地址配置
+ #define DMA1_BA                        *(_IO uint16 xdata *)0x4040             // RV:0000H  DMA通道1传输地址配置
+/******************************************************************************///VREF & VHALF
+ #define VREF_VHALF_CR                  *(_IO  uint8 xdata *)0x404f             // RV:  06H  VREF & VHALF控制寄存器
+ #define VRVSEL1                                  0x80                          //               rw-- VREF电压配置1
+ #define VRVSEL0                                  0x40                          //               rw-- VREF电压配置0
+ #define VREFEN                                   0x10                          //               rw-- VREF使能
+ #define VHALFSEL1                                0x04                          //               rw-- VHALF电压选择VREF系数
+ #define VHALFSEL0                                0x02                          //               rw-- 00:1/8 01:1/4 10:25/64 11:1/2(default)
+ #define VHALFEN                                  0x01                          //               rw-- VHALF使能
+/******************************************************************************///AMP
+ #define AMP_CR0                        *(_IO  uint8 xdata *)0x404e             // RV:  00H  运放控制寄存器0
+ #define CP_EN                                    0x40                          //               rw-- 使能后P27通过50k电阻到P34
+ #define AMP12M_GND                               0x20                          //               rw-- PGA模式运放12负输入端接GND
+ #define AMP0M_GND                                0x10                          //               rw-- PGA模式运放0负输入端接GND
+ #define AMP3EN                                   0x08                          //               rw-- 运放3使能
+ #define AMP2EN                                   0x04                          //               rw-- 运放2使能
+ #define AMP1EN                                   0x02                          //               rw-- 运放1使能
+ #define AMP0EN                                   0x01                          //               rw-- 运放0使能
+ 
+ #define AMP_CR1                        *(_IO  uint8 xdata *)0x4034             // RV:  00H  运放控制寄存器1
+ #define AMP_PH_GAIN2                             0x80                          //               rw-- AMP1/2 PGA增益控制位2 
+ #define AMP_PH_GAIN1                             0x40                          //               rw-- AMP1/2 PGA增益控制位1
+ #define AMP_PH_GAIN0                             0x20                          //               rw-- AMP1/2 PGA增益控制位0
+ #define AMP0_GAIN2                               0x04                          //               rw-- AMP0 PGA增益控制位2
+ #define AMP0_GAIN1                               0x02                          //               rw-- AMP0 PGA增益控制位1 
+ #define AMP0_GAIN0                               0x01                          //               rw-- AMP0 PGA增益控制位0
+ 
+ #define AMP_CR2                        *(_IO  uint8 xdata *)0x4046             // RV:  00H  运放控制寄存器2
+ #define AMP3_GAIN2                               0x04                          //               rw-- AMP3 PGA增益控制位2
+ #define AMP3_GAIN1                               0x02                          //               rw-- AMP3 PGA增益控制位1 
+ #define AMP3_GAIN0                               0x01                          //               rw-- AMP3 PGA增益控制位0
+/******************************************************************************///CMP
+ SFR(CMP_CR0, 0xd5);                                 							// RV:  00H  比较器控制寄存器0
+ #define CMP3IM1                                  0x80                          //               rw-- CMP3中断模式配置1
+ #define CMP3IM0                                  0x40                          //               rw-- CMP3中断模式配置0
+ #define CMP2IM1                                  0x20                          //               rw-- CMP2中断模式配置1
+ #define CMP2IM0                                  0x10                          //               rw-- CMP2中断模式配置0
+ #define CMP1IM1                                  0x08                          //               rw-- CMP1中断模式配置1
+ #define CMP1IM0                                  0x04                          //               rw-- CMP1中断模式配置0
+ #define CMP0IM1                                  0x02                          //               rw-- CMP0中断模式配置1
+ #define CMP0IM0                                  0x01                          //               rw-- CMP0中断模式配置0
+
+ SFR(CMP_CR1, 0xd6);                                 							// RV:  00H  比较器控制寄存器1 
+ #define CMP3MOD1                                 0x40                          //               rw-- CMP3正输入端选择配置1
+ #define CMP3MOD0                                 0x20                          //               rw-- CMP3正输入端选择配置0
+ #define CMP3EN                                   0x10                          //               rw-- CMP3使能
+ #define CMP3HYS                                  0x08                          //               rw-- CMP3迟滞使能
+ #define CMP0HYS1                                 0x02                          //               rw-- CMP0迟滞电压配置1
+ #define CMP0HYS0                                 0x01                          //               rw-- CMP0迟滞电压配置0
+
+ SFR(CMP_CR2, 0xda);                                 							// RV:  00H  比较器控制寄存器2
+ #define CMP4EN                                   0x80                          //               rw-- CMP4使能
+ #define CMP0MOD1                                 0x40                          //               rw-- CMP0模式配置1
+ #define CMP0MOD0                                 0x20                          //               rw-- CMP0模式配置0
+ #define CMP0SEL1                                 0x10                          //               rw-- CMP0端口组合配置1
+ #define CMP0SEL0                                 0x08                          //               rw-- CMP0端口组合配置0
+ #define CMP0CSEL1                                0x04                          //               rw-- CMP0轮询速度配置1
+ #define CMP0CSEL0                                0x02                          //               rw-- CMP0轮询速度配置0
+ #define CMP0EN                                   0x01                          //               rw-- CMP0使能
+
+ SFR(CMP_CR3, 0xdc);                                 							// RV:  00H  比较器控制寄存器3
+ #define CMPDTEN                                  0x80                          //               rw-- 比较器死区采样使能
+ #define DBGSEL1                                  0x40                          //               rw-- DBG信号配置1
+ #define DBGSEL0                                  0x20                          //               rw-- DBG信号配置0
+ #define SAMSEL1                                  0x10                          //               rw-- CMP0/1/2 & ADC 采样时机配置1
+ #define SAMSEL0                                  0x08                          //               rw-- CMP0/1/2 & ADC 采样时机配置0
+ #define CMPSEL2                                  0x04                          //               rw-- 比较器输出选择配置2
+ #define CMPSEL1                                  0x02                          //               rw-- 比较器输出选择配置1
+ #define CMPSEL0                                  0x01                          //               rw-- 比较器输出选择配置0
+
+ SFR(CMP_CR4, 0xe1);                                 							// RV:  00H  比较器控制寄存器4
+ #define CMP4OUT                                  0x80                          //               r--- CMP4比较结果
+ #define CMP3P4M_FS                               0x10                          //               rw-- P27(CMP3P和CMP4M)功能转移至P34
+ #define FAEN                                     0x04                          //               rw-- 滤波采样系数扩大使能
+ #define CMP0_FS                                  0x02                          //               rw-- CMP1/2功能转移使能
+ 
+ SFR(HALL_CR, 0xe2);                                 							// RV:  00H  HALL控制寄存器
+ #define HALL_IF                                  0x80                          //               rw0- HALL中断触发标志位
+ #define HALL_IE                                  0x40                          //               rw-- HALL中断使能
+ #define HALLSEL                                  0x08                          //               rw-- 霍尔信号输入选择
+ #define HALL2                                    0x04                          //               r--- HALL2滤波后输出电平
+ #define HALL1                                    0x02                          //               r--- HALL1滤波后输出电平
+ #define HALL0                                    0x01                          //               r--- HALL0滤波后输出电平
+
+ SFR(CMP_SR, 0xd7);                                 							// RV:  00H  比较器状态寄存器
+ #define CMP3IF                                   0x80                          //               rw0- CMP3中断标志
+ #define CMP2IF                                   0x40                          //               rw0- CMP2中断标志
+ #define CMP1IF                                   0x20                          //               rw0- CMP1中断标志
+ #define CMP0IF                                   0x10                          //               rw0- CMP0中断标志
+ #define CMP3OUT                                  0x08                          //               r--- CMP3比较结果
+ #define CMP2OUT                                  0x04                          //               r--- CMP2比较结果
+ #define CMP1OUT                                  0x02                          //               r--- CMP1比较结果
+ #define CMP0OUT                                  0x01                          //               r--- CMP0比较结果
+
+ SFR(EVT_FILT, 0xd9);                                 							// RV:  00H  驱动保护功能
+ #define MOEMD1                                   0x10                          //               rw-- MOE自动控制配置1
+ #define MOEMD0                                   0x08                          //               rw-- MOE自动控制配置0
+ #define INT0_MOE_EN                              0x04                          //               rw-- INT0中断触发MOE关闭使能
+ #define EFDIV1                                   0x02                          //               rw-- 母线电流保护滤波配置1
+ #define EFDIV0                                   0x01                          //               rw-- 母线电流保护滤波配置0
+
+ #define CMP_SAMR                       *(_IO  uint8 xdata *)0x40ad             // RV:  01H  比较器采样配置
+/******************************************************************************///FLASH
+ /**
+ * @defgroup Flash
+ * @{
+ * @defgroup Flash_Register
+ * @{
+ * @defgroup FLA_KEY
+ * @brief 解锁寄存器, 编程前必须通过该寄存器解除编程锁
+ * - 解锁步骤为:
+ *     1. 写入0x5a, 此时读该寄存器应该读出0x01
+ *     2. 写入0x1f, 此时读该寄存器应该读出0x03, 此时Flash已经处于解锁状态, 可以进行编程操作
+ * - 更多说明可参阅datasheet
+ * @{
+ */
+ SFR(FLA_KEY, 0x84);                                 							// RV:  00H  FLASH解锁寄存器
+ #define FLAKSTA1                                 0x02                          //               r-- FLASH解锁状态位1
+ #define FLAKSTA0                                 0x01                          //               r-- FLASH解锁状态位0
+
+SFR(FLA_CR,	0x85);                                 								// RV:  00H  FLASH控制寄存器
+ #define PAGE_EN                                  0x20                          //               rw-- FLASH页操作使能
+ #define FLAERR                                   0x10                          //               r--- FLASH错误标志位
+ #define FLAPRE                                   0x04                          //               rw-- FLASH预编程使能
+ #define FLAERS                                   0x02                          //               rw-- FLASH清除使能
+ #define FLAEN                                    0x01                          //               rw-- FLASH编程使能
+/******************************************************************************///CRC
+ #define CRC_DIN                        *(_O   uint8 xdata *)0x4021             // RV:  00H  CRC数据输入寄存器
+
+ #define CRC_CR                         *(_IO  uint8 xdata *)0x4022             // RV:  10H  CRC控制寄存器
+ #define CRCDONE                                  0x10                          //               r--- 自动CRC完成标志
+ #define CRCDINI                                  0x08                          //               w1-- CRC初始化
+ #define CRCVAL                                   0x04                          //               rw-- CRC初始化的值
+ #define AUTOINT                                  0x02                          //               rw-- CRC自动计算使能
+ #define CRCPNT                                   0x01                          //               rw-- CRC结果访问位置
+
+ #define CRC_DR                         *(_IO  uint8 xdata *)0x4023             // RV:  00H  CRC结果输出寄存器
+ #define CRC_BEG                        *(_IO  uint8 xdata *)0x4024             // RV:  00H  CRC自动计算的起始位置
+ #define CRC_CNT                        *(_IO  uint8 xdata *)0x4025             // RV:  00H  CRC块数计数器
+/******************************************************************************///TSD
+ #define TSD_CR                         *(_IO  uint8 xdata *)0x402f             // RV:  06H  TSD控制寄存器
+ #define TSDEN                                    0x80                          //               rw-- TSD使能
+ #define TSDADJ3                                  0x08                          //               rw-- TSD温度调节
+ #define TSDADJ2                                  0x04                          //               rw-- TSD温度调节
+ #define TSDADJ1                                  0x02                          //               rw-- TSD温度调节
+ #define TSDADJ0                                  0x01                          //               rw-- TSD温度调节
+/******************************************************************************///POWER
+ SFR(PCON, 0x87);                                 								// RV:  00H  MCU功率控制寄存器
+ #define GF3                                      0x20                          //               rw-- 通用标志3
+ #define GF2                                      0x10                          //               rw-- 通用标志2
+ #define GF1                                      0x08                          //               rw-- 通用标志1
+ #define STOP                                     0x02                          //               rw-- MCU睡眠使能
+ #define IDLE                                     0x01                          //               rw-- MCU待机使能
+
+ SFR(LVSR, 0xdb);                                 								// RV:  00H  状态寄存器
+ #define EXT0CFG2                                 0x20                          //               rw-- 外部中断0端口配置2
+ #define EXT0CFG1                                 0x10                          //               rw-- 外部中断0端口配置1
+ #define EXT0CFG0                                 0x08                          //               rw-- 外部中断0端口配置0
+ #define TSDF                                     0x04                          //               r--- 过温标志位
+ #define LVWF                                     0x02                          //               r--- VDD5低电压预警标志
+ #define LVWIF                                    0x01                          //               rw0- VDD5低电压预警中断标志
+ 
+ #define CCFG1                         *(_IO   uint8 xdata *)0x401E             // RV:  00H  
+ #define LVW_EN_B                                 0x80                          //               rw-- VDD5低电压预警使能,复位使能
+ #define LVW_IE                                   0x40							//               rw-- VDD5低电压预警中断使能
+ #define WDT_EN                                   0x20                          //               rw-- WDT使能
+
+#endif
+

+ 107 - 0
System/FU6522_72_MDU.h

@@ -0,0 +1,107 @@
+/**
+ * @file     FU6522_72_MDU.h
+ * @version  V1.0.0
+ * @author   FortiorTech Hardware Team
+ * @date     2021-07-15 20:52:58
+ * @brief    This file contains ...
+ * 
+ * @copyright Copyright(C) 2022, Fortior Technology Co., Ltd. All rights reserved.
+ */
+
+#ifndef __FU6522_72_MDU_H__
+#define __FU6522_72_MDU_H__
+
+// Include external header file.
+#include <FU6522_72_MCU.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+	
+/**
+ * @brief SMDU的模式类型
+ *
+ * @note 使用@ref SMDU_RunNoBlock时, 其中的mode参数可以直接使用本枚举的内容
+ * @note 使用@ref SMDU_RunBlock时, 其中的mode参数可以直接使用本枚举的内容
+ */
+typedef enum
+{
+    S1MUL   = 0, /**< 有符号乘法, 计算结果左移1位 */
+    SMUL    = 1, /**< 有符号乘法 */
+    UMUL    = 2, /**< 无符号乘法 */
+    DIV     = 3, /**< 32/16无符号除法 */
+    SIN_COS = 4, /**< Sin/Cos */
+    ATAN    = 5, /**< ATan */
+    LPF     = 6, /**< 低通滤波 */
+    PI      = 7  /**< PI */
+} ETypeSMDUMode;
+
+
+/**
+ * @brief 运行SMDU且不等待运行结束
+ *
+ * @param  stan (0-3) 要启动的计算单元编号
+ * @param  mode (0-7) 指定计算单元的模式, 可使用@see ETypeSMDUMode 作为计算模式的设置\n
+ * @ref S1MUL   有符号乘法, 计算结果左移1位 \n
+ * @ref SMUL    有符号乘法 \n
+ * @ref UMUL    无符号乘法 \n
+ * @ref DIV     32/16无符号除法 \n
+ * @ref SIN_COS Sin/Cos \n
+ * @ref ATAN    ATan \n
+ * @ref LPF     低通 \n
+ * @ref PI      PI \n
+ */
+#define SMDU_RunNoBlock(stan, mode)   do                                                  \
+                                      {                                                   \
+                                          MDU_CR = MDUSTA0 << stan | (unsigned char)mode; \
+                                      } while (0)
+
+/**
+ * @brief 运行SMDU且等待运行结束
+ *
+ * @param  stan (0-3) 要启动的计算单元编号
+ * @param  mode (0-7) 指定计算单元的模式, 可使用@see ETypeSMDUMode 作为计算模式的设置\n
+ * @ref S1MUL   有符号乘法, 计算结果左移1位 \n
+ * @ref SMUL    有符号乘法 \n
+ * @ref UMUL    无符号乘法 \n
+ * @ref DIV     32/16无符号除法 \n
+ * @ref SIN_COS Sin/Cos \n
+ * @ref ATAN    ATan \n
+ * @ref LPF     低通 \n
+ * @ref PI      PI \n
+ */
+#define SMDU_RunBlock(stan, mode)   do                                       \
+                                    {                                        \
+                                        SMDU_RunNoBlock(stan, mode);         \
+                                        while ((MDU_CR & MDUBSY) == MDUBSY); \
+                                    } while (0);
+
+// SMDU部分函数声明
+void HW_Zero_PI_Init(void);
+void HW_One_PI_Init(void);
+void HW_Two_PI_Init(void);
+void HW_Three_PI_Init(void);
+
+int16_t HW_Zero_Calc(int16_t Xn0);
+int16_t HW_One_Calc(int16_t Xn0);
+int16_t HW_Two_Calc(int16_t Xn0);
+int16_t HW_Three_Calc(int16_t Xn0);
+
+int16_t LPF_Zero_Update(int16_t Xn1, int16_t Xn0, int16_t K);
+int16_t LPF_One_Update(int16_t Xn1, int16_t Xn0, int16_t K);
+int16_t LPF_Two_Update(int16_t Xn1, int16_t Xn0, int16_t K);
+int16_t LPF_Three_Update(int16_t Xn1, int16_t Xn0, int16_t K);
+
+int16 Atan_Us_MDU(int16 Xn1, int16 Xn0);
+int16 DivQ_L_MDU(uint16 Xn1, uint16 Xn0,uint16 Yn);
+int16 MULU_H_MDU(uint16 Xn0, uint16 Xn1);
+uint16 Sqrt_alpbet(int16 i_alp, int16 i_bet);
+int16 DivQ_L_MDU2(uint16 Xn1, uint16 Xn0, uint16 Yn);
+void MULS_H_MDU(int16 Xn0, int16 Xn1,uint16 xdata *lusResult32);	
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 37 - 0
System/FU6522_72_Type.h

@@ -0,0 +1,37 @@
+#ifndef __FU6522_72_TYPE_H__
+#define __FU6522_72_TYPE_H__
+
+#include <ctype.h> 
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define _I                              volatile const //< Defines 'read only' permissions
+#define _O                              volatile       //< Defines 'write only' permissions
+#define _IO                             volatile       //< Defines 'read&write' permissions
+
+
+typedef unsigned char                   uint8;
+typedef unsigned short                  uint16;
+typedef unsigned long                   uint32;
+typedef long                            int32;
+typedef short                           int16;
+typedef char                            int8;
+
+typedef enum{DISABLE = 0, ENABLE}       ebool;
+
+typedef unsigned char                   uint8_t;
+typedef unsigned short                  uint16_t;
+typedef unsigned long                   uint32_t;
+typedef long                            int32_t;
+typedef short                           int16_t;
+typedef char                            int8_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 198 - 0
System/STARTUP_FU6805.A51

@@ -0,0 +1,198 @@
+$NOMOD51
+;------------------------------------------------------------------------------
+;  This file is part of the C51 Compiler package
+;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
+;  Version 8.01
+;
+;  *** <<< Use Configuration Wizard in Context Menu >>> ***
+;------------------------------------------------------------------------------
+;  STARTUP.A51:  This code is executed after processor reset.
+;
+;  To translate this file use A51 with the following invocation:
+;
+;     A51 STARTUP.A51
+;
+;  To link the modified STARTUP.OBJ file to your application use the following
+;  Lx51 invocation:
+;
+;     Lx51 your object file list, STARTUP.OBJ  controls
+;
+;------------------------------------------------------------------------------
+;
+;  User-defined <h> Power-On Initialization of Memory
+;
+;  With the following EQU statements the initialization of memory
+;  at processor reset can be defined:
+;
+; <o> IDATALEN: IDATA memory size <0x0-0x100>
+;     <i> Note: The absolute start-address of IDATA memory is always 0
+;     <i>       The IDATA space overlaps physically the DATA and BIT areas.
+IDATALEN        EQU     0XFF
+;
+; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF> 
+;     <i> The absolute start address of XDATA memory
+XDATASTART      EQU     0     
+;
+; <o> XDATALEN: XDATA memory size <0x0-0xFFFF> 
+;     <i> The length of XDATA memory in bytes.
+XDATALEN        EQU     0X0FD8      
+;
+; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF> 
+;     <i> The absolute start address of PDATA memory
+PDATASTART      EQU     0H
+;
+; <o> PDATALEN: PDATA memory size <0x0-0xFF> 
+;     <i> The length of PDATA memory in bytes.
+PDATALEN        EQU     0H
+;
+;</h>
+;------------------------------------------------------------------------------
+;
+;<h> Reentrant Stack Initialization
+;
+;  The following EQU statements define the stack pointer for reentrant
+;  functions and initialized it:
+;
+; <h> Stack Space for reentrant functions in the SMALL model.
+;  <q> IBPSTACK: Enable SMALL model reentrant stack
+;     <i> Stack space for reentrant functions in the SMALL model.
+IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
+;  <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
+;     <i> Set the top of the stack to the highest location.
+IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  
+; </h>
+;
+; <h> Stack Space for reentrant functions in the LARGE model.      
+;  <q> XBPSTACK: Enable LARGE model reentrant stack
+;     <i> Stack space for reentrant functions in the LARGE model.
+XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.
+;  <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
+;     <i> Set the top of the stack to the highest location.
+XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1 
+; </h>
+;
+; <h> Stack Space for reentrant functions in the COMPACT model.    
+;  <q> PBPSTACK: Enable COMPACT model reentrant stack
+;     <i> Stack space for reentrant functions in the COMPACT model.
+PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
+;
+;   <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
+;     <i> Set the top of the stack to the highest location.
+PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  
+; </h>
+;</h>
+;------------------------------------------------------------------------------
+;
+;  Memory Page for Using the Compact Model with 64 KByte xdata RAM
+;  <e>Compact Model Page Definition
+;
+;  <i>Define the XDATA page used for PDATA variables. 
+;  <i>PPAGE must conform with the PPAGE set in the linker invocation.
+;
+; Enable pdata memory page initalization
+PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
+;
+; <o> PPAGE number <0x0-0xFF> 
+; <i> uppermost 256-byte address of the page used for PDATA variables.
+PPAGE           EQU     0
+;
+; <o> SFR address which supplies uppermost address byte <0x0-0xFF> 
+; <i> most 8051 variants use P2 as uppermost address byte
+PPAGE_SFR       DATA    0A0H
+;
+; </e>
+;------------------------------------------------------------------------------
+
+; Standard SFR Symbols 
+ACC     DATA    0E0H
+B       DATA    0F0H
+SP      DATA    81H
+DPL     DATA    82H
+DPH     DATA    83H
+
+                NAME    ?C_STARTUP
+
+
+?C_C51STARTUP   SEGMENT   CODE
+?STACK          SEGMENT   IDATA
+
+                RSEG    ?STACK
+                DS      1
+
+                EXTRN CODE (?C_START)
+                PUBLIC  ?C_STARTUP
+
+                CSEG    AT      0
+?C_STARTUP:     LJMP    STARTUP1
+
+                RSEG    ?C_C51STARTUP
+
+STARTUP1:
+
+IF IDATALEN <> 0
+                MOV     R0,#IDATALEN - 1
+                CLR     A
+IDATALOOP:      MOV     @R0,A
+                DJNZ    R0,IDATALOOP
+ENDIF
+
+IF XDATALEN <> 0
+                MOV     DPTR,#XDATASTART
+                MOV     R7,#LOW (XDATALEN)
+  IF (LOW (XDATALEN)) <> 0
+                MOV     R6,#(HIGH (XDATALEN)) +1
+  ELSE
+                MOV     R6,#HIGH (XDATALEN)
+  ENDIF
+                CLR     A
+XDATALOOP:      MOVX    @DPTR,A
+                INC     DPTR
+                DJNZ    R7,XDATALOOP
+                DJNZ    R6,XDATALOOP
+ENDIF
+
+IF PPAGEENABLE <> 0
+                MOV     PPAGE_SFR,#PPAGE
+ENDIF
+
+IF PDATALEN <> 0
+                MOV     R0,#LOW (PDATASTART)
+                MOV     R7,#LOW (PDATALEN)
+                CLR     A
+PDATALOOP:      MOVX    @R0,A
+                INC     R0
+                DJNZ    R7,PDATALOOP
+ENDIF
+
+IF IBPSTACK <> 0
+EXTRN DATA (?C_IBP)
+
+                MOV     ?C_IBP,#LOW IBPSTACKTOP
+ENDIF
+
+IF XBPSTACK <> 0
+EXTRN DATA (?C_XBP)
+
+                MOV     ?C_XBP,#HIGH XBPSTACKTOP
+                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
+ENDIF
+
+IF PBPSTACK <> 0
+EXTRN DATA (?C_PBP)
+                MOV     ?C_PBP,#LOW PBPSTACKTOP
+ENDIF
+
+                MOV     SP,#?STACK-1
+
+; This code is required if you use L51_BANK.A51 with Banking Mode 4
+;<h> Code Banking
+; <q> Select Bank 0 for L51_BANK.A51 Mode 4
+#if 0   
+;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
+EXTRN CODE (?B_SWITCH0)
+                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
+#endif
+;</h>
+                LJMP    ?C_START
+
+                END

+ 199 - 0
User/Application/AddFunction.c

@@ -0,0 +1,199 @@
+#include <MyProject.h>
+
+
+bool  isCtrlPowOn = false;                  ///< 开关机控制
+
+FOCCTRL xdata mcFocCtrl;
+MCRAMP xdata mcRefRamp;
+int16 refRampOut = 0;
+
+/**
+    @brief        对变量取16位的绝对值
+    @param[in]    value
+    @return       绝对值
+    @date         2022-07-13
+*/
+uint16 Abs_F16(int16 value)
+{
+    if (value < 1)
+    {
+        return (-value);
+    }
+    else
+    {
+        return (value);
+    }
+}
+
+/**
+    @brief        对变量取32位的绝对值
+    @param[in]    value
+    @return       绝对值
+    @date         2022-07-13
+*/
+uint32 Abs_F32(int32 value)
+{
+    if (value < 1)
+    {
+        return (-value);
+    }
+    else
+    {
+        return (value);
+    }
+}
+
+
+
+/**
+    @brief        调速信号处理包含:开关机控制、将调速信号处理成控制目标给定信号
+    @date         2022-07-14
+*/
+void TargetRef_Process(void)
+{
+    #if (SPEED_MODE == NONEMODE)
+	isCtrlPowOn = true;  // 开机
+    mcFocCtrl.Ref = MOTOR_SPEED_MAX_RPM;
+    #elif (SPEED_MODE == PWMMODE)
+    #endif
+}
+
+/**
+    @brief        外部闭环控制函数,示例代码提供 电流环,速度环,功率环,UQ控制示例代码,可根据需要自行修改
+                 建议使用默认1ms周期运行
+    @date         2022-07-14
+*/
+void Speed_response(void)
+{
+    uint16 FOC_KSLIDE_Temp = 0;
+    uint16 FOC_EKLPFMIN_Temp = 0;
+    
+    if ((mcState == mcRun) || (mcState == mcStop))
+    {
+        switch (mcFocCtrl.CtrlMode)
+        {
+            case 0:
+            {
+                if (mcFocCtrl.SpeedFlt > MOTOR_LOOP_RPM)
+                {
+                    mcFocCtrl.Mode0HoldCnt++;
+                    
+                    if (mcFocCtrl.Mode0HoldCnt > 5)
+                    {
+                        mcFocCtrl.CtrlMode  = 1;
+                        FOC_QKP             = QKP;
+                        FOC_QKI             = QKI;
+                        FOC_DKP             = DKP;
+                        FOC_DKI             = DKI;
+                        // ClrBit(FOC_CR2,UDD);
+                        mcRefRamp.OutValue_float = S_Value(2000.0);
+                        mcFocCtrl.LoopTime = LOOP_TIME;
+                        mcFocCtrl.IqRef = FOC_IQREF;
+                        FOC_IDREF = 0;
+                        PI1_UKH = IQ_Start_CURRENT;
+                    }
+                }
+                else
+                {
+                    mcFocCtrl.Mode0HoldCnt = 0;
+                }
+            }
+            break;
+            
+            case 1:
+            {
+                mcFocCtrl.LoopTime++;
+                
+                if (mcFocCtrl.LoopTime >= LOOP_TIME)
+                {
+                    mcFocCtrl.LoopTime = 0;
+                    refRampOut = Motor_Ramp(mcFocCtrl.Ref);
+                    FOC_IQREF = HW_Zero_Calc(refRampOut - mcFocCtrl.SpeedFlt);
+                    FOC_IDREF = 0;
+                }
+            }
+            break;
+        }
+    }
+}
+
+
+
+/**
+    @brief        控制给定爬坡函数
+                 以浮点进行计算,解决整数爬坡由于精度的影响,导致爬坡结果阶梯变化
+                 函数控制周期默认为闭环控制周期,建议使用默认1ms周期运行
+    @param[in]    ref 给定目标值
+    @return       爬坡结果(int16)
+    @date         2022-07-14
+*/
+int16 Motor_Ramp(int16 ref)
+{
+    mcRefRamp.RefValue = ref;
+    
+    if (mcRefRamp.OutValue_float < mcRefRamp.RefValue)
+    {
+        if (mcRefRamp.OutValue_float + mcRefRamp.IncValue < mcRefRamp.RefValue)
+        {
+            mcRefRamp.OutValue_float += mcRefRamp.IncValue;
+        }
+        else
+        {
+            mcRefRamp.OutValue_float = mcRefRamp.RefValue;
+        }
+    }
+    else if (mcRefRamp.OutValue_float > mcRefRamp.RefValue)
+    {
+        if (mcRefRamp.OutValue_float - mcRefRamp.DecValue > mcRefRamp.RefValue)
+        {
+            mcRefRamp.OutValue_float -= mcRefRamp.DecValue;
+        }
+        else
+        {
+            mcRefRamp.OutValue_float = mcRefRamp.RefValue;
+        }
+    }
+    else
+    {
+        mcRefRamp.OutValue_float = mcRefRamp.RefValue;
+    }
+    
+    return (int16)mcRefRamp.OutValue_float;                                                         // 输出浮点数取整
+}
+
+
+/**
+    @brief        启动ATO爬坡函数,用于静止启动时候对ATO进行爬坡,提高启动可靠性
+    @date         2022-07-14
+*/
+void ATORamp(void)
+{
+    if (mcState == mcRun)
+    {
+        if (mcFocCtrl.State_Count == (ATO_RAMP_PERIOD << 2))
+        {
+            FOC_EKP = OBSW_KP_GAIN_RUN1;              // 估算器里的PI的KP
+            FOC_EKI = OBSW_KI_GAIN_RUN1;              // 估算器里的PI的KI
+        }
+        else if (mcFocCtrl.State_Count == ((ATO_RAMP_PERIOD << 1) + ATO_RAMP_PERIOD))
+        {
+            FOC_EKP = OBSW_KP_GAIN_RUN2;             // 估算器里的PI的KP
+            FOC_EKI = OBSW_KI_GAIN_RUN2;             // 估算器里的PI的KI
+        }
+        else if (mcFocCtrl.State_Count == (ATO_RAMP_PERIOD << 1))
+        {
+            FOC_EKP = OBSW_KP_GAIN_RUN3;             // 估算器里的PI的KP
+            FOC_EKI = OBSW_KI_GAIN_RUN3;             // 估算器里的PI的KI
+        }
+        else if (mcFocCtrl.State_Count <= ATO_RAMP_PERIOD && mcFocCtrl.Flg_ATORampEnd == 0)
+        {
+            FOC_EKP = OBSW_KP_GAIN_RUN4;             // 估算器里的PI的KP
+            FOC_EKI = OBSW_KI_GAIN_RUN4;             // 估算器里的PI的KI
+            mcFocCtrl.Flg_ATORampEnd = 1;            // ATO 爬坡结束
+        }
+    }
+}
+void TickCycle_1ms(void)
+{
+    
+}

+ 131 - 0
User/Application/Interrupt.c

@@ -0,0 +1,131 @@
+#include <MyProject.h>
+
+extern uint8 data g_1mTick;                   ///< 1ms滴答信号,每隔1ms在SYSTICK定时器被置1,需在大循环使用处清零
+
+int16 idata Power_Currt;
+
+
+/**
+    @brief        低于预警中断与过温中断
+    @brief        开启低压检测中断后,MCU会对输入电压进行监测,当输入电压低于设定值,则会触发中断
+    @brief        开启过温保护中断后,MCU会对内部结温进行监测,当内部结温高于设定值,则会触发中断
+    @date         2022-07-14
+*/
+void LVW_TSD_INT(void) interrupt 0
+{
+    if (ReadBit(LVSR, LVWIF))
+    {
+        if (ReadBit(LVSR, LVWF))
+        {
+            mcFaultSource = FaultUnderVoltageDC;
+            ClrBit(LVSR, LVWF);
+        }
+        
+        ClrBit(LVSR, LVWIF);
+    }
+    
+    if (TSDIF)
+    {
+        if (ReadBit(LVSR, TSDF))
+        {
+            ClrBit(LVSR, TSDF);
+        }
+        
+        TSDIF = 0;
+    }
+}
+
+/**
+    @brief        外部中断0
+    @brief        一般用于响应IPM的FO过流信号
+    @date         2022-07-14
+*/
+void EXTERN0_INT(void) interrupt 1                  //  外部中断0
+{
+    if (IF0)
+    {
+        IF0 = 0;                                // clear P00 interrupt flag
+    }
+}
+
+
+/**
+    @brief        FOC中断(Drv中断),每个载波周期执行一次,用于处理响应较高的程序,中断优先级第二
+    @date         2022-07-14
+*/
+void DRV_ISR(void) interrupt 3
+{
+    if (ReadBit(DRV_SR, DCIF))    // 比较中断
+    {
+        SetReg(DRV_SR, 0xFF, SYSTIE | FGIF | DCIM1 | SYSTIF);
+    }
+}
+
+
+
+/**
+    @brief        定时器3中断服务函数
+    @note         本例程中用于PWM调速信号捕获
+    @date         2022-07-14
+*/
+void TIM3_INT(void) interrupt 9
+{
+    if (ReadBit(TIM3_CR1, T3IR))
+    {
+        ClrBit(TIM3_CR1, T3IR);
+    }
+    
+    if (ReadBit(TIM3_CR1, T3IP))//周期中断
+    {
+        ClrBit(TIM3_CR1, T3IP);
+    }
+    
+    if (ReadBit(TIM3_CR1, T3IF))
+    {
+        ClrBit(TIM3_CR1, T3IF);
+    }
+}
+
+
+
+/**
+    @brief        滴答定时器,默认用于产生1ms定时间隔
+    @date         2022-07-14
+*/
+void SYStick_INT(void) interrupt 10
+{
+    if (ReadBit(DRV_SR, SYSTIF))          // SYS TICK中断
+    {
+        g_1mTick = 1;
+        
+        if (mcFocCtrl.State_Count > 0)
+        { mcFocCtrl.State_Count--; }
+        
+        SetReg(DRV_SR, 0xFF, SYSTIE | FGIF | DCIF | DCIM1);
+    }
+}
+
+
+
+/**
+    @brief        比较器硬件过流保护,该中断仅提供 故障码 赋值,用于状态机的切换。
+                 需要开启比较器CMP3  发生过流 自动清除MOE功能
+    @date         2022-07-14
+*/
+
+void CMP3_INT(void)  interrupt 12
+{
+    if (ReadBit(CMP_SR, CMP3IF))
+    {
+        if (mcState != mcPosiCheck)
+        {
+            mcFaultSource = FaultHardOVCurrent;     // 硬件过流保护
+        }
+        
+        ClrBit(CMP_SR, CMP3IF);
+    }
+}
+
+void UART2_INT(void)  interrupt 14
+{
+}

+ 120 - 0
User/Application/main.c

@@ -0,0 +1,120 @@
+#include <MyProject.h>
+
+uint8 data g_1mTick = 0;
+
+
+/**
+    @brief        参考电压,偏置电压配置
+    @date         2022-07-14
+*/
+void VREFConfigInit(void)
+{
+    // 配置参考电压为5V
+    SetReg(VREF_VHALF_CR, VRVSEL1 | VRVSEL0, VRVSEL0);
+    // 配置半电压为2.5V
+    SetBit(VREF_VHALF_CR, VHALFSEL1 | VHALFSEL0);
+    #if (VREF_OUT_EN)
+    SetBit(P3_AN, PIN5);
+    SetBit(P3_OE, PIN5);
+    #endif
+    #if (VHALF_EN)
+    SetBit(P3_AN, P32);
+    SetBit(VREF_VHALF_CR, VHALFEN);
+    #endif
+    SetBit(VREF_VHALF_CR, VREFEN);
+}
+/**
+    @brief     硬件初始化,初始化需要使用的硬件设备配置,FOC必须配置的是运放电压、运放初始化、ADC初始化、Driver初始化
+              其他的可根据实际需求加。
+    @date      2022-07-14
+*/
+void HardwareInit(void)
+{
+    VREFConfigInit();
+    CMP3_Init();
+    GPIO_Init();
+    ADC_Init();
+    Driver_Init();
+    AMP_Init();
+    Timer3_Init();
+	
+    CMP3_Interrupt_Init();
+	
+    ClrBit(IP2, PSYSTICK1 | PSYSTICK0);
+    SetBit(DRV_SR, SYSTIE);
+    EA = 1;
+}
+
+
+
+/**
+    @brief        部分变量初始化,上电运行一次
+    @date         2022-07-14
+*/
+void SoftwareInit(void)
+{
+    memset(&mcFocCtrl, 0, sizeof(FOCCTRL));
+    /* -----保护----- */
+    mcFaultSource = 0;
+    /*****电机状态机时序变量***********/
+    McStaSet.SetMode = 0;
+    mcCurOffset.IuOffsetSum = 16383;
+    mcCurOffset.IvOffsetSum = 16383;
+    mcCurOffset.Iw_busOffsetSum = 16383;
+    mcState = mcReady;
+    mcFaultSource   = FaultNoSource;
+}
+
+
+
+void main(void)
+{
+    uint16 PowerUpCnt = 0;
+    for (PowerUpCnt = 0; PowerUpCnt < 55000; PowerUpCnt++);
+    
+    SoftwareInit();
+    HardwareInit();
+    
+    while (1)
+    {
+        if (!mcCurOffset.OffsetFlag)
+        {
+            GetCurrentOffset();
+        }
+        else
+        {
+            MC_Control();
+            
+            if (g_1mTick)
+            {
+                if ((mcState != mcInit) && (mcState != mcReady))
+                {
+                    mcFocCtrl.SpeedFlt  = LPF_Zero_Update(FOC__EOME, mcFocCtrl.SpeedFlt, 30);
+                }
+                else
+                {
+                    mcFocCtrl.SpeedFlt = 0;
+                }
+                
+                SetBit(ADC_CR, ADCBSY);
+                Power_Currt = (ADC7_DR);
+                Power_Currt   = Abs_F16(Power_Currt - mcCurOffset.Iw_busOffset);
+                mcFocCtrl.mcADCCurrentbus  = LPF_Zero_Update(Power_Currt << 2, mcFocCtrl.mcADCCurrentbus, 20);
+                
+                if (mcState != mcRun)
+                {
+                    mcFocCtrl.mcDcbusFlt = LPF_Zero_Update(ADC2_DR, mcFocCtrl.mcDcbusFlt, 50);
+                }
+                else
+                {
+                    mcFocCtrl.mcDcbusFlt = FOC__UDCFLT;
+                }
+                
+                TargetRef_Process();
+                Speed_response();
+                ATORamp();
+                g_1mTick = 0;
+            }
+        }
+    }
+}

+ 188 - 0
User/Function/MotorControl.c

@@ -0,0 +1,188 @@
+#include <MyProject.h>
+
+MotStateType  data mcState;
+MotStaM     McStaSet;
+
+/**
+    @brief     电机控制状态机
+    @warning   电机的状态只能在电机状态控制中切换,禁止在其他地方切换电机状态
+    @date      2022-07-14
+*/
+void MC_Control(void)
+{
+    switch (mcState)
+    {
+        case mcReady:
+            Motor_Ready();
+            
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else if ((mcCurOffset.OffsetFlag == 1) && isCtrlPowOn)
+            { mcState = mcInit; }
+            
+            break;
+            
+        case mcInit:
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else if (isCtrlPowOn == false)
+            {
+                mcState = mcStop;
+            }
+            else
+            {
+                Motor_Init();
+                #if (CHARGE_EN == Enable)
+                mcFocCtrl.State_Count   = CHARGE_TIME;
+                mcState = mcCharge;
+                #else
+                #if (ALIGN_MOME != ALIGN_DSIABLE)
+                mcFocCtrl.mcPosCheckAngle           = Align_Angle1;
+                mcState                             = mcAlign;
+                mcFocCtrl.State_Count               = AlignAll_Time;
+                #else
+                mcState = mcStart;
+                #endif
+                #endif
+            }
+            
+            break;
+            
+        case mcCharge:
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else if (isCtrlPowOn == false)
+            {
+                mcState = mcStop;
+            }
+            else
+            {
+                Motor_Charge();
+                
+                if (mcFocCtrl.State_Count == 0)
+                {
+                    MOE = 0;
+                    #if (PosCheckEnable == Enable)
+                    mcState                             = mcPosiCheck;
+                    McStaSet.SetFlag.PosiCheckSetFlag   = 0;
+                    mcFocCtrl.mcPosCheckAngle           = 0xffff;                     // 角度赋初值
+                    #elif (ALIGN_MOME != ALIGN_DSIABLE)
+                    mcFocCtrl.mcPosCheckAngle           = Align_Angle1;
+                    mcState                             = mcAlign;
+                    mcFocCtrl.State_Count               = AlignAll_Time;
+                    #else
+                    mcState = mcStart;
+                    #endif
+                }
+            }
+            
+            break;
+            #if (ALIGN_MOME != ALIGN_DSIABLE)
+            
+        case mcAlign:
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else if (isCtrlPowOn == false)
+            {
+                mcState = mcStop;
+            }
+            else
+            {
+                Motor_Align();
+                #if (ALIGN_MOME == ALIGN_TEST)
+                
+                while (1);
+                
+                #else
+                
+                if (mcFocCtrl.State_Count > (Align_Time1 + Align_Time2 + Align_Time3) )
+                {
+                    mcFocCtrl.CurrentAlignStatus = 0;
+                    FOC__THETA = Align_Angle1;
+                    FOC_IQREF  = IQ_Align_CURRENT * ((float)(AlignAll_Time - mcFocCtrl.State_Count) / AlignRamp_Time);
+                }
+                else if (mcFocCtrl.State_Count > (Align_Time2 + Align_Time3))
+                {
+                    mcFocCtrl.CurrentAlignStatus = 1;
+                    FOC__THETA = Align_Angle2;
+                    FOC_IQREF  = IQ_Align_CURRENT;
+                }
+                else if (mcFocCtrl.State_Count > (Align_Time3))
+                {
+                    mcFocCtrl.CurrentAlignStatus = 2;
+                    mcFocCtrl.AngleProcess = Angle_AngleK * (Align_Time2 + Align_Time3 - mcFocCtrl.State_Count);
+                    mcFocCtrl.AngleStart = Align_Angle2 + mcFocCtrl.AngleProcess;
+                    FOC__THETA = mcFocCtrl.AngleStart;
+                }
+                else
+                {
+                    mcFocCtrl.CurrentAlignStatus = 2;
+                    mcState = mcStart;
+                }
+                
+                #endif
+            }
+            
+            break;
+            #endif
+            
+        case mcStart:
+            Motor_Static_Open();
+            mcState = mcRun;
+            break;
+            
+        case mcRun:
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else if (isCtrlPowOn == false)
+            {
+                mcState = mcStop;
+                mcFocCtrl.State_Count = 3000;
+            }
+            
+            break;
+            
+        case mcStop:
+            if (mcFaultSource != FaultNoSource)
+            {
+                mcState = mcFault;
+            }
+            else
+            {
+                if ((mcFocCtrl.SpeedFlt < MOTOR_SPEED_STOP_RPM) && (mcFocCtrl.State_Count == 0))
+                {
+                    mcState = mcReady;
+                    ClrBit(DRV_CR, FOCEN);
+                    ClrBit(DRV_CR, DRVEN);
+                    MOE = 0;
+                }
+            }
+            
+            break;
+            
+        case mcFault:
+            if (mcFaultSource == FaultNoSource)
+            {
+                mcState = mcReady;
+            }
+            else
+            {
+                DRV_CMR &= 0xFFC0;
+                ClrBit(DRV_CR, FOCEN);
+                MOE = 0;
+            }
+            
+            break;
+    }
+}
+

+ 495 - 0
User/Function/MotorControlFunction.c

@@ -0,0 +1,495 @@
+/**
+    @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
+    @file      MotorControlFunction.c
+    @author    Fortiortech  Appliction Team
+    @since     Create:2021-11-07
+    @date      Last modify:2022-07-14
+    @note      Last modify author is Marcel He
+    @brief
+*/
+
+
+#include <MyProject.h>
+
+CurrentOffset      xdata mcCurOffset;  ///< 电流采样偏置电压采集缓存
+
+/**
+    @brief      对FOC的相关寄存器进行配置,先清理寄存器,后配置,最后使能
+    @exception  初始化FOC,需要先关闭DRVIVER,对FOC寄存器配置完成后,使能FOC再打开DRVIVER,否则可能导致第一拍电流采样错误
+    @date       2022-07-14
+*/
+void FOC_Init(void)
+{
+    DRV_CMR         = 0x0ABF;  // UH/VH/WH UL/VL/WL 互补并使能
+    /* 使能FOC */
+    ClrBit(DRV_CR, DRVEN);                                // 关闭DRVIVER 计时器,防止第一拍采样出错
+    ClrBit(DRV_CR, FOCEN);
+    SetBit(DRV_CR, FOCEN);
+    ClrBit(FOC_CR0, MERRS1);
+    SetBit(FOC_CR0, MERRS0);
+    FOC_EOMEKLPF    = _Q8(1.0);                            // FOC内部 速度滤波系数
+    /* 配置FOC寄存器 */
+    FOC_CR1         = 0;                                   // 清零 FOC_CR1
+    FOC_CR2         = 0;                                   // 清零 FOC_CR2
+    FOC_IDREF       = 0;                                   // 清零 Id
+    FOC_IQREF       = 0;                                   // 清零 Iq
+    FOC__THETA      = 0;                                   // 清零 角度
+    FOC_RTHEACC     = 0;                                   // 清零 爬坡函数的初始加速度
+    FOC__RTHESTEP   = 0;                                   // 清零 爬坡速度
+    FOC_RTHECNT     = 0;                                   // 清零 爬坡次数
+    FOC_THECOMP     = _Q15(0.0 / 180.0);                   // SMO 估算补偿角
+    FOC_THECOR      = 0x04;                                // 误差角度补偿
+    /* 电流环参数配置 */
+    FOC_DMAX        = DOUTMAX;
+    FOC_DMIN        = DOUTMIN;
+    FOC_QMAX        = QOUTMAX;
+    FOC_QMIN        = QOUTMIN;
+    /* 位置估算参数配置 */
+    FOC_EK1         = OBS_K1T;
+    FOC_EK2         = OBS_K2T;
+    FOC_EK3         = OBS_K3T;
+    FOC_EK4         = OBS_K4T;
+    /* -----AO/PLL/SMO ----- */
+    #if (EstimateAlgorithm == AO)
+    {
+        ClrBit(FOC_CR2, ESEL);
+        FOC_KSLIDE      = OBS_KSLIDE;
+        FOC_EKLPFMIN    = OBS_EA_KS;
+        SetBit(FOC_CR0, ESCMS);
+        SetBit(FOC_CR3, MFP_EN);
+    }
+    #elif (EstimateAlgorithm == SMO)
+    {
+        ClrBit(FOC_CR2, ESEL);
+        FOC_KSLIDE      = OBS_KSLIDE;
+        FOC_EKLPFMIN    = OBS_EA_KS;
+    }
+    #elif (EstimateAlgorithm == PLL)
+    {
+        SetBit(FOC_CR2, ESEL);
+        FOC_KSLIDE      = OBSE_PLLKP_GAIN;
+        FOC_EKLPFMIN    = OBSE_PLLKI_GAIN;
+    }
+    #endif
+    FOC_FBASE       = OBS_FBASE;                            // 由速度计算角度增量的系数
+    FOC_OMEKLPF     = SPEED_KLPF;                           // 估算器内速度低通滤波系数
+    FOC_TGLI        = PWM_TGLI_LOAD;                        // 死区配置
+    SetBit(FOC_CR1, SVPWMEN);                               // SVPWM模式
+    
+    
+	#if (IR_MODE == CCW)
+	SetBit(DRV_CR, DDIR);
+	#endif
+	
+    #if (OverModulation)
+	SetBit(FOC_CR1, OVMDL);
+    #endif
+	
+    /* 单电阻采样; 需要最小采样窗,FOC_TRGDLY为0,七段式SVPWM方式 */
+    #if (Shunt_Resistor_Mode == Single_Resistor)
+    {
+        SetReg(FOC_CR1, CSM0 | CSM1, 0x00);
+        FOC_TSMIN  = PWM_TS_LOAD;                           // 最小采样窗口
+        FOC_TRGDLY = 0x0c;                                  // 采样时刻在中点,一般考虑开关噪声影响,会设置延迟;
+        // 如:0x0c表示延迟12个clock,提前用反码形式,如0x84表示提前12个clock。
+        ClrBit(FOC_CR2, F5SEG);                             // 7段式,单电阻仅支持7段式
+    }
+    /* 双电阻采样,可设置死区补偿值,在下降沿结束前开始采样Ia Ib */
+    #elif (Shunt_Resistor_Mode == Double_Resistor)          // double resistor sample
+    {
+        SetReg(FOC_CR1, CSM0 | CSM1, CSM0);
+        FOC_TSMIN       = PWM_DT_LOAD;                      // 死区补偿值
+        FOC_TRGDLY      = 0x07;                             // ADC采样的时刻,采样时刻在计数器零点附近与单电阻不同
+        // 如:0x83为下降沿结束前3个clock采样Ia 0x01为上升沿开始后第一个clock开始采样。根据实际情况调整。
+        FOC_TBLO        = PWM_DLOWL_TIME;                   // 下桥臂最小脉冲,保证采样
+        /*五段式或七段式选择*/
+        #if (SVPMW_Mode == SVPWM_7_Segment)
+        {
+            ClrBit(FOC_CR2, F5SEG);                         // 7段式
+        }
+        #elif (SVPMW_Mode == SVPWM_5_Segment)
+        {
+            SetBit(FOC_CR2, F5SEG);                         // 5段式
+        }
+        #endif
+        #if (DouRes_Sample_Mode == DouRes_1_Cycle)
+        {
+            ClrBit(FOC_CR2, DSS);                           // 7段式
+        }
+        #elif (DouRes_Sample_Mode == DouRes_2_Cycle)
+        {
+            SetBit(FOC_CR2, DSS);                           // 5段式
+        }
+        #endif //end DouRes_Sample_Mode
+    }
+    /*三电阻采样*/
+    #elif (Shunt_Resistor_Mode == Three_Resistor)           // signel resistor sample
+    {
+        SetReg(FOC_CR1, CSM0 | CSM1, CSM0 | CSM1);          // 三电阻
+        FOC_TSMIN  = PWM_DT_LOAD;                           // 死区补偿值
+        FOC_TRGDLY = 0x06;                                  // ADC采样的时刻,采样时刻在计数器零点附近与单电阻不同。
+        // 如:0x83为下降沿结束前3个clock采样Ia,0x01为上升沿开始后第一个clock开始采样。根据实际情况调整。
+        FOC_TBLO = PWM_OVERMODULE_TIME;                     // 过调制电流采样处理的TB脉宽
+        /* 五段式或七段式选择 */
+        #if (SVPMW_Mode == SVPWM_7_Segment)
+        {
+            ClrBit(FOC_CR2, F5SEG);                         // 7段式
+        }
+        #elif (SVPMW_Mode == SVPWM_5_Segment)
+        {
+            SetBit(FOC_CR2, F5SEG);                         // 5段式
+        }
+        #endif // end SVPMW_Mode
+        #if (DouRes_Sample_Mode == DouRes_1_Cycle)
+        {
+            ClrBit(FOC_CR2, DSS);                           // 7段式
+        }
+        #elif (DouRes_Sample_Mode == DouRes_2_Cycle)
+        {
+            SetBit(FOC_CR2, DSS);                           // 5段式
+        }
+        #endif // end DouRes_Sample_Mode
+    }
+    #endif 
+
+	
+            #if (Shunt_Resistor_Mode == Single_Resistor)    // 单电阻校正
+            {
+                /*set ibus current sample offset*/
+                SetReg(FOC_CR2, CSOC0 | CSOC1, 0x00);
+                FOC_CSO = mcCurOffset.Iw_busOffset;         // 写入Ibus的偏置
+            }
+            #elif (Shunt_Resistor_Mode == Double_Resistor)  // 双电阻校正
+            {
+                /*set ia, ib current sample offset*/
+                SetReg(FOC_CR2, CSOC0 | CSOC1, CSOC0);
+                FOC_CSO  = mcCurOffset.IuOffset;            // 写入IA的偏置
+            
+                SetReg(FOC_CR2, CSOC0 | CSOC1, CSOC1);
+                FOC_CSO  = mcCurOffset.IvOffset;            // 写入IB的偏置
+            }
+            #elif (Shunt_Resistor_Mode == Three_Resistor)   // 三电阻校正
+            {
+                /*set ibus current sample offset*/
+                SetReg(FOC_CR2, CSOC0 | CSOC1, CSOC0);
+                FOC_CSO = mcCurOffset.IuOffset;             // 写入IA的偏置
+            
+                SetReg(FOC_CR2, CSOC0 | CSOC1, CSOC1);
+                FOC_CSO = mcCurOffset.IvOffset;             // 写入IB的偏置
+            
+                SetReg(FOC_CR2, CSOC0 | CSOC1, 0x00);
+                FOC_CSO = mcCurOffset.Iw_busOffset;         // 写入IC的偏置
+            }
+            #endif 
+			
+    /*  -------------------------------------------------------------------------------------------------
+        DRV_CTL:PWM来源选择
+        OCS = 0, DRV_COMR
+        OCS = 1, FOC/SVPWM/SPWM
+        -------------------------------------------------------------------------------------------------*/
+    /*计数器比较值来源FOC*/
+    SetBit(DRV_CR, DRVEN);  // 计数器使能      0-->Disable 1-->Enable
+    SetBit(DRV_CR, OCS);
+}
+
+
+/**
+    @brief     预充电分三步,第一步是对U相进行预充电,第二步是对V两相进行预充电;第三步是对W三相进行预充电。
+    @brief     低压应用一般不需要预充电,在customer.h禁止预充电功能寄即可
+    @exception 在低功率高压应用中,过流值较小,充电电流过大可能导致触发硬件过流, 需要注意检查
+    @date      2022-07-14
+*/
+void Motor_Charge(void)
+{
+    if (McStaSet.SetFlag.ChargeSetFlag == 0)
+    {
+        McStaSet.SetFlag.ChargeSetFlag = 1;
+        SetBit(DRV_CR, DRVEN);  // 计数器使能      0-->Disable 1-->Enable
+        DRV_DR = CHARGE_DUTY * DRV_ARR;              //下桥臂10% duty
+        DRV_CMR &= 0xffc0;
+        /*  -------------------------------------------------------------------------------------------------
+            DRV_CTL:PWM来源选择
+            OCS = 0, DRV_COMR
+            OCS = 1, FOC/SVPWM/SPWM
+            -------------------------------------------------------------------------------------------------*/
+        ClrBit(DRV_CR, OCS);
+        mcFocCtrl.ChargeStep = 0;
+    }
+    
+    if ((mcFocCtrl.State_Count < CHARGE_TIME) && (mcFocCtrl.ChargeStep == 0))
+    {
+        mcFocCtrl.ChargeStep = 1;
+        DRV_CMR |= 0x01;                          // U相下桥臂通
+        MOE = 1;
+    }
+    
+    if (( mcFocCtrl.State_Count <= (CHARGE_TIME << 1) / 3) && (mcFocCtrl.ChargeStep == 1))
+    {
+        mcFocCtrl.ChargeStep = 2;
+        DRV_CMR |= 0x04;                         // V相下桥臂通
+    }
+    
+    if ((mcFocCtrl.State_Count <= CHARGE_TIME / 3) && (mcFocCtrl.ChargeStep == 2))
+    {
+        mcFocCtrl.ChargeStep = 3;
+        DRV_CMR |= 0x10;                          // W相下桥臂通
+    }
+}
+
+
+/**
+    @brief     开启次功能启动时候会将电机强拉到 设定角度,之后再启动
+    @date      2022-07-14
+*/
+void Motor_Align(void)
+{
+    if (McStaSet.SetFlag.AlignSetFlag == 0)
+    {
+        McStaSet.SetFlag.AlignSetFlag = 1;
+        /* -----FOC初始化----- */
+        FOC_Init();
+        /* 配置预定位的电流、KP、KI */
+        FOC_IDREF   = ID_Align_CURRENT;
+        FOC_IQREF   = IQ_Align_CURRENT;
+        FOC_DKP     = DQKP_Alignment;
+        FOC_DKI     = DQKI_Alignment;
+        FOC_QKP     = DQKP_Alignment;
+        FOC_QKI     = DQKI_Alignment;
+        FOC_EKP     = OBSW_KP_GAIN_START;
+        FOC_EKI     = OBSW_KI_GAIN_START;
+        SetBit(FOC_CR2, UDD);
+        /*配置预定位角度*/
+        FOC__THETA  = Align_Angle1;
+        /*********PLL或SMO**********/
+        #if (EstimateAlgorithm == SMO )
+        {
+            FOC__ETHETA   = FOC__THETA - 4096;
+        }
+        #else
+        {
+            FOC__ETHETA   = FOC__THETA;
+        }
+        #endif //end    EstimateAlgorithm
+        /*使能输出*/
+        //        DRV_CMR |= 0x3F;                         // U、V、W相输出
+        MOE = 1;
+    }
+}
+
+
+
+/**
+    @brief     静止启动配置函数
+    @date      2022-07-14
+*/
+void Motor_Static_Open(void)
+{
+    FOC_Init();
+    MOE = 1;
+    FOC__THETA = mcFocCtrl.AngleStart;
+    /*启动电流、KP、KI、FOC_EKP、FOC_EKI*/
+    FOC_IDREF = ID_Start_CURRENT;                         // D轴启动电流
+    FOC_DKP = DKPStart;
+    FOC_DKI = DKIStart;
+    FOC_QKP = QKPStart;
+    FOC_QKI = QKIStart;
+    FOC_EKP = OBSW_KP_GAIN_START;
+    FOC_EKI = OBSW_KI_GAIN_START;
+    /*启动方式选择*/
+    #if (Open_Start_Mode == Omega_Start)              // Omega 启动
+    {
+        FOC_EFREQACC        = MOTOR_OMEGA_RAMP_ACC;
+        FOC_EFREQMIN        = MOTOR_OMEGA_RAMP_MIN;
+        FOC_EFREQHOLD       = MOTOR_OMEGA_RAMP_END;
+        SetReg(FOC_CR1, EFAE | RFAE | ANGM, EFAE | ANGM);
+    }
+    #elif (Open_Start_Mode == Open_Start)
+    {
+        FOC_RTHEACC         = MOTOR_OPEN_RAMP_ACC;      // 爬坡函数的初始加速度
+        FOC__RTHESTEP       = MOTOR_OPEN_RAMP_MIN;      // 0.62 degree acce speed
+        FOC_RTHECNT         = MOTOR_OPEN_RAMP_CNT;       // acce time
+        SetReg(FOC_CR1, EFAE | RFAE | ANGM, RFAE);
+    }
+    #elif (Open_Start_Mode == Open_Omega_Start)
+    {
+        FOC_RTHEACC         = MOTOR_OPEN_RAMP_ACC;      // 爬坡函数的初始加速度
+        FOC__RTHESTEP       = MOTOR_OPEN_RAMP_MIN;      // 0.62 degree acce speed
+        FOC_RTHECNT         = MOTOR_OPEN_RAMP_CNT;       // acce time
+        FOC_EFREQACC        = Motor_OMEGA_RAMP_ACC;
+        FOC_EFREQMIN        = MOTOR_OMEGA_RAMP_MIN;
+        FOC_EFREQHOLD       = MOTOR_OMEGA_RAMP_END;
+        SetReg(FOC_CR1, EFAE | RFAE | ANGM, EFAE | RFAE | ANGM);
+    }
+    #endif //end Open_Start_Mode
+    /*不同启动方式下,切换到MCRUN状态*/
+    #if (Open_Start_Mode == Open_Start)         //OPEN状态启动时拖动多次
+    {
+        mcFocCtrl.State_Count   = 0;
+        FOC_EKP                 = OBSW_KP_GAIN_RUN4;                            // 估算器里的PI的KP
+        FOC_EKI                 = OBSW_KI_GAIN_RUN4;                            // 估算器里的PI的KI
+    }
+    #elif (Open_Start_Mode == Omega_Start)
+    {
+        /*********PLL或SMO**********/
+        #if (EstimateAlgorithm == SMO  || EstimateAlgorithm == AO)
+        {
+            mcFocCtrl.State_Count = ATO_START_HOLDTIME + (ATO_RAMP_PERIOD << 2); //ATO 爬坡控制时间
+        }
+        #elif (EstimateAlgorithm == PLL)
+        {
+            mcFocCtrl.State_Count   = 0;
+            FOC_EKP                 = OBSW_KP_GAIN_RUN4;                       // 估算器里的PI的KP
+            FOC_EKI                 = OBSW_KI_GAIN_RUN4;                       // 估算器里的PI的KI
+        }
+        #endif
+    }
+    #endif
+    FOC_IQREF = IQ_Start_CURRENT;                          // Q轴启动电流
+}
+
+/**
+    @brief     三下桥刹车
+    @date      2022-07-14
+*/
+void MC_Break(void)
+{
+    MOE         = 1;
+    ClrBit(DRV_CR, FOCEN);  // 关闭FOC
+    /*  软件设置PWM占空比输出以上桥为参考,配置为互补输出时下桥反向 */
+    ClrBit(DRV_CR, OCS);    // OCS = 0, DRV_COMR;  OCS = 1, FOC/SVPWM/SPWM
+    SetBit(DRV_CR, DRVEN);  // 计数器使能      0-->Disable 1-->Enable
+    DRV_CMR = 0x0015;       //  关闭上桥输出,开启下桥输出
+    DRV_DR  = (DRV_ARR) + 4 ; // ARR+4为全开
+}
+
+
+/**
+    @brief     控制变量上电初始化,包括保护参数的初始化、电机状态初始化
+    @brief     上电只运行一次
+    @date      2022-07-14
+*/
+void MotorcontrolInit(void)
+{
+}
+
+
+
+
+/**
+    @brief     上电时,先对硬件电路的电流进行采集,写入对应的校准寄存器中。
+              调试时,需观察mcCurOffset结构体中对应变量是否在范围内。采集结束后,OffsetFlag置1。
+    @exception 默认循环1000次等待偏置电压稳定,需要注意若需要每次电机启动前都对偏置电压进行采样校准,
+              那么需要保证偏置电压是稳定的,且采样计数变量已被清零(重新进行1000次循环),否则可能导致采样出错
+    @date      2022-07-14
+*/
+void GetCurrentOffset(void)
+{
+    SetBit(ADC_CR, ADCBSY);             // 使能ADC
+    
+    while (ReadBit(ADC_CR, ADCBSY));
+    
+    #if (Shunt_Resistor_Mode == Single_Resistor)                   //单电阻模式
+    {
+        mcCurOffset.Iw_busOffsetSum += ((ADC4_DR & 0x7ff8));
+        mcCurOffset.Iw_busOffset     = mcCurOffset.Iw_busOffsetSum >> 4;
+        mcCurOffset.Iw_busOffsetSum -= mcCurOffset.Iw_busOffset;
+        mcCurOffset.IbusOffsetSum += ((ADC7_DR & 0x7ff8));
+        mcCurOffset.IbusOffset     = mcCurOffset.IbusOffsetSum >> 4;
+        mcCurOffset.IbusOffsetSum -= mcCurOffset.IbusOffset;
+    }
+    #elif (Shunt_Resistor_Mode == Double_Resistor)                 //双电阻模式
+    {
+        mcCurOffset.IuOffsetSum     += ((ADC0_DR & 0x7ff8));
+        mcCurOffset.IuOffset         = mcCurOffset.IuOffsetSum >> 4;
+        mcCurOffset.IuOffsetSum     -= mcCurOffset.IuOffset;
+        mcCurOffset.IvOffsetSum     += ((ADC1_DR & 0x7ff8));
+        mcCurOffset.IvOffset         = mcCurOffset.IvOffsetSum >> 4;
+        mcCurOffset.IvOffsetSum     -= mcCurOffset.IvOffset;
+    }
+    #elif (Shunt_Resistor_Mode == Three_Resistor)                 //三电阻模式
+    {
+        mcCurOffset.IuOffsetSum     += ((ADC0_DR & 0x7ff8));
+        mcCurOffset.IuOffset         = mcCurOffset.IuOffsetSum >> 4;
+        mcCurOffset.IuOffsetSum     -= mcCurOffset.IuOffset;
+        mcCurOffset.IvOffsetSum     += ((ADC1_DR & 0x7ff8));
+        mcCurOffset.IvOffset         = mcCurOffset.IvOffsetSum >> 4;
+        mcCurOffset.IvOffsetSum     -= mcCurOffset.IvOffset;
+        mcCurOffset.Iw_busOffsetSum += ((ADC4_DR & 0x7ff8));
+        mcCurOffset.Iw_busOffset     = mcCurOffset.Iw_busOffsetSum >> 4;
+        mcCurOffset.Iw_busOffsetSum -= mcCurOffset.Iw_busOffset;
+    }
+    #endif
+    mcCurOffset.OffsetCount++;
+    
+    if (mcCurOffset.OffsetCount > Calib_Time)
+    {
+        mcCurOffset.OffsetFlag = 1;
+        #if (GetCurrentOffsetEnable)
+        {
+            Fault_GetCurrentOffset();     //偏置电压保护
+        }
+        #endif
+    }
+}
+
+
+
+/**
+    @brief     关闭输出,关闭FOC,电机切换到mcReady状态被调用一次
+    @date      2022-07-14
+*/
+void Motor_Ready(void)
+{
+    if (McStaSet.SetFlag.CalibFlag == 0)
+    {
+        McStaSet.SetFlag.CalibFlag = 1;
+        MOE               = 0;
+        ClrBit(DRV_CR, FOCEN);
+        ClrBit(DRV_CR, DRVEN);
+        mcCurOffset.OffsetFlag = 0;
+        mcCurOffset.OffsetCount = 0;    //偏置电压采集计数
+        #if ( Shunt_Resistor_Mode == Single_Resistor)
+        {
+            SetBit(ADC_MASK, CH4EN | CH2EN);  // 开启外部ADC采集偏置电压
+        }
+        #else
+        {
+            SetBit(ADC_MASK, CH4EN | CH2EN | CH1EN | CH0EN); // 开启外部ADC采集偏置电压
+        }
+        #endif
+    }
+}
+
+
+/**
+    @brief     电机初始化,对电机相关变量、PI进行初始化设置,关闭FOC所需要使用到的ADC
+    @note      关闭FOC所需要使用到的ADC,FOC模块会自动调用相应ADC 无需外部使能
+    @date      2022-07-14
+*/
+
+void Motor_Init(void)
+{
+    #if ( Shunt_Resistor_Mode == Single_Resistor)
+    {
+        ClrBit(ADC_MASK, CH4EN );          // 关闭软件电流采样的ADC  FOC模块会自动调用相应ADC 无需外部使能
+    }
+    #else
+    {
+        ClrBit(ADC_MASK, CH4EN | CH1EN | CH0EN);  // 关闭软件电流采样的ADC  FOC模块会自动调用相应ADC 无需外部使能
+    }
+    #endif
+    memset(&mcFocCtrl, 0, sizeof(FOCCTRL));
+    //缺相变量清零
+    McStaSet.SetMode                    = 0;
+    mcFocCtrl.CtrlMode                  = 0;
+    mcFocCtrl.ChargeStep                = 0;
+    mcFocCtrl.Flg_ATORampEnd            = 0;
+    /* -----电机功率参数初始化----- */
+    Power_Currt                         = 0;
+    HW_Zero_PI_Init();
+    HW_One_PI_Init();
+    HW_Two_PI_Init();
+    HW_Three_PI_Init();
+    // SoftPiInit();
+}
+

+ 73 - 0
User/Function/MotorProtect.c

@@ -0,0 +1,73 @@
+#include <FU68xx_5.h>
+#include <Myproject.h>
+
+
+FaultStateType data mcFaultSource;      ///< 故障类型
+
+
+
+
+/**
+    @brief      偏置电压检测
+*/
+void Fault_GetCurrentOffset(void)
+{
+    if (mcCurOffset.OffsetFlag == 1)
+    {
+        #if (VHALF_EN == Enable)                                              //有加VHALF偏置,理论值为16383
+        {
+            #if (Shunt_Resistor_Mode == Single_Resistor)                   //单电阻模式
+            {
+                if ((mcCurOffset.Iw_busOffset < GetCurrentOffsetValueLow) || (mcCurOffset.Iw_busOffset > GetCurrentOffsetValueHigh))
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+            }
+            #elif (Shunt_Resistor_Mode == Double_Resistor)                 //双电阻模式
+            {
+                if ((mcCurOffset.IuOffset < GetCurrentOffsetValueLow) || (mcCurOffset.IuOffset > GetCurrentOffsetValueHigh)
+                    || (mcCurOffset.IvOffset < GetCurrentOffsetValueLow) || (mcCurOffset.IvOffset > GetCurrentOffsetValueHigh))
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+            }
+            #elif (Shunt_Resistor_Mode == Three_Resistor)                 //三电阻模式
+            {
+                if ((mcCurOffset.IuOffset < GetCurrentOffsetValueLow) || (mcCurOffset.IuOffset > GetCurrentOffsetValueHigh)
+                    || (mcCurOffset.IvOffset < GetCurrentOffsetValueLow) || (mcCurOffset.IvOffset > GetCurrentOffsetValueHigh)
+                    || (mcCurOffset.Iw_busOffset < GetCurrentOffsetValueLow) || (mcCurOffset.Iw_busOffset > GetCurrentOffsetValueHigh))
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+            }
+            #endif
+        }
+        #else                                                              //没加VHALF偏置,理论值在0
+        {
+            #if (Shunt_Resistor_Mode == Single_Resistor)                   //单电阻模式
+            {
+                if (mcCurOffset.Iw_busOffset > GetCurrentOffsetValue)
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+        
+            }
+            #elif (Shunt_Resistor_Mode == Double_Resistor)                 //双电阻模式
+            {
+                if ((mcCurOffset.IuOffset > GetCurrentOffsetValue) || (mcCurOffset.IvOffset > GetCurrentOffsetValue))
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+            }
+            #elif (Shunt_Resistor_Mode == Three_Resistor)                 //三电阻模式
+            {
+                if ((mcCurOffset.IuOffset > GetCurrentOffsetValue) || (mcCurOffset.IvOffset > GetCurrentOffsetValue) || (mcCurOffset.Iw_busOffset > GetCurrentOffsetValue))
+                {
+                    mcFaultSource = FaultGetOffset;
+                }
+            }
+            #endif
+        }
+        #endif
+    }
+}

+ 46 - 0
User/Hardware/ADC.c

@@ -0,0 +1,46 @@
+#include <MyProject.h>
+
+
+void ADC_Init(void)
+{
+    /********************ADC 端口模拟功能设置************************/
+    SetBit(P2_AN , PIN0);	//AD0 P20 CH open--IU--固定
+    SetBit(P2_AN , PIN3);	//AD1 P23 CH open--IV--固定 
+    SetBit(P2_AN , PIN4);	//AD2 P24 CH open--IV--固定     
+    SetBit(P2_AN , PIN5);	//AD3 P25 CH open
+    SetBit(P2_AN , PIN7);	//AD4 P27 CH open--IBUS/IW--固定
+    SetBit(P2_AN , PIN6);	//AD11 P25 CH open
+	
+	
+//	 SetBit(P2_AN , PIN1);	//AD8 P25 CH open
+
+//	set_csr(P3_AN , PIN2);	//AD5 P32 CH open
+	SetBit(P3_AN , PIN3);	//AD6 P33 CH open
+	SetBit(P3_AN , PIN4);	//AD7 P34 CH open
+//	set_csr(P2_AN , PIN1);	//AD8 P21 CH open
+	SetBit(P1_AN , PIN6);	//AD9 P16 CH open
+//	set_csr(P1_AN , PIN4);	//AD10 P14 CH open
+//	set_csr(P2_AN , PIN6);	//AD11 P26 CH open
+//	set_csr(P1_AN , PIN3);	//AD12 P13 CH open
+	SetBit(P1_AN , PIN5);	//AD13 P15 CH open
+	
+	
+	SetBit(P1_AN , HBMOD);
+	ClrBit(P1_OE, P13);
+	
+	SetBit(P1_AN , PIN4);
+	
+    SetBit(ADC_MASK , CH0EN | CH1EN | CH2EN| CH3EN | CH4EN | CH6EN | CH7EN | CH10EN | CH11EN | CH12EN | CH13EN | CH9EN);
+    
+    SetBit(ADC_MASK, 0x3000);
+    
+    ADC_SCYC  = 0x33;
+    
+	
+    SetBit(ADC_CR , ADCALIGN);
+
+    ClrBit(ADC_CR , ADCIE);
+    SetBit(ADC_CR , ADCEN);
+    
+}
+

+ 134 - 0
User/Hardware/AMP.c

@@ -0,0 +1,134 @@
+#include <MyProject.h>
+
+void AMP_Init(void)
+{
+    #if (Shunt_Resistor_Mode == Single_Resistor)
+    {
+        /* ----AMP 端口模拟功能设置---- */
+        #if (HW_AMP_MODE == AMP_NOMAL) //外部放大
+        {
+            SetBit(P3_AN, P31);             //AMP0 Pin设置为模拟模式  +
+            SetBit(P3_AN, P30);             //AMP0 Pin设置为模拟模式  -
+            SetBit(P2_AN, P27);             //AMP0 Pin设置为模拟模式  O
+            SetBit(AMP_CR0, AMP0EN);        //AMP0 Enable
+            
+            ClrBit(AMP_CR1, AMP0_GAIN2);
+            ClrBit(AMP_CR1, AMP0_GAIN1);
+            ClrBit(AMP_CR1, AMP0_GAIN0);
+        }
+        #else       // 内部PGA双端差分输入
+        {
+            SetBit(P3_AN, P31);             //AMP0 Pin设置为模拟模式  +
+            SetBit(P3_AN, P30);             //AMP0 Pin设置为模拟模式  -
+            SetBit(P2_AN, P27);             //AMP0 Pin设置为模拟模式  O
+            
+            ClrBit(AMP_CR0, AMP0M_GND);     // 禁止运放反向输入端内部接地
+            SetBit(AMP_CR0, AMP0EN);        //AMP0 Enable
+			
+            AMP_CR0|=(1<<6);                //使能恒功率
+          
+            
+            #if (HW_AMPGAIN == AMP2x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                ClrBit(AMP_CR1, AMP0_GAIN1);
+                SetBit(AMP_CR1, AMP0_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP4x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                SetBit(AMP_CR1, AMP0_GAIN1);
+                ClrBit(AMP_CR1, AMP0_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP8x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                SetBit(AMP_CR1, AMP0_GAIN1);
+                SetBit(AMP_CR1, AMP0_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP16x)
+            {
+                SetBit(AMP_CR1, AMP0_GAIN2);
+                ClrBit(AMP_CR1, AMP0_GAIN1);
+                ClrBit(AMP_CR1, AMP0_GAIN0);
+            }
+            #endif
+        }
+        #endif
+    }
+    #else   // 双 三电阻采样
+    {
+        SetBit(P1_AN, P16);             //AMP1 Pin设置为模拟模式  +
+        SetBit(P1_AN, P17);             //AMP1 Pin设置为模拟模式  -
+        SetBit(P2_AN, P20);             //AMP1 Pin设置为模拟模式  O
+
+        SetBit(P2_AN, P21);             //AMP2 Pin设置为模拟模式  +
+        SetBit(P2_AN, P22);             //AMP2 Pin设置为模拟模式  -
+        SetBit(P2_AN, P23);             //AMP2 Pin设置为模拟模式  O
+        ClrBit(P2_OE, P23);             //P23_OE需要强制为0,禁止DA1输出至PAD
+
+        SetBit(P3_AN, P31);             //AMP0 Pin设置为模拟模式  +
+        SetBit(P3_AN, P30);             //AMP0 Pin设置为模拟模式  -
+        SetBit(P2_AN, P27);             //AMP0 Pin设置为模拟模式  O
+        SetBit(AMP_CR0, AMP0EN);         //AMP0 Enable
+        SetBit(AMP_CR0, AMP1EN);         //AMP1 Enable
+        SetBit(AMP_CR0, AMP2EN);         //AMP2 Enable
+        
+        #if (HW_AMP_MODE == AMP_NOMAL)      //外部放大
+        {
+            ClrBit(AMP_CR1, AMP0_GAIN2);
+            ClrBit(AMP_CR1, AMP0_GAIN1);
+            ClrBit(AMP_CR1, AMP0_GAIN0);
+    
+            ClrBit(AMP_CR1, AMP_PH_GAIN2);
+            ClrBit(AMP_CR1, AMP_PH_GAIN1);
+            ClrBit(AMP_CR1, AMP_PH_GAIN0);
+        }
+        #else
+        {
+            #if (HW_AMPGAIN == AMP2x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                ClrBit(AMP_CR1, AMP0_GAIN1);
+                SetBit(AMP_CR1, AMP0_GAIN0);
+    
+                ClrBit(AMP_CR1, AMP_PH_GAIN2);
+                ClrBit(AMP_CR1, AMP_PH_GAIN1);
+                SetBit(AMP_CR1, AMP_PH_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP4x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                SetBit(AMP_CR1, AMP0_GAIN1);
+                ClrBit(AMP_CR1, AMP0_GAIN0);
+    
+                ClrBit(AMP_CR1, AMP_PH_GAIN2);
+                SetBit(AMP_CR1, AMP_PH_GAIN1);
+                ClrBit(AMP_CR1, AMP_PH_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP8x)
+            {
+                ClrBit(AMP_CR1, AMP0_GAIN2);
+                SetBit(AMP_CR1, AMP0_GAIN1);
+                SetBit(AMP_CR1, AMP0_GAIN0);
+    
+                ClrBit(AMP_CR1, AMP_PH_GAIN2);
+                SetBit(AMP_CR1, AMP_PH_GAIN1);
+                SetBit(AMP_CR1, AMP_PH_GAIN0);
+            }
+            #elif (HW_AMPGAIN == AMP16x)
+            {
+                SetBit(AMP_CR1, AMP0_GAIN2);
+                ClrBit(AMP_CR1, AMP0_GAIN1);
+                ClrBit(AMP_CR1, AMP0_GAIN0);
+    
+                SetBit(AMP_CR1, AMP_PH_GAIN2);
+                ClrBit(AMP_CR1, AMP_PH_GAIN1);
+                ClrBit(AMP_CR1, AMP_PH_GAIN0);
+            }
+            #endif
+        }
+        #endif
+    }
+    #endif
+}

+ 113 - 0
User/Hardware/CMP.c

@@ -0,0 +1,113 @@
+
+#include <MyProject.h>
+
+void CMP3_Init(void)
+{
+   
+    /******CMP3 端口模拟功能设置*******/    
+    #if (Shunt_Resistor_Mode == Single_Resistor)
+    {
+        SetBit(P2_AN , P27);	        //CMP3 Pin设置为模拟模式  + 
+        ClrBit(CMP_CR1 , CMP3MOD1);     //00-->P27-单比较器模式    01-->P20/P23-双比较器模式
+        ClrBit(CMP_CR1 , CMP3MOD0);     //1X-->P20/P23/P27-三比较器模式
+    }
+    #elif (Shunt_Resistor_Mode == Double_Resistor)
+    {
+        SetBit(P2_AN , P27);	        //CMP3 Pin设置为模拟模式  + 
+        ClrBit(CMP_CR1 , CMP3MOD1);     //00-->P27-单比较器模式    01-->P20/P23-双比较器模式
+        ClrBit(CMP_CR1 , CMP3MOD0);     //1X-->P20/P23/P27-三比较器模式
+    }
+    #elif (Shunt_Resistor_Mode == Three_Resistor)
+    {
+        SetBit(P2_AN , P27 | P23 | P20);// CMP3 Pin设置为模拟模式  + 
+        SetBit(CMP_CR1 , CMP3MOD1);     // 00-->P27-单比较器模式    01-->P20/P23-双比较器模式
+        SetBit(CMP_CR1 , CMP3MOD0);     // 1X-->P20/P23/P27-三比较器模式
+    }
+    #endif	//end Shunt_Resistor_Mode
+    
+    #if (COMPARE_MODE == COMPARE_HW_MODE)
+    {
+        /**P2.6使能其模拟功能,使能数字输出**/
+        SetBit(P2_AN , P26);
+        ClrBit(P2_OE , P26); 
+        ClrBit(DAC_CR , DAC0_1EN);
+    }
+    #else
+    {
+//        /**P2.6使能其模拟功能,使能数字输出**/
+//        SetBit(P2_AN , P26);
+//        SetBit(P2_OE , P26); 
+        /* DAC0 Enable */
+        SetBit(DAC_CR , DAC0_1EN);        
+        /******************************
+        0: 正常模式,DAC输出电压范围为0到VREF
+        1: 半电压转换模式,DAC输出电压范围为VHALF到VREF
+        ****************************/
+        ClrBit(DAC_CR , DACMOD);
+        /**********设置DAC过流值,舍弃低位精度*****************/
+        
+        //  DAC0_DR 是DAC0的高8位,DAC0 的最低位忽略
+        DAC0_DR     =   DAC_OverCurrentValue;
+    }
+    #endif	//end Compare_Mode
+    
+    SetBit(CMP_CR1 , CMP3HYS);  // CMP3 Hysteresis voltage Enable
+    /*---------------------------------------------------------------------------------
+	选择母线电流保护触发信号源,外部中断0或者比较器3中断。
+	0-CMP3,1-INT0
+    ---------------------------------------------------------------------------------*/
+    ClrBit(EVT_FILT, INT0_MOE_EN);
+    
+    
+    /*---------------------------------------------------------------------------------
+	触发硬件保护后硬件关闭驱动输出MOE配置, 常规应用需要使能MOE自动清零
+	00--MOE不自动清零
+	01--MOE自动清零
+    ----------------------------------------------------------------------------------*/
+    ClrBit(EVT_FILT , MOEMD1);
+    SetBit(EVT_FILT , MOEMD0);
+    /*----------------------------------------------------------------------------------
+    
+    
+    母线电流保护时间滤波宽度
+    00-不滤波    
+    01-4cpu clock    
+    10-8cpu clock    
+    11-16cpu clock
+    -----------------------------------------------------------------------------------*/
+    SetBit(EVT_FILT , EFDIV1);
+    SetBit(EVT_FILT , EFDIV0);
+
+    SetBit(CMP_CR1 , CMP3EN);   //CMP3 Enable
+}
+
+/*****************************************************************************
+ * Function      : CMP3_Interrupt_Init
+ * Description   : CMP3中断配置
+ * Input         : void  
+ * Output        : None
+ * Return        : 
+ * Others        : 
+ * Record
+ * 1.Date        : 20190320
+ *   Author      : Bruce HW&RD
+ *   Modification: Created function
+
+*****************************************************************************/
+void CMP3_Interrupt_Init(void)
+{
+    ClrBit(CMP_SR , CMP3IF);
+    /*------------------------------------------------------------------------
+    比较器中断模式配置
+    00: 不产生中断  
+    01: 上升沿产生中断  
+    10: 下降沿产生中断  
+    11: 上升/下降沿产生中断
+    ------------------------------------------------------------------------*/
+    ClrBit(CMP_CR0 , CMP3IM1);
+    SetBit(CMP_CR0 , CMP3IM0);
+    
+    SetBit(IP3 , PCMP31);    // 中断优先级别3
+    SetBit(IP3 , PCMP30);
+ 				
+}

+ 31 - 0
User/Hardware/CRC.c

@@ -0,0 +1,31 @@
+#include <MyProject.h>
+
+
+/****************************************************************************
+CRC16_CCITT_FALSE	硬件实现
+****************************************************************************/
+unsigned short CRC_Check(unsigned char start_sector , unsigned char offset_sector)
+{
+    unsigned short crcresult = 0x0000;
+
+    unsigned short tempH = 0x00;
+    unsigned short tempL = 0x00;
+
+    SetBit(CRC_CR , CRCVAL);		//0-->0x0000  1-->0xffff
+    SetBit(CRC_CR , CRCDINI);		//1-->init success
+
+    CRC_BEG = start_sector;	    //起始扇区
+    CRC_CNT = offset_sector;	//扇区偏移量	0-->1个扇区
+
+    //1个空扇区-->0x41E8	 2个空扇区-->0x1634
+    //1个0xFF  -->0x5B2F	 0x00~0xFF-->0x3FBD
+    SetBit(CRC_CR , AUTOINT);		//自动计算使能
+    /***************************************************/
+
+    SetBit(CRC_CR , CRCPNT);	
+    tempH = CRC_DR;
+    ClrBit(CRC_CR , CRCPNT);	
+    tempL = CRC_DR;
+    crcresult = (unsigned short)(tempH << 8) + tempL;
+    return crcresult;
+}

+ 64 - 0
User/Hardware/DRIVER.c

@@ -0,0 +1,64 @@
+#include <MyProject.h>
+
+
+void Driver_Init(void)
+{
+    DRV_ARR = PWM_VALUE_LOAD ;     	// 载波频率的周期值
+    DRV_DTR = PWM_LOAD_DEADTIME;	// 死区时间
+    DRV_DR  = 0;
+    DRV_CMR = 0x0ABF;               // UH/VH/WH UL/VL/WL 互补
+    DRV_OUT = 0x00;                 // 空闲电平,默认高电平有效
+
+	/*驱动有效电平和空闲电平*/
+	#if (PWM_LEVEL_MODE == HIGH_LEVEL)
+	{
+        ClrBit(PI_CR , HINV);  // 反相关闭
+        ClrBit(PI_CR , LINV);  // 反相关闭
+	}
+	#elif (PWM_LEVEL_MODE == LOW_LEVEL)
+	{
+        SetBit(PI_CR , HINV);  // 反相打开
+        SetBit(PI_CR , LINV);  // 反相打开
+	}
+	#elif (PWM_LEVEL_MODE == UP_H_DOWN_L)
+	{
+        ClrBit(PI_CR , HINV);  // 反相关闭
+        SetBit(PI_CR , LINV);  // 反相打开
+	}
+	#elif (PWM_LEVEL_MODE == UP_L_DOWN_H)
+	{
+        SetBit(PI_CR , HINV);  // 反相打开
+        ClrBit(PI_CR , LINV);  // 反相关闭
+	}
+	#endif //end PWM_Level_Mode   
+    
+    
+    ClrBit(DRV_SR , FGIE);  //FG中断使能			0-->Disable		1-->Enable
+
+    /*清中断标志位,使能中断,配置比较值,设置中断优先级*/
+    ClrBit(DRV_SR , DCIF);  //清除DRV中断标志位
+    /**************************************************
+    DRV比较匹配中断模式
+    当计数值等于DRV_COMR时,根据DCIM的设置判断是否产生中断标记
+    00:不产生中断        01:上升方向
+    10:下降方向          11:上升/下降方向
+    *************************************************/
+    SetBit(DRV_SR , DCIM1);
+    ClrBit(DRV_SR , DCIM0);
+
+    /*设置DRV计数器的比较匹配值,当DRV计数值与COMR相等时,根据DRV_SR寄存器的DCIM是否产生比较匹配事件*/
+    DRV_COMR = (PWM_VALUE_LOAD >> 3);
+
+    SetBit(IP0, PDRV1);  //中断优先级设置为1,优先级低于FO硬件过流
+    SetBit(IP0, PDRV0);
+    ClrBit(DRV_SR , DCIP);	//0-->1个计数周期产生中断  1-->2个计数周期产生中断
+
+    ClrBit(DRV_CR , FOCEN);
+    /*MESEL为0,ME模块工作在BLDC模式
+    MESEL为1,ME模块工作在FOC/SVPWM/SPWM模式*/
+    SetBit(DRV_CR , MESEL);
+
+    SetBit(DRV_CR , DRVEN);	// 计数器使能		0-->Disable 1-->Enable
+    ClrBit(DRV_CR , DRPE);	// 计数器比较值预装载使能 0-->Disable		        1-->Enable
+    SetBit(DRV_CR , DRVOE);	// Driver输出使能0-->Disable		1-->Enable
+}

+ 29 - 0
User/Hardware/GPIO.c

@@ -0,0 +1,29 @@
+#include <MyProject.h>
+
+
+/**
+ * @brief      为提高芯片的抗干扰能力,降低芯片功耗,请在具体项目时,将不需要用的GPIO默认都配置为输入上拉。
+ */
+void GPIO_Default_Init(void)
+{
+    P2_OE = 0;
+    P2_PU =   P22 ; // 需确认这些端口能接受上拉
+    P3_OE = 0;
+    P3_PU = P30 | P31 | P32 | P33 | P34 | P35; // 需确认这些端口能接受上拉
+    P0_OE = 0;
+    P0_PU = P00 | P01 | P02 | P03 | P04 | P05 | P06 | P07; // 需确认这些端口能接受上拉
+    P1_OE = 0;
+    P1_PU = P10  | P12 | P17; // 需确认这些端口能接受上拉
+    P4_OE = 0;
+    P4_PU = P40 | P41;                        // 使用步进电机时,P40,P41不能配置输入上拉,上拉会导致直通
+}
+/**
+ * @brief      GPIO初始化配置,可将I/O口配置成输入或输出模式,上拉还是不上拉,模拟输出还是数字输出
+ */
+void GPIO_Init(void)
+{  
+   SetBit(P3_OE, P36);
+	
+	
+	
+}

+ 0 - 0
User/Hardware/PIInit.c


+ 297 - 0
User/Hardware/SMDU.c

@@ -0,0 +1,297 @@
+#include <MyProject.h>
+
+// ------------------------------------------------------------------------------------------------------------------
+// 1. PI控制器初始化
+
+/**
+    @function     HW_Zero_PI_Init
+    @brief        0号硬件PI控制器初始化
+    @date         2025-11-01
+*/
+void HW_Zero_PI_Init(void)
+{
+    PI0_KP = SKP;
+    PI0_KI = SKI;
+    PI0_EK = 0;
+    PI0_EK1 = 0;
+    PI0_UKMAX = SOUTMAX;
+    PI0_UKMIN = SOUTMIN;
+    PI0_UKH = 0;
+    PI0_UKL = 0;
+}
+
+
+/**
+    @function     HW_One_PI_Init
+    @brief        1号硬件PI控制器初始化
+    @date         2025-11-01
+*/
+void HW_One_PI_Init(void)
+{
+    PI1_KP = 0;
+    PI1_KI = 0;
+    PI1_EK = 0;
+    PI1_EK1 = 0;
+    PI1_UKMAX = 0;
+    PI1_UKMIN = 0;
+    PI1_UKH = 0;
+    PI1_UKL = 0;
+}
+
+/**
+    @function     HW_Two_PI_Init
+    @brief        2号硬件PI控制器初始化
+    @date         2025-11-01
+*/
+void HW_Two_PI_Init(void)
+{
+    PI2_KP = 0;
+    PI2_KI = 0;
+    PI2_EK = 0;
+    PI2_EK1 = 0;
+    PI2_UKMAX = 0;
+    PI2_UKMIN = 0;
+    PI2_UKH = 0;
+    PI2_UKL = 0;
+}
+
+/**
+    @function     HW_Three_PI_Init
+    @brief        3号硬件PI控制器初始化
+    @date         2025-11-01
+*/
+void HW_Three_PI_Init(void)
+{
+    PI3_KP = 0;
+    PI3_KI = 0;
+    PI3_EK = 0;
+    PI3_EK1 = 0;
+    PI3_UKMAX = 0;
+    PI3_UKMIN = 0;
+    PI3_UKH = 0;
+    PI3_UKL = 0;
+}
+// ------------------------------------------------------------------------------------------------------------------
+// 2. PI计算
+/**
+    @function     HW_Zero_Calc
+    @brief        0号PI计算
+    @param[in]    Xn0: [输入/出]
+    @return       PI计算值
+    @date         2025-11-01
+*/
+int16_t HW_Zero_Calc(int16_t Xn0)
+{
+    PI0_EK = Xn0;
+    SMDU_RunBlock(0, PI);
+    return PI0_UKH;
+}
+
+/**
+    @function     HW_One_Calc
+    @brief        1号PI计算
+    @param[in]    Xn0: [输入/出]
+    @return       PI计算值
+    @date         2025-11-01
+*/
+int16_t HW_One_Calc(int16_t Xn0)
+{
+    PI1_EK = Xn0;
+    SMDU_RunBlock(1, PI);
+    return PI1_UKH;
+}
+
+/**
+    @function     HW_Two_Calc
+    @brief        2号PI计算
+    @param[in]    Xn0: [输入/出]
+    @return       PI计算值
+    @date         2025-11-01
+*/
+int16_t HW_Two_Calc(int16_t Xn0)
+{
+    PI2_EK = Xn0;
+    SMDU_RunBlock(2, PI);
+    return PI2_UKH;
+}
+
+/**
+    @function     HW_Three_Calc
+    @brief        3号PI计算
+    @param[in]    Xn0: [输入/出]
+    @return       PI计算值
+    @date         2025-11-01
+*/
+int16_t HW_Three_Calc(int16_t Xn0)
+{
+    PI3_EK = Xn0;
+    SMDU_RunBlock(3, PI);
+    return PI3_UKH;
+}
+
+// ------------------------------------------------------------------------------------------------------------------
+// 3.LPF 低通滤波计算
+
+/**
+    @function     LPF_Zero_Update
+    @brief        0号低通滤波计算
+    @param[in]    Xn1: [输入/出]
+**           Xn0: [输入/出]
+**           K: [输入/出]
+    @return       滤波结果
+    @date         2025-11-03
+*/
+int16_t LPF_Zero_Update(int16_t Xn1, int16_t Xn0, int16_t K)
+{
+    LPF0_K = K << 8;
+    LPF0_X = Xn1;
+    LPF0_YH = Xn0;
+    SMDU_RunBlock(0, LPF);
+    return LPF0_YH;
+}
+
+/**
+    @function     LPF_One_Update
+    @brief        1号低通滤波计算
+    @param[in]    Xn1: [输入/出]
+**           Xn0: [输入/出]
+**           K: [输入/出]
+    @return       滤波结果
+    @date         2025-11-03
+*/
+int16_t LPF_One_Update(int16_t Xn1, int16_t Xn0, int16_t K)
+{
+    LPF1_K = K << 8;
+    LPF1_X = Xn1;
+    LPF1_YH = Xn0;
+    SMDU_RunBlock(1, LPF);
+    return LPF1_YH;
+}
+
+/**
+    @function     LPF_Two_Update
+    @brief        2号低通滤波计算
+    @param[in]    Xn1: [输入/出]
+**           Xn0: [输入/出]
+**           K: [输入/出]
+    @return       滤波结果
+    @date         2025-11-03
+*/
+int16_t LPF_Two_Update(int16_t Xn1, int16_t Xn0, int16_t K)
+{
+    LPF2_K = K << 8;
+    LPF2_X = Xn1;
+    LPF2_YH = Xn0;
+    SMDU_RunBlock(2, LPF);
+    return LPF2_YH;
+}
+
+/**
+    @function     LPF_Three_Update
+    @brief        2号低通滤波计算
+    @param[in]    Xn1: [输入/出]
+**           Xn0: [输入/出]
+**           K: [输入/出]
+    @return       滤波结果
+    @date         2025-11-03
+*/
+int16_t LPF_Three_Update(int16_t Xn1, int16_t Xn0, int16_t K)
+{
+    LPF3_K = K << 8;
+    LPF3_X = Xn1;
+    LPF3_YH = Xn0;
+    SMDU_RunBlock(3, LPF);
+    return LPF3_YH;
+}
+
+
+
+
+
+
+/*  -------------------------------------------------------------------------------------------------
+    Function Name  : Atan_Us_MDU
+    Description    : XX-XX-XX
+    Date           : 2021-11-06
+    Parameter      : Xn1: [输入/出]
+**                 Xn0: [输入/出]
+**                 K: [输入/出]
+    ------------------------------------------------------------------------------------------------- */
+int16 Atan_Us_MDU(int16 Xn1, int16 Xn0)
+{
+    SCAT1_COS = Xn1;
+    SCAT1_SIN = Xn0;
+    SCAT1_THE = 0;
+    SMDU_RunBlock(1, ATAN);
+    return SCAT1_RES1;
+}
+
+/*  -------------------------------------------------------------------------------------------------
+    Function Name  : Atan_Us_MDU
+    Description    : XX-XX-XX
+    Date           : 2021-11-06
+    Parameter      : Xn1: [输入/出]
+**                       Xn0: [输入/出]
+**                       Yn:  [输入/出]
+    ------------------------------------------------------------------------------------------------- */
+int16 DivQ_L_MDU(uint16 Xn1, uint16 Xn0, uint16 Yn)
+{
+    DIV0_DAH = Xn1;
+    DIV0_DAL = Xn0;
+    DIV0_DB  = Yn;
+    SMDU_RunBlock(0, DIV);
+    return DIV0_DQL;
+}
+
+int16 DivQ_L_MDU2(uint16 Xn1, uint16 Xn0, uint16 Yn)
+{
+    DIV1_DAH = Xn1;
+    DIV1_DAL = Xn0;
+    DIV1_DB  = Yn;
+    SMDU_RunBlock(1, DIV);
+    return DIV1_DQL;
+}
+
+/** 
+ * @brief       计算Is
+ * @param[in]   i_alp: alp轴电流
+ * @param[in]   i_bet: bet轴电流
+ * @return      is
+ * @date        2022-07-29
+ */
+uint16 Sqrt_alpbet(int16 i_alp, int16 i_bet)
+{
+    SCAT2_COS    =   i_alp;
+    SCAT2_SIN    =   i_bet;
+    SMDU_RunBlock(2, ATAN);
+    return SCAT2_RES1;
+}
+
+/** 
+ * @brief       乘法器
+ * @param[in]   Xn1: 乘数0(16位
+ * @param[in]   Xn2: 乘数1(16位)
+ * @return      Yn:	 结果
+ * @date        2022-11-25
+ */
+
+int16 MULU_H_MDU(uint16 Xn0, uint16 Xn1)
+{
+	MUL3_MA = Xn0;
+	MUL3_MB = Xn1;
+	SMDU_RunBlock(3,UMUL);
+	return  MUL3_MCH;
+	
+}
+
+void MULS_H_MDU(int16 Xn0, int16 Xn1,uint16 xdata *lusResult32)
+{
+	MUL0_MA = Xn0;
+	MUL0_MB = Xn1;
+	SMDU_RunBlock(0,SMUL);
+	
+	*lusResult32 = MUL0_MCH;
+	*(lusResult32+1) = MUL0_MCL;
+}
+
+

+ 98 - 0
User/Hardware/TIMER.c

@@ -0,0 +1,98 @@
+#include <MyProject.h>
+
+
+void Timer2_Init(void)
+{
+	
+	ClrBit(PH_SEL , T2SEL);	    //P10
+	ClrBit(PH_SEL , T2SSEL);	//P07	
+
+	SetReg(TIM2_CR0, T2PSC0 | T2PSC1 | T2PSC2,  T2PSC0 );
+	
+	ClrBit(TIM2_CR0 , T2OCM);
+	SetBit(TIM2_CR0 , T2IRE);	//比较匹配中断/脉宽检测中断0-->Disable  1-->Enable
+	ClrBit(TIM2_CR0 , T2CES);	
+	
+	SetBit(TIM2_CR1 , T2IPE);	//输入Timer PWM周期检测中断使能 0-->Disable  1-->Enable
+	ClrBit(TIM2_CR1 , T2IFE);	//计数器上溢中断使能 0-->Disable  1-->Enable
+	ClrBit(TIM2_CR1 , T2FE);	//输入噪声滤波使能,小于4个时钟周期脉宽滤除
+	ClrBit(TIM2_CR1 , T2DIR);	//QEP&ISD&步进模式专用:当前的方向 0-->正向	1-->反向	
+
+	TIM2__CNTR = 0;
+	TIM2__DR = 1200;
+	TIM2__ARR = 24000.;
+    ClrBit(TIM2_CR0 , T2MOD1);	//00-->输入Timer模式  			01-->输出模式
+	SetBit(TIM2_CR0 , T2MOD0);	//10-->输入Counter模式  		11-->QEP&ISD&步进模式
+   
+}
+
+
+/* -------------------------------------------------------------------------------------------------
+    Function Name  : Timer3_Init
+    Description    : 定时器3初始化
+    Date           : 2021-11-08
+    Parameter      : None
+------------------------------------------------------------------------------------------------- */
+void Timer3_Init(void)
+{
+	ClrBit(TIM3_CR1 , T3EN); 
+	SetBit(PH_SEL , T3SEL);     //Timer3端口使能
+  ClrBit(PH_SEL1 , T3CT0);     //默认端口为P11,功能转移后为P01,需TIMER4转移到P00
+
+	ClrBit(TIM3_CR0 , T3PSC2);	//计数器时钟分频选择
+	ClrBit(TIM3_CR0 , T3PSC1);	//000-->24M		001-->12M		010-->6M	011-->3M
+	ClrBit(TIM3_CR0 , T3PSC0);	//100-->1.5M	101-->750K		110-->375K	111-->187.5K
+
+	SetBit(TIM3_CR0 , T3MOD);   //0-->Timer模式       1-->输出模式
+  ClrBit(TIM3_CR0 , T3OCM);
+
+	ClrBit(TIM3_CR0 , T3IRE);	//比较匹配中断/脉宽检测中断0-->Disable  1-->Enable
+	ClrBit(TIM3_CR0 , T3OPM);	//0-->计数器不停止		1-->单次模式	
+
+	ClrBit(TIM3_CR1 , T3IPE);	//输入Timer PWM周期检测中断使能 0-->Disable  1-->Enable
+	ClrBit(TIM3_CR1 , T3IFE);	//计数器上溢中断使能 0-->Disable  1-->Enable
+
+	SetBit(TIM3_CR1 , T3NM1);	//输入噪声脉宽选择
+	ClrBit(TIM3_CR1 , T3NM0);	//00-->不滤波	01-->4cycles    10-->8cycles  11-->16cycles
+
+	ClrBit(IP2,PTIM31 );
+	SetBit(IP2,PTIM30 );      //中断优先级设置为1
+
+	TIM3__CNTR = 1;
+	TIM3__ARR =1200;
+	TIM3__DR = 1200;
+
+  SetBit(TIM3_CR1 , T3EN);    //TIM3使能    0-->Disable  1-->Enable
+}
+
+
+/**
+ * @brief      TIM4初始化配置
+ */
+void Timer4_Init(void)
+{
+    ClrBit(TIM4_CR1, T4EN);                                         // 0 - 停止计数;1 - 使能计数
+    SetBit(PH_SEL, T4SEL);  //端口复用为 Timer4
+	
+    ClrBit(PH_SEL1,T4CT0); //Timer4 功能转移 00: P0.1 为 Timer4 输入输出
+		ClrBit(PH_SEL1,T4CT1);
+		SetReg(TIM4_CR0, T4PSC0 | T4PSC1 | T4PSC2,  T4PSC0 );
+	
+    SetBit(TIM4_CR0 , T4OCM);
+    ClrBit(TIM4_CR0 , T4IRE);	//比较匹配中断/脉宽检测中断0-->Disable  1-->Enable
+    ClrBit(TIM4_CR0 , T4OPM);	//0-->计数器不停止		1-->单次模式	
+	
+    ClrBit(TIM4_CR1 , T4IPE);	//输入Timer PWM周期检测中断使能 0-->Disable  1-->Enable
+    ClrBit(TIM4_CR1 , T4IFE);	//计数器上溢中断使能 0-->Disable  1-->Enable
+    ClrBit(TIM4_CR1 , T4NM1);	//输入噪声脉宽选择
+    ClrBit(TIM4_CR1 , T4NM0);	//00-->不滤波	01-->4cycles    10-->8cycles  11-->16cycles
+
+		ClrBit(IP2,PTIM40);
+		SetBit(IP2,PTIM41);
+	
+		TIM4__DR   = 12000;                                             //输入模式,DR和ARR的值由硬件写;
+    TIM4__ARR  = 24000.;
+    TIM4__CNTR = 0;
+    SetBit(TIM4_CR0 , T4MOD);   //0-->Timer模式       1-->输出模式
+		ClrBit(TIM4_CR1 , T4EN);    //TIM4使能    0-->Disable  1-->Enable
+}

+ 13 - 0
User/Hardware/TSD.c

@@ -0,0 +1,13 @@
+#include <MyProject.h>
+
+void TSD_Init(void)
+{
+    // 使能中断
+    TSDIE = 1;
+	// 使能TSD
+    SetBit(TSD_CR, TSDEN);
+    // 配置优先级
+    SetBit(IP0, PLVW_TSD1 | PLVW_TSD0);
+    // 过温保护温度 芯片结温 !>> 74°
+    SetReg(TSD_CR, TSDADJ3 | TSDADJ2 | TSDADJ1 | TSDADJ0, TSDADJ3 | TSDADJ2 | TSDADJ1);
+}

+ 22 - 0
User/Hardware/UART.c

@@ -0,0 +1,22 @@
+#include <MyProject.h>
+
+/**
+    @function     UART1_Init
+    @brief        串口1初始化 使用端口P05 P06
+    @date         2025-12-23
+*/
+void UART1_Init(void)
+{
+    SetBit(PH_SEL, UART1EN);
+    UT_MOD1 = 0;
+    UT_MOD0 = 1;
+    SM2 = 0;
+    REN = 1;
+    TB8 = 0;
+    RB8 = 0;
+    ClrBit(IP3, PI2C_UT11 | PI2C_UT10);
+    UT_BAUD = 0x0C;
+    ES0 = 0;
+    // DMA配置
+    // Conf_DMA(0, XDATA_UART1, DebugDat, 0x40);
+}

+ 121 - 0
User/include/Customer.h

@@ -0,0 +1,121 @@
+#ifndef __CUSTOMER_H_
+#define __CUSTOMER_H_
+
+#define PWM_FREQUENCY                   	(16.0)
+#define PWM_DEADTIME                    	(1.0)
+#define MIN_WIND_TIME                   	(PWM_DEADTIME + 0.9)
+#define DLL_TIME                        	(PWM_DEADTIME + 0.3)
+
+#define PWM_LEVEL_MODE                  	(HIGH_LEVEL)
+
+#define Pole_Pairs                      	(4.0)
+#define RS                              	(0.135)
+#define LD                              	(0.00004)
+#define LQ                             	 	(0.00008)
+#define MOTOR_SPEED_BASE                	(9000.0)
+#define Ke                              	(1.8)
+
+#define IR_MODE                         	(CW)
+
+#define HW_AMP_MODE                     	(AMP_PGA_DUAL)     
+
+#define HW_RSHUNT                       	(0.01) 
+#define HW_AMPGAIN                      	(AMP4x)                    
+#define HW_ADC_VREF                    		(VREF5_0)
+
+#define Shunt_Resistor_Mode            		(Single_Resistor)
+
+#define VREF_OUT_EN                     	(1)
+#define VHALF_EN                        	(1)
+
+
+#define RV1                             	(20.0)
+#define RV2                             	(3.0)
+
+#define CHARGE_EN                      		(0)
+#define CHARGE_DUTY                    		(0.1)
+#define CHARGE_TIME                    		(30)
+
+
+#define ALIGN_MOME                     		(ALIGN_NOMAL)
+
+
+#define AlignRamp_Time                  	(800)
+#define Align_Time1                     	(200)
+#define Align_Time2                     	(1000)
+#define Align_Time3                     	(200)
+#define AlignAll_Time                  		(AlignRamp_Time+Align_Time1+Align_Time2+Align_Time3)
+#define Align_Angle1                   		_Q15(90.0/180.0)                       // 第一次预定位角度
+#define Align_Angle2                   		_Q15(90.0/180.0)                        // 第二次预定位角度
+#define Angle_ADD                      		(int32)6*_Q15((float)-180.0/180.0)       //旋转角度
+#define Angle_AngleK                    	(float)Angle_ADD/Align_Time2            //旋转系数
+
+#define DQKP_Alignment                 		_Q12(2.0)
+#define DQKI_Alignment                 		_Q15(0.01)
+#define ID_Align_CURRENT               		I_Value(0.0)
+#define IQ_Align_CURRENT               		I_Value(2.0)
+
+#define Open_Start_Mode                		(Omega_Start)
+#define ID_Start_CURRENT               		I_Value(0.0)
+#define IQ_Start_CURRENT               		I_Value(5.0)
+
+
+#define ATO_BW_START                   		(0.0)
+#define ATO_BW_RUN1                    		(150.0)
+#define ATO_BW_RUN2                    		(150.0)
+#define ATO_BW_RUN3                    		(150.0)
+#define ATO_BW_RUN4                    		(150.0)
+
+#define ATO_START_HOLDTIME             		(10)             ///< (ms)观测器带宽的滤波值,启动第一拍ATO持续时间
+#define ATO_RAMP_PERIOD                		(20)             ///< (ms)观测器带宽的滤波值,ATO爬坡递增 间隔时间
+
+#define MOTOR_OMEGA_RAMP_ACC           		(50)               ///< omega启动的增量(每个载波递增值) 
+#define MOTOR_OMEGA_RAMP_MIN          		S_Value(200.0)     ///< (RPM) omega启动的最小切换转速
+#define MOTOR_OMEGA_RAMP_END           		S_Value(300.0)     ///< (RPM) omega启动的限制转速
+#define MOTOR_SPEED_SMOMIN_RPM         		(600.0)            ///< (RPM) SMO运行最小转速影响启动
+
+#define SPD_BW                         		(20.0)            ///< 速度带宽的滤波值,经典值为5.0-40.0
+#define MOTOR_LOOP_RPM                 		S_Value(400.0)    ///< (RPM) 启动后电流环切入外部环路转速阈值
+
+
+#define MOTOR_SPEED_MIN_RPM            		S_Value(1800.0)
+#define MOTOR_SPEED_MAX_RPM            		S_Value(3500.0)
+#define MOTOR_SPEED_STOP_RPM           		S_Value(200.0)
+
+
+#define DKPStart                      		_Q12(4.5)
+#define DKIStart                      		_Q15(0.03)
+#define QKPStart							DKPStart
+#define QKIStart							DKIStart
+
+#define DKP                            		_Q12(3.5)
+#define DKI                            		_Q15(0.005)
+#define QKP                            		DKP
+#define QKI                            		DKI
+
+// DQ轴输出限幅
+#define DOUTMAX                        		_Q15(0.99)
+#define DOUTMIN                        		_Q15(-0.99)
+#define QOUTMAX                        		_Q15(0.99)
+#define QOUTMIN                        		_Q15(-0.99)
+
+
+#define LOOP_TIME                       	(1)
+
+#define SKP                            		_Q12(2.5)
+#define SKI                            		_Q15(0.01)
+#define SOUTMAX                       	 	I_Value(10.0)
+#define SOUTMIN                        		I_Value(0.01)
+
+#define SPEEDRAMPINC                    	(S_Value(250.0))/(1000/LOOP_TIME)
+#define SPEEDRAMPDEC                    	(S_Value(250.0))/(1000/LOOP_TIME)
+
+#define SPEEDRAMPSTARTINC               	(S_Value(1000.0))/(1000/LOOP_TIME)
+#define SPEEDRAMPSTARTDEC               	(S_Value(500.0))/(1000/LOOP_TIME)
+
+#define SPEED_MODE                     		(NONEMODE)
+
+#define EstimateAlgorithm              		(AO)
+#define OverModulation                 		(0)
+
+#endif

+ 364 - 0
User/include/Develop.h

@@ -0,0 +1,364 @@
+/*  -------------------------- (C) COPYRIGHT 2020 Fortiortech ShenZhen ---------------------------*/
+/*  File Name      : Develop.h
+/*  Author         : Fortiortech  Appliction Team
+/*  Version        : V1.0
+/*  Date           : 2020-08-31
+/*  Description    : This file contains Advanced Applications parameter used for Motor Control.
+/*  ----------------------------------------------------------------------------------------------*/
+/*                                     All Rights Reserved
+/*  ----------------------------------------------------------------------------------------------*/
+
+/* -----Define to prevent recursive inclusion----- */
+#ifndef __DEVELOP_H_
+#define __DEVELOP_H_
+
+/* -----Define to prevent recursive inclusion----- */
+/* -----Q format define----- */
+#define _Q7(A)                          (int8) ((A) * (128))
+#define _Q8(A)                          (int16)((A) * (256))                                                            // Q8 format
+#define _Q10(A)                         (int16)((A) * (1024))                                                           // Q15 format
+#define _Q11(A)                         (int16)((A) * (2048))                                                           // Q12 format
+#define _Q12(A)                         (int16)((A) * (4096))                                                           // Q12 format
+#define _Q13(A)                         (int16)((A) * (8192))                                                           // Q12 format
+#define _Q14(A)                         (int16)((A) * (16383))                                                          // Q15 format
+#define _Q15(A)                         (int16)((A) * (32767))                                                          // Q15 format
+#define _2PI                            (3.1415926 * 2)                                                                 // 2 PI value
+#define _Q16                            (65535.0)                                                                       // Q16 format value
+
+/* -----Private define----- */
+#define SystemPowerUpTime               (10000)                                                                         // 上电等待时间,cpu计数时钟
+
+#define I_ValueX(Curr_Value)            ((Curr_Value) * (HW_RSHUNT) * (HW_AMPGAIN) / (HW_ADC_REF))
+#define I_Value(Curr_Value)             _Q15(I_ValueX(Curr_Value))
+#define QOUTVALUE                    	I_Value(QOUTCURRENT)                                                            //I_Value(10.0)
+
+/* -----芯片参数值----- */
+/* -----CPU and PWM Parameter----- */
+#define MCU_CLOCK                      (24.0)                                                                           // (MHz) 主频
+
+
+#define AO_Enable                      (1)                                                                             //自适应估算器模式使能      
+/* -----硬件板子参数设置值----- */
+/* -----PWM high or low level Mode----- */
+/* -----根据驱动芯片的类型选择,大部分芯片为High_Level----- */
+#define PWM_Level_Mode                 (UP_H_DOWN_L)
+
+#define RV                             ((RV1 + RV2 + RV3) / RV3)                                                        // 分压比
+#define HW_BOARD_VOLT_MAX              (HW_ADC_REF * RV)                                                                // (V)  ADC可测得的最大母线电压
+
+/* -----时间设置值----- */
+#define Calib_Time                     (1000)                                                                           // 校正次数,固定1000次,单位:次
+#define Charge_Time                    (20)                                                                             // (ms) 预充电时间,单位:ms
+
+/* -----正常运行时估算算法的参数设置值----- */
+#define OBS_KSLIDE                     _Q15(0.85)                                                                       // SMO算法里的滑膜增益值
+#define E_BW_Wind                      (600.0)//(BASE_FREQ*2)                                                           // PLL算法里的反电动势滤波值
+#define E_BW                           (400.0)//(BASE_FREQ*2)                                                           // PLL算法里的反电动势滤波值
+
+/* -----逆风判断时的估算算法设置值----- */
+#define TailWind_Time                  (100)                                                                            // (ms) 顺逆风检测时间
+#define ATO_BW_Wind                    (120.0)//120.0-PLL 120.0-smo                                                     // 逆风判断观测器带宽的滤波值,经典值为8.0-100.0
+#define SPD_BW_Wind                    (10.0)//10.0-PLL  ,10.0-smo                                                      // 逆风判断速度带宽的滤波值,经典值为5.0-40.0
+
+/* -----逆风顺风状态下的KP、KI----- */
+#define DQKP_TailWind                  _Q12(0.8)                                                                        //_Q12(1.0)-PLL ,   _Q12(1.5)   -smo
+#define DQKI_TailWind                  _Q15(0.01)                                                                       //_Q15(0.08)-PLL  ,_Q15(0.2)-smo
+
+/* -----芯片参数值----- */
+/* -----CPU and PWM Parameter----- */
+#define PWM_CYCLE                       (1000.0 / PWM_FREQUENCY)                                                        // 周期us
+#define SAMP_FREQ                       (PWM_FREQUENCY * 1000)                                                          // 采样频率(HZ)
+#define TPWM_VALUE                      (1.0 / SAMP_FREQ)                                                               // 载波周期(S)
+#define PWM_VALUE_LOAD                  (uint16)(MCU_CLOCK * 500 / PWM_FREQUENCY)                                       // PWM 定时器重载值
+
+/* -----初始位置检查参数----- */
+#define PosCheckEnable                 (0)                                                                              // 初始位置使能,目前程序中没添加此功能 20220616
+#define AlignEnable                    (0)                                                                              // 预定位使能
+
+/* -----脉冲注入时间长于2ms 或 低于2ms----- */
+#define InjectTime                     (Short_Inject)
+#define RPD_Time                       (3)                                                                              // (ms) 每次RPD的时间
+#define RPD_CurValue                   (6.5)                                                                            // (A)  RPD过流值
+#define DAC_RPDCurValue                _Q7(I_ValueX(RPD_CurValue * 2))
+
+#define ATT_COEF                       (0.85)                                                                           // 无需改动
+
+
+#define   UDQMAX_Volt_VALUE    			_Q15(Under_Protect_Voltage/HW_BOARD_VOLT_MAX)
+#define   UDQMIN_Volt_VALUE    			_Q15(Over_Protect_Voltage/HW_BOARD_VOLT_MAX)
+#define   UDQ_K		                  ((float)(UDQMAX-UDQMIN)/(float)(UDQMAX_Volt_VALUE-UDQMIN_Volt_VALUE))             //2498
+
+/* -----过温保护值设置----- */
+#define   Tempera_Value(NTC_Value) 		_Q15((5.0*NTC_Value/(10.0+NTC_Value))/4.5)									    // 10K上拉电阻时,NTC阻值对应Q15_AD值,单位:KΩ
+
+/* -----double resistor sample Parameter----- */
+#define DLL_TIME                        (1.0)                                                                           // 双电阻最小脉宽设置(us),建议值为死区时间值+0.2us以上
+
+/* -----three resistor overmodule Parameter----- */
+#define OVERMOD_TIME                    (2.0)                                                                           // 三电阻过调制时间(us),建议值2.0
+
+/* -----deadtime compensation----- */
+#define DT_TIME                         (0.0)                                                                           // 死区补偿时间(us),适用于双电阻和三电阻,建议值是1/2死区时间
+
+/* -----*min pulse----- */
+#define GLI_TIME                        (0.0)                                                                           // 桥臂窄脉宽消除(us),建议值0.5
+
+/* -----deadtime Parameter----- */
+#define PWM_LOAD_DEADTIME               (PWM_DEADTIME * MCU_CLOCK)                                                      // 死区设置值
+#define PWM_OVERMODULE_TIME             (OVERMOD_TIME * MCU_CLOCK / 2)                                                  // 过调制时间
+#define PWM_DLOWL_TIME                  (DLL_TIME * MCU_CLOCK / 2)                                                      //下桥臂最小时间
+
+/* -----single resistor sample Parameter----- */
+#define PWM_TS_LOAD                     (uint16)(_Q16 / PWM_CYCLE * MIN_WIND_TIME / 16)                                 // 单电阻采样设置值
+#define PWM_DT_LOAD                     (uint16)(_Q16 / PWM_CYCLE * DT_TIME / 16)                                       // 死区补偿值
+//#define PWM_TGLI_LOAD                   (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME + PWM_DEADTIME) / 16)                       // 最小脉冲
+
+#define PWM_TGLI_LOAD                   (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME) / 16)                                    // 最小脉冲
+
+/* -----硬件板子参数设置值----- */
+/* -----hardware current sample Parameter----- */
+/* -----电流基准的电路参数----- */
+#define HW_BOARD_CURR_MAX               (HW_ADC_REF / 2 / HW_AMPGAIN / HW_RSHUNT)                                       // 最大采样电流,2.702A
+#define HW_BOARD_CURR_MIN               (-HW_BOARD_CURR_MAX)                                                            // 最小采样电流,-2.702A
+#define HW_BOARD_CURR_BASE              (HW_BOARD_CURR_MAX * 2)                                                         // 电流基准//5.4A
+
+/* -----hardware voltage sample Parameter----- */
+/* -----母线电压采样分压电路参数----- */
+#define HW_BOARD_VOLTAGE_BASE           (HW_BOARD_VOLT_MAX / 1.732)                                                     // 电压基准
+#define HW_BOARD_VOLTAGE_VC             ((RV1 + RV2 + RV3 * VC1) / (RV3 * VC1))
+#define HW_BOARD_VOLTAGE_BASE_Start     (HW_ADC_REF * HW_BOARD_VOLTAGE_VC / 1.732)                                      // 电压基准
+
+/* -----硬件过流保护DAC值----- */
+/*硬件过流保护DAC值*/
+#if (AMP0_VHALF == 1)
+    #define DAC_OvercurrentValue        ((uint8)_Q8(I_ValueX(OverHardcurrentValue))+0x7F)
+#else
+    #define DAC_OvercurrentValue        ((uint8)_Q8(I_ValueX(OverHardcurrentValue)))
+#endif
+
+#define Align_Theta                     _Q15((float)Align_Angle / 180.0)
+#define BEMF_Theta                      _Q15((float)0.0 / 180.0)
+
+#define BASE_FREQ                       ((MOTOR_SPEED_BASE / 60) * Pole_Pairs)                                          // 基准频率
+#define FG_Value						(TIM4_Fre/BASE_FREQ/ FG_K)	
+
+/* -----保护参数值----- */
+#define GetCurrentOffsetValueLow     (16383-GetCurrentOffsetValue)                              //  偏置电压差值低点 
+#define GetCurrentOffsetValueHigh    (16383+GetCurrentOffsetValue)                              //  偏置电压差值高点 
+/* -----protect value----- */
+#define OVER_PROTECT_VALUE              _Q15(Over_Protect_Voltage  / HW_BOARD_VOLT_MAX)
+#define UNDER_PROTECT_VALUE             _Q15(Under_Protect_Voltage / HW_BOARD_VOLT_MAX)
+#define OVER_RECOVER_VALUE              _Q15(Over_Recover_Vlotage  / HW_BOARD_VOLT_MAX)
+#define UNDER_RECOVER_VALUE             _Q15(Under_Recover_Vlotage / HW_BOARD_VOLT_MAX)
+
+/* -----motor speed set value----- */
+#define Motor_Open_Ramp_ACC             _Q15(MOTOR_OPEN_ACC     / MOTOR_SPEED_BASE)
+#define Motor_Open_Ramp_Min             _Q15(MOTOR_OPEN_ACC_MIN / MOTOR_SPEED_BASE)
+
+#define Motor_Omega_Ramp_Min            _Q15(MOTOR_OMEGA_ACC_MIN / MOTOR_SPEED_BASE)
+#define Motor_Omega_Ramp_End            _Q15(MOTOR_OMEGA_ACC_END / MOTOR_SPEED_BASE)
+
+#define Motor_Loop_Speed                _Q15(MOTOR_LOOP_RPM / MOTOR_SPEED_BASE)
+
+#define Motor_Max_Speed                 _Q15(MOTOR_SPEED_MAX_RPM   / MOTOR_SPEED_BASE)
+#define Motor_Min_Speed                 _Q15(MOTOR_SPEED_MIN_RPM   / MOTOR_SPEED_BASE)
+#define Motor_Limit_Speed               _Q15(MOTOR_SPEED_LIMIT_RPM / MOTOR_SPEED_BASE)
+#define Motor_Stop_Speed                _Q15(MOTOR_SPEED_STOP_RPM  / MOTOR_SPEED_BASE)
+
+#define Motor_Stall_Speed               _Q15(Stall_DectSpeed / MOTOR_SPEED_BASE)
+
+#define Motor_Stall_Min_Speed           _Q15(MOTOR_SPEED_STAL_MIN_RPM / MOTOR_SPEED_BASE)
+#define Motor_Stall_Max_Speed           _Q15(MOTOR_SPEED_STAL_MAX_RPM / MOTOR_SPEED_BASE)
+
+#define Motor_RD_Speed                  _Q15(MOTOR_SPEED_RD_RPM    / MOTOR_SPEED_BASE)
+#define Motor_RDPT_Speed                _Q15(MOTOR_SPEED_RDPT_RPM  / MOTOR_SPEED_BASE)
+#define Motor_RDRCV_Speed               _Q15(MOTOR_SPEED_RDRCV_RPM / MOTOR_SPEED_BASE)
+
+
+#define Motor_Over_Speed                 _Q15(MOTOR_SPEED_OVER_RPM   / MOTOR_SPEED_BASE)
+#define Motor_Over_RecoverSpeed                 _Q15(MOTOR_SPEED_OVER_RecoverRPM   / MOTOR_SPEED_BASE)
+
+#define SPEED_K                         ((float)(Motor_Max_Speed-Motor_Min_Speed)/(float)(MAXPWMDuty-MINPWMDuty))
+#define POWER_K                         ((float)(Motor_Max_Power-Motor_Min_Power)/(float)(MAXPWMDuty-MINPWMDuty))
+
+/* -----obsever parameter set value----- */
+#define MAX_BEMF_VOLTAGE                ((MOTOR_SPEED_BASE*Ke)/(1000.0))
+#define MAX_OMEG_RAD_SEC                ((float)(_2PI*BASE_FREQ))
+
+//#define OBS_K1T                         _Q15(LD/(LD+RS*TPWM_VALUE))
+//#define OBS_K2T                         _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
+//#define OBS_K2T_SMO                     _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*1.4*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
+//#define OBS_K2T_Actual                  _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
+//#define OBS_K3T                         _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
+//#define OBS_K4T                         _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
+
+//自适应估算器模式使能
+  #if (AO_Enable==1) 
+    #define OBS_K1T                         _Q11((1.0*3.0/(125.0*1.0))*(LQ/TPWM_VALUE)*(HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE))
+    #define OBS_K2T                         _Q11(0.8*RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
+    //#define OBS_K2T_SMO                     _Q11(1.0*RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
+    #define OBS_K2T_Actual                  OBS_K2T
+    #define OBS_K3T                         _Q8(2.5)
+    #define OBS_K4T                         _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
+#else
+    #define OBS_K1T                         _Q15(LD/(LD+RS*TPWM_VALUE))
+    #define OBS_K2T                         _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
+    #define OBS_K2T_SMO                     _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*1.4*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
+    #define OBS_K2T_Actual                  _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
+    #define OBS_K3T                         _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
+    #define OBS_K4T                         _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
+#endif
+
+#define OBSW_KP_GAIN                    _Q12(2*_2PI*ATT_COEF*ATO_BW/BASE_FREQ)
+#define OBSW_KI_GAIN                    _Q15(_2PI*ATO_BW*ATO_BW*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN                _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN                _Q15(_2PI*ATO_BW_RUN*ATO_BW_RUN*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN1               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN1/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN1               _Q15(_2PI*ATO_BW_RUN1*ATO_BW_RUN1*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN2               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN2/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN2               _Q15(_2PI*ATO_BW_RUN2*ATO_BW_RUN2*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN3               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN3/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN3               _Q15(_2PI*ATO_BW_RUN3*ATO_BW_RUN3*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN4               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN4/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN4               _Q15(_2PI*ATO_BW_RUN4*ATO_BW_RUN4*TPWM_VALUE/BASE_FREQ)
+
+#define OBS_FBASE                       BASE_FREQ*TPWM_VALUE*32768                                                      // Fbase*Tpwm*32768
+#define OBS_KLPF                        _Q15(_2PI*BASE_FREQ*TPWM_VALUE)                                                 // 2PI*Fbase*Tpwm
+#define SPEED_KLPF                      _Q15(_2PI*SPD_BW*TPWM_VALUE)                                                    // 2PI*SPD_BW*Tpwm
+#define OBS_EA_KS                       _Q15((2*MOTOR_SPEED_SMOMIN_RPM*_2PI*BASE_FREQ*TPWM_VALUE)/MOTOR_SPEED_BASE)     // SMO的最小速度
+
+#define OBSE_PLLKP_GAIN_WIND            _Q11(((2*ATT_COEF*_2PI*E_BW_Wind*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+#define OBSE_PLLKI_GAIN_WIND            _Q11((_2PI*E_BW_Wind*_2PI*E_BW_Wind*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+
+#define OBSE_PLLKP_GAIN                 _Q11(((2*ATT_COEF*_2PI*E_BW*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+#define OBSE_PLLKI_GAIN                 _Q11((_2PI*E_BW*_2PI*E_BW*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+
+
+#define VREF3_0                  (1)
+#define VREF4_0                  (2)
+#define VREF4_5                  (3)
+#define VREF5_0                  (4)
+
+#if (HW_ADC_VREF==VREF5_0)
+ #define HW_ADC_REF                     (5.0)                                    // (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF4_5)
+ #define HW_ADC_REF                     (4.5)                                    // (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF4_0)
+ #define HW_ADC_REF                     (4.0)                                    // (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF3_0)
+ #define HW_ADC_REF                     (3.0)                                    // (V)  ADC参考电压
+#endif
+
+/* -----逆风判断时的估算算法设置值----- */
+#define SPEED_KLPF_WIND                 _Q15(_2PI*SPD_BW_Wind*TPWM_VALUE)                                               // 2PI*SPD_BW_Wind*Tpwm
+#define OBSW_KP_GAIN_WIND               _Q12(2*_2PI*ATT_COEF*ATO_BW_Wind/BASE_FREQ)
+//#define   OBSW_KI_GAIN_WIND           _Q15(_2PI*0.5*ATO_BW_Wind*ATO_BW_Wind*TPWM_VALUE/BASE_FREQ)                     //---SMO
+#define OBSW_KI_GAIN_WIND               _Q15(_2PI*ATO_BW_Wind*ATO_BW_Wind*TPWM_VALUE/BASE_FREQ)                         //---PLL
+
+
+/* -----motor start speed value----- */
+/* -----open 算法启动参数----- */
+#define MOTOR_OPEN_ACC                 (200)                                        // 强拖启动的增量(每载波周期加一次)
+#define MOTOR_OPEN_ACC_MIN             (0)                                          // 强拖启动的初始速度
+#define MOTOR_OPEN_ACC_CNT             (100)                                        // 强拖启动的执行次数(MOTOR_OPEN_ACC_CNT*256)
+
+
+/* -----Current Calib:enable or disable----- */
+#define CalibDisable                    (0)                                                                             //
+#define CalibEnable                     (1)                                                                             //
+#define CalibENDIS                      (CalibEnable)
+
+/* -----SVPWM mode----- */
+#define SVPWM_5_Segment                 (0)                                                                             // 五段式SVPWM
+#define SVPWM_7_Segment                 (1)                                                                             // 七段式SVPWM
+#define SVPMW_Mode                      (SVPWM_7_Segment)
+
+/* -----double resistor sample mode----- */
+#define DouRes_1_Cycle                  (0)                                                                             // 1 周期采样完 ia, ib
+#define DouRes_2_Cycle                  (1)                                                                             // 交替采用ia, ib, 2周期采样完成
+#define DouRes_Sample_Mode              (DouRes_1_Cycle)
+
+/* -----PWM high or low level Mode----- */
+/* -----根据驱动芯片的类型选择,大部分芯片为High_Level----- */
+#define High_Level                      (0)                                                                             // 驱动高电平有效
+#define Low_Level                       (1)                                                                             // 驱动低电平有效
+#define UP_H_DOWN_L                     (2)                                                                             // 上桥臂高电平有效,下桥臂低电平有效
+#define UP_L_DOWN_H                     (3)                                                                             // 上桥臂低电平有效,下桥臂高电平有效
+
+
+/* -----脉冲注入时间长于2ms 或 低于2ms----- */
+#define Long_Inject                     (0)                                                                             // 脉冲注入时间长于2ms,若时间长于4ms,则要修改定时器分频
+#define Short_Inject                    (1)                                                                             // 脉冲注入时间低于2ms
+
+/* -----调速模式----- */
+#define PWMMODE                        (0)                                                                              // PWM调速
+#define SREFMODE                       (1)                                                                              // 模拟调速
+#define NONEMODE                       (2)                                                                              // 直接给定值,不调速
+#define KEYMODE                        (3)                                                                              // 按键调速模式
+
+/* -----IPM测试模式----- */
+#define IPMtest                        (0)                                                                              // IPM测试或者MOS测试,MCU输出固定占空比
+#define NormalRun                      (1)                                                                              // 正常按电机状态机运行
+
+/* -----估算器模式选择----- */
+#define SMO                            (0)                                                                              // SMO ,滑膜估算
+#define PLL                            (1)                                                                              // PLL ,锁相环
+
+/* -----顺逆风判断设置----- */
+#define NoTailWind                     (0)                                                                              // 无逆风顺风判断
+#define RSDMethod                      (1)                                                                              // RSD比较器方法
+#define BEMFMethod                     (2)                                                                              // BEMF方法
+
+/* -----开环启动模式选择----- */
+#define Open_Start                     (0)                                                                              // 开环强拖启动
+#define Omega_Start                    (1)                                                                              // Omega启动
+#define Open_Omega_Start               (2)                                                                              // 先开环启,后Omega启动
+
+/* -----电流采样模式----- */
+#define Single_Resistor                (0)                                                                              // 单电阻电流采样模式
+#define Double_Resistor                (1)                                                                              // 双电阻电流采样模式
+#define Three_Resistor                 (2)                                                                              // 三电阻电流采样模式
+
+/* -----硬件过流保护----- */
+#define Hardware_FO_Protect            (1)                                                                              // 硬件FO过流保护使能,适用于IPM有FO保护的场合
+#define Hardware_CMP_Protect           (2)                                                                              // 硬件CMP比较过流保护使能,适用于MOS管应用场合
+#define Hardware_FO_CMP_Protect        (3)                                                                              // 硬件CMP比较和FO过流保护都使能
+#define Hardware_Protect_Disable       (4)                                                                              // 硬件过流保护禁止,用于测试
+
+/* -----硬件过流保护比较值来源----- */
+
+#define Compare_DAC                    (0)                                                                              // DAC设置硬件过流值
+#define Compare_Hardware               (1)                                                                              // 硬件设置硬件过流值
+
+/* -----外环选择功率环或速度环----- */
+//#define POWER_LOOP_CONTROL             (0)                                                                              //恒功率
+//#define SPEED_LOOP_CONTROL             (1)                                                                              //恒转速
+//#define CURRENT_LOOP_CONTROL           (2)
+
+/* -----外环使能----- */
+#define OUTLoop_Disable                (0)                                                                              // 关闭外环
+#define OUTLoop_Enable                 (1)                                                                              // 使能外环
+
+
+/* -----正PWMduty or 负PWMduty Choose----- */
+#define PosiPWMDUTY			           (0)														                        // 正PWMduty
+#define NegaPWMDUTY				       (1)														                        // 负PWMduty
+
+/* -----堵转跟启动保护----- */
+
+#define StartFault			           (1)														                        //  
+#define StallFault				       (2)														                        //  
+
+ #if (PosCheckEnable==1)
+  #error "data 20220616,RPD Program has not been added"
+ #endif
+ #if ((AO_Enable==1) &&(EstimateAlgorithm == PLL))
+  #error "AO_Enable must match `EstimateAlgorithm = SMO`"
+ #endif
+
+#endif

+ 229 - 0
User/include/MyProject.h

@@ -0,0 +1,229 @@
+#ifndef __MYPROJECT_H_
+#define __MYPROJECT_H_
+
+#include "FU6522_72.h"
+
+#include <Definition.h>
+#include <Customer.h>
+#include <Parameter.h>
+#include <Protect.h>
+
+
+#include <FU6522_72_MDU.h>
+
+#define     S_Value(SpeedValue)             _Q15(SpeedValue/MOTOR_SPEED_BASE)
+typedef struct
+{
+    int16   IuOffset;       //Iu的偏置电压
+    int32   IuOffsetSum;    //Iu的偏置电压总和
+    int16   IvOffset;       //Iv的偏置电压
+    int32   IvOffsetSum;    //Iv的偏置电压总和
+    int16   Iw_busOffset;   //Iw或Ibus的偏置电压
+    int32   Iw_busOffsetSum;//Iw或Ibus的偏置电压总和
+    
+    int16   IbusOffset;   //Ibus的偏置电压
+    int32   IbusOffsetSum;//IIbus的偏置电压总和
+    
+    
+    
+    int16   OffsetCount;    //偏置电压采集计数
+    int8    OffsetFlag;     //偏置电压结束标志位
+    
+} CurrentOffset;
+
+extern CurrentOffset xdata mcCurOffset;
+extern int16 idata Power_Currt;
+
+extern uint8 Drv_SectionCheak(void);
+
+extern void GetCurrentOffset(void);
+extern void Motor_Ready (void);
+extern void Motor_Init (void);
+
+extern void FOC_Init(void);
+extern void Motor_Charge(void);
+extern void MC_Stop(void);
+extern void MC_Break(void);
+extern void Motor_Static_Open(void);
+
+
+extern void Motor_Align(void);
+
+typedef enum
+{
+    mcReady     = 0,    ///< 准备状态,该状态电机空闲,等待控制命令
+    mcInit      = 1,    ///< 初始化,该状态进行启动前的变量初始化
+    mcCharge    = 2,    ///< 预充电,电机启动前给自举电容充电,一般用于高压驱动,低压驱动一般不需要
+    mcTailWind  = 3,    ///< 顺逆风检测,该状态下电机进行顺逆风检测
+    mcPosiCheck = 4,    ///< 初始位置检测
+    mcAlign     = 5,    ///< 预定位
+    mcStart     = 6,    ///< 启动,用于配置启动代码
+    mcRun       = 7,    ///< 运行,
+    mcStop      = 8,    ///< 停止
+    mcFault     = 9,    ///< 故障状态
+    mcBrake     = 10,   ///< 刹车
+} MotStateType;
+
+
+
+typedef union
+{
+    uint8 SetMode;                                                              ///< 整个配置模式使能位
+    struct
+    {
+        uint8 CalibFlag        : 1;                                             ///< 电流校准的标志位
+        uint8 ChargeSetFlag    : 1;                                             ///< 预充电配置标志位
+        uint8 AlignSetFlag     : 1;                                             ///< 预定位配置标志位
+        uint8 TailWindSetFlag  : 1;                                             ///< 顺逆风配置标志位
+        uint8 StartSetFlag     : 1;                                             ///< 启动配置标志位
+        uint8 PosiCheckSetFlag : 1;                                             ///< 位置检测配置标志位
+        uint8 Break            : 1;                                             ////</ 刹车配置标志位
+    } SetFlag;
+} MotStaM;
+
+
+
+extern MotStateType data mcState;
+
+extern MotStaM    McStaSet;
+
+extern void MC_Control(void);
+
+
+typedef struct
+{
+    uint16 mcDcbusFlt;                                                          // 母线电压
+    uint16 mcADCCurrentbus;                                                     // 母线电流
+    int16  NTCTempFlt;                                                          // NTC电压值
+    uint16 PowerCal;
+    uint32 PowerFlt;                                                            // 功率滤波后的值
+    int16  SpeedFlt;                                                            // 当前速度滤波后的值
+    
+    uint8  ChargeStep;                                                          // 预充电的步骤
+    uint8  CtrlMode;                                                            // 控制模式
+    
+    int16  Max_ia;
+    int16  Max_ib;
+    int16  Max_ic;
+    
+    uint8  Flg_ATORampEnd;
+    
+    uint16 Ref;                                                                 // 控制目标给定
+    uint16  IqRef;                                                               // Q轴给定电流
+    uint16  IdRef;                                                               // D轴给定电流
+    uint16  IqSpeedRef;                                                          // Q轴速度给定电流
+    
+    uint8  Mode0HoldCnt;                                                        // MODE0切MODE1延迟时间计数
+    
+    uint16  EMFsquare;                                                             // 当前FOC_ESQU滤波后的值
+    
+    uint32 RunStateCnt;                                                         // 运行状态计数
+    
+    uint8 LoopTime;                                                            // 外环控制周期计数
+    
+    uint16 State_Count;                                                         // 电机各个状态的时间计数
+    
+    
+    int16  mcPosCheckAngle;                                                   // 位置检测的角度
+    
+    
+    uint8  CurrentAlignStatus;           // 预定位状态
+    
+    
+    float AngleProcess;
+    int16 AngleStart;
+} FOCCTRL;
+
+
+
+typedef struct
+{
+    uint16  RefValue;
+    float  OutValue_float;
+    float  IncValue;
+    float  DecValue;
+} MCRAMP;
+
+extern bool isCtrlPowOn;
+extern FOCCTRL              xdata mcFocCtrl;
+extern MCRAMP               xdata mcRefRamp;
+
+extern void   HardwareInit(void);
+extern void   SoftwareInit(void);
+
+extern void   TargetRef_Process(void);
+extern void   Speed_response(void);
+extern int16  Motor_Ramp(int16 ref);
+
+extern void   ATORamp(void);
+
+extern void   TickCycle_1ms(void);
+
+extern void   Fault_GetCurrentOffset(void);
+extern uint32 Abs_F32(int32 value);
+extern uint16 Abs_F16(int16 value);
+
+extern int16  PowerSpeedLimit(int16 speedref);
+
+#define TIM3_Fre                       (750000.0)                                // TIM0计数频率750KHz
+#define TIM4_Fre                       (12000000.0)                               // TIM4计数频率
+
+/*************************************************************************************///External Function
+extern void Timer1_Init(void);
+extern void Timer2_Init(void);
+extern void Timer3_Init(void);
+extern void Timer4_Init(void);
+extern void TIM4_Init_RF(void);
+
+
+
+extern void PI_Init(void);
+extern void PI2_Init(void);
+extern void PI3_Init(void);
+
+
+
+
+void TSD_Init(void);
+
+void ADC_Init(void);
+void AMP_Init(void);
+
+void CMP3_Init(void);
+void CMP3_Interrupt_Init(void);
+
+unsigned short CRC_Check(unsigned char start_sector, unsigned char offset_sector);
+
+void Driver_Init(void);
+
+void GPIO_Init(void);
+
+typedef enum
+{
+    FaultNoSource           = 0,  ///< 无故障
+    FaultHardOVCurrent      = 1,  ///< 硬件过流
+    FaultSoftOVCurrent      = 2,  ///< 软件过流
+    FaultOverVoltageDC      = 3,  ///< 过压
+    FaultUnderVoltageDC     = 4,  ///< 欠压
+    FaultPhaseLost          = 5,  ///< 缺相
+    FaultStall              = 6,  ///< 堵转
+    FaultStart              = 7,  ///< 启动保护
+    FaultFan                = 8,  ///< 风机保护
+    FaultOverHeat           = 9,  ///< 电机过热保护
+    FaultOverTemperature    = 10, ///< NTC过温保护
+    FaultOverPower          = 11, ///<过功率
+    FaultLVW                = 12, ///< LVW
+    FaultGetOffset          = 13, ///< 偏置电压保护
+    FaultOverSpeed          = 14,
+    FaultOverLSensor        = 15,
+    FaultOverRSensor        = 16,
+    FaultUartLost           = 17,
+    FaultFan1               = 18,
+    
+    FaultE      = 18,
+} FaultStateType;
+
+
+extern FaultStateType data mcFaultSource;
+
+#endif

+ 165 - 0
User/include/Parameter.h

@@ -0,0 +1,165 @@
+/**
+ * @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
+ * @file      Parameter.h
+ * @author    Fortiortech  Appliction Team
+ * @note      Last modify author is Marcel He
+ * @since     2021-04-11
+ * @date      2022-07-14
+ * @brief     This file contains all FOC debug  parameter used for Motor Control.
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __Parameter_H_
+#define __Parameter_H_
+#include <definition.h>
+/* Define to prevent recursive inclusion -------------------------------------*/
+
+
+/* Private define ------------------------------------------------------------*/
+#define SystemPowerUpTime               (55000)                                                       // 上电等待时间,cpu计数时钟
+/*芯片参数值------------------------------------------------------------------*/
+/*CPU and PWM Parameter*/
+
+/*CPU Parameter*/
+#define MCU_CLOCK                       (24.0)                                                        ///< (MHz) 主频
+
+#define PWM_CYCLE                       (1000.0 / PWM_FREQUENCY)                                      ///< 周期us
+#define SAMP_FREQ                       (PWM_FREQUENCY * 1000)                                        ///< 采样频率(HZ)
+#define TPWM_VALUE                      (1.0 / SAMP_FREQ)                                             ///< 载波周期(S)
+#define PWM_VALUE_LOAD                  (uint16)(MCU_CLOCK * 1000 *2 / PWM_FREQUENCY)                 ///< PWM 定时器重载值 20190514修改
+
+#define SAcc_Value(SpeedValue)          ((float)32767.0*(SpeedValue*LOOP_TIME/1000.0) / MOTOR_SPEED_BASE)
+
+
+/*three resistor overmodule Parameter*/
+#define OVERMOD_TIME                    (2.0)                                                         ///< 三电阻过调制时间(us),建议值2.0
+/*deadtime compensation*/
+#define DT_TIME                         (0.0)                                                         ///< 死区补偿时间(us),适用于双电阻和三电阻,建议值是1/2死区时间
+/*min pulse*/
+#define GLI_TIME                        (0.0)                                                         ///< 桥臂窄脉宽消除(us),建议值0.5
+
+/*deadtime Parameter*/
+#define PWM_LOAD_DEADTIME               (PWM_DEADTIME * MCU_CLOCK)                                    ///< 死区设置值
+#define PWM_OVERMODULE_TIME             (OVERMOD_TIME * MCU_CLOCK / 2)                                ///< 过调制时间
+#define PWM_DLOWL_TIME                  (DLL_TIME * MCU_CLOCK / 2)                                    ///<下桥臂最小时间
+/*single resistor sample Parameter*/
+#define PWM_TS_LOAD                     (uint16)(_Q16 / PWM_CYCLE * MIN_WIND_TIME / 16)               ///< 单电阻采样设置值
+#define PWM_DT_LOAD                     (uint16)(_Q16 / PWM_CYCLE * DT_TIME / 16)                     ///< 死区补偿值
+#define PWM_TGLI_LOAD                   (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME + PWM_DEADTIME) / 16)   ///< 最小脉冲
+
+/*硬件板子参数设置值------------------------------------------------------------------*/
+/*hardware current sample Parameter*/
+
+
+#if (HW_ADC_VREF==VREF5_0)
+ #define HW_ADC_REF                     (5.0)                                    ///< (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF4_5)
+ #define HW_ADC_REF                     (4.5)                                    ///< (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF4_0)
+ #define HW_ADC_REF                     (4.0)                                    ///< (V)  ADC参考电压
+#elif (HW_ADC_VREF==VREF3_0)
+ #define HW_ADC_REF                     (3.0)                                    ///< (V)  ADC参考电压
+#endif
+
+#define RV                              ((RV1 + RV2 ) / RV2)               ///< 分压比
+
+
+/* -----时间设置值----- */
+#define Calib_Time                     (1000)  
+/* -----保护参数值----- */
+#define GetCurrentOffsetValueLow     (16383-GetCurrentOffsetValue)                                                      ///<  偏置电压差值低点 
+#define GetCurrentOffsetValueHigh    (16383+GetCurrentOffsetValue)                                                      ///<  偏置电压差值高点 
+/* -----过温保护值设置----- */
+#define   Tempera_Value(NTC_Value) 		_Q15((5.0*NTC_Value/(10.0+NTC_Value))/HW_ADC_REF)									    ///< 10K上拉电阻时,NTC阻值对应Q15_AD值,单位:KΩ
+/*电流基准的电路参数*/
+#define HW_BOARD_CURR_MAX               (HW_ADC_REF / 2 / HW_AMPGAIN / HW_RSHUNT)                     ///< 最大采样电流
+#define HW_BOARD_CURR_MIN               (-HW_BOARD_CURR_MAX)                                          ///< 最小采样电流
+#define HW_BOARD_CURR_BASE              (HW_BOARD_CURR_MAX * 2)                                       ///< 电流基准
+
+/*hardware voltage sample Parameter*/
+/*母线电压采样分压电路参数*/
+#define HW_BOARD_VOLT_MAX               (HW_ADC_REF * RV)                           ///< (V)  ADC可测得的最大母线电压
+#define HW_BOARD_VOLTAGE_BASE           (HW_BOARD_VOLT_MAX / 1.732)                 ///< 电压基准
+
+
+
+/*硬件过流保护DAC值*/
+#define DAC_OverCurrentValue            _Q8(I_ValueX(HWOCValue)) + 0x7F             ///< 该结果是进行了右移一位的结果
+
+#define Align_Theta                     _Q15((float)Align_Angle / 180.0)
+
+#define P_Value(PowerValue)             _Q15(PowerValue*2.0/HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE/1.5)
+
+/* obsever parameter set value */
+
+#define MAX_BEMF_VOLTAGE                ((MOTOR_SPEED_BASE*Ke)/(1000.0))
+#define MAX_OMEG_RAD_SEC                ((float)(_2PI*BASE_FREQ))
+
+#define ATT_COEF                       (0.85)                                  ///< 无需改动
+
+
+//自适应估算器模式使能
+#if (EstimateAlgorithm == AO) 
+    #define OBS_K1T                     _Q11((1.0*3.0/(125.0*1.0))*(LQ/TPWM_VALUE)*(HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE))
+    #define OBS_K2T                     _Q11(0.6*RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
+    #define OBS_K3T                     _Q8(2.35)
+    #define OBS_K4T                     _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
+#else
+    #define OBS_K1T                     _Q15(LD/(LD+RS*TPWM_VALUE))
+    #define OBS_K2T                     _Q13(1.4*(TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
+    #define OBS_K3T                     _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
+    #define OBS_K4T                     _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
+#endif
+
+
+#define OBSW_KP_GAIN_START              _Q12(2*_2PI*ATT_COEF*ATO_BW_START/BASE_FREQ)
+#define OBSW_KI_GAIN_START              _Q15(_2PI*ATO_BW_START*ATO_BW_START*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN1               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN1/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN1               _Q15(_2PI*ATO_BW_RUN1*ATO_BW_RUN1*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN2               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN2/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN2               _Q15(_2PI*ATO_BW_RUN2*ATO_BW_RUN2*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN3               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN3/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN3               _Q15(_2PI*ATO_BW_RUN3*ATO_BW_RUN3*TPWM_VALUE/BASE_FREQ)
+
+#define OBSW_KP_GAIN_RUN4               _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN4/BASE_FREQ)
+#define OBSW_KI_GAIN_RUN4               _Q15(_2PI*ATO_BW_RUN3*ATO_BW_RUN4*TPWM_VALUE/BASE_FREQ)
+
+
+
+#define OBS_FBASE                       _Q15(BASE_FREQ*TPWM_VALUE)                                    ///< Fbase*Tpwm*32768
+#define OBS_KLPF                        _Q15(_2PI*BASE_FREQ*TPWM_VALUE)                               ///< 2PI*Fbase*Tpwm
+#define SPEED_KLPF                      _Q15(_2PI*SPD_BW*TPWM_VALUE)                                  ///< 2PI*SPD_BW*Tpwm
+#define OBS_EA_KS                       _Q15((2*MOTOR_SPEED_SMOMIN_RPM*_2PI*BASE_FREQ*TPWM_VALUE)/MOTOR_SPEED_BASE)     // SMO的最小速度
+
+
+#define OBSE_PLLKP_GAIN                 _Q11(((2*ATT_COEF*_2PI*E_BW*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+#define OBSE_PLLKI_GAIN                 _Q11((_2PI*E_BW*_2PI*E_BW*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
+
+
+
+#define CalibENDIS                      (Enable)
+#define SVPMW_Mode                      (SVPWM_7_Segment)
+#define DouRes_Sample_Mode              (DouRes_1_Cycle)
+
+
+/* 电机启动参数值 */
+//open 算法启动参数
+#define MOTOR_OPEN_RAMP_ACC             (30.0)                                  ///< 强拖启动的增量(每载波周期加一次)
+#define MOTOR_OPEN_RAMP_MIN             S_Value(0.0)                            ///< 强拖启动的初始速度
+#define MOTOR_OPEN_RAMP_CNT             (100.0)                                 ///< 强拖启动的执行次数(MOTOR_OPEN_ACC_CNT*256)
+
+/* 正常运行时估算算法的参数设置值  */
+#define OBS_KSLIDE                     _Q15(0.85)       ///< SMO算法里的滑膜增益值
+#define E_BW                           (450.0)          ///< PLL算法里的反电动势滤波值
+
+/* 功率保护 */
+#define PowerProtectValue                P_Value(105)               // 功率上限值 6500:300W
+#define PowerProtectValue1               P_Value(120)               // 功率上限值 6500:300W
+#define PowerLimit                       (100.0)                                      // 功率上限值 6500:300W
+#define PowerLimitK                      (18.0)
+
+#endif

+ 129 - 0
User/include/Protect.h

@@ -0,0 +1,129 @@
+/**
+ * @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
+ * @file      Protect.h
+ * @author    Marcel He
+ * @note      Last modify author is Marcel He
+ * @since     2022-07-01
+ * @date      2022-07-14
+ * @brief     This file contains protection parameter used for Motor Control.
+ */
+
+
+/* Define to prevent recursive inclusion -------------------------------------------------------- */
+#ifndef __PROTECT_H_
+#define __PROTECT_H_
+
+#define OC_SW_ProtectEn                     (1)                                  // 软件过流保护使能: 0,不使能;1,使能
+#define OV_ProtectEn                        (1)                                  // 过欠压保护使能:   0,不使能;1,使能
+#define LP_ProtectEn                        (1)                                  // 缺相保护使能:     0,不使能;1,使能
+#define OT_ProtectEn                        (1)                                  // 过温保护使能:     0,不使能;1,使能
+#define Start_ProtectEn                     (1)
+#define Stall_ProtectEn                     (1)                                  // 堵转失速保护使能: 0,不使能;1,使能
+#define GetCurrentOffsetEnable              (1)                                  // 偏置电压保护,0,不使能;1,使能
+#define OverSpeedProtectEnable				(0)                                  //< 超速保护使能
+#define OverLSensorEnable                   (0)
+#define OverRSensorEnable                   (0)
+#define OverUARTEnable                      (0)
+#define OverPowerEnable                     (1)
+
+/*  保护重启参数设置  */
+#define OC_RecoveryTimes                    (100)                                  // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define OC_RecoveryDelayTime                (1000)                               // (ms)重启延迟时间
+
+#define OV_RecoveryTimes                    (10)                                   // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define OV_RecoveryDelayTime                (1000)                                // (ms)重启延迟时间
+
+#define LP_RecoveryTimes                    (3)                                   // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+
+#define LP_RecoveryDelayTime                (3000)                                // (ms)重启延迟时间
+#define LP_RecoveryDelayTime1               (60000)
+
+#define OT_RecoveryTimes                    (20)                                   // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define OT_RecoveryDelayTime                (60000)                                // (ms)重启延迟时间
+#define Start_RecoveryTimes                 (0)                                 // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define Stall_RecoveryTimes                 (255)                                 // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define Stall_RecoveryDelayTime             (60000*5)                                // (ms)重启延迟时间
+
+#define LRS_RecoveryTimes                    (200)                                   // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
+#define LRS_RecoveryDelayTime                (1000)                                // (ms)重启延迟时间
+/* HW current protection */
+#define HW_OC_FO_MODE                       (1)                                     ///< 硬件FO过流保护使能,适用于IPM有FO保护的场合
+#define HW_OC_CMP_MODE                      (2)                                     ///< 硬件CMP比较过流保护使能,适用于MOS管应用场合
+#define HW_OC_FOCMP_MODE                    (3)                                     ///< 硬件CMP比较和FO过流保护都使能
+#define HW_OC_DISABLE                       (4)                                     ///< 硬件过流保护禁止,用于测试
+#define HW_OC_MODE                          (HW_OC_CMP_MODE)                        ///< 硬件过流保护实现方式
+
+/* 硬件过流保护比较值来源 */
+#define COMPARE_DAC_MODE                    (0)                                     ///< DAC设置硬件过流值
+#define COMPARE_HW_MODE                     (1)                                     ///< 硬件设置硬件过流值
+#define COMPARE_MODE                        (COMPARE_DAC_MODE)                      ///< 硬件过流值的来源
+#define HWOCValue                           (40.0)                                  ///< (A) DAC模式下的硬件过流值//18.0
+
+/* 软件过流保护参数设置 */
+#define SW_OC_CurrentVal                    I_Value(35.0)                            ///< (A)软件过流值
+#define SW_OC_DectTime                      (100)                                    ///< (ms)软件过流检测时间
+
+/* -----偏置电压保护----- */
+#define GetCurrentOffsetValue              _Q14(0.05)                               // (单位:100%)偏置电压保护误差范围,超过该范围保护   
+
+/* 直流母线电压保护参数设置值 */
+
+#define OVER_VOLTAGE_DECTTIME               (100)                                   ///< (ms) 直流母线电压过压检测保持时间
+#define UNDER_VOLTAGE_DECTTIME              (100)                                   ///< (ms) 直流母线电压欠压检测保持时间
+
+#define OVER_VOLTAGE_PROTECT                UDC_Value(30.0)                          ///< (V) 直流母线电压过压保护值
+#define UNDER_VOLTAGE_PROTECT               UDC_Value(9.6)                          ///< (V) 直流母线电压欠压保护值
+
+#define OVER_VOLTAGE_RECOVER                UDC_Value(28.0)                          ///< (V) 直流母线电压过压保护恢复值            
+#define UNDER_VOLTAGE_RECOVER               UDC_Value(10.6)                          ///< (V) 直流母线电压欠压保护恢复值
+
+/* 启动保护参数设置值 */
+#define StartProtectRestartTimes       (10)                                       // 启动保护重启次数,单位:次
+#define StartRecoverDelay1             (30)
+#define StartRecoverDelay2             (12000)//12000
+#define StartProtect1EsValue           (5500)
+#define StartProtect2EsValue           (2500)//500
+
+/* 堵转保护参数设置值 */
+#define STALL_SPEED_MAX                     S_Value(4500)                                                     //150000 can enter the water shortage protection 
+#define STALL_SPEED_MIN                     S_Value(2200)
+
+#define EsThresholdValueL                   (2600.0)
+#define EsThresholdValueH                   (2900.0)
+#define EsThresholdSpeed                    S_Value(2500)                          ///< (RPM) 电机转速
+
+
+/* 缺相保护参数设置值 */
+#define LP_NoLoadCurrentValue               I_Value(0.3)                            ///< (A) 相电流峰值小于该电流值则不进行缺相判断
+#define LP_DectDealyTIME                    (500)                                   ///< (ms) 启动延迟检测时间,用于屏蔽启动阶段
+#define LP_DectCycleTIME                    (10)                                    ///< (ms) 峰值检测周期时间,需满足覆盖至少一个完整电周期(50)
+
+/* -----NTC过温保护----- */
+#define TemperatureProtectTime                          (60000)                                                             // (ms)温度保护检测时间
+#define TempeValue(res)                (short)(_Q15((5*(1000.0/(res+1000.0)))/HW_ADC_REF)) //  温度保护AD值换算
+#define OVER_Temperature                                TempeValue(1014)                                        // 过温保护值100℃  100度(1014)
+//#define UNDER_Temperature                             (800.0)                                     // 过温保护恢复阈值,根据NTC曲线设定,10K上拉电阻,70℃
+#define OvertempRec_Value                   TempeValue(1878)
+#define OvertempLimit_Value                 TempeValue(1369)
+
+/* -----堵入风口超速保护----- */
+#define  MOTOR_SPEED_OVER_RPM                           (70000)                                 ///< (RPM) 超速保护速度
+#define  OVER_SpeedDetectTime                               (1400)                                  ///< (ms) 超速保护检测时间
+
+/* -----堵入风口限速功能----- */
+#define  OverSpeedLimitEnable                               (1)                                     ///< 限速功能,0,不使能,1使能
+#define  MOTOR_SPEED_LIMIT_RPM                  (8000.0)                                ///< (RPM) 限速保护最大速度
+
+#define  MOTOR_SPEED_LIMIT0_RPM                 (700.0)                                 ///< (RPM) For Lack water protection 
+
+/* 故障显示 */
+#define LED_ONTime                          (100)
+#define LED_OFFTime                         (233)
+#define LED_ONOFFTime                       (LED_ONTime + LED_OFFTime)
+#define LED_DelayTime                       (200)
+#define LED_IntervalTime                    (1000)
+
+
+
+#endif
+

+ 92 - 0
User/include/definition.h

@@ -0,0 +1,92 @@
+#ifndef __DEFINITION_H_
+#define __DEFINITION_H_
+
+#define _Q7(A)                          (int8) ((A) * 0x7f)         ///< Q7 format
+#define _Q8(A)                          (int16)((A) * 0xff)         ///< Q8 format
+#define _Q9(A)                          (int16)((A) * 0x1ff)        ///< Q9 format
+#define _Q10(A)                         (int16)((A) * 0x3ff)        ///< Q10 format
+#define _Q11(A)                         (int16)((A) * 0x07ff)       ///< Q11 format
+#define _Q12(A)                         (int16)((A) * 0x0fff)       ///< Q12 format
+#define _Q13(A)                         (int16)((A) * 0x1fff)       ///< Q13 format
+#define _Q14(A)                         (int16)((A) * 0x3fff)       ///< Q14 format
+#define _Q15(A)                         (int16)((A) * 0x7fff)       ///< Q15 format
+#define _Q16                            (65535.0)                   ///< Q16 format value
+#define _2PI                            (3.1415926 * 2)             ///< 2 PI value
+
+#define I_ValueX(Xn0)            		(Xn0 * HW_RSHUNT * HW_AMPGAIN / (HW_ADC_REF))
+#define I_Value(Xn0)             		_Q15(I_ValueX(Xn0))
+#define S_Value(Xn0)             		_Q15((float)(Xn0) / MOTOR_SPEED_BASE)
+#define A_Value(Xn0)                  	_Q15((float)(Xn0) / 180.0)
+#define UDC_Value(Xn0)                  _Q15((Xn0)/ HW_BOARD_VOLT_MAX)
+
+#define Disable                         (0)                              
+#define Enable                          (1)
+
+// 转向定义
+#define CW                              (0)             ///<正转
+#define CCW                             (1)             ///<反转
+
+// ADC参考电压配置
+#define VREF3_0                         (0xA0)          ///< 0XA0 远离实际值  减少直接填写数值导致错误,其他同理
+#define VREF4_0                         (0xB0)
+#define VREF4_5                         (0xC0)
+#define VREF5_0                         (0xD0)
+
+// 运放模式选择
+#define AMP_NOMAL                       (0xA0)          ///< 外部放大
+#define AMP_PGA_DUAL                    (0xB0)          ///< 内部PGA 双端差分输入
+
+// 内部PGA放大倍数选择
+#define AMP2x                           (2)
+#define AMP4x                           (4)
+#define AMP8x                           (8)
+#define AMP16x                          (16)
+
+// 驱动电平设置 
+#define HIGH_LEVEL                      (0xA0)          ///< 驱动高电平有效
+#define LOW_LEVEL                       (0xB0)          ///< 驱动低电平有效
+#define UP_H_DOWN_L                     (0xC0)          ///< 上桥臂高电平有效,下桥臂低电平有效
+#define UP_L_DOWN_H                     (0xD0)          ///< 上桥臂低电平有效,下桥臂高电平有效
+
+
+#define BASE_FREQ                       ((MOTOR_SPEED_BASE / 60) * Pole_Pairs)
+
+
+
+#define SVPWM_5_Segment                 (0xA0)          ///< 五段式SVPWM
+#define SVPWM_7_Segment                 (0xB0)          ///< 七段式SVPWM
+
+#define DouRes_1_Cycle                  (0xA0)          ///< 1 周期采样完 ia, ib
+#define DouRes_2_Cycle                  (0xB0)          ///< 交替采用ia, ib, 2周期采样完成
+
+
+#define ALIGN_DSIABLE                   (0xA0)          ///< 禁止 
+#define ALIGN_NOMAL                     (0xB0)          ///< 正常预定位 
+#define ALIGN_TEST                      (0xC0)          ///< 测试模式,可用于手动测试电机极对数 
+
+
+#define NONEMODE                        (0xA0)          ///< 直接给定值,不调速
+#define PWMMODE                         (0xB0)          ///< PWM调速
+#define SREFMODE                        (0xC0)          ///< 模拟调速
+#define ONOFFTEST                       (0xD0)          ///< 启停测试工具
+
+#define SMO                             (0xA0)          ///< SMO ,滑膜估算
+#define PLL                             (0xB0)          ///< PLL ,锁相环
+#define AO                              (0xC0)          ///< AO,自适应估算器
+
+
+#define Open_Start                      (0xA0)          ///< 开环强拖启动
+#define Omega_Start                     (0xB0)          ///< Omega启动
+#define Open_Omega_Start                (0xC0)          ///< 先开环启,后Omega启动
+
+
+#define Single_Resistor                 (0xA0)          ///< 单电阻电流采样模式
+#define Double_Resistor                 (0xB0)          ///< 双电阻电流采样模式
+#define Three_Resistor                  (0xC0)          ///< 三电阻电流采样模式
+
+#define Long_Inject                     (0)             ///< 脉冲注入时间长于2ms,若时间长于4ms,则要修改定时器分频
+#define Short_Inject                    (1)             ///< 脉冲注入时间低于2ms
+
+
+
+#endif

+ 27 - 0
keilkill.bat

@@ -0,0 +1,27 @@
+del *.bak /s
+del *.ddk /s
+del *.edk /s
+del *.lst /s
+del *.lnp /s
+del *.mpf /s
+del *.mpj /s
+del *.obj /s
+del *.omf /s
+::del *.opt /s  ::不允许删除JLINK的设置
+del *.plg /s
+del *.rpt /s
+del *.tmp /s
+del *.__i /s
+del *.crf /s
+del *.o /s
+del *.d /s
+del *.axf /s
+del *.tra /s
+del *.dep /s           
+del JLinkLog.txt /s
+
+del *.iex /s
+del *.htm /s
+del *.sct /s
+del *.map /s
+exit