【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《51单片机高精度除法程序及使用》,欢迎阅读!
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 0500HDIV: CLR 7EH MOV R0,#50H MOV R7,#03HDV0: MOV A,@R0 INC R0 ORL A,@R0 JNZ DV1 DJNZ R7,DV0 SETB 7EH SJMP DV8DV1: MOV R6,#20H CLRCDV2: MOV R0,#20H MOV R7,#08HDV3: 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,#04HDV4: MOV A,@R0 SUB A,@R1 MOV @R0,A INC R0 INC Rl DJNZ R7,DV4 JNB 0F0H,DV5 CLR C SJMP DV6DV5: 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,ADV6: CPL C DJNZ R6,DV2 MOV R0,#20H MOV
本文来源:https://www.wddqxz.cn/d512c49f7275a417866fb84ae45c3b3567ecdd87.html