51使用while进行延时的问题
Posted 猫咪大王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51使用while进行延时的问题相关的知识,希望对你有一定的参考价值。
上周写了一个简单的IO口翻转的程序,但是很奇怪,在FPGA板子上怎么也跑不起来。
后面发现问题可能出在延时函数上。
void Delay(unsigned char t) { while(--t); }
while(--t)在有些编译中无法正确编译--t,编译器认为这样是可以优化的(这个是我们老大给出的可能回答)。所以它们就对它进行了优化。其实具体原因我也不是很清楚。
后面换成下面这种形式或者for循环一切就正常了。
void Delay(unsigned int t){ while(t!=0){ t=t-1; } }
当然啦,具体是不是编译器的原因,我也不是很清楚,因为调试看汇编代码是没有问题的。keil这边没问题,那应该就是仿真那边的问题了。
以上是关于51使用while进行延时的问题的主要内容,如果未能解决你的问题,请参考以下文章