请问单片机延时怎么算?

[复制链接]
查看11 | 回复4 | 2008-9-29 17:42:59 | 显示全部楼层 |阅读模式
在看C51时用到延时程序时总会给一些循环语句。
例如:for(i=8;i>0;i--)

for(j=0;j<124;j++);
请问执行一条循环语句是多少时间?中间的数学换算公式应该是怎么样的?谢谢。

回复

使用道具 举报

千问 | 2008-9-29 17:42:59 | 显示全部楼层
语言的运行时间不好计算,你要用汇编的才能精确的计算时间。汇编的前提是没有开中断才能精确计算间间 如果汇编 WHILE (TIME--) 为2个机器周期 2M 可以认为延时时间 = TIME * 250 ns 12M 就是TIME * 250/6 ns 24M 就是TIME * 250/12 ns...
回复

使用道具 举报

千问 | 2008-9-29 17:42:59 | 显示全部楼层
6MHZ晶振延时X毫秒的子程序yanshi(uint x){uint i;uchar j;
for(i=0;i<x;i++){
for(j=0;j<124;j++) } }...
回复

使用道具 举报

千问 | 2008-9-29 17:42:59 | 显示全部楼层
keil c51 可以 软仿真 ,有跑表 ,可以看的呀v还有 ,可以看一下对应的汇编窗口,由C生成的ASM,一目了然...
回复

使用道具 举报

千问 | 2008-9-29 17:42:59 | 显示全部楼层
这种方法是软件延时方法,延时不精确。单片机内部一般都提供定时中断,这种方法是硬件延时的方法,具体延时多长时间要看单片机的晶振频率以及内部某些寄存器的设置,看看定时中断那章就明白了,不难,加油。。。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行