修改51单片机读写SD卡,遇到延时怪事

2020-01-30 14:11发布

在修改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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。