C8051单片机C语言程序设计的几个深层次问题及解决方法
2010-9-29 11:17
阅读:8025
标签:C语言, 程序设计, 单片机, 8051
当在单片机(8051)环境下编写C语言程序设计时,常常会发生一些奇怪的现象。一个变量明明赋值为500,在运行过程中却莫名其妙地变成1000。 在WINDOWS下运行完全正常的算法,移植到单片机上就会出错。 如果无法保证一个变量的值按照程序设计者的要求变化,程序出现各种乱象就不奇怪了。
这种现象出现在C语言程序比较长,子程序比较多,或是子程序的层次比较多的场合。 因此,在单片机环境下用C语言开发比较大的程序,很容易出现各种问题。
这种问题出在编译器优化上。由于单片机资源有限,编译器采取了很多优化手段来减少资源占用。 在KEIL C上,编译器优化的层次有9级。然而,仅仅是二级优化(Data overlaying),就会导致长程序出现问题。 对于比较长的程序,应该只使用一级优化,更先进的优化最好不要用,否则会出现无法预料的问题。
用单片机开发比较长的程序时,应该选择有大容量程序存储空间和数据存储空间的单片机,将编译器优化限制在第一级,其它层次优化尽量避免用。 因为二级优化的数据覆盖手段可以把变量值改变,导致程序运行出错。
转载本文请联系原作者获取授权,同时请注明本文来自陈儒军科学网博客。
链接地址:https://wap.sciencenet.cn/blog-39626-368101.html?mobile=1
收藏
当前推荐数:5
推荐到博客首页
网友评论4 条评论