网站数据接口怎么做,莱州建设集团有限公司,外贸网站风格,网络营销策划方案怎么写作为一种结构化的程序设计语言#xff0c;C语言的特点就是可以使你尽量少地对硬件进行操作#xff0c;具有很强的功能性、结构性和可移植性#xff0c;常常被优选作为单片机系统的编程语言。但是基于单片机的C语言和标准C语言有很大区别#xff0c;如何结合单片机的系统资源…作为一种结构化的程序设计语言C语言的特点就是可以使你尽量少地对硬件进行操作具有很强的功能性、结构性和可移植性常常被优选作为单片机系统的编程语言。但是基于单片机的C语言和标准C语言有很大区别如何结合单片机的系统资源用C语言开发符合实际工程需要的单片机系统对用编程者来说具有十分重要的意义。本文引用地址http://www.eepw.com.cn/article/171801.htm1 单片机C语言主要特点用C 编写程序比汇编更符合人们的思考习惯开发者可以摆脱与硬件无必要的接触更专心的考虑功能和算法而不是考虑一些细节问题这样就减少了开发和调试的时间。C语言具有良好的程序结构,适用于模块化程序设计因此采用C语言设计单片机应用系统程序时首先要尽可能地采用结构化的程序设计方法将功能模块化由不同的模块完成不同的功能[1]这样可使整个应用系统程序结构清晰易于调试和维护。不同的功能模块分别指定相应的入口参数和出口参数对于一些要重复调用的程序一般把其编成函数这样可以减少程序代码的长度又便于整个程序的管理还可增强可读性和移植性。在实际单片机程序设计中程序结构一般均采用如下结构#includereg51.h /*头文件说明部份*/unsigned char x1x2 /*全局变量声明部份*/…Function1(… ){ /*功能函数定义部份*/…… }main() {inti,j; /* 整型变量声明部份*/Function1(…); /* 功能函数说明部份*/……}2 单片机C语言与标准C语言的区别由于现在越来越多的产品都采用单片机开发所完成的计算和控制工作也日趋复杂但是单片机系统是一种资源十分有限的系统这主要表现在程序存储器资源的不足因此在程序设计时如何使用好这些有限的资源就显得十分重要。用C语言编程虽然具有许多的优点但是生成的代码相对要长要是编程技术不好生成的代码甚至有可能比汇编语言生成的代码长几倍因此对编程者来说应该注意到单片机C语言和一般意义上的标准C语言的区别对程序进行适当的优化。2.1 数据类型的选用单片机C语言编程不同于一般的C语言编程的显著的一个特点就是要和程序存储器资源结合起来虽然其提供的数据据类型十分丰富但是只有bit和char 等数据类型是是机器语言直接支持的数据类型用此类数据类型的语句所生成的代码较短而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支持相对来说用该类数据类型的语句生成的代码要长。有些C语言程序表面上看起来十分的简单但在在实际编译时生成的代码却相当长。因此我们要按照实际需要合理地选用数据可以大大的减少所生成的代码长度。例如在C51中每种数据类型变量所占用存储器字节数和经编译后生成的代码长度如表1所示:表1 不同数据类型占用存储器字节数和代码长度对比通过表1我们知道不同的数据类型所生成的机器代码长度相差很多相同类型的数据类型有无符号对机器代码长度也有影响。在程序编译时生成机器代码长的数据类型的优先级越高不同的数据类型在进行程序运算时要转化为高优先级的的数据类型相应的代码长度也会增长[2]。因此我们应尽可能地使用 bit,char等机器语言直接支持的数据类型无符号数的变量应声明为无符号数尽可能地减少程序中使用的数据类型的种类。2.2 算法设计问题单片机C语言和标准C语言存在着很大差别在计算机上进行C语言程序设计时由于不必考虑程序代码的长短只需考虑程序功能实现但是在单片机上进行C语言程序设计就必须考虑系统的硬件资源。有时并不是程序的算法越简单、长度越短越好因为有一些算法要调用一些内部的子程序和函数生成的机器代码长度非常长。不同的算法对程序代码长度影响十分大因此在进行程序设计时就尽量采用程序生成代码短的算法在不影响程序功能实现的情况下可以采用一些优化算法 [2]。在单片机C语言编译成机器代码时不同的运算生成的机器代码的长度相差很大尽可能地减少程序中对某种数据类型的运算种类,越复杂的数据类型效果越明显。在进行数据计算时在一定的精度范围内可以用一些近似的计算来完成一些运算,既不损失精度又能减少大量的代码。比如用逻辑AND/取模比MOD/%操作更有效。在用热敏电阻测量温度时可根据热敏电阻—温度特性公式来求值。数学表达式表示为RTRT0expB(1/T-1/T0)如果直接按照公式温度时程序结构简单算法复杂度不高但是程序将调用Math.h文件中的对数函数在编译成机器码时函数有1K多字节对于一般只有几K字节的单片机系统来说这是十分不合适的。考虑到系统资源问题可以用一种替代方法—查表法来实现算法。只要给出一定温度范围内不同温度值对应热敏电阻的电阻值然后建立表格只要按照系统求出的阻值进行查表插值就可以求出相应的温度值。这种算法相比前面的的公式法的算法复杂高C语言程序代码也长但在编译成机器码时代码长度却很短只有一、二百字节。3 数据存储器的分配单片机内部数据存储器RAM只有几百字节如果扩展外部存储器RAM来提高数据存储量话必将会增加了硬件成本,使系统更加的复杂访问外部存储器比访问内部存储器所需的代码也要长得多。有效地使用片内存储器、提高存储器空间的利用率对开发者来说十分关键。