在C51单片机中延时子程序的延时时间是怎么算的?

 我来答
1554713475
推荐于2018-04-07
知道答主
回答量:19
采纳率:0%
帮助的人:17.4万
展开全部
比如说:
void delay ()
{
int x;
char y;
for(x=1000;x>0;x--)
{ for(y=100;y>0;y--)};

x每减一次,y减100次,x一共减少1000次
这个子程序的延时时间是:
1000*100=100ms(默认时间是us)
如果想更精确的话,可以用软件进行调试
for语句下面的{}还可以省略
有不清的可以多交流
匿名用户
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*机器周期
最后加起来就好。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zqf441775525
2011-12-19 · TA获得超过134个赞
知道小有建树答主
回答量:239
采纳率:0%
帮助的人:138万
展开全部
C语言不可能精确计算,只能用示波器看。汇编可以精确计算,书上有公式的,随便一个讲单片机的书上都有的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PotatoFatherv6
2011-12-19 · 超过13用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:32.1万
展开全部
知道每一步运行的时间,然后计算总共有多少步。一乘就出来了。每步的时间根据晶振不同而不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康泰生物
2011-12-19
知道答主
回答量:88
采纳率:0%
帮助的人:21.3万
展开全部
void delay (unsigned int i)
{
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
是间参数可由自己需要更改。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式