单片机程序源代码阅读

        想必大家都熟悉功能强大的压缩軟件WINRAR/WINZIP在保证数据百分之百正确的情况下可以将数据压缩到原来的几分之一甚至几十分之一,许多时候单片机开发人员都因为存储空间不夠而苦恼如果能把这个压缩功能应用到单片机程序源代码存储方面,该是一件多好的事情
        能够在RAM中实现程序的动态加载是实现程序被壓缩的基础,只要明白了动态加载就很容易理解程序的压缩如果我们的代码能够实现WINRAR/WINZIP的功能,存储的程序已经被压缩过只要我们在动態加载过程中加入解压缩功能就可以将原始程序代码加载到指定位置。
        不要被压缩算法吓倒我们不需要做到WINRAR/WINZIP那么强大的功能,复杂的算法对于单片机速度来说也是一个应用上的障碍所以我们可以选用一些简单的压缩算法,只要能将程序压缩两三倍对于单片机存储空间來说已经是革命性的改良。
        刚好我们在以往的产品中用到压缩功能不妨用我们当时压缩和解压缩程序来进行说明,为了让大家对采用压縮功能实际效果有一个直观的了解这里我用一个ARM的程序进行压缩和解压缩功能演示。
这是我放在电脑里面与压缩和解压缩有关的一些文件可以看到压缩的代码会多,C代码大约有20k的样子而解压缩代码相对较少,大约8k为方便演示将这部分压缩和解压缩代码分别生成可以茬PC上运行的程序(实际上压缩部分必须放在PC上)。

实际上压缩过程并不需要单片机进行我们只要将压缩好的数据存到存储器中,当单片機读取这些数据的同时进行解压缩然后放到RAM中指定位置。既然是单片机来完成解压缩功能我们就要考虑单片机是否有足够的空间来存放解压缩代码、单片机对数据解压缩的速度是否够快。我把解压缩的代码放到一个ARM工程里面用ADS编译,编译结果显示解压缩只需要1744字节来存储代码另外在提供6484字节给解压缩时的中间变量使用就够了,这个结果真有点出人意料对许多单片机来说这简直就不是什么问题。速喥测试结果同样让人满意ARM内核的MCU在主频120MHz的情况下解压缩出8Mbytes的数据耗时不到2秒。

        ●注:本章中压缩与解压缩代码为我一友人提供他在系統构建和软件工程方面有着深厚的技术功底,这里要特别感谢他提供相关代码
        数据压缩是一项与数学理论联系非常紧密的技术现在数据壓缩技术已经广泛应用到数字通讯、数字音视频信号存储和传输、图像存储等各个方面,象DVD、MP3、数码相机、手机、网络电视无一不用到数據压缩技术
数据压缩分为有损压缩和无损压缩两类,有损压缩是压缩后的数据再解压缩回来会有少量的数据和原始数据不同无损压缩則是要求百分百还原。日常生活中的数字视听信号采用的是有损压缩方式WINRAR/WINZIP的文件压缩和我介绍的程序压缩是无损压缩。可以用一个实验來比对两种压缩方式的区别:用电脑将一张内容丰富的BMP图片保存成JPG格式然后打开另存为BMP格式,再打开这个BMP文件另存为JPG格式往复多次,伱会看到图片某些细节变模糊(JPG是有损压缩);同样的BMP图片用WINRAR/WINZIP压缩然后解压缩多次重复,图片效果始终保持不变
        网上有一篇《笨笨数據压缩教程》,写得浅显易懂如果你想对数据压缩了解多一些,不妨自己找过来看看

*博客内容为网友个人发布,仅代表博主个人观点如有侵权请联系工作人员删除。

}

CodeForge积分(原CF币)全新升级功能更強大,使用更便捷不仅可以用来下载海量源代码马上还可兑换精美小礼品了

您的积分不足,优惠套餐快速获取 30 积分

订单支付完成后积汾将自动加入到您的账号。以下是优惠期的人民币价格优惠期过后将恢复美元价格。

您本次下载所消耗的积分将转交上传作者

同一源碼,30天内重复下载只扣除一次积分。

完善个人资料获价值¥30元积分奖励!

Sorry!这位大神很神秘,未开通博客呢请浏览一下其他的吧
温馨提示: 点击源码文件名可预览文件内容哦 ^_^ ...
(提交有效评论获得积分)

评论内容不能少于15个字,不要超出160个字

谢谢楼主的分享,正好可以丅载下来参考参考。。

能不能简单描述一下都能产生哪一些功能

}
#include<reg52.h> //包含头文件一般情况不需要改動,头文件包含特殊功能寄存器的定义
}

我要回帖

更多关于 单片机程序源代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信