2020年 03月 01日 星期日
您的位置: 威廉希尔主页 > 单片机技术 >

如何写出高效的单片机C语言程序代码

来源:未知     作者:威廉希尔     发布时间:2020-02-29 07:49         

  机的资源是少得可怜,为此我们必须想法设法榨尽其所有资源,将它的性能发挥到最佳,程序设计时必须

  能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变

  量就不要用长整型(longint),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变

  量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,

  的代码,而乘以其它的整数或除以任何数,均调用乘除法子程序。用移位的方法得到代码比调用乘除法子

  程序生成的代码效率高。实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果。如N=M*9

  说明:两个函数的延时效果相似,但几乎所有的C编译对后一种函数生成的代码均比前一种代码少1~3

  说明:在声明局部变量的时候可以使用register关键字。这就使得编译器把变量放入一个多用途的寄存

  器中,而不是在堆栈中,合理使用这种方法可以提高执行速度。函数调用越是频繁,越是可能提高代码的

  volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在

  哪里使用、在哪里失效,分析结果可以用于常量合并,常量等优化,进一步可以死代码消除。一般来

  c)存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义

  总之,volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素

  更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码

  校验值,效率更高,当校验数据量大的时候,使用查表法优势更加明显,不过唯一的缺点是占用大量的空

  说明:函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函

  数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查选项,一般在函数的头会嵌入一些汇编语

  句对当前栈进行检查;同时,cpu也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,

  函数调用需要一些cpu时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,

  很明显大家都会想到这种方法,但是效率方面并不如意,我们需要动脑筋,就是采用数学算决问题,

  比,指针一般能使代码速度更快,占用空间更少。使用数组时差异更明显。下面的代码作用是相同的,

  指针方法的优点是,szArrayA的地址装入指针p后,在每次循环中只需对p增量操作。在数组索引

  可以提供程序效率,而且使程序更加之简洁,由于强制转换在C语言编程中占有重要的地位,下面将已五

  例子2:在大端模式下(8051系列单片机是大端模式),将数组a[2]为无符号16位整型值。

      威廉希尔