在C51单片机中延时子程序的延时时间是怎么算的?
5个回答
2011-12-19
展开全部
按每一个指令所占有的机器周期。。再根据晶振频率来算。。
追问
能否说的具体一点,谢谢啦
追答
DELAY: MOV R4,#60
D0: MOV R5,#125
D1: MOV R6,#200
D2: MOV R6,D2
DJNZ R5,D1
DJNZ R4,D0
RET
就以这个为例:MOV指令是1周期的指令,第一条的话就是执行了60次,就是60*1*机器周期的时间
第二条指令也是1周期的,但是执行了125*200次,所以是125*200*1*机器周期的时间
以此类推。。
而DJNZ是2周期指令。。。所以是循环次数*2*机器周期
最后加起来就好。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言不可能精确计算,只能用示波器看。汇编可以精确计算,书上有公式的,随便一个讲单片机的书上都有的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
知道每一步运行的时间,然后计算总共有多少步。一乘就出来了。每步的时间根据晶振不同而不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void delay (unsigned int i)
{
unsigned char j;
for(i;i>0;i--)
for(j=500;j>0;j--);
}
{
unsigned char j;
for(i;i>0;i--)
for(j=500;j>0;j--);
}
追问
这个好像是用C语言做的,用汇编程序怎么算啊,我急于知道延时子程序中延时时间的计算公式
追答
DELAY: MOV R4,#60
D0: MOV R5,#125
D1: MOV R6,#200
D2: MOV R6,D2
DJNZ R5,D1
DJNZ R4,D0
RET
是间参数可由自己需要更改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询