⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc_statemachine.ls

📁 STM8S105 BLDC源代码
💻 LS
📖 第 1 页 / 共 2 页
字号:
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 + -