📄 multipid.asm
字号:
相关常数在外部存储器的存储位置
KD:0100H~0102H; TS:0103H~0105H; TD:0106H~0108H; KP:0109H~010BH;
TI:010CH~010EH; XN:010FH~0111H; X(N-1):0112H~0114H; X(N-2):0115H~0117H;
EN:0118H~011AH; DYN:011BH~011DH; E(N-1):0124H~0126H; EM:0127H~0129H; UN:012AH~012CH; U(N-1):012DH~012FH;KI:0130H~0132H; AA;0133H~0135H; BB;0136H~0138H; DU:0139H~013BH;
KN:013CH~013EH
TJ1:ABS(e)>=a*ABS(em); TJ11:e*e'>=0;
GS1:U=Kp*e+U(n-1),deltaU=Ki*Ts*(e(n)-e(n-1));
TJ2:a*ABS(em)>=b*ABS(em)且e*e'<0;
GS2:U=Kn*e+Un;
TJ3:b*ABS(em)>ABS(e).0.02且e*e'<0
GS3:Un=U(n-1)+deltaU;
TJ4:ABS(e)<0.02
GS4:PIDINC
TJ1:MOV DPTR,#0127H ;Em---->R2R3R4
LCALL MVDP0
LCALL FABS
MOV DPTR,#0133H ;AA---->R5R6R7
LCALL MVDP1
LCALL FMUL
LCALL RTR
MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
LCALL FCMP
JBC F0,TJ11
LCALL GS1
TJ11:MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
MOV DPTR,#0124H ;E(n-1)--->R5R6R7
LCALL MVDP1
LCALL FSUB
MOV DPTR,#0103H ;TS----->R5R6R7
LCALL MVDP1
LCALL FDIV
MOV DPTR,#0118H ;En----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV R5,#00H
MOV R6,#00H
MOV R7,#00H
LCALL FCMP
JBC F0,TJ2
LCALL GS1
GS1:MOV DPTR,#0109H ;Kp----->R2R3R4
LCALL MVDP0
MOV DPTR,#0118H ;En----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV DPTR,#012DH ;U(n-1)---->R5R6R7
LCALL MVDP1
LCALL FADD
MOV DPTR,#012AH ;Un送到指定外存
LCALL RMVDP0
MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
MOV DPTR,#0124H ;E(n-1)--->R5R6R7
LCALL MVDP1
LCALL FSUB
MOV DPTR,#0103H ;TS----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV DPTR,#0130H ;Ki----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV DPTR,#0139H ;deltaU---->外存
LCALL RMVDP0
LCALL TJ4
TJ2:MOV DPTR,#0127H ;Em---->R2R3R4
LCALL MVDP0
LCALL FABS
MOV DPTR,#0133H ;系数A---->R5R6R7
LCALL MVDP1
LCALL FMUL
LCALL RTR
MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
LCALL FABS
LCALL FCMP
JNB F0,TJ21
LCALL TJ3
TJ21:MOV DPTR,#0127H ;Em---->R2R3R4
LCALL MVDP0
LCALL FABS
MOV DPTR,#0136H ;系数B---->R5R6R7
LCALL MVDP1
LCALL FMUL
LCALL RTR
MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
LCALL FABS
LCALL FCMP
JNB F0,TJ3
TJ22:MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
MOV DPTR,#0124H ;E(n-1)--->R5R6R7
LCALL MVDP1
LCALL FSUB
MVO DPTR,#0103H ;TS---->R5R6R7
LCALL MVDP1
LCALL FDIV
MOV DPTR,#0118H ;E(n-1)--->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV R5,#00H
MOV R6,#00H
MOV R7,#00H
LCALL FCMP
JNB F0,GS2
LCALL TJ3
GS2:MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
MOV DPTR,#013CH ;Kn----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV DPTR,#012DH ;U(N-1)----->R5R6R7
LCALL MVDP1
LCALL FADD
MOV DPTR,#012AH ;Un----->外存
LCALL RMVDP0
LCALL TJ4
TJ3:MOV DPTR,#0127H ;Em---->R2R3R4
LCALL MVDP0
LCALL FABS
MOV DPTR,#0136H ;系数B---->R5R6R7
LCALL MVDP1
LCALL FMUL
LCALL RTR
MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
LCALL FABS
LCALL FCMP
JNB F0,TJ31
LCALL TJ1
TJ31:MOV R2,#45H ;0.02---->R2R3R4
MOV R3,#0A3H
MOV R4,#0D7H
MOV DPTR,#0118H ;En----->R5R6R7
LCALL MVDP1
LCALL FABS
LCALL FCMP
JNB F0,TJ1
TJ32:MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
MOV DPTR,#0124H ;E(n-1)--->R5R6R7
LCALL MVDP1
LCALL FSUB
MOV DPTR,#0103H ;TS----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV DPTR,#0118H ;En----->R5R6R7
LCALL MVDP1
LCALL FMUL
MOV R5,#00H
MOV R6,#00H
MOV R7,#00H
LCALL FCMP
JNB F0,GS3
LCALL TJ1
GS3:MOV DPTR,#012DH ;U(N-1)----->R2R3R4
LCALL MVDP0
MOV DPTR,#0139H ;deltaU---->R5R6R7
LCALL MVDP1
LCALL FADD
MOV DPTR,#012AH ;Un----->外存
LCALL RMVDP0
LCALL TJ4
TJ4:MOV DPTR,#0118H ;En----->R2R3R4
LCALL MVDP0
LCALL FABS
MOV R2,#45H ;0.02---->R2R3R4
MOV R3,#0A3H
MOV R4,#0D7H
LCALL FCMP
JNB F0,PIDINC
LCALL TJ1
MOV DPTR,#0118H ;En---->E(n-1)
MOVX A,@DPTR
MOV PDTR,#0124H
MOVX @DPTR,A
MOV DPTR,#0119H
MOVX A,@DPTR
MOV PDTR,#0125H
MOVX @DPTR,A
MOV DPTR,#011AH
MOVX A,@DPTR
MOV PDTR,#0126H
MOVX @DPTR,A
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -