登录
首页 单片机论坛
回帖 发帖
正文

主题:单片机的延时计算

点击:1629 回复:10

include??reg51.h??
delay(void)
{
unsigned int i;int n; int m;
for(i=0; i <10000; i++)
for(n=0; n <20; n++)
;
}
void main(void)
{
while(1)
{
delay();
P2=0xfe;
delay();
P2=0xff;
delay();
}
}
这里的延时是怎么计算的?0xfe时间是多久?0xff时间是多久?烦请指教
10-04-13 22:26
貌似延时和0xfe无关,P2和这个有关.
这个程序延时应该是固定的.就是20+10000个语句.
延时和单片机时钟(指令周期)有关,还有因为是C的,怎么编译到汇编也有关(for对应什么指令,需要多少周期).
所以,总体只好实测了.
10-04-14 10:44
用delay函数很难做到精确定时。
楼主大概想问P2分别为0xfe和0xff时多久时间吧。如果无返回值,那么保持的时间是一样的。
10-04-15 20:48
谢谢啊!但我还是没弄明白时间是多长,表情
10-04-16 08:33
估算一下吧:12M振荡频率,那么就是1/12M秒乘以12=一个机器周期,再乘以10000(假设i++是单周期指令),再乘以20,大约1/5秒。
10-04-16 22:06
有个比较直观的办法,在调制状态下,单步执行“i++”,看一次用了多长时间就可以计算出整个延时时间了。
10-04-17 11:29
仿真一下
10-05-31 10:40
刚学,看看是有好处的:)
10-06-07 22:37
KEILL 里面设置断点 然后看相应的运行时间这样做的比较精确
10-06-10 21:54
c的时间很难算出来    估计下就可以了   各个编程软件不一样得到的反汇编是不一样的
10-06-18 14:32

上一页下一页

工控新闻

更多新闻资讯