第3章-单片机C51语言基础与开发平台.pptVIP

  • 1
  • 0
  • 约1.63万字
  • 约 70页
  • 2023-02-10 发布于江西
  • 举报
* * * * * * * * * * * * * * * * * * * ■ Keil C代码的优化技巧 ◆ 采用短变量 提高代码效率的最基本的方式就是减小变量的长度。当使用C编程时,常习惯于对循环变量使用 int 类型,这对 8 位的单片机来说是一种极大的浪费。此时应该仔细考虑所声明的变量的取值范围,然后再根据取值范围选择合适的变量类型。 因此,在多数情况下,循环变量可定义为 unsigned char 类型,而不是常用的 int 类型。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 使用无符号类型 由于8051不支持符号运算,所以程序中也不要使用含有带符号变量的外部代码。除了根据变量长度来选择变量类型以外,还要考虑变量是否会用于负数的运算。 如果程序中可以不用到负数运算,则定义的变量都应为无符号类型。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 避免使用浮点指针 在 8 位操作系统上使用 32 位浮点数是得不偿失的。虽然可以这样做,但会浪费大量的时间。所以当在系统中使用浮点数的时候,一定要确认是否有必要。 处理 int 和 long 类型数据要比 double 和 float 数据方便的多。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 使用位变量 对于某些标志位,应使用位变量而不是 unsigned char 。这样将节省内存,而且位变量在RAM中,访问它们只需要一个处理周期。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 用局部变量代替全局变量 把变量定义为局部变量比全局变量更有效。 编译器为局部变量在内部存储区中分配存储空间,而为全局变量在外部存储区中分配存储空间。这样,对于全局变量来说会降低访问速度。 另外一个避免使用全局变量的原因是必须在系统处理过程中调节使用全局变量,因为在中断系统和多任务系统中,不止一个过程会使用全局变量。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 为变量分配内部存储区 局部变量和全局变量可被定义到想要的存储区中。根据前面的讨论,把经常使用的变量放在内部RAM中,可使程序的执行速度得到提高。除此之外也可缩短代码,因为外部存储区寻址时要相对麻烦一些。 考虑到存储速度,可按如下顺序使用存储区: data、idata、pdata、xdata 当然,在内部RAM中还要记得留出足够的堆栈空间。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 使用特定指针 当在程序中使用指针时,应指定指针的类型,确定它们指向哪个区域,如 xdata 或 code 区。这样做可使编写的代码更加紧凑,因为编译器不必再去确定指针所指向的存储区域。 3.1 单片机的C51语言基础 ■ Keil C代码的优化技巧 ◆ 使用宏定义来替代函数 对于小段代码,可通过使用宏来替代函数,以增强程序的可读性。将代码定义在宏中,看起来更像是函数。编译器遇到宏时,会按照事先定义的代码去替代宏;而需要改变宏时,只需要在宏定义处进行修改。如: #define led_on( ) { led_state = LED_ON; XBYTE[ LED_CNTRL ] = 0x01; } #define led_off( ) { led_state = LED_OFF; XBYTE[ LED_CNTRL ] = 0x00; } 3.1 单片机的C51语言基础 * * * * * * * * * * * * * * * * * * * * * * * * ■ 运算符 ◆ 算术运算符: 3.1 单片机的C51语言基础 ■ 运算符 ◆ 关系运算符: 3.

文档评论(0)

1亿VIP精品文档

相关文档