打印

单片机 C 语言与标准 C 语言的区别是什么?

[复制链接]
748|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heping517|  楼主 | 2016-3-29 08:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机 C 语言与标准 C 语言的区别是什么?
沙发
heping517|  楼主 | 2016-3-29 08:55 | 只看该作者
由于现在越来越多的产品都采用单片机开发,所完成的计算和控制工作也日趋复杂,但是单片机系统是一种资源十分有限的系统,这主要表现在程序存储器资源的不足,因此在程序设计时如何使用好这些有限的资源就显得十分重要。用 C 语言编程虽然具有许多的优点,但是生成的代码相对要长,要是编程技术不好,生成的代码甚至有可能比汇编语言生成的代码长几倍, 因此对编程者来说, 应该注意到单片机 C 语言和一般意义上的标准 C 语言的区别,对程序进行适当的优化

使用特权

评论回复
板凳
zhiyy| | 2016-3-29 09:01 | 只看该作者
这个对我们而言,不要总是开较大的存储空间,基本没有区别

使用特权

评论回复
地板
comeon201208| | 2016-3-29 09:45 | 只看该作者
单片机C语言是直接应用于单片机的开发的,跟芯片的管脚IO口直接相关系的。

使用特权

评论回复
5
zhiyy| | 2016-3-30 12:35 | 只看该作者
单片机 C 语言编程不同于一般的 C 语言编程的显著的一个特点, 就是要和程序存储器资源结合起来,虽然其提供的数据据类型十分丰富,但是只有 bit 和 char 等数据类型是是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短;而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支,相对来说用该类数据类型的语句生成的代码要长。有些 C 语言程序表面上看起来十分的简单,但在在实际编译,生成的代码却相当长。因此我们要按照实际需要,合理地选用数据,可以大大的减少所生成的代码长度。

使用特权

评论回复
6
qiangg| | 2016-3-30 14:57 | 只看该作者
几乎没有什么区别

使用特权

评论回复
7
zzzhui| | 2016-3-30 14:58 | 只看该作者
单片机 C 语言和标准 C 语言存在着很大差别, 在计算机上进行 C 语言程序设计时由于不必考虑程序代码的长短,只需考虑程序功能实现,但是在单片机上进行 C 语言程序设计就必须考虑系统的硬件资源。有时并不是程序的算法越简单、长度越短越好,因为有一些算法要调用一些内部的子程序和函数,生成的机器代码长度非常长。不同的算法对程序代码长度影响十分大,因此在进行程序设计时,就尽量采用程序生成代码短的算法,在不影响程序功能实现的情况下可以采用一些优化算法

使用特权

评论回复
8
zzzhui| | 2016-3-30 15:01 | 只看该作者
在单片机 C 语言编译成机器代码时,不同的运算生成的机器代码的长度相差很大,尽可能地减少程序中对某种数据类型的运算种类,越复杂的数据类型效果越明显。在进行数据计算时,在一定的精度范围内,可以用一些近似的计算来完成一些运算,既不损失精度又能减少大量的代码。比如:用逻辑 AND/&取模比 MOD/%操作更有效。

使用特权

评论回复
9
zzzhui| | 2016-3-30 15:02 | 只看该作者
在用热敏电阻测量温度时, 可根据热敏电阻—温度特性公式来求值。数学表达式表示为:
RT=RT0expB(1/T-1/T0)
如果直接按照公式温度时程序结构简单,算法复杂度不高,但是程序将调用<Math.h>文件中的对数函数,在编译成机器码时函数有 1K 多字节,对于一般只有几 K 字节的单片机系统来说,这是十分不合适的。考虑到系统资源问题可以用一种替代方法—查表法来实现算法。只要给出一定温度范围内不同温度值对应热敏电阻的电阻值,然后建立表格,只要按照系统求出的阻值,进行查表,插值,就可以求出相应的温度值。这种算法相比前面的的公式法的算法复杂高,C 语言程序代码也长,但在编译成机器码时,代码长度却很短,只有一、二百字节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

648

帖子

0

粉丝