完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的是PIC 18F46K22和XC8。如果我在程序中使用SaveTF带有一个浮点,则使用的内存从48%到60%。只是这行代码。我的液晶显示器也有不同的行为。它显示了0的整数,而不是一个数字,我已经设置了它。我忘了包括什么东西了吗?
以上来自于百度翻译 以下为原文 I'm using Pic 18f46k22 with xc8. If i will use sprintf with a float inside my program used memory going from 48% to 60%. Just this line of code. Also my lcd has different behaviour. It show sometimes 0 in interger instead of a number which i have set it up. char LCDtxt[33]=""; sprintf(LCDtxt, "%0.1f",1*0.1f); LCDPutStr(LCDtxt,27); Did i forgot to include something? |
|
相关推荐
7个回答
|
|
这一行添加浮点库和PrTNF库。
以上来自于百度翻译 以下为原文 That one lines adds the floating point library and the printf library. |
|
|
|
正如尼尔所说,这是完全正常的。这是一个包含所有浮点支持代码的“一次性”,后续的使用不会增加那么多。你发布的代码,还是别的什么?请显示您使用过的确切数字。我怀疑你只是得到了一个你不允许的舍入误差。
以上来自于百度翻译 以下为原文 As Neil said, that is entirely normal. That is a "one off" to include all the floating point support code.. Subsequent usage won't add nearly as much. With the code you posted, or something else? Please show exact numbers you used to cause a problem. I suspect you're just getting a rounding error you're not allowing for. |
|
|
|
我能把浮点转换成没有Stravf的字符串,然后在LCD上显示吗?
以上来自于百度翻译 以下为原文 Can i convert float to string without sprintf and then to show it in my lcd? |
|
|
|
是的,代替浮点计算,您可以使用缩放单元中的整型变量进行计算,例如毫伏,而不是伏特。然后在显示中插入一个应该是的点。有一个长线程研究高效的算法,将16位二进制整数转换为十进制数字。HTTP://www. McCHIP.COM/FoMss/FordPase/857 650Addio是一个ZIP文件,它有一些代码将不同大小的无符号整数转换成十进制数字数组。在某些情况下,它使用C函数中封装的内联汇编代码。即使是重复执行减法的C代码,也比使用代码快得多。除法和模数,虽然有更多的代码。算法是从16位无符号整数到PIC18的十进制,使用硬件乘法器,速度非常快。如果需要签名值,可以使用绝对值进行转换,并在需要时插入一个“--”显示。落后的零点,你独自一人。迈西尔
以上来自于百度翻译 以下为原文 Yes, Instead of floating point calculations, you may do calculations using integer variables in scaled unit, e.g. millivolt instead of Volt. Then in Display, insert a point where it should be. There was a long thread studying efficient algorithms to convert 16 bit binary integer to decimal digits. See: http://www.microchip.com/forums/FindPost/857650 Attached is a zipfile with some code to convert unsigned integers with various size to a array of decimal digits. For some cases, it use inline assembly code wrapped in C functions. Even C code doing repeated subtractions, is much faster than code using division and modulus, although more code. Algorithms are from the thread above. 16 bit unsigned integer to decimal for PIC18, use hardware multiplier, and is very fast. If you need signed values, you may use absolute value for conversion, and insert a '-' for display when needed. To suppress leading or trailing zeroes, you are on your own. Mysil Attachment(s) uBin_Dec.zip (17.17 KB) - downloaded 1 times |
|
|
|
如果可能的话,使用Mysil所描述的缩放整数。如果不是,你可以使用ftoA()来转换这个数字。
以上来自于百度翻译 以下为原文 if possible, used scaled integers as Mysil described. If not, you could use ftoa() to convert just the number. |
|
|
|
nAh,xc8ftoA()是脏的,它使用浮点运算和Simulf()。
以上来自于百度翻译 以下为原文 Nah, XC8 ftoa() is dirty, it uses floating point math and sprintf(). |
|
|
|
有许多使用标准C代码的FTOA的实现-尝试谷歌搜索。事实上,一些结果是指这个网站上的XC8论坛!苏珊
以上来自于百度翻译 以下为原文 There are a number of implementations of ftoa using standard C code - try a Google search. In fact some of the results refer to the XC8 forum on this web site! Susan |
|
|
|
只有小组成员才能发言,加入小组>>
5161 浏览 9 评论
1999 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3171 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
731浏览 1评论
613浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
503浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
629浏览 0评论
527浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:07 , Processed in 1.343460 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号