在修改51单片机SD卡读写程序的时候,发现一个非常奇怪的问题,
我一般喜欢写程序时,这样延时,一从没有报错
void delayms(ulong ms)
{
uint i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
但是 ,在SD卡的程序里,现在编译不能通过了,提示
Build target 'Target 1'
assembling STARTUP.A51...
compiling sd.c...
C51 FATAL-ERROR -
ACTION: GOBAL OPTIMIZATION
FUNCTION: main
ERROR: CANNOT OPTIMIZE FUNCTION
COMPILATION TERMINATED.
use the following work-around:
#pragma OPTIMIZE (7)
/* your original function */
main () {
....
}
/* end of your original function */
#pragma OPTIMIZE (8)
Target not created
如果改成这样,就没问题
void delayms(ulong ms)
{
uint i;
while((ms--)>0)
{
for(i=0;i<120;i++);
}
}
为什么一直能用的延时函数,在其他的程序里能用,在这SD卡程序里不能用了呢??我用的 编译器是 KEIL4
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>