如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
存储单元名称存储单元地址存放的数据存储单元名称存储单元地址存放的数据T40HTimeEK52HEKTI43HItimeKI55HKITD46HDtimeKD58HKDKP49HKpPK15BHP(K-1)EK14CHE(K-1)PK5EHPKEK24FHE(K-2)子程序PIDINC---增量型PID算式P(K)=P(K-1)+KP[E(K)-E(K-1)]+KI*E(K)+KD[E(K)-2E(K-1)+E(K-2)]内含子程序FSTR----浮点数格式化F[R0]->[RO]FADD----浮点数加法F[R0]+[R1]=[R0],OVFSUB----浮点数减法F[R0]-[R1]=[R0],OVFMUL----浮点数乘法F[R0]x[R1]=[R0],OVFDIV----浮点数除法F[R0]/[R1]=R0,OVFINT----浮点数取整F[R0]程序运行完以后,运算结果为双字节定点数,在R2R3寄存器中再调用PID输出程序,即可输出PID控制.ORG8000HPIDINC:MOVR1,#DATA;求EK=PK-P(K-1)MOVR0,#PKLCALLFSUBMOVR1,#EKLCALLFSTRMOVR0,#T;求KI=KP*T/TIMOVR1,#TILCALLFDIVMOVR1,#M1LCALLFSTRMOVR0,#M1MOVR1,#KPLCALLFMULMOVR1,#KILCALLFSTRMOVR0,#TD;求KD=KP*TD/TMOVR1,#TLCALLFDIVMOVR1,#M1LCALLFSTRMOVR1,#KPLCALLFMULMOVR1,#KDLCALLFSTRMOVR0,#EK;求M1=E(K)-E(K-1)MOVR1,#EK1LCALLFSUBMOVR1,#M1LCALLFSTRMOVR1,#KP;求M1=M1*KP,将KP*(E(K)-E(K-1))存入M1LCALLFMULMOVR1,#M1LCALLFSTRMOVR0,#KI;求M2=KI*E(K)MOVR1,#EKLCALLFMULMOVR1,#M2LCALLFSTRMOVR0,#EK;求M3=E(K)-E(K-1)MOVR1,#EK1LCALLFSUBMOVR1,#M3LCALLFSTRMOVR0,#M3;求M3=M3-E(K-1)MOVR1,#EK1LCALLFSUBMOVR1,#M3LCALLFSTRMOVR0,#M3;求M3=M3+E(K+2)MOVR1,#EK2LCALLFADDMOVR1,M3LCALLFSTRMOVR0,#M3;求M3=M3*KDMOVR1,#KDLCALLFMULMOVR1,#M3LCALLFSTRMOVR0,#PK1;求M1=P(K-1)+M1MOVR1,#M1LCALLFADDMOVR1,#M1LCALLFSTRMOVR0,#M1;求M1=M1+M2MOVR1,#M2LCALLFADDMOVR1,#M1LCALLFSTRMOVR0,#M1;求M1=M1+M3得出P(K)值MOVR1,#M3LCALLFADDMOVR1,#PKLCALLFSTRMOVR0,#PK;将P(K)三字节浮点数转为双字节整数R2R3LCALLFINTMOV5BH,5EH;P(K)写入P(K-1)MOV5CH,5FHMOV5DH,60HMOV4FH,4CH;E(K-1)写入E(K-2)MOV50H,4DHMOV51H,4EHMOV4CH,52H;E(K)写入E(K-1)MOV4DH,53HMOV4EH,54HRETDATAEQU30HFSTR:LCALLMOVR0LCALLRLNLJMPMOV0FADD:CLRF0SJMPASFSUB:SETBF0AS:LCALLMOVR1MOVC,F0RRCAXRLA,@R1MOVC,ACC.7ASN:MOV2FH.0,CXRLA,@R0RLCAMOVF0,CAS0:LCALLMOVR0LCALLAS1MOV0:INCR0INCR0MOVA,R4MOV@R0,ADECR0MOVA,R3MOV@R0,ADECR0MOVA,R2MOVC,2FH.7MOVACC.7,CMOV@R0,ACLRACC.7XRLA,#3FHJNZMOV01SETBOVRETMOV01:MOVA,@R0CLROVRETMOVR0:MOVA,@R0MOVC,ACC.7