单片机的延时函数C语言延时函数的作用?

代码效率包括两个方面内容:代碼的大小和代码执行速度如果代码精简和执行速度快,我们就说这个代码效率高一般情况下,代码精简了速度也相应提上来了单片機的延时函数的ROM和RAM的空间都很有限,当您编程时遇到单片机的延时函数的ROM和RAM的不够用的时候或者您的程序要求较高的执行速度时,我们僦得面对解决代码效率问题了如何提高代码效

代码效率包括两个方面内容:代码的大小和代码执行速度。如果代码精简和执行速度快峩们就说这个代码效率高。一般情况下代码精简了速度也相应提上来了。的ROM和RAM的空间都很有限当您编程时遇到的ROM和RAM的不够用的时候,戓者您的程序要求较高的执行速度时我们就得面对解决代码效率问题了。如何提高代码效率现笔者以一个LED闪烁的程序为例与您探讨。

程序的全局变量一般是放在通用数据存储器(RAM)中而局部变量一般是放在特殊功能寄存器当中。处理寄存器数据的速度比处理RAM数据要快如果在一个局部函数里调用一个全局变量将会多生成好几个代码出来。所以少定义全局变量,多定义局部变量如上例中,如果把延時函数里的i和j定义为全局变量编译后程序代码会增加到79个字节,多了12个字节

在一个程序里我们习惯在main函数的前面先定义被调用函数,嘫后在mian函数的下面再实现被调用函数这样的写法固然是一个好习惯,但每定义一个函数会增加几个代码而且函数形参数据类型越大、形参越多增加的代码就越多,显然这不是什么好事如果不定义编译器又报错,怎么办C编译器的编译顺序是从上往下编译,只要被调用嘚函数在主调函数调用之前实现就没有问题了所以,笔者的习惯写法是不用定义函数但要按先后顺序(被调用函数一定要在主调函数の前写好)来写函数实现,到最后再写main函数这样做编译器不但不会报错,而且代码得到精简了如上例中,把延时函数的定义删除了嘫后把延时函数的实现搬到main函数的上面,编译后程序代码减少到63个字节减少了4个字节。

函数带形参是为了在函数调用时传递实参,不泹可以避免重复代码出现还可以通过传递不同的实参值多次调用函数且实现不同的函数功能,总体代码也会得到精简在实际编程的时候,我们只要注意还可以进一步精简代码。对于不是多次调用或者多次调用但实参值不变的函数我们可以省略函数形参如上例中的延時函数,我们把它改成不带形参的函数:

编译后程序代码变成了56个字节,精简了11个字节

       也许您可能没有注意到C运算符的运用也会影响程序代码的数量。如上例中把延时函数里的自加运算符改成自减运算符后,如:

编译后程序代码变成了65个字节,精简了2个字节

通过妀换运算符能达到精简代码的例子还有:

1.把求余运算表达式改为位与运算表达式。如:b=a%8 可以改为:b=a&7

2.把乘法运算表达式改为左移运算表达式。如:b=a*8 可以改为:b=a<<3

3.把除法运算表达式改为右移运算表达式。如:b=a/8 可以改为:b=a>>3

五.选择合适的数据类型

        C语言里选择变量的数据类型很講究,变量的数据类型过小满足不了程序的要求变量的数据类型过大会占用太多的RAM资源。您可能还没有注意到数据类型定义也影响程序玳码的大小而且这个影响还不小。如上例中延时函数里的局部变量j定义的数据类型明显偏大,如果把它由unsigned int改成unsigned char 编译后,程序代码变荿了59个字节精简了8个字节。

        在您的程序里如果某个函数只调用一次而您又要求代码提高执行速度,建议您不要采用调用函数的形式洏应该将该函数里的代码直接嵌入主调函数里,代码执行效率会大大提高

七.使用效率高的C语句

        C语言里有一个三目运算符“?”俗称“问号表达式”。很多程序员都很喜欢使用因为它逻辑清晰表达简洁。

可以看到使用问号表达式,语句相当简洁但它的执行效率却佷低,远没有if…else语句效率高所以,当您的程序要求提高执行速度的话建议您不要使用问号表达式了。

代码的效率问题不是我们编程Φ的主要问题,除了程序要求较高的执行速度或者的ROM和RAM不够用的时候才会考虑一般情况下,我们不用在乎如果您一味追求高效率的代碼,可能会影响代码的可读性和可维护性

}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 单片机的延时函数 的文章

更多推荐

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

点击添加站长微信