RT,在写一个关于I2C的函数,出现问题了,而问题不在别的上,而在delay上,让我百思不得其解。
void delay() //延时
{
char x;
for(x=0;x<10;x++);
}
用以上的程序,运行出现问题,但当我改成for函数改成
for(x=1;x<11;x++);
问题就没了,这是怎么回事啊
另外之前也遇到过在别的程序中
for(i=0;i<8;i++);
不行,改成
for(i=1;i<9;i++);
或者倒过来都可以
如果是函数初始化的话我试过全部不初始化,也试过全部初始化都不行
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
CY位么,确实用到了ACC和左移了
ACC=ACC<<1;
ACC0=SDA;
这个对delay有什么影响么?
————————————————————————————————————
刚才试了下放弃使用ACC的方法读取数据,发现delay函数怎么改都没问题了。膜拜大神,请教原因。
嗯,很严格这点我知道,像我试验的24C02就需要5us的处理时间,而结束和起始之间估计没1ms反应不过来。
正是因为delay稍有改变,进入delay函数后马上就跳出来了
最好不要随便用ACC,看过一些说for(i=0;i<10;i++)和for(i=10;i>0;i--)因为使用了ACC导致结果不同,最好新建一个变量。这是那位博主写的ACC对for循环的影响
嗯,了解了。之前我也曾经出现过用for(i=0;i<8;i++)出现错误的情况。然后后面两三天天尝试用for(i=8;i>0;i--),不过因为习惯问题,偶尔还是写错,就放弃了。看来今天要重新试着改这个习惯了。
问题解决,这帖子就让他沉了吧。
最后感谢提供解答,谢谢。
一周热门 更多>