社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
单片机
›
51单片机
›
51单片机整数二一十进制转换的快速算法
返回列表
发新帖
回复
阅
6394
|
回
1
呱呱
当前离线
至上芯片
最后登录
2008-12-30
在线时间
4 小时
威望
124253分
芯积分
-473分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
呱呱
1170
帖子
0
TA的资源
至上芯片
+ 好友
私信
楼主
发表于2008-2-15 10:21
只看该作者
51单片机整数二一十进制转换的快速算法
[复制链接]
51单片机整数二一十进制转换的快速算法
89C5l系列单片机历经20多年的发展,仍然长盛不衰,在工业控制及仪器仪表中得到广泛应用;用于89C5l单片机软件开发的Keil C51编译系统也日臻成熟,成为89C5l系列单片机软件开发的优先选择。在单片机系统开发中,经常遇到整数二十进制转换的问题,一般可以采用C语言中的标准函数sprintf()来实现;但由于该函数是通用格式输出函数,代码量大(超过l KB),用于整数二一十进制转换的运算时间过妊(在12 MHz晶振频率下超过l ms),这在计算密集(computation intensive)的应用中是一个影响系统性能的重要因素。在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。经常有网发询问如何高效地实现这种转换。笔者通过对二进制整数的深入分析,巧妙运用89C5l单片机的特殊单字节乘除指令,成功地实现了整数二一十进制转换的快速算法。本文将详细介绍快速算法,给出颇具实用性的优化代码,并与使用sprintf()函数的实现及传统的汇编代码实现进行性能比较。
1 传统的汇编代码实现
要实现快速运算,很自然地想到教科书中提到的双字节二进制整数转换成3字节BCD码整数的子程序。其采用的算法是,依次将整数的每位左移至CY位,再把CY位左移至一个3字节队列中,并进行十进制调整。通过16次移位完成运算,结果为压缩格式的3字节BCD编码。 汇编子程序如下:
该算法代码简洁明了,只使用51条指令代码,但执行这段程序却要耗费312个指令周期。如果要符合C51调用规则,则要多出25个指令代码空间和21个指令周期,显然效率不高。
2 快速算法
快速算法从千位入手,首先求取整数中包含l 000的个数(以下称为“千数”)。求取了千数,其他问题就迎刃而解了。 设二进制整数以b=[b15…b0]表示,取值范围为O~65535。其高6位[b15…b10]取值范围为0~63,在整数中代表的数值为(0~63)*1024;后10位[b9…b0]代表的数值范围为O~l 023。可以写出如下算式:
可以用[b15…b10]作为整数中千数的预估。 余数的最大值为63?4+1 023=2535。这表明余数中最多还有2个l000,也就是说千数的预估误差最多为2,因此最多通过2次校正,就可求得千数的准确值。2次校正方法: ①如果余数高位字节≥4(即余数≥1024,这样用只是为了简化代码;也可以用余数≥1000的判定条件),则千数+l,余数~1000; ②如果余数≥l000,则千数+1,余数~l000。 至此就求出了千数。千数用10整除所得商和模余作为万位数和千位数。 从余数中求取百、十,个位数也很简单: 余数用100整除得到百位数。实际是先把余数右移2位,此时已成单字节数,再用单字节除指令进行除以25的操作,即得到百位数;而除去百位后的余数已是单字节数,可轻易取得十位数与个位数。 用C语言编写的函数如下:
在Keil C51集成环境中,为该函数生成汇编程序源码,再对源码进行优化,最后得到满足C51调用规则的、效率极高的汇编语言源代码。(源代码见本刊网站www.mesnct.com.cn——编者注。) 这个汇编语言源代码可以直接作为项目文件使用,也可以用来生成函数库。
单片机
,
快速
,
三菱PLC
,
十进制
,
C语言
此帖出自
51单片机论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
呱呱
呱呱
当前离线
至上芯片
最后登录
2008-12-30
在线时间
4 小时
威望
124253分
芯积分
-473分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
1170
帖子
0
TA的资源
至上芯片
+ 好友
私信
沙发
楼主
|
发表于2008-2-15 10:21
只看该作者
回复: 51单片机整数二一十进制转换的快速算法
3 性能比较 (1)与传统汇编语言的性能比较 符合C5l调用规则的传统汇编语言子程序占用76字节的代码空间,耗用333个指令周期;快速算法最多耗用107个指令周期,耗时只有传统算法的32%。 (2)与使用sprintf()函数相比较 使用如下的程序来比较二者的性能: sprintf()函数占用1064字节的代码空间,耗用1151个指令周期;快速算法占用97字节的代码空间,最多耗用107个指令周期,只占使用sprintf()函数耗时的9.3%。 结论 无论是与传统汇编语言子程序,还是与使用sprintf()函数的程序相比,快速算法都有很大的速度优势;是一种针对8位机的创新算法,具有很强的工程实用性,值得推广应用。
此帖出自
51单片机论坛
回复
举报
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
免费申请测评 | RDK X3机器人开发套件
中星联华直播 | 高速信号完整性分析与测试 — “码”上行动系列线上讲堂
新栏目器件口碑专辑上线~快来点评吧!
2024 DigiKey 应用说:大模型时代的智能汽车
有奖直播报名中!抢占工业4.1先机 文晔科技日等你来!
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
开源项目
更多>>
四路舵机控制_公开
#第七届立创电赛#USB电流表
LT1085CM-3.6、3.6V/7.5A 低压差负电源的典型应用电路
游戏耳机
单路-电容式-触摸开关-RH6030
LT3480 的典型应用 - 具有 70 uA 静态电流的 36V、2A、2.4MHz 降压型开关稳压器
MAXREFDES124#:隔离式12V至5.5V 22W无光耦反激电源
RD-489,将 FSQ510 电源开关用于辅助电源应用的参考设计
具有 400kHz 电荷泵开关的 LT8494IUF 宽输入和输出范围 SEPIC 转换器的典型应用电路
使用 ON Semiconductor 的 CS4101 的参考设计
随便看看
如下电路该如何分析?
[i=s]本帖最后由乱世煮酒论天下于2024-12-322:31编辑[/i]直流电压源幅值100V,正弦电流源幅值电压105V,以直流源负极为绝对零点针对这种交直流混有,而且含有非线性器件的电路该怎么分析?叠加定理只适用于线性电路[attach]867053[/attach][attach]867062[/at ...
建议谨慎采购美国芯片~~~
ADS7828,IIC信号线初始存在一定电平0.45,再正常升高至3.3V,会导致芯片初始状异常么
【CN0066】基于24位Σ-Δ型ADC AD7793和数字隔离器全隔离输入模块
无聊的罐头DIY设计制作
单对以太网在楼宇自动化中的应用
关于同等优先级下时间片轮转的疑问??
F28335AD精度远达不到12位,如何提高?
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
热释电效应
指令寄存器
音频功放ic
CSMA/CD协议
短波传播
波分复用
主控芯片
半加器
显像管
LM324N
相关文章
更多>>
首款NPU和首款64位,德州仪器C2000推出诚意满满的升级路线图
在刚刚过去的德国慕尼黑电子展上,德州仪器(TI)展示了最新的C2000 MCU新品, 包括支持NPU的F28P55X以及业界首款64位MCU F29H85X ,同时在慕展嵌入式论坛上,TI还发表了两
AMD Zen4处理器循环缓冲区功能被悄然禁用
12月3日消息,据媒体报道,近日在BIOS更新后,AMD在Zen 4架构的处理器中悄然禁用了循环缓冲区(Loop Buffer)功能,具体原因尚未公开。 循环缓冲区是CPU前端的一部分,用于存储少量
美国发布新半导体出口管制措施 光刻机巨头ASML:正在评估潜在影响
12月3日消息,日前,光刻机巨头ASML(阿斯麦)发布声明,称美国发布最新版先进计算和半导体制造设备规则,对出口芯片制造技术的供应商施加了更多限制。 这些规定将立即生效,其中一些变更的合规日期将延迟
消息称苹果有望2026下半年推出折叠iPhone,并重振折叠屏手机市场
美国升级对华半导体管制,140家中国半导体公司被列入“实体清单”
安森美二十五周年:唯有创新,才可持续
华为麒麟9020/9030/9040处理器曝光:小步快跑 四大方面升级
特斯拉FSD V13.2用户实测:表现惊艳,可实现“点对点”自动驾驶
AI助力探索癌症最佳诊疗方法
新型催化剂将水解制氢效率提高200倍
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
免费申请测评:RDK X3机器人开发套件
RDK X3是一款面向生态开发者的嵌入式AI开发板,具备5Tops的端侧推理能力,40pin接口兼容树莓派。搭载了伯努利2.0BPU和4核ARM A53处理器。拥有先进的ISP处理算法,使得在宽动态、低照度场景下,也能得到高质量的图像;同时具备强大的视频处理能力,可同时处理多路Camera Sensor的输入并支持H.264/H.265编解码。
查看 »
等待很久的STM32N6终于要发布了!
ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!报名峰会,还能赢【开发板、京东卡】呦~12月12日14:00不见不散!
查看 »
有奖直播报名| 高可靠性IGBT新选择 —— 安世半导体650V IGBT
【直播时间】12月19日(周四)下午15:00-16:30
【直播好礼】定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
安世半导体直播报名中
直播主题:安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
直播时间:12月17日(周二)下午14:00
报名就有机会获得:定制双肩商务包、30元京东卡、吸管玻璃杯
查看 »
PI 电源小课堂 | 无 DC-DC 变换实现多路高精度输出反激电源
时间:即日起-12月15日
看视频学习电源干货,答题赢取京东卡!
查看 »
Littelfuse 新品赋能电子产品安全可靠并高效, 10+挑战等你探索!
Littelfuse 应用赋能星球,覆盖了诸多应用痛点及解决办法,邀请工程师一起探索,解锁更多设计力!
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
有奖活动|英飞凌高密度双相电源模块为高性能运算平台而生
活动时间:即日起-12月15日
活动奖励:蓝牙音箱、氮化镓充电器套装、黑色小背包
查看 »
本月精选下载推荐:
Vishay——选型-汽车级表面贴装和通孔超快整流器
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/10
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛