|
|
| | -文章搜索 - 最新文章 - | |
AVR-90三字节浮点库及其使用说明 |
| 发布时间:2006年2月24日 点击次数:1480 |
| 来源:单片机与嵌入式系统应用 作者:湖南长沙新开铺育新学校 李杰 |
此浮点库包含15个子程序(数值转换、四则运算、浮点数处理等),不含函数库。 占寄存器(R0、R12~R31),大小为680个字,可任意浮动。程序中不含有乘法、除法指令,因此可以移植到AT90的其它系列的单片机。此程序在AVR studio 3.51下调试成功! 为便于读者使用本程序库,先将有关约定说明如下。 浮点数的格式(3字节): ① 二字节定点操作数:用[X]或[Y]来表示存放在由X或Y指示的连续单元中的数据,地址小的单元存放高字节。如果[X]=1234H,(X)=60H,则(60H)=12H,(61H)=34H。 ② 二进制浮点操作数,用三个字节表示:第一个字节的最高位为数符,其余七位为阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节。尾数用二字节纯小数(原码)来表示。当尾数的最高位为1时,便称为规格化浮点数,简称操作数。在程序说明中,也用[X]或[Y]来表示X或Y指示的浮点操作数。 例如: 0.8:[X]=00 80 00 ,则二进制浮点数表示为00 CC CDH;若(X)=60H,则(60H)=00H,(61H)=0CCH。(62H)=0CDH。 ③ 十进制浮点操作数,用三个字节表示:第一个字节的最高位为数符,其余七位为阶码(二进制补码形式);第二个字节为尾数的高字节;第三个字节为尾数的低字节。尾数用双字节BCD码纯小数(原码)来表示。当十进制数的绝对值大于1时,阶码就等于整数部分的位数,如123.4的阶码是03H,-123.4 的阶码是 83H;当十进制数的绝对值小于1时,阶码就等于 80H 减去小数点后面零的个数,例如 0.001 23 的阶码是 7EH,-0.001 23的阶码是 0FEH。在程序说明中,用[X]或[Y]来表示X或Y指示的十进制浮点操作数。例如,有一个十进制浮点操作数存放在60H、61H、62H中,数值是 -0.012 34,即-0.1234乘以10的-1次方,则(60H)=0FFH,(61H)=12H,(62H)=34H。若用[X]来指向它,则应使(X)=60H。 ④ 运算精度:单次定点运算精度为结果最低位的当量值;单次二进制浮点算术运算的精度优于1/655 35;BCD码浮点数的精度万分之一(4位有效数),不作为运算的操作数,仅用于输入或输出时的数制转换。不管哪种数据格式,随着连续运算的次数增加,精度都会下降。 ⑤ 工作区:数据工作区固定在R0、R12~R31中,数符或标志工作区固定在SREG寄存器中。 ⑥ 数值转换子程序的执行时间(8 MHz;与数据大小无关):80μs ⑦ 子程序调用范例:由于本程序库特别注意了各子程序接口的相容性,很容易采用积木方式完成一个公式的计算。以浮点运算为例,计算y = ab/c+d。已知:a = -123.4,b = 0.7577,c = 56.34;d = 1.276,它们分别存放在60H开始的连续单元中。用BCD码浮点数表示时,分别为a = 831234H;b = 007577H;c = 025634H;d = 011276H。 求解过程:通过调用BTOF子程序,将各变量转换成二进制浮点操作数,再进行各种运算,最后调用FTOB子程序,还原成十进制形式,供输出使用。运行结果,[X]=803836H,即y= -0.3836,比较精确的结果应该是-0.38357。 程序文件如下: TEST: |
|
|
|
|
[经验总结] 相关文章: 旋钮式键盘及其与AT89C52的接口技术简介:
如今单片机技术发展迅速,单片机系统已被广泛地应用于国民经济的各个领域。很多单片机应用系统需要输入设备,典型的输入设备要数键盘了。目前使用的键盘主要有两类:按键式键盘和旋钮式键盘。手机按键、微机键盘都属于按键式键盘。本文介绍的是旋钮式键盘的实现方法。 1 旋钮式键盘结构及特性 61525-1型旋钮式键盘结构非常简单,外形只有4个引脚,如图1所示。 图1 旋钮式键盘 当按键按下时(称为确认,下同),键盘的引脚1和引脚3相通;松开确认时,键盘有两种稳定状态,特性如表1所列。 表1 2 硬件电路及工作原...... 光耦反馈电路设计
谈谈怎样看电路原理图
如何选择便携式产品电源IC
周厚健:剩者为王
显示器常见故障及处理方法汇集
利用单片机I/O口直接驱动LCD
于探索中求新 为第四代低压电器产品画像
创业是一种瘾——揭密研祥智能科技股份有限公司董事局主席陈志列的创业传奇
华通机电——腾飞的奇迹 |
|
|
|