积分分离PID控制算法程序.doc

上传人:仙人指路1688 文档编号:4195015 上传时间:2023-04-09 格式:DOC 页数:9 大小:43KB
返回 下载 相关 举报
积分分离PID控制算法程序.doc_第1页
第1页 / 共9页
积分分离PID控制算法程序.doc_第2页
第2页 / 共9页
积分分离PID控制算法程序.doc_第3页
第3页 / 共9页
积分分离PID控制算法程序.doc_第4页
第4页 / 共9页
积分分离PID控制算法程序.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《积分分离PID控制算法程序.doc》由会员分享,可在线阅读,更多相关《积分分离PID控制算法程序.doc(9页珍藏版)》请在三一办公上搜索。

1、积分分离PID控制算法程序2007-01-05 15:23;*P10,积分分离PID控制算法程序*;T、TD、TI、KP依次从30H,33H,36H,39H开始。;A,B,C,A,的值依次存在BLOCK1,BLOCK2,BLOCK3BLOCK4的地址里;这里B与C值相同;这里R(k)给的是定值ORG0000HEEQU20H;一阈值GKEQU23H;G(k)GK1EQU26H;G(k-1)FKEQU29H;F(k)FK1EQU2CH;F(k-1)BLOCK1EQU50H;ABLOCK2EQU53H;BBLOCK3EQU56H;CBLOCK4EQU5AH;AUKEQU5DH;存放结果BUFFEQU

2、43H;暂存区BUFF1EQU46HBUFF2EQU49HBUFFR0EQU4CHRECEQU63H;采样次数RKEQU66H;R(k)CKEQU69H;采样数据始址EKEQU6CH;存放偏差值E(k)的始址EK1EQU70H;存放E(k-1)的始址TEST:MOVRK,#01H;常数Rk1.25的BCD码浮点数MOVRK+1,#12HMOVRK+2,#50H;MOVE,#7EH;设定一阈值0.001的BCD码浮点数;MOVE+1,#10H;MOVE+2,#00HMOVE,#00H;阈值为0.3MOVE+1,#30HMOVE+2,#00HMOV3CH,#01H;常数1的BCD码浮点数MOV3D

3、H,#10HMOV3EH,#00HMOV40H,#01H;常数2的BCD码浮点数MOV41H,#20HMOV42H,#00HMOV30H,#01H;T2.34的BCD码浮点数MOV31H,#23HMOV32H,#40HMOV33H,#01H;Td3.54的BCD码浮点数MOV34H,#35HMOV35H,#40HMOV36H,#01H;Ti1.12的BCD码浮点数MOV37H,#11HMOV38H,#20HMOV39H,#01H;Kp1.25的BCD码浮点数MOV3AH,#12HMOV3BH,#50HMOVR0,#E;将其转换成二进制浮点操作数LCALLBTOFMOVR0,#RKLCALLBT

4、OFMOVR0,#3CHLCALLBTOFMOVR0,#40HLCALLBTOFMOVR0,#39HLCALLBTOFMOVR0,#36HLCALLBTOF;将其转换成二进制浮点操作数MOVR0,#33H;指向码浮点操作数TdLCALLBTOF;将其转换成二进制浮点操作数MOVR0,#30H;指向码浮点操作数TLCALLBTOF;将其转换成二进制浮点操作数MOVR1,#BUFFR0;保存30H中的值即T值LCALLFMOVR0MOVR1,#36H;计算A值(1+T/Ti+Td/T).KpLCALLFDIVMOVR1,#3CH;常数1LCALLFADDMOVR0,#33H;保存33H中的值MOV

5、R1,#BUFFLCALLFMOVR0MOVR1,#BUFFR0LCALLFDIVMOVR1,#30H;30H里存的是T/Ti+1LCALLFADDMOVR1,#39HLCALLFMULMOVR1,#BLOCK1;将结果保存在BLOCK1中LCALLFMOVR0MOVR1,#BUFFR0;30H恢复原值MOVR0,#30HLCALLFMOVMOVR1,#BUFF;33H恢复原值MOVR0,#33HLCALLFMOVMOVR0,#40H;计算B的值Kp.(1+2.Td/T)MOVR1,#33HLCALLFMULMOVR1,#30HLCALLFDIVMOVR1,#3CHLCALLFADDMOVR1

6、,#39HLCALLFMULMOVR1,#BLOCK2;保存B值到BLOCK2中LCALLFMOVR0MOVR0,#39H;计算C的值Kp.Td/TMOVR1,#33HLCALLFMULMOVR1,#30HLCALLFDIVMOVR1,#BLOCK3;保存C值到BLOCK3中LCALLFMOVR0MOVR0,#33H;计算A,保存33H中的值MOVR1,#BUFFR0LCALLFMOVR0MOVR1,#30HLCALLFDIVMOVR1,#3CHLCALLFADDMOVR1,#39HLCALLFMULMOVR1,#BLOCK4;保存A值到BLOCK4中LCALLFMOVR0MOVR1,#BUF

7、FR0;恢复33H中的值LCALLFMOVMOVR0,#EK1;将EK1,FK1,GK1设初值0LCALLFCLRMOVR0,#FK1LCALLFCLRMOVR0,#GK1LCALLFCLRMOVREC,#04H;设置采样次数LOOP:MOVCK,#01H;采样数据暂时给了一个定值MOVCK+1,#10HMOVCK+2,#00HMOVR0,#CKLCALLBTOFMOVR0,#RK;保存R(k)中的值MOVR1,#BUFFR0LCALLFMOVR0MOVR1,#CKLCALLFSUB;计算R(k)-C(k)的值送给E(k)MOVR1,#EKLCALLFMOVR0MOVR1,#BUFFR0LCA

8、LLFMOV;恢复R(K)的值,释放、BUFFR0MOVR0,#BUFFR0;EK存到BUFFR0MOVR1,#EKLCALLFMOVLCALLFABS;求EK的绝对值MOVR1,#E;判断EK的绝对值与E的大小LCALLFCMPJCPID;EKG(k-1)MOVR1,#GKLCALLFMOVMOVR0,#FK1;F(k)-F(K-1)MOVR1,#FKLCALLFMOVMOVR0,#EK1;E(K)-E(K-1)MOVR1,#EKLCALLFMOVMOVR0,#UK;UK转换成BCD码浮点数输出LCALLFTOBLCALLDELAY;等待采样时刻DJNZREC,NEXT1SJMP$NEXT1

9、:LJMPLOOPDELAY:MOVR7,#02HDELAY1:MOVR6,#0FFHDELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RET;()标号:功能:浮点数格式化;入口条件:待格式化浮点操作数在R0中。;出口信息:已格式化浮点操作数仍在R0中。;影响资源:PSW、A、R2、R3、R4、位1FH堆栈需求:字节FSDT:LCALLMVR0;将待格式化操作数传送到第一工作区中LCALLRLN;通过左规完成格式化LJMPMOV0;将已格式化浮点操作数传回到R0中;()标号:功能:浮点数加法;入口条件:被加数在R0中,加数在R1中。;出口信息:OV=0时,和仍在R0中,OV=1

10、时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、1FH堆栈需求:字节FADD:CLRF0;设立加法标志SJMPAS;计算代数和;()标号:功能:浮点数减法;入口条件:被减数在R0中,减数在R1中。;出口信息:OV=0时,差仍在R0中,OV=1时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、1FH堆栈需求:字节FSUB:SETBF0;设立减法标志AS:LCALLMVR1;计算代数和。先将R1传送到第二工作区MOVC,F0;用加减标志来校正第二操作数的有效符号CLRA;*?应加的一条语句RRCAXRLA,R1MOVC,ACC.7ASN:MOV1EH,C;将第二操作数的有效符号存

11、入位1EH中XRLA,R0;与第一操作数的符号比较RLCAMOVF0,C;保存比较结果LCALLMVR0;将R0传送到第一工作区中LCALLAS1;在工作寄存器中完成代数运算MOV0:INCR0;将结果传回到R0中的子程序入口INCR0MOVA,R4;传回尾数的低字节MOVR0,ADECR0MOVA,R3;传回尾数的高字节MOVR0,ADECR0MOVA,R2;取结果的阶码MOVC,1FH;取结果的数符MOVACC.7,C;拼入阶码中MOVR0,ACLRACC.7;不考虑数符CLROV;清除溢出标志CJNEA,#3FH,MV01;阶码是否上溢?*应为#40HSETBOV;设立溢出标志MV01:

12、MOVA,R0;取出带数符的阶码RETMVR0:MOVA,R0;将R0传送到第一工作区中的子程序MOVC,ACC.7;将数符保存在位1FH中MOV1FH,CMOVC,ACC.6;将阶码扩充为补码MOVACC.7,CMOVR2,A;存放在R2中INCR0MOVA,R0;将尾数高字节存放在R3中MOVR3,A;INCR0MOVA,R0;将尾数低字节存放在R4中MOVR4,ADECR0;恢复数据指针DECR0RETMVR1:MOVA,R1;将R1传送到第二工作区中的子程序MOVC,ACC.7;将数符保存在位1EH中MOV1EH,CMOVC,ACC.6;将阶码扩充为补码MOVACC.7,CMOVR5,

13、A;存放在R5中INCR1MOVA,R1;将尾数高字节存放在R6中MOVR6,AINCR1MOVA,R1;将尾数低字节存放在R7中MOVR7,ADECR1;恢复数据指针DECR1RETAS1:MOVA,R6;读取第二操作数尾数高字节ORLA,R7JZAS2;第二操作数为零,不必运算MOVA,R3;读取第一操作数尾数高字节ORLA,R4JNZEQMOVA,R6;第一操作数为零,结果以第二操作数为准MOVR3,AMOVA,R7MOVR4,AMOVA,R5MOVR2,AMOVC,1EHMOV1FH,CAS2:RETEQ:MOVA,R2;对阶,比较两个操作数的阶码XRLA,R5JZAS4;阶码相同,对

14、阶结束JBACC.7,EQ3;阶符互异MOVA,R2;阶符相同,比较大小CLRCSUBBA,R5JCEQ4EQ2:CLRC;第二操作数右规一次MOVA,R6;尾数缩小一半RRCAMOVR6,AMOVA,R7RRCAMOVR7,AINCR5;阶码加一ORLA,R6;尾数为零否?JNZEQ;尾数不为零,继续对阶MOVA,R2;尾数为零,提前结束对阶MOVR5,ASJMPAS4EQ3:MOVA,R2;判断第一操作数阶符JNBACC.7,EQ2;如为正,右规第二操作数EQ4:CLRCLCALLRR1;第一操作数右规一次ORLA,R3;尾数为零否?JNZEQ;不为零,继续对阶MOVA,R5;尾数为零,提

15、前结束对阶MOVR2,AAS4:JBF0,AS5;尾数加减判断MOVA,R4;尾数相加ADDA,R7MOVR4,AMOVA,R3ADDCA,R6MOVR3,AJNCAS2LJMPRR1;有进位,右规一次AS5:CLRC;比较绝对值大小MOVA,R4SUBBA,R7MOVB,AMOVA,R3SUBBA,R6JCAS6MOVR4,B;第一尾数减第二尾数MOVR3,ALJMPRLN;结果规格化AS6:CPL1FH;结果的符号与第一操作数相反CLRC;结果的绝对值为第二尾数减第一尾数MOVA,R7SUBBA,R4MOVR4,AMOVA,R6SUBBA,R3MOVR3,ARLN:MOVA,R3;浮点数规

16、格化ORLA,R4;尾数为零否?JNZRLN1MOVR2,#0C1H;阶码取最小值*?应为#C0HRETRLN1:MOVA,R3JBACC.7,RLN2;尾数最高位为一否?CLRC;不为一,左规一次LCALLRL1SJMPRLN;继续判断RLN2:CLROV;规格化结束RETRL1:MOVA,R4;第一操作数左规一次RLCA;尾数扩大一倍MOVR4,AMOVA,R3RLCAMOVR3,ADECR2;阶码减一CJNER2,#0C0H,RL1E;阶码下溢否?*应改为CJNER2,#0BFH,RL1E;CLRAMOVR3,A;阶码下溢,操作数以零计MOVR4,AMOVR2,#0C1H;*应改为MOV

17、R2,#0C0HRL1E:CLROVRETRR1:MOVA,R3;第一操作数右规一次RRCA;尾数缩小一半MOVR3,AMOVA,R4RRCAMOVR4,AINCR2;阶码加一CLROV;清溢出标志CJNER2,#40H,RR1E;阶码上溢否?MOVR2,#3FH;阶码溢出SETBOVRR1E:RET;()标号:功能:浮点数乘法;入口条件:被乘数在R0中,乘数在R1中。;出口信息:OV=0时,积仍在R0中,OV=1时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、1FH堆栈需求:字节FMUL:LCALLMVR0;将R0传送到第一工作区中MOVA,R0XRLA,R1;比较两个操作数的符号

18、RLCAMOV1FH,C;保存积的符号LCALLMUL0;计算积的绝对值LJMPMOV0;将结果传回到R0中MUL0:LCALLMVR1;将R1传送到第二工作区中MUL1:MOVA,R3;第一尾数为零否?ORLA,R4JZMUL6MOVA,R6;第二尾数为零否?ORLA,R7JZMUL5MOVA,R7;计算R3R4R6R7R3R4MOVB,R4MULABMOVA,BXCHA,R7MOVB,R3MULABADDA,R7MOVR7,ACLRAADDCA,BXCHA,R4MOVB,R6MULABADDA,R7MOVR7,AMOVA,BADDCA,R4MOVR4,ACLRARLCAXCHA,R3MOV

19、B,R6MULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,AJBACC.7,MUL2;积为规格化数否?R7四舍五入MOVA,R7;左规一次RLCAMOVR7,ALCALLRL1MUL2:MOVA,R7JNBACC.7,MUL3INCR4MOVA,R4JNZMUL3INCR3MOVA,R3JNZMUL3MOVR3,#80HINCR2MUL3:MOVA,R2;求积的阶码ADDA,R5MD:MOVR2,A;阶码溢出判断JBACC.7,MUL4JNBACC.6,MUL6MOVR2,#3FH;阶码上溢,设立标志SETBOVRETMUL4:JBACC.6,MUL6MUL5:CL

20、RA;结果清零(因子为零或阶码下溢)MOVR3,AMOVR4,AMOVR2,#41HMUL6:CLROVRET;()标号:功能:浮点数除法;入口条件:被除数在R0中,除数在R1中。;出口信息:OV=0时,商仍在R0中,OV=1时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、1FH堆栈需求:字节FDIV:INCR0MOVA,R0INCR0ORLA,R0DECR0DECR0JNZDIV1MOVR0,#41H;被除数为零,不必运算CLROVRETDIV1:INCR1MOVA,R1INCR1ORLA,R1DECR1DECR1JNZDIV2SETBOV;除数为零,溢出RETDIV2:LCALL

21、MVR0;将R0传送到第一工作区中MOVA,R0XRLA,R1;比较两个操作数的符号RLCAMOV1FH,C;保存结果的符号LCALLMVR1;将R1传送到第二工作区中LCALLDIV3;调用工作区浮点除法LJMPMOV0;回传结果DIV3:CLRC;比较尾数的大小MOVA,R4SUBBA,R7MOVA,R3SUBBA,R6JCDIV4LCALLRR1;被除数右规一次SJMPDIV3DIV4:CLRA;借用R0R1R2作工作寄存器XCHA,R0;清零并保护之PUSHACCCLRAXCHA,R1PUSHACCMOVA,R2PUSHACCMOVB,#10H;除法运算,R3R4R6R7R0R1DIV

22、5:CLRCMOVA,R1RLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVA,R4RLCAMOVR4,AXCHA,R3RLCAXCHA,R3MOVF0,CCLRCSUBBA,R7MOVR2,AMOVA,R3SUBBA,R6ANLC,/F0JCDIV6MOVR3,AMOVA,R2MOVR4,AINCR1DIV6:DJNZB,DIV5MOVA,R6;四舍五入CLRCRRCASUBBA,R3CLRAADDCA,R1;将结果存回R3R4MOVR4,ACLRAADDCA,R0MOVR3,APOPACC;恢复R0R1R2MOVR2,APOPACCMOVR1,APOPACCMOVR0,AMO

23、VA,R2;计算商的阶码CLRCSUBBA,R5LCALLMD;阶码检验LJMPRLN;规格化;()标号:功能:浮点数清零;入口条件:操作数在R0中。;出口信息:操作数被清零。;影响资源:A堆栈需求:字节FCLR:INCR0INCR0CLRAMOVR0,ADECR0MOVR0,ADECR0MOVR0,#41HRET;()标号:功能:浮点数判零;入口条件:操作数在R0中。;出口信息:若累加器A为零,则操作数R0为零,否则不为零。;影响资源:A堆栈需求:字节FZER:INCR0INCR0MOVA,R0DECR0ORLA,R0DECR0JNZZEROMOVR0,#41HZERO:RET;()标号:功

24、能:浮点数传送;入口条件:源操作数在R1中,目标地址为R0。;出口信息:R0=R1,R1不变。;影响资源:A堆栈需求:字节FMOV:INCR0INCR0INCR1INCR1MOVA,R1MOVR0,ADECR0DECR1MOVA,R1MOVR0,ADECR0DECR1MOVA,R1MOVR0,ARET;(.1)标号:R0功能:浮点数传送;入口条件:源操作数在R0中,目标地址为R1。;出口信息:R1=R0,R0不变。;影响资源:A堆栈需求:字节FMOVR0:INCR1INCR1INCR0INCR0MOVA,R0MOVR1,ADECR1DECR0MOVA,R0MOVR1,ADECR1DECR0MO

25、VA,R0MOVR1,ARET;()标号:功能:双字节十六进制定点数转换成格式化浮点数;入口条件:双字节定点数的绝对值在R0中,数符在位1FH中,整数部分的位数在A中。;出口信息:转换成格式化浮点数在R0中(三字节)。;影响资源:PSW、A、R2、R3、R4、位1FH堆栈需求:字节DTOF:MOVR2,A;按整数的位数初始化阶码MOVA,R0;将定点数作尾数MOVR3,AINCR0MOVA,R0MOVR4,ADECR0LCALLRLN;进行规格化LJMPMOV0;传送结果到R0中;()标号:功能:格式化浮点数转换成双字节定点数;入口条件:格式化浮点操作数在R0中。;出口信息:OV=1时溢出,O

26、V=0时转换成功:定点数的绝对值在R0中(双字节),数符;在位1FH中,F0=1时为整数,CY=1时为一字节整数一字节小数,否则为纯小数。;影响资源:PSW、A、B、R2、R3、R4、位1FH堆栈需求:字节FTOD:LCALLMVR0;将R0传送到第一工作区MOVA,R2JZFTD4;阶码为零,纯小数JBACC.7,FTD4;阶码为负,纯小数SETBCSUBBA,#10HJCFTD1SETBOV;阶码大于,溢出RETFTD1:SETBCMOVA,R2SUBBA,#8;阶码大于否?JCFTD3FTD2:MOVB,#10H;阶码大于,按双字节整数转换LCALLFTD8SETBF0;设立双字节整数标

27、志CLRCCLROVRETFTD3:MOVB,#8;按一字节整数一字节小数转换LCALLFTD8SETBC;设立一字节整数一字节小数标志CLRF0CLROVRETFTD4:MOVB,#0;按纯小数转换LCALLFTD8CLROV;设立纯小数标志CLRF0CLRCRETFTD8:MOVA,R2;按规定的整数位数进行右规*阶码是扩展后的值CJNEA,B,FTD9MOVA,R3;将双字节结果传送到R0中MOVR0,AINCR0MOVA,R4MOVR0,ADECR0RETFTD9:CLRCLCALLRR1;右规一次SJMPFTD8;()标号:功能:浮点码转换成格式化浮点数;入口条件:浮点码操作数在R0

28、中。;出口信息:转换成的格式化浮点数仍在R0中。;影响资源:PSW、A、B、R2R7、位1DH1FH堆栈需求:字节BTOF:INCR0;判断是否为零。INCR0MOVA,R0MOVR7,ADECR0MOVA,R0MOVR6,ADECR0ORLA,R7JNZBTF0MOVR0,#41H;为零,转换结束。RETBTF0:MOVA,R0MOVC,ACC.7MOV1DH,C;保存数符。CLR1FH;以绝对值进行转换。MOVC,ACC.6;扩充阶码为八位。MOVACC.7,CMOVR0,AJNCBTF1ADDA,#19;是否小于?JCBTF2MOVR0,#41H;小于时以计。INCR0MOVR0,#0I

29、NCR0MOVR0,#0DECR0DECR0RETBTF1:SUBBA,#19JCBTF2MOVA,#3FH;大于时封顶。MOVC,1DHMOVACC.7,CMOVR0,AINCR0MOVR0,#0FFHINCR0MOVR0,#0FFHDECR0DECR0RETBTF2:CLRA;准备将码尾数转换成十六进制浮点数。MOVR4,AMOVR3,AMOVR2,#10H;至少两个字节。BTF3:MOVA,R7ADDA,R7DAAMOVR7,AMOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,ADECR2JNBACC.7,BTF3;直

30、到尾数规格化。MOVA,R6;四舍五入。ADDA,#0B0H;*加#80H,也可以CLRAADDCA,R4MOVR4,ACLRAADDCA,R3MOVR3,AJNCBTF4MOVR3,#80H;*有进位右规一次INCR2BTF4:MOVDPTR,#BTFL;准备查表得到十进制阶码对应的浮点数。MOVA,R0ADDA,#19;计算表格偏移量。MOVB,#3MULABADDA,DPLMOVDPL,AJNCBTF5INCDPHBTF5:CLRA;查表。MOVCA,A+DPTRMOVC,ACC.6MOVACC.7,CMOVR5,AMOVA,#1MOVCA,A+DPTRMOVR6,AMOVA,#2MOV

31、CA,A+DPTRMOVR7,ALCALLMUL1;将阶码对应的浮点数和尾数对应的浮点数相乘。MOVC,1DH;取出数符。MOV1FH,CLJMPMOV0;传送转换结果。;()标号:功能:格式化浮点数转换成浮点码;入口条件:格式化浮点操作数在R0中。;出口信息:转换成的浮点码仍在R0中。;影响资源:PSW、A、B、R2R7、位1DH1FH堆栈需求:字节FTOB:INCR0MOVA,R0INCR0ORLA,R0DECR0DECR0JNZFTB0MOVR0,#41HRETFTB0:MOVA,R0MOVC,ACC.7MOV1DH,CCLRACC.7MOVR0,ALCALLMVR0MOVDPTR,#B

32、FL0;绝对值大于或等于时的查表起点。MOVB,#0;十的次幂。MOVA,R2JNBACC.7,FTB1MOVDPTR,#BTFL;绝对值小于时的查表起点。MOVB,#0EDH;十的次幂。ADDA,#16JNCFTB1MOVDPTR,#BFLN;绝对值大于或等于时的查表起点。MOVB,#0FAH;十的次幂。FTB1:CLRA;查表,找到一个比待转换浮点数大的整数幂。MOVCA,A+DPTRMOVC,ACC.6MOVACC.7,CMOVR5,AMOVA,#1MOVCA,A+DPTRMOVR6,AMOVA,#2MOVCA,A+DPTRMOVR7,AMOVA,R5;和待转换浮点数比较。CLRCSUB

33、BA,R2JBACC.7,FTB2;差为负数。JNZFTB3MOVA,R6CLRCSUBBA,R3JCFTB2JNZFTB3MOVA,R7CLRCSUBBA,R4JCFTB2JNZFTB3MOVR5,B;正好是表格中的数。INCR5;幂加一。MOVR6,#10H;尾数为。MOVR7,#0SJMPFTB6;传送转换结果。FTB2:INCDPTR;准备表格下一项。INCDPTRINCDPTRINCB;幂加一。SJMPFTB1;FTB3:PUSHB;保存幂值。LCALLDIV3;相除,得到一个二进制浮点数的纯小数。FTB4:MOVA,R2;取阶码。JZFTB5;为零吗?CLRC;LCALLRR1;右

34、规。SJMPFTB4FTB5:POPACC;取出幂值。MOVR5,A;作为十进制浮点数的阶码。LCALLHB2;转换尾数的十分位和百分位。MOVR6,ALCALLHB2;转换尾数的千分位和万分位。MOVR7,AMOVA,R3;四舍五入。RLCACLRAADDCA,R7DAAMOVR7,ACLRAADDCA,R6DAAMOVR6,AJNCFTB6MOVR6,#10HINCR5FTB6:INCR0;存放转换结果。INCR0MOVA,R7MOVR0,ADECR0MOVA,R6MOVR0,ADECR0MOVA,R5MOVC,1DH;取出数符。MOVACC.7,CMOVR0,ARETHB2:MOVA,R

35、4;尾数扩大倍。MOVB,#100MULABMOVR4,AMOVA,BXCHA,R3MOVB,#100MULABADDA,R3MOVR3,AJNCHB21INCBHB21:MOVA,B;将整数部分转换成码。MOVB,#10DIVABSWAPAORLA,BRETBTFL:DB41H,0ECH,1EH;1.0000E-19DB45H,93H,93H;1.0000E-18DB48H,0B8H,78H;1.0000E-17DB4BH,0E6H,96H;1.0000E-16DB4FH,90H,1DH;1.0000E-15DB52H,0B4H,25H;1.0000E-14DB55H,0E1H,2EH;1.

36、0000E-13DB59H,8CH,0BDH;1.0000E-12DB5CH,0AFH,0ECH;1.0000E-11DB5FH,0DBH,0E7H;1.0000E-10DB63H,89H,70H;1.0000E-9DB66H,0ABH,0CCH;1.0000E-8DB69H,0D6H,0C0H;1.0000E-7BFLN:DB6DH,86H,38H;1.0000E-6DB70H,0A7H,0C6H;1.0000E-5DB73H,0D1H,0B7H;1.0000E-4DB77H,83H,12H;1.0000E-3DB7AH,0A3H,0D7H;1.0000E-2DB7DH,0CCH,0CDH;

37、1.0000E-1BFL0:DB1,80H,00H;1.0000DB4,0A0H,00H;;1.0000E1DB7,0C8H,00H;1.0000E2DB0AH,0FAH,00H;1.0000E3DB0EH,9CH,40H;1.0000E4DB11H,0C3H,50H;1.0000E5DB14H,0F4H,24H;1.0000E6DB18H,98H,97H;1.0000E7DB1BH,0BEH,0BCH;1.0000E8DB1EH,0EEH,6BH;1.0000E9DB22H,95H,03H;1.0000E10DB25H,0BAH,44H;1.0000E11DB28H,0E8H,0D5H;1.0000E12DB2CH,91H,85H;1.0000E13DB2FH,0B5H,0E6H;1.0000E14DB32H,0E3H,60

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号