找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1880|回复: 23
打印 上一主题 下一主题
收起左侧

单片机延时函数,有通俗一点的方法么?

  [复制链接]
跳转到指定楼层
楼主
ID:1018078 发表于 2022-4-13 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delay(int t ){while(t--);}
这样的延时函数 还有通俗一点的方法么
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:1018078 发表于 2022-4-13 17:29 来自手机 | 只看该作者
hezezeze 发表于 2022-4-13 17:17
简单的通俗的就是双重循环这种啊。两重for循环试试

这种函数什么意思  重复循环 延时多少啊
回复

使用道具 举报

来自 3#
ID:752974 发表于 2022-4-14 09:59 | 只看该作者
延时,通俗的讲,就是让CPU浪费时间,有两种方法,1.软件的方法,如楼主给出的函数,简单,延时时间是按CPU执行每条指令的时间的累计,不准,大概估算。2.用硬件定时器中断,也不是很复杂,延时时间可以控制的较精准。
回复

使用道具 举报

地板
ID:1018078 发表于 2022-4-13 16:03 来自手机 | 只看该作者
这个延时 delay1000多少秒啊
回复

使用道具 举报

5#
ID:123289 发表于 2022-4-13 17:00 | 只看该作者
你希望如何【通俗】?试说一个。
回复

使用道具 举报

6#
ID:1018078 发表于 2022-4-13 17:03 来自手机 | 只看该作者
yzwzfyz 发表于 2022-4-13 17:00
你希望如何【通俗】?试说一个。

另一种 表示方法 这个循环不是很懂
回复

使用道具 举报

7#
ID:879348 发表于 2022-4-13 17:05 | 只看该作者
NOP();
回复

使用道具 举报

8#
ID:1007932 发表于 2022-4-13 17:10 | 只看该作者
还通俗?要不你一个个地写_nop_();
回复

使用道具 举报

9#
ID:982617 发表于 2022-4-13 17:17 | 只看该作者
简单的通俗的就是双重循环这种啊。两重for循环试试
回复

使用道具 举报

10#
ID:1018078 发表于 2022-4-13 17:18 来自手机 | 只看该作者
一事无成 发表于 2022-4-13 17:10
还通俗?要不你一个个地写_nop_();

只是不太懂这个延时函数
回复

使用道具 举报

11#
ID:1018078 发表于 2022-4-13 17:20 来自手机 | 只看该作者
一事无成 发表于 2022-4-13 17:10
还通俗?要不你一个个地写_nop_();

只是不太懂这个 什么意思
回复

使用道具 举报

12#
ID:57657 发表于 2022-4-13 18:07 | 只看该作者
用定时器中断,for while的软件延时误差大,尽量少用。
回复

使用道具 举报

13#
ID:82570 发表于 2022-4-13 18:32 来自手机 | 只看该作者
最通俗的就是定时器中断,然后根据需求分发处理
回复

使用道具 举报

14#
ID:310441 发表于 2022-4-13 18:33 来自手机 | 只看该作者
要精密延时还得靠外部的模块,单片机有限
回复

使用道具 举报

15#
ID:121859 发表于 2022-4-13 19:33 | 只看该作者
软件延时就是循环进行一定次数的“空”操作,可以用while,也可以用for
delay(int tt)
{
int i;
for(i=0;i<tt;i++);
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

16#
ID:65369 发表于 2022-4-13 20:29 | 只看该作者
delay(1ms);  //这个够通俗了吧
回复

使用道具 举报

17#
ID:563389 发表于 2022-4-13 23:59 | 只看该作者
看性能需要,性能高要求的用中断吧,别让他傻等,本来51性能就不好,傻等的话更没效率了
回复

使用道具 举报

18#
ID:1018078 发表于 2022-4-14 13:31 | 只看该作者
munuc_w 发表于 2022-4-14 09:59
延时,通俗的讲,就是让CPU浪费时间,有两种方法,1.软件的方法,如楼主给出的函数,简单,延时时间是按CPU ...

如果按照void delay(unsigned int t ){while(t--);} 这样有区别么
回复

使用道具 举报

19#
ID:1018347 发表于 2022-4-14 14:24 | 只看该作者
int i;for(i=9000;i>0;i--);就是让单片机浪费时间
回复

使用道具 举报

20#
ID:752974 发表于 2022-4-14 14:57 | 只看该作者
good1230 发表于 2022-4-14 13:31
如果按照void delay(unsigned int t ){while(t--);} 这样有区别么

没有区别,工作原理是一样的,只是最长延时时间不同。
回复

使用道具 举报

21#
ID:1018405 发表于 2022-4-14 17:32 来自手机 | 只看该作者
用最简单的delay延时
回复

使用道具 举报

22#
ID:1018078 发表于 2022-4-17 14:02 | 只看该作者
munuc_w 发表于 2022-4-14 14:57
没有区别,工作原理是一样的,只是最长延时时间不同。

非常感谢
回复

使用道具 举报

23#
ID:1019111 发表于 2022-4-17 14:06 | 只看该作者
51单片机烧录软件里可以自己生成延时函数的,根据你单片机的晶振生成的
回复

使用道具 举报

24#
ID:1018405 发表于 2022-4-17 20:58 来自手机 | 只看该作者
用c语言delay1ms(1000)
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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