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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
xlgxufashu
1楼-- · 2020-01-30 14:50
这个问题没有遇到过
bbssilverkey
2楼-- · 2020-01-30 18:19
 精彩回答 2  元偷偷看……
lr120363092
3楼-- · 2020-01-30 20:44
ballack_linux 发表于 2013-3-1 11:52
你这个ulong是啥类型变量?

长整型         

一周热门 更多>