📄 mc_statemachine.ls
字号:
1035 018b 7b04 ld a,(OFST+0,sp)
1038 018d 5b04 addw sp,#4
1039 018f 81 ret
1109 ; 293 SM_RetVal_t sm_start(void)
1109 ; 294 {
1110 switch .text
1111 0190 _sm_start:
1113 0190 5204 subw sp,#4
1114 00000004 OFST: set 4
1117 ; 295 SM_RetVal_t sm_retVal = STATE_REMAIN;
1119 0192 0f04 clr (OFST+0,sp)
1120 ; 300 retVal = driveStartUp();
1122 0194 cd0000 call _driveStartUp
1124 0197 6b03 ld (OFST-1,sp),a
1125 ; 301 hwRetVal = devChkHWErr();
1127 0199 cd0000 call _devChkHWErr
1129 019c 6b02 ld (OFST-2,sp),a
1130 ; 302 kpRetVal = keysProcess();
1132 019e cd0000 call _keysProcess
1134 01a1 6b01 ld (OFST-3,sp),a
1135 ; 305 if (hwRetVal == FUNCTION_ERROR)
1137 01a3 7b02 ld a,(OFST-2,sp)
1138 01a5 a102 cp a,#2
1139 01a7 2604 jrne L755
1140 ; 307 sm_retVal = ERROR_CONDITION;
1142 01a9 a603 ld a,#3
1144 01ab 2012 jp LC004
1145 01ad L755:
1146 ; 311 else if (kpRetVal == USER_SEL)
1148 01ad 7b01 ld a,(OFST-3,sp)
1149 01af a107 cp a,#7
1150 01b1 2604 jrne L365
1151 ; 313 sm_retVal = OPTIONAL_JUMP;
1153 01b3 a602 ld a,#2
1155 01b5 2008 jp LC004
1156 01b7 L365:
1157 ; 317 else if (retVal == FUNCTION_ENDED)
1159 01b7 7b03 ld a,(OFST-1,sp)
1160 01b9 a101 cp a,#1
1161 01bb 2606 jrne L165
1162 ; 319 sm_retVal = NEXT_STATE;
1164 01bd a601 ld a,#1
1165 01bf LC004:
1166 01bf 6b04 ld (OFST+0,sp),a
1167 01c1 7b03 ld a,(OFST-1,sp)
1168 01c3 L165:
1169 ; 323 if (retVal == FUNCTION_ERROR)
1171 01c3 a102 cp a,#2
1172 01c5 260d jrne L175
1173 ; 325 sm_retVal = ERROR_CONDITION;
1175 01c7 a603 ld a,#3
1176 01c9 6b04 ld (OFST+0,sp),a
1177 ; 328 FaultingState = SM_START_FAULT;
1179 01cb 35040001 mov L5_FaultingState,#4
1180 ; 331 UserInterface_Fault(STARTUP_FAILED);
1182 01cf a601 ld a,#1
1183 01d1 cd0000 call _UserInterface_Fault
1185 01d4 L175:
1186 ; 334 return sm_retVal;
1188 01d4 7b04 ld a,(OFST+0,sp)
1191 01d6 5b04 addw sp,#4
1192 01d8 81 ret
1262 ; 337 SM_RetVal_t sm_run(void)
1262 ; 338 {
1263 switch .text
1264 01d9 _sm_run:
1266 01d9 5204 subw sp,#4
1267 00000004 OFST: set 4
1270 ; 339 SM_RetVal_t sm_retVal = STATE_REMAIN;
1272 01db 0f04 clr (OFST+0,sp)
1273 ; 344 retVal = driveRun(); // Execute the motor control run
1275 01dd cd0000 call _driveRun
1277 01e0 6b03 ld (OFST-1,sp),a
1278 ; 345 hwRetVal = devChkHWErr();
1280 01e2 cd0000 call _devChkHWErr
1282 01e5 6b02 ld (OFST-2,sp),a
1283 ; 346 kpRetVal = keysProcess();
1285 01e7 cd0000 call _keysProcess
1287 01ea 6b01 ld (OFST-3,sp),a
1288 ; 349 if (hwRetVal == FUNCTION_ERROR)
1290 01ec 7b02 ld a,(OFST-2,sp)
1291 01ee a102 cp a,#2
1292 01f0 2604 jrne L526
1293 ; 351 sm_retVal = ERROR_CONDITION;
1295 01f2 a603 ld a,#3
1297 01f4 2024 jp LC005
1298 01f6 L526:
1299 ; 355 else if (kpRetVal == USER_SEL)
1301 01f6 7b01 ld a,(OFST-3,sp)
1302 01f8 a107 cp a,#7
1303 01fa 2604 jrne L136
1304 ; 357 sm_retVal = NEXT_STATE;
1306 01fc a601 ld a,#1
1308 01fe 201a jp LC005
1309 0200 L136:
1310 ; 361 else if (retVal == FUNCTION_ERROR)
1312 0200 7b03 ld a,(OFST-1,sp)
1313 0202 a102 cp a,#2
1314 0204 260f jrne L536
1315 ; 363 sm_retVal = ERROR_CONDITION;
1317 0206 a603 ld a,#3
1318 0208 6b04 ld (OFST+0,sp),a
1319 ; 366 FaultingState = SM_RUN_FAULT;
1321 020a 35050001 mov L5_FaultingState,#5
1322 ; 369 UserInterface_Fault(ERROR_ON_SPEED_FEEDBACK);
1324 020e a602 ld a,#2
1325 0210 cd0000 call _UserInterface_Fault
1328 0213 2007 jra L726
1329 0215 L536:
1330 ; 372 else if (retVal == FUNCTION_ENDED)
1332 0215 4a dec a
1333 0216 2604 jrne L726
1334 ; 374 sm_retVal = OPTIONAL_JUMP;
1336 0218 a602 ld a,#2
1337 021a LC005:
1338 021a 6b04 ld (OFST+0,sp),a
1339 021c L726:
1340 ; 379 return sm_retVal;
1342 021c 7b04 ld a,(OFST+0,sp)
1345 021e 5b04 addw sp,#4
1346 0220 81 ret
1405 ; 382 SM_RetVal_t sm_stop(void)
1405 ; 383 {
1406 switch .text
1407 0221 _sm_stop:
1409 0221 5203 subw sp,#3
1410 00000003 OFST: set 3
1413 ; 384 SM_RetVal_t sm_retVal = STATE_REMAIN;
1415 0223 0f03 clr (OFST+0,sp)
1416 ; 387 retVal = driveStop();
1418 0225 cd0000 call _driveStop
1420 0228 6b02 ld (OFST-1,sp),a
1421 ; 388 hwRetVal = devChkHWErr();
1423 022a cd0000 call _devChkHWErr
1425 022d 6b01 ld (OFST-2,sp),a
1426 ; 391 if (hwRetVal == FUNCTION_ERROR)
1428 022f a102 cp a,#2
1429 0231 2604 jrne L176
1430 ; 393 sm_retVal = ERROR_CONDITION;
1432 0233 a603 ld a,#3
1434 0235 2008 jp LC006
1435 0237 L176:
1436 ; 397 else if (retVal == FUNCTION_ENDED)
1438 0237 7b02 ld a,(OFST-1,sp)
1439 0239 a101 cp a,#1
1440 023b 2606 jrne L576
1441 ; 399 sm_retVal = NEXT_STATE;
1443 023d a601 ld a,#1
1444 023f LC006:
1445 023f 6b03 ld (OFST+0,sp),a
1447 0241 200c jra L376
1448 0243 L576:
1449 ; 403 else if (retVal == FUNCTION_ERROR)
1451 0243 a102 cp a,#2
1452 0245 2608 jrne L376
1453 ; 405 sm_retVal = ERROR_CONDITION;
1455 0247 a603 ld a,#3
1456 0249 6b03 ld (OFST+0,sp),a
1457 ; 408 FaultingState = SM_STOP_FAULT;
1459 024b 35060001 mov L5_FaultingState,#6
1460 024f L376:
1461 ; 411 return sm_retVal;
1463 024f 7b03 ld a,(OFST+0,sp)
1466 0251 5b03 addw sp,#3
1467 0253 81 ret
1526 ; 414 SM_RetVal_t sm_wait(void)
1526 ; 415 {
1527 switch .text
1528 0254 _sm_wait:
1530 0254 5203 subw sp,#3
1531 00000003 OFST: set 3
1534 ; 416 SM_RetVal_t sm_retVal = STATE_REMAIN;
1536 0256 0f03 clr (OFST+0,sp)
1537 ; 420 retVal = driveWait();
1539 0258 cd0000 call _driveWait
1541 025b 6b02 ld (OFST-1,sp),a
1542 ; 421 hwRetVal = devChkHWErr();
1544 025d cd0000 call _devChkHWErr
1546 0260 6b01 ld (OFST-2,sp),a
1547 ; 424 if (hwRetVal == FUNCTION_ERROR)
1549 0262 a102 cp a,#2
1550 0264 2604 jrne L137
1551 ; 426 sm_retVal = ERROR_CONDITION;
1553 0266 a603 ld a,#3
1555 0268 2008 jp LC007
1556 026a L137:
1557 ; 430 else if (retVal == FUNCTION_ENDED)
1559 026a 7b02 ld a,(OFST-1,sp)
1560 026c a101 cp a,#1
1561 026e 2606 jrne L537
1562 ; 432 sm_retVal = NEXT_STATE;
1564 0270 a601 ld a,#1
1565 0272 LC007:
1566 0272 6b03 ld (OFST+0,sp),a
1568 0274 200c jra L337
1569 0276 L537:
1570 ; 436 else if (retVal == FUNCTION_ERROR)
1572 0276 a102 cp a,#2
1573 0278 2608 jrne L337
1574 ; 438 sm_retVal = ERROR_CONDITION;
1576 027a a603 ld a,#3
1577 027c 6b03 ld (OFST+0,sp),a
1578 ; 441 FaultingState = SM_WAIT_FAULT;
1580 027e 35070001 mov L5_FaultingState,#7
1581 0282 L337:
1582 ; 444 return sm_retVal;
1584 0282 7b03 ld a,(OFST+0,sp)
1587 0284 5b03 addw sp,#3
1588 0286 81 ret
1591 bsct
1592 0002 L347_st_fault:
1593 0002 00 dc.b 0
1651 ; 447 SM_RetVal_t sm_fault(void)
1651 ; 448 {
1652 switch .text
1653 0287 _sm_fault:
1655 0287 89 pushw x
1656 00000002 OFST: set 2
1659 ; 449 SM_RetVal_t sm_retVal = STATE_REMAIN;
1661 0288 0f01 clr (OFST-1,sp)
1662 ; 454 driveFault();
1664 028a cd0000 call _driveFault
1666 ; 455 if (st_fault == 0)
1668 028d b602 ld a,L347_st_fault
1669 028f 260a jrne L377
1670 ; 457 driveStop();
1672 0291 cd0000 call _driveStop
1674 ; 460 UserInterface_Lock();
1676 0294 cd0000 call _UserInterface_Lock
1678 ; 462 st_fault = 1;
1680 0297 35010002 mov L347_st_fault,#1
1681 029b L377:
1682 ; 464 hwRetVal = devChkHWErrEnd();
1684 029b cd0000 call _devChkHWErrEnd
1686 029e 6b02 ld (OFST+0,sp),a
1687 ; 466 if (FaultingState != SM_NO_FAULT)
1689 02a0 3d01 tnz L5_FaultingState
1690 ; 472 if (hwRetVal == FUNCTION_ENDED)
1692 02a2 4a dec a
1693 02a3 2605 jrne L777
1694 ; 474 sm_retVal = NEXT_STATE;
1696 02a5 4c inc a
1697 02a6 6b01 ld (OFST-1,sp),a
1698 ; 476 st_fault = 0;
1700 02a8 3f02 clr L347_st_fault
1701 02aa L777:
1702 ; 479 return sm_retVal;
1704 02aa 7b01 ld a,(OFST-1,sp)
1707 02ac 85 popw x
1708 02ad 81 ret
1768 ; 482 SM_RetVal_t sm_faultover(void)
1768 ; 483 {
1769 switch .text
1770 02ae _sm_faultover:
1772 02ae 5203 subw sp,#3
1773 00000003 OFST: set 3
1776 ; 484 SM_RetVal_t sm_retVal = STATE_REMAIN;
1778 02b0 0f03 clr (OFST+0,sp)
1779 ; 488 kpRetVal = keysProcess();
1781 02b2 cd0000 call _keysProcess
1783 02b5 6b02 ld (OFST-1,sp),a
1784 ; 489 hwRetVal = devChkHWErrEnd();
1786 02b7 cd0000 call _devChkHWErrEnd
1788 02ba 6b01 ld (OFST-2,sp),a
1789 ; 492 if (hwRetVal == FUNCTION_ERROR)
1791 02bc a102 cp a,#2
1792 02be 260a jrne L7201
1793 ; 494 sm_retVal = ERROR_CONDITION;
1795 02c0 a603 ld a,#3
1796 02c2 6b03 ld (OFST+0,sp),a
1797 ; 496 FaultingState = SM_FAULTOVER_FAULT;
1799 02c4 35080001 mov L5_FaultingState,#8
1801 02c8 2010 jra L1301
1802 02ca L7201:
1803 ; 498 else if (kpRetVal == USER_SEL)
1805 02ca 7b02 ld a,(OFST-1,sp)
1806 02cc a107 cp a,#7
1807 02ce 260a jrne L1301
1808 ; 500 sm_retVal = NEXT_STATE;
1810 02d0 a601 ld a,#1
1811 02d2 6b03 ld (OFST+0,sp),a
1812 ; 503 devChkHWErrClr();
1814 02d4 cd0000 call _devChkHWErrClr
1816 ; 505 UserInterface_Unlock();
1818 02d7 cd0000 call _UserInterface_Unlock
1820 02da L1301:
1821 ; 507 return sm_retVal;
1823 02da 7b03 ld a,(OFST+0,sp)
1826 02dc 5b03 addw sp,#3
1827 02de 81 ret
2311 switch .ubsct
2312 0000 L7_g_pUserInterface:
2313 0000 0000 ds.b 2
2314 xdef _sm_faultover
2315 xdef _sm_fault
2316 xdef _sm_wait
2317 xdef _sm_stop
2318 xdef _sm_run
2319 xdef _sm_start
2320 xdef _sm_startinit
2321 xdef _sm_idle
2322 xdef _sm_reset
2323 xref _driveFault
2324 xref _driveWait
2325 xref _driveStop
2326 xref _driveRun
2327 xref _driveStartUp
2328 xref _driveStartUpInit
2329 xref _driveIdle
2330 xref _driveInit
2331 xref _devChkHWErrClr
2332 xref _devChkHWErrEnd
2333 xref _devChkHWErr
2334 xref _devInit
2335 xref _keysProcess
2336 xref _keysInit
2337 xref _UserInterface_Fault
2338 xref _Get_UserInterface
2339 xref _UserInterface_Unlock
2340 xref _UserInterface_Lock
2341 xref _UserInterface_Init
2342 xref _vdev_get
2343 xref _vdev_init
2344 xref _vtimer_TimerElapsed
2345 xref _vtimer_SetTimer
2346 xref _vtimer_init
2347 xdef _StateMachineExec
2367 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -