1,定义的变量不要太多。低128字节为用户定义变量的存放区域(默认时),高128字节为特殊功能寄存器,这里最好不要放变量,否则可能会产生系统性的错误。其中低128字节可分为三部分,编程时原则上可以随意使用,但是为了更好的工作,可以将一些开关变量或者标志变量定义成位变量,这样只占20H~2FH中的某一位。
2,堆栈指向的地址可以设置为60H左右的地方,以为单片机开机后默认SP=0x07,前面可用的RAM空间很小,一旦溢出便会产生错误。
3,如果一个变量多处使用可以定义为全局变量,例如用于循环的i,j。
4,静态变量最好放在程序存储区,用code定义,比如一些字库。
5,变量一般定义成无符号变量,用unsigned定义。除非有特殊要求。
6,子函数应该放在主函数之前,如果没有放在主函数之前,那么应该在主函数之前进行声明。
7,变量或者子函数定义了,但是没有使用,系统会给出警告,可以不用理会,也可以将其删除,避免浪费少有的RAM和ROM。
8,可使用软件实现“看门狗”功能,比如运行完一次整个程序需要50ms,那么可以将定时器100ms,当定时器溢出时,将复位单片机,在程序的结尾处应重装定时器的参数。
9,往单片机里烧录程序时,用的是.hex文件,但它的大小并不代表实际烧录到单片机内部的程序,所以当.hex文件大于8KB时,依然可以烧录到单片机中。
10,一个定时器多用。单片机内只有两个定时器,有时不够用,这时就需要将一个定时器实现多个定时了,这时可以找到多个定时要求时间的最小公约数,设为定时器定时时间,当定时中断时,逐个去判断该那个应用即可。