搜索
bottom↓
回复: 7

51单片机的延时函数怎么计算?

[复制链接]

出0入0汤圆

发表于 2020-7-1 11:24:52 | 显示全部楼层 |阅读模式
本人刚学单片机,请问下例语句的延时时间计算,谢谢!

void delay(uchar t)
{
    uchar t1;
    unsigned long t2;
    for(t1=0;t1<t;t1++)
    {
      for(t2=0;t2<4000;t2++);   
    }
    TR0=0;
}

出0入24汤圆

发表于 2020-7-1 12:37:21 | 显示全部楼层
C程序没办法直接计算,要具体看生成的汇编程序

这里推荐一个本人很久前写的延时函数,C语言写的,延时飞常准

https://wenku.baidu.com/view/cafedacfa1c7aa00b52acb87

void delayms(unsigned char t)
{   
   unsigned char j;
   unsigned char i;

   do
   {
j=3;
     do
      {
            i=165;   
        do
                 {   
          --i;
                 }
        while(i!=0);
         --j;
          }
         while(j!=0);
   --t;
   }
   while(t!=0);
}
该程序延时时基为1ms,所以最大延时时间是255ms
下面是反编译的汇编程序
C:0x0031    7E03     MOV      R6,#0x03

C:0x0033    7DA5     MOV      R5,#0xA5

C:0x0035    DDFE     DJNZ     R5,C:0035

C:0x0037    DEFA     DJNZ     R6,C:0033

C:0x0039    DFF6     DJNZ     R7,delayms(C:0031)

C:0x003B    22       RET
延时时间计算公式如下:
((R5*2 + 2+1)*R6+2+1)R7
假设R7=1,上式为(165*2+3)*3+2+1 =1002us!!!!!

出250入17汤圆

发表于 2020-7-1 14:00:49 来自手机 | 显示全部楼层
while1里面翻转单片机引脚,加入延时函数,上示波器看

出0入112汤圆

发表于 2020-7-1 14:44:47 | 显示全部楼层
先看编译后生成汇编指令,再去查手册指令表相应指令执行的时钟周期个数,算出每条指令的执行时间,你的延时程序每条指令的执行时间累加起来就是了,有的不好懂,下面举个例子,
比如: MOVC   A, @A+DPRT 是4个时钟周期的指令,若系统时钟是12MHz的,这个条指令执行一次所用的时间就是 4 * 1/12 (us) 。

出0入0汤圆

发表于 2020-7-1 15:09:18 | 显示全部楼层
如果用STC的单片机,可以通过其ISP工具中的软件延时计算器进行计算

出0入0汤圆

 楼主| 发表于 2020-7-1 16:13:32 | 显示全部楼层
20061002838 发表于 2020-7-1 12:37
C程序没办法直接计算,要具体看生成的汇编程序

这里推荐一个本人很久前写的延时函数,C语言写的,延时飞常 ...

谢谢,汇编完全看不懂!

出0入98汤圆

发表于 2020-7-1 16:26:31 | 显示全部楼层
STC下程序那个ISP软件里有代码生成器
能够根据需要自动生成相应的延迟函数代码和定时器代码

出0入0汤圆

发表于 2020-7-1 22:14:19 | 显示全部楼层
如果是入门的话,会用就行,没必要精准计算;
当你真正做项目时才会明白,做时间延时或计时,都是用定时器中断产生基准时钟比如5ms标志,在主循环用计时器计时扩展的,做基准时钟的倍数计时或延时非常精准;
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 00:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表