×
嵌入式 > 嵌入式开发 > 详情

PIC程序优化

发布时间:2020-07-22 发布时间:
|
程序优化中的几点

赋值语句是非常占用空间的,一个普通的给外部变量的赋值语句可能需要20到40个字节的代码空间。如果程序中有大量的赋值语句,会占用许多程序空间。优化时可以针对有规律的赋值语句使用函数方式,以及使用memcpy方式。

在作比较时,将if (x

循环中,在C51时for(x=0;x<10;x++)比for(x=10;x>0;x--)要多一个字节;在PICC18中则相反。

充分利用指针,可以提高程序的效率,但是要注意不能滥用。

适当的冗余代码是需要的,不要把它们删除了。

注意程序的写法

单片机程序中,代码的表达方式,或者叫写法也是很重要的,一个不好的写法可能会造成空间的浪费和效率的降低。而一个好的写法会减少代码的大小。不要依赖于编译器的优化功能,很多时候,优化是没有预期的那样好的效果,可以手工优化的地方就尽量自己动手了。

还有就是不同的编译器的优化是不同的,需要尝试一下不同的程序表达方式,经过比较才能得到一个比较好的方式。

Keil串口调试技巧

Keil C51整合了目前功能最强的C51编译器和最好的IDE调试环境。在新版本的Keil中,增加了很多功能,其中之一就是串口仿真。就是说无须实际的硬件,利用计算机的串口就可以完全进行串口仿真。

使用到的调试命令:

ASSIGN将计算机的串口设置为单片机的串口
语法:ASSIGN channel < inreg > outreg
例如:ASSIGN COM1 < SIN > SOUT
上面的括号不能少。

MODE设置串口的参数(波特率、数据位、停止位等)
语法:MODE COMx, baudrate, parity, databits, stopbits
例如:MODE COM2, 19200, 0, 8, 1

实际软件调试时,先在Keil中完成程序的编写,然后进入软件仿真状态,并用一根自制的串口线将计算机的两个串口环接起来(注意2与3要交叉,5可以接也可以不接)。这里需要计算机上至少要有两个串口,一个是仿真单片机用,另外一个是通信调试用,不然就需要两台计算机了。在仿真状态下,使用上面的两个命令设置好串口的参数(每次都输入参数会比较麻烦,这时可以在仿真参数中设置好配置文件)。在计算机中使用任何串口调试软件与Keil进行通信,可以在Keil中设置断点,实际结果与硬件仿真器的效果一样,还更加简单方便。

更多的用法可以参考Keil的帮助文件DBG51.CHM

负数的问题- -

在PICC18中,如果传输一个负数X时,用X/256和X%256分别取高低位时,高位会出现问题,会被加一。

这个问题需要这样解决:先将X传递到一个无符号的整数,然后在分别取高低位,就不会出现问题了。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于嵌入式系统的CAN总线网络通信流程设计