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

📄 chap2.asm

📁 用凌阳16位单片机SPMC75F2413A来控制无刷直流电动机的详细程序包
💻 ASM
📖 第 1 页 / 共 4 页
字号:
LM1:
	// total=12, vars=12
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=12
	bp=sp+1

	R1=BP+15
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,61,',0,0
	.dd LM2-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM2:
LBB2:
.debug
	.dw '.stabn 0x44,0,63,',0,0
	.dd LM3-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM3:
	R1=[_sptr]	// QImode move
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	[bp+1]=R2	// QImode move
	R4=[bp+1]	// QImode move
	R1=[BP]	// QImode move
	R4-=[R1]	// subqi3_r0R R4=R4-[R1]
	[bp+1]=R4	// QImode move
.debug
	.dw '.stabn 0x44,0,65,',0,0
	.dd LM4-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM4:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R3=R2+2
	[bp+3]=R3	// QImode move
	R4=[bp+1]	// QImode move
	[SP--]=R4	// QImode move
	call __cvi1f2	// call with return value
	SP=SP+1
	R4=[bp+3]	// QImode move
	R3=[R4++]	// RD=[RS] HFmode, RD+1=RS
	R4=[R4]
	[bp+10]=R3	// HFmode [BP+#IM6]=RS
	[bp+11]=R4
	R3=[bp+10]	// HFmode RD=[BP+#IM6]
	R4=[bp+11]
	push R3,R4 to [sp]	// pushhf
	push R1,R2 to [sp]	// pushhf
	call __mulf2	// call with return value
	SP=SP+4
	[bp+4]=R1	// HFmode [BP+#IM6]=RS
	[bp+5]=R2
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R4=R2+4
	[bp+6]=R4	// QImode move
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+8
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[SP--]=R1	// QImode move
	call __cvi1f2	// call with return value
	SP=SP+1
	R4=[bp+6]	// QImode move
	R3=[R4++]	// RD=[RS] HFmode, RD+1=RS
	R4=[R4]
	[bp+10]=R3	// HFmode [BP+#IM6]=RS
	[bp+11]=R4
	R3=[bp+10]	// HFmode RD=[BP+#IM6]
	R4=[bp+11]
	push R3,R4 to [sp]	// pushhf
	push R1,R2 to [sp]	// pushhf
	call __mulf2	// call with return value
	SP=SP+4
	push R1,R2 to [sp]	// pushhf
	R1=[bp+4]	// HFmode RD=[BP+#IM6]
	R2=[bp+5]
	push R1,R2 to [sp]	// pushhf
	call __subf2	// call with return value
	SP=SP+4
	[bp+7]=R1	// HFmode [BP+#IM6]=RS
	[bp+8]=R2
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R3=R2+6
	[bp+9]=R3	// QImode move
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+9
	R4=R2	// QImode move
	R1=[R4]	// QImode move
	[SP--]=R1	// QImode move
	call __cvi1f2	// call with return value
	SP=SP+1
	R4=[bp+9]	// QImode move
	R3=[R4++]	// RD=[RS] HFmode, RD+1=RS
	R4=[R4]
	[bp+10]=R3	// HFmode [BP+#IM6]=RS
	[bp+11]=R4
	R3=[bp+10]	// HFmode RD=[BP+#IM6]
	R4=[bp+11]
	push R3,R4 to [sp]	// pushhf
	push R1,R2 to [sp]	// pushhf
	call __mulf2	// call with return value
	SP=SP+4
	push R1,R2 to [sp]	// pushhf
	R1=[bp+7]	// HFmode RD=[BP+#IM6]
	R2=[bp+8]
	push R1,R2 to [sp]	// pushhf
	call __addf2	// call with return value
	SP=SP+4
	push R1,R2 to [sp]	// pushhf
	call __cvf2i1	// call with return value
	SP=SP+2
	[bp+2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,69,',0,0
	.dd LM5-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM5:
	R1=[_sptr]	// QImode move
	R2=R1	// QImode move
	R1=R1+9
	R3=[_sptr]	// QImode move
	R2=R3	// QImode move
	R3=R3+8
	R4=R3	// QImode move
	R2=[R4]	// QImode move
	R3=R1	// QImode move
	[R3]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,70,',0,0
	.dd LM6-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM6:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+8
	R4=[bp+1]	// QImode move
	R1=R2	// QImode move
	[R1]=R4	// QImode move
.debug
	.dw '.stabn 0x44,0,72,',0,0
	.dd LM7-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM7:
	R1=[bp+2]	// QImode move
	pc=L2	// Indirect jump
.debug
	.dw '.stabn 0x44,0,73,',0,0
	.dd LM8-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM8:
LBE2:
.debug
	.dw '.stabn 0x44,0,73,',0,0
	.dd LM9-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LM9:
L2:

	sp+=12
	pop bp from [sp]
	retf
	.endp	// end of IncPIDCalc

.debug
	.dw '.stabs "NextPoint:p4",160,0,0,15',0x0d,0x0a
.CODE
.debug
	.dw '.stabn 0xc0,0,0,',0,0
	.dd LBB2-_IncPIDCalc
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabs "dError:1",128,0,0,1',0x0d,0x0a
.CODE
.debug
	.dw '.stabs "incpid:1",128,0,0,2',0x0d,0x0a
.CODE
.debug
	.dw '.stabn 0xe0,0,0,',0,0
	.dd LBE2-_IncPIDCalc
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabf ',0,0
	.dd LME1-_IncPIDCalc
	.dw 0x0d,0x0a
.code
LME1:
.iram
_summation:
	.dw 0
	.dw 0
.debug
	.dw '.stabs "summation:S3",38,0,0,',0,0,offset _summation,seg _summation,0x0d,0x0a
.CODE
.code
.debug
	.dw '.stabs "abs:F1",36,0,0,',0,0,offset _abs,seg _abs,0x0d,0x0a
.CODE
.public _abs
_abs:	.proc
.debug
	.dw '.stabn 0x44,0,83,',0,0
	.dd LM10-_abs
	.dw 0x0d,0x0a
.code
LM10:
	// total=0, vars=0
	// frame_pointer_needed: 1
	push bp to [sp]
	bp=sp+1

	R2=BP+3
.debug
	.dw '.stabn 0x44,0,83,',0,0
	.dd LM11-_abs
	.dw 0x0d,0x0a
.code
LM11:
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	CMP R1,0	// QImode test
	JL L5	// QImode GE
	PC=L4
L5:
	R1=-R1	// QImode negative
L4:
	pc=L3	// Indirect jump
.debug
	.dw '.stabn 0x44,0,83,',0,0
	.dd LM12-_abs
	.dw 0x0d,0x0a
.code
LM12:
L3:

	pop bp from [sp]
	retf
	.endp	// end of abs

.debug
	.dw '.stabs "number:p1",160,0,0,3',0x0d,0x0a
.CODE
.debug
	.dw '.stabf ',0,0
	.dd LME2-_abs
	.dw 0x0d,0x0a
.code
LME2:
.iram
Lcount_9:
	.dw 0
.code
.debug
	.dw '.stabs "BLDC_Motor_Actiyator:F19",36,0,0,',0,0,offset _BLDC_Motor_Actiyator,seg _BLDC_Motor_Actiyator,0x0d,0x0a
.CODE
.public _BLDC_Motor_Actiyator
_BLDC_Motor_Actiyator:	.proc
.debug
	.dw '.stabn 0x44,0,86,',0,0
	.dd LM13-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM13:
	// total=3, vars=3
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=3
	bp=sp+1

	R1=BP+6
	[bp+1]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,87,',0,0
	.dd LM14-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM14:
LBB3:
.debug
	.dw '.stabn 0x44,0,88,',0,0
	.dd LM15-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM15:
	R1=0	// QImode move
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,90,',0,0
	.dd LM16-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM16:
	R1=[_sCSptr]	// QImode move
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	R1=R2 lsr 3
	R2=R1&1
	CMP R2,0	// QImode test
	JZ L15	// QImode NE
	PC=L7
L15:
	R1=[_sCSptr]	// QImode move
	R4=R1	// QImode move
	R2=[R4]	// QImode move
	R1=R2 lsr 4
	R2=R1&1
	CMP R2,0	// QImode test
	JNZ L16	// QImode EQ
	PC=L7
L16:
.debug
	.dw '.stabn 0x44,0,92,',0,0
	.dd LM17-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM17:
	call _IPM_Charge	// call without return value
.debug
	.dw '.stabn 0x44,0,93,',0,0
	.dd LM18-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM18:
	R1=[Lcount_9]	// QImode move
	R2=1	// QImode move
	[Lcount_9]=R1+R2
.debug
	.dw '.stabn 0x44,0,94,',0,0
	.dd LM19-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM19:
	R1=[Lcount_9]	// QImode move
	CMP R1,100	// QImode compare
	JA L17	// QImode LEU
	PC=L8
L17:
.debug
	.dw '.stabn 0x44,0,96,',0,0
	.dd LM20-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM20:
LBB4:
	call _IPM_Trigger_Off	// call with return value
.debug
	.dw '.stabn 0x44,0,97,',0,0
	.dd LM21-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM21:
	R1=[_sCSptr]	// QImode move
	R2=R1	// QImode move
	R3=[R2]	// QImode move
	R3=R3|2
	[R2]=R3	// QImode move
.debug
	.dw '.stabn 0x44,0,98,',0,0
	.dd LM22-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM22:
	R1=[_sCSptr]	// QImode move
	R4=R1	// QImode move
	R2=[R4]	// QImode move
	R2=R2|8
	[R4]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,99,',0,0
	.dd LM23-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM23:
	R1=0	// QImode move
	[Lcount_9]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,100,',0,0
	.dd LM24-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM24:
LBE4:
L8:
.debug
	.dw '.stabn 0x44,0,101,',0,0
	.dd LM25-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM25:
	pc=L9	// Indirect jump
L7:
.debug
	.dw '.stabn 0x44,0,102,',0,0
	.dd LM26-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM26:
	R1=[_sCSptr]	// QImode move
	R3=R1	// QImode move
	R3=[R3]	// QImode move
	R2=R3&1
	CMP R2,0	// QImode test
	JNZ L18	// QImode EQ
	PC=L9
L18:
.debug
	.dw '.stabn 0x44,0,104,',0,0
	.dd LM27-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM27:
	R1=[_summation]	// HImode RD=[Label]
	R2=[_summation+1]
	R3=4	// QImode move
	[SP--]=R3	// QImode move
	push R1,R2 to [sp]	// pushhi
	call __rshi2	// call with return value
	SP=SP+3
	R3=(-25544)	// HImode immediate to register move
	R4=28
	push R1,R2 to [sp]	// pushhi
	push R3,R4 to [sp]	// pushhi
	call __divi2	// call with return value
	SP=SP+4
	R3=R1	// QImode move
	[BP]=R3	// QImode move
.debug
	.dw '.stabn 0x44,0,106,',0,0
	.dd LM28-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM28:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R4=R2	// QImode move
	R1=[R4]	// QImode move
	CMP R1,399	// QImode compare
	JNA L19	// QImode GTU
	PC=L11
L19:
	R1=[_sptr]	// QImode move
	R2=R1	// QImode move
	R1=R1+1
	R3=[_sptr]	// QImode move
	R2=R3	// QImode move
	R3=R3+1
	R4=R3	// QImode move
	R2=[R4]	// QImode move
	R3=R2+2
	R2=R1	// QImode move
	[R2]=R3	// QImode move
	pc=L12	// Indirect jump
L11:
.debug
	.dw '.stabn 0x44,0,107,',0,0
	.dd LM29-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM29:
	R1=[BP]	// QImode move
	[SP--]=R1	// QImode move
	call _IncPIDCalc	// call with return value
	SP=SP+1
	R2=[_sptr]	// QImode move
	R3=R2	// QImode move
	R2=R2+1
	R4=[_sptr]	// QImode move
	R3=R4	// QImode move
	R4=R4+1
	R3=R4	// QImode move
	R3=[R3]	// QImode move
	[bp+2]=R3	// QImode move
	R3=[bp+2]	// QImode move
	R3+=R1	// addqi3_r0r
	R4=R2	// QImode move
	[R4]=R3	// QImode move
L12:
.debug
	.dw '.stabn 0x44,0,109,',0,0
	.dd LM30-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM30:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	CMP R1,2990	// QImode compare
	JA L20	// QImode LEU
	PC=L13
L20:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R1=2990	// QImode move
	R4=R2	// QImode move
	[R4]=R1	// QImode move
L13:
.debug
	.dw '.stabn 0x44,0,110,',0,0
	.dd LM31-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM31:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	CMP R1,49	// QImode compare
	JNA L21	// QImode GTU
	PC=L14
L21:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R1=50	// QImode move
	R4=R2	// QImode move
	[R4]=R1	// QImode move
L14:
.debug
	.dw '.stabn 0x44,0,111,',0,0
	.dd LM32-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM32:
	R2=[_sptr]	// QImode move
	R1=R2	// QImode move
	R2=R2+1
	R3=R2	// QImode move
	R1=[R3]	// QImode move
	[29768]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,112,',0,0
	.dd LM33-_BLDC_Motor_Actiyator
	.dw 0x0d,0x0a
.code
LM33:
	R1=169	// QImode move
	[29706]=R1	// QImode move
L10:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -