千家论坛_弱电智能化技术与工程讨论(建筑智能,家居智能,人工智能)

路由交换
收藏本版 (7) |订阅

路由交换 今日: 3703 |主题: 18312|排名: 28 

发新帖
打印 上一主题 下一主题

我的设计中的难题,急急急!!...

[复制链接]
chengjiacj 发布于: 2004-5-30 10:41 332 次浏览 4 位用户参与讨论
跳转到指定楼层

我的毕业设计遇到了一个难题,就快要交了

哪位可以告诉我浮点算法,3字节除以3字节,结果应该有几字节啊?

拜托,救命啊。

回复

使用道具 举报

已有4人评论

新浪微博达人勋

千家认证

沙发
蓝憬 发表于 2004-5-30 18:20:00
开一个存储区,把区间设大点,然后使用一个通用子程序,把数用间址的方法存到里面,然后返回去看一下,这样你能记一辈子。对了说明一下,没有3字节浮点数除法,但是有双字节的,只不过就是除数多一字节多个循环,然后多点存储区而已,我建议你看一下浮点数规格化,是左还是右,千万别混了,否则出错误。
回复 支持 反对

使用道具 举报

新浪微博达人勋

千家认证

板凳
chengjiacj 发表于 2004-5-30 19:15:00

感谢上面的朋友

不过你还没有告诉我到底结果是几个字节啊,不晓得几个字节,我还是不会编

回复 支持 反对

使用道具 举报

新浪微博达人勋

千家认证

地板
jdzxx 发表于 2004-5-30 19:17:00

ATmega128 要对模数转换器ad594控制,我的pd口有三根线连在ad594的cs,R/c,ce端;一根线连在sts端,我该怎么启动模数转换器ad594,怎么等待sts端变9电平?我的意思是有没有直接读sts端的语句?是什么呢?pind只能对整个d口操作。

help!!!
回复 支持 反对

使用道具 举报

新浪微博达人勋

千家认证

5#
蓝憬 发表于 2004-5-31 20:51:00

二进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节 纯小数(原码)来表示。当尾数的最高位为1时,便称为规格化浮点数,简称操作数。在

程序说明中,也用[R0]或[R1]来表示R0或R1指示的浮点操作数,例如:当[R0]=-6.000时, 则二进制浮点数表示为83C000H。若(R0)=30H,则(30H)=83H,(31H)=0C0H,(32H)=00H。

十进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(二进制补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用 双字节BCD码纯小数(原码)来表示。当十进制数的绝对值大于1时,阶码就等于整数 部分的位数,如 876.5 的阶码是03H,-876.5 的阶码是 83H;当十进制数的绝对值小于1

时,阶码就等于 80H 减去小数点后面零的个数,例如 0.00382 的阶码是 7EH,-0.00382 的阶码是 0FEH。

只要是浮点数,就是三个字节,不能高但是可以少,可以少位,不能少字节,少位的时候看精度而定,四舍五入就可以了。给你一个子程序吧,就是通用的浮点数除法程序:

(5) 标号: FDIV 功能:浮点数除法

入口条件:被除数在[R0]中,除数在[R1]中。 出口信息:OV=0时,商仍在[R0]中,OV=1时,溢出。 影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求: 5字节

FDIV: INC R0 MOV A,@R0 INC R0

ORL A,@R0 DEC R0 DEC R0 JNZ DIV1 MOV @R0,#41H;被除数为零,不必运算 CLR OV RET DIV1: INC R1 MOV A,@R1 INC R1 ORL A,@R1 DEC R1 DEC R1 JNZ DIV2 SETB OV ;除数为零,溢出 RET DIV2: LCALL MVR0 ;将[R0]传送到第一工作区中 MOV A,@R0 XRL A,@R1 ;比较两个操作数的符号 RLC A MOV 1FH,C ;保存结果的符号 LCALL MVR1 ;将[R1]传送到第二工作区中 LCALL DIV3 ;调用工作区浮点除法 LJMP MOV0 ;回传结果

DIV3: CLR C ;比较尾数的大小 MOV A,R4 SUBB A,R7 MOV A,R3 SUBB A,R6 JC DIV4 LCALL RR1 ;被除数右规一次 SJMP DIV3 DIV4: CLR A ;借用R0R1R2作工作寄存器 XCH A,R0 ;清零并保护之 PUSH ACC CLR A XCH A,R1 PUSH ACC MOV A,R2 PUSH ACC MOV B,#10H ;除法运算,R3R4/R6R7-→R0R1 DIV5: CLR C MOV A,R1 RLC A MOV R1,A MOV A,R0 RLC A MOV R0,A MOV A,R4 RLC A MOV R4,A XCH A,R3 RLC A

XCH A,R3 MOV F0,C CLR C SUBB A,R7 MOV R2,A MOV A,R3 SUBB A,R6 ANL C,/F0 JC DIV6 MOV R3,A MOV A,R2 MOV R4,A INC R1 DIV6: DJNZ B,DIV5 MOV A,R6 ;四舍五入 CLR C RRC A SUBB A,R3 CLR A ADDC A,R1 ;将结果存回R3R4 MOV R4,A CLR A ADDC A,R0 MOV R3,A POP ACC ;恢复R0R1R2 MOV R2,A POP ACC MOV R1,A POP ACC MOV R0,A MOV A,R2 ;计算商的阶码 CLR C SUBB A,R5

LCALL MD ;阶码检验 LJMP RLN ;规格化

呼~~总之就是这样 在单片机基础里浮点数不管你什么操作都是三个字节,这是死规定,阶码+尾高+尾低=3字节,如果真的有大余三字节的(天文测量)时,建议你不要用单片了,改用别的芯片吧 MCS51系列是不成的了。 不过这种情况极为少见的,累死我了~~~总算写完了!!!!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 千家通行证登陆

本版积分规则

千家智客微信号
千家智客微信
玩物说商城
玩物说商城