增量式PID控制算法程序汇编文档格式.docx

上传人:b****2 文档编号:15183799 上传时间:2022-10-28 格式:DOCX 页数:29 大小:22.02KB
下载 相关 举报
增量式PID控制算法程序汇编文档格式.docx_第1页
第1页 / 共29页
增量式PID控制算法程序汇编文档格式.docx_第2页
第2页 / 共29页
增量式PID控制算法程序汇编文档格式.docx_第3页
第3页 / 共29页
增量式PID控制算法程序汇编文档格式.docx_第4页
第4页 / 共29页
增量式PID控制算法程序汇编文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

增量式PID控制算法程序汇编文档格式.docx

《增量式PID控制算法程序汇编文档格式.docx》由会员分享,可在线阅读,更多相关《增量式PID控制算法程序汇编文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

增量式PID控制算法程序汇编文档格式.docx

常数Rk的BCD码浮点数MOVRK+1,#12H;

1.25MOVRK+2,#50H

MOV3CH,#01H;

常数1的BCD码浮点数MOV3DH,#10H

MOV3EH,#00H

MOV40H,#01H;

常数2的BCD码浮点数MOV41H,#20H

MOV42H,#00H

MOV30H,#01H;

T的BCD码浮点数MOV31H,#23H;

2.34MOV32H,#40H

MOV33H,#01H;

Td的BCD码浮点数MOV34H,#35H;

3.54MOV35H,#40H

MOV36H,#01H;

Ti的BCD码浮点数MOV37H,#11H;

1.12MOV38H,#20H

MOV39H,#01H;

Kp的BCD码浮点数MOV3AH,#12H;

1.25MOV3BH,#50H

MOVR0,#RK;

指向,,,码浮点操作数

LCALLBTOF;

将其转换成二进制浮点操作数MOVR0,#3CH

LCALLBTOF

MOVR0,#40H

MOVR0,#39H

MOVR0,#36H;

指向,,,码浮点操作数TiLCALLBTOF;

将其转换成二进制浮点操作数MOVR0,#33H;

指向,,,码浮点操作数TdLCALLBTOF;

将其转换成二进制浮点操作数MOVR0,#30H;

指向,,,码浮点操作数TLCALLBTOF;

将其转换成二进制浮点操作数

MOVR1,#BUFF1;

保存30H中的值即T值LCALLFMOVR0

MOVR1,#36H;

计算A值(1+T/Ti+Td/T).Kp

LCALLFDIV

MOVR1,#3CH;

常数1

LCALLFADD

MOVR0,#33H;

保存33H中的值

MOVR1,#BUFF

LCALLFMOVR0

MOVR1,#BUFF1

MOVR1,#30H;

30H里存的是T/Ti+1LCALLFADD

MOVR1,#39H

LCALLFMUL

MOVR1,#BLOCK1;

将结果保存在BLOCK1中LCALLFMOVR0

MOVR1,#BUFF1;

30H恢复原值

MOVR0,#30H

LCALLFMOV

MOVR1,#BUFF;

33H恢复原值

MOVR0,#33H

MOVR0,#40H;

计算B的值Kp.(1+2.Td/T)

MOVR1,#33H

MOVR1,#30H

MOVR1,#3CH

MOVR1,#BLOCK2;

保存B值到BLOCK2中LCALLFMOVR0

MOVR0,#39H;

计算C的值Kp.Td/TMOVR1,#33H

MOVR1,#BLOCK3;

保存C值到BLOCK3中LCALLFMOVR0

MOVR0,#EK1;

将EK1,EK2设初值0LCALLFCLR

MOVR0,#EK2

LCALLFCLR

MOVREC,#03H;

设置采样次数

LOOP:

MOVCK,#7eH;

采样数据暂时给了一个定值MOVCK+1,#21H;

0.002112MOVCK+2,#12H

MOVR0,#CK

保存R(k)中的值

MOVR1,#CK

LCALLFSUB;

计算R(k)-C(k)的值送给E(k)MOVR1,#EK

恢复RK的值释放BUFFMOVR0,#RK

MOVR0,#BLOCK2;

将B.e(k-1)的值暂存在BUFF1中

保存B

MOVR1,#EK1

恢复B释放BUFFLCALLFMOV

MOVR0,#BLOCK3;

将C.e(K-2)的值暂存在BUFF2中

保存C

MOVR1,#EK2

MOVR1,#BUFF2

恢复C释放BUFFLCALLFMOV

MOVR0,#BLOCK1;

A.E(k)MOVR1,#BUFF

MOVR1,#EK

计算Uk值A.E(k)-B.E(k-1)+C.E(k-2)

LCALLFSUB

MOVR1,#UK;

保存结果到UK中

恢复A释放BUFFLCALLFMOV

MOVR0,#UK;

UK转换成BCD码浮点数输出LCALLFTOB

MOVR1,#EK1;

将E(k-1)-->

E(k-2),E(k)-->

E(k-1)

MOVR0,#EK1

LCALLDELAY;

等待采样时刻

DJNZREC,NEXT1

SJMP$

NEXT1:

LJMPLOOP

DELAY:

MOVR7,#02HDELAY1:

MOVR6,#0FFHDELAY2:

DJNZR6,DELAY2DJNZR7,DELAY1

RET

(,)标号:

,,,功能:

浮点数格式化

入口条件:

待格式化浮点操作数在[R0]中。

出口信息:

已格式化浮点操作数仍在[R0]中。

;

影响资源:

PSW、A、R2、R3、R4、位1FH堆栈需求:

字节

FSDT:

LCALLMVR0;

将待格式化操作数传送到第一工作区中LCALLRLN;

通过左规完成格式化

LJMPMOV0;

将已格式化浮点操作数传回到[R0]中

浮点数加法

被加数在[R0]中,加数在[R1]中。

OV=0时,和仍在[R0]中,OV=1时,溢出。

PSW、A、B、R2,R7、位1EH、1FH堆栈需求:

FADD:

CLRF0;

设立加法标志

SJMPAS;

计算代数和

浮点数减法

被减数在[R0]中,减数在[R1]中。

OV=0时,差仍在[R0]中,OV=1时,溢出。

字节

FSUB:

SETBF0;

设立减法标志

AS:

LCALLMVR1;

计算代数和。

先将[R1]传送到第二工作区MOVC,F0;

用加减标志来校正第二操作数的有效符号CLRA;

********,,,应加的一条语句

RRCA

XRLA,@R1

MOVC,ACC.7

ASN:

MOV1EH,C;

将第二操作数的有效符号存入位1EH中XRLA,@R0;

与第一操作数的符号比较

RLCA

MOVF0,C;

保存比较结果

LCALLMVR0;

将[R0]传送到第一工作区中

LCALLAS1;

在工作寄存器中完成代数运算

MOV0:

INCR0;

将结果传回到[R0]中的子程序入口INCR0

MOVA,R4;

传回尾数的低字节

MOV@R0,A

DECR0

MOVA,R3;

传回尾数的高字节

MOVA,R2;

取结果的阶码

MOVC,1FH;

取结果的数符

MOVACC.7,C;

拼入阶码中

CLRACC.7;

不考虑数符

CLROV;

清除溢出标志

CJNEA,#3FH,MV01;

阶码是否上溢,********应为#40H

SETBOV;

设立溢出标志

MV01:

MOVA,@R0;

取出带数符的阶码RET

MVR0:

将[R0]传送到第一工作区中的子程序

MOVC,ACC.7;

将数符保存在位1FH中MOV1FH,C

MOVC,ACC.6;

将阶码扩充为,,,,补码MOVACC.7,C

MOVR2,A;

存放在R2中

INCR0

MOVA,@R0;

将尾数高字节存放在R3中MOVR3,A;

将尾数低字节存放在R4中MOVR4,A

DECR0;

恢复数据指针

MVR1:

MOVA,@R1;

将[R1]传送到第二工作区中的子程序

将数符保存在位1EH中MOV1EH,C

MOVR5,A;

存放在R5中

INCR1

MOVA,@R1;

将尾数高字节存放在R6中MOVR6,A

将尾数低字节存放在R7中MOVR7,A

DECR1;

DECR1

AS1:

MOVA,R6;

读取第二操作数尾数高字节ORLA,R7

JZAS2;

第二操作数为零,不必运算MOVA,R3;

读取第一操作数尾数高字节

ORLA,R4

JNZEQ

MOVA,R6;

第一操作数为零,结果以第二操作数为准

MOVR3,A

MOVA,R7

MOVR4,A

MOVA,R5

MOVR2,A

MOVC,1EH

MOV1FH,C

AS2:

RET

EQ:

MOVA,R2;

对阶,比较两个操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1