您现在的位置是:首页 > 单片机

51单片机的高精度除法程序及使用

2020-01-28 02:15:49

51单片机的高精度除法程序及使用

开发人员在开发51单片机应用系统过程中,往往遇到多字节除法及倒数问题。但目前一些资料中所介绍的有关程序,复杂且功能单一、精度低。本人在研制((GZ93多功能程控测试仪》过程中,自行设计的4字节除4字节程序具有功能多、精度高、简短、运行速度快等特点,可用于求4字节倒数,求商的整数(结果为4字节),求商的小数部分(结果为4字节),调用两次即可求8字节商。
    一、使用方法
    1.求商的整数
    (1)16进制被除数送51内部RAM中20(低位)至23(高位)单元,除数送50(低位)至53(高位)单元,扩充单元24至27清零。    ’
    (2)调子程序DIV。
    (3)20(低位)至23(商位)单元为所求商,24至27单元为余数。
  2.求八字节商
  (1)先求商的整数部分
  方法同上,然后将20至23单元的整数商送其它单元保存。
    (2)求商的小数部分
    20至23单元清零;其余单元内容不变;调DIV子程序;小数商在23至20单元中,小数点位于23单元
前。
    3.求倒数
    (1)20至23单元及25至27单元清零,01H送24单元,除数送50(低位)至53(高位)单元。
    (2)调子程序DIV。
    (3)倒数在23至20单元,小数点位于23单元前。
    二、程序清单
     ORG 0500H
DIV: CLR 7EH
     MOV R0,#50H
     MOV R7,#03H
DV0: MOV A,@R0
     INC R0
     ORL A,@R0
     JNZ DV1
     DJNZ R7,DV0
     SETB 7EH
     SJMP DV8
DV1: MOV R6,#20H
     CLRC
DV2: MOV R0,#20H
     MOV R7,#08H
DV3: MOV A,@R0
     RLC A
     MOV @R0,A
     INC R0
     DJNZ R7,DV3
     MOV 0F0H,C
     CLR C
     MOV R0,#24H
     MOV R1,#50H
     MOV R7,#04H
DV4: MOV A,@R0
     SUB A,@R1
     MOV @R0,A
     INC R0
     INC Rl
     DJNZ R7,DV4
     JNB 0F0H,DV5
     CLR C
     SJMP DV6
DV5: JNC DV6
     MOV A,24H
     ADD A,50H
     MOV 24H,A
     MOV A,25H
     ADDC A,51H
     MOV 25H,A
     MOV A,26H
     ADDC A,52H
     MOV 26H,A
     MOV A,27H
     ADDC A,53H
     MOV 27H,A
DV6: CPL C
     DJNZ R6,DV2
     MOV R0,#20H
     MOV R7,#04H
DV7: MOV A,@R0
     RLC A
     MOV @R0,A
     INC R0
     DJNZ R7,DV7
DV8: RET
     END