加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

51高精度除法程序及使用

时间:2013-09-08  来源:123485.com  作者:9stone
    科技人员在开发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
分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门