找回密码
 立即注册

QQ登录

只需一步,快速开始

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

看不懂毫秒的单片机延时程序,为什么不能这样(我的想法)

  [复制链接]
跳转到指定楼层
楼主
ID:1062123 发表于 2023-2-10 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
我的想法:
void delay_ms(u16 ms)
{
while(us--);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1062123 发表于 2023-2-10 11:31 | 只看该作者

void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
我的想法:
void delay_ms(u16 ms)
{
while(ms--);
}
回复

使用道具 举报

板凳
ID:857072 发表于 2023-2-10 12:19 来自手机 | 只看该作者
这到微秒级了
回复

使用道具 举报

地板
ID:158391 发表于 2023-2-10 12:53 | 只看该作者
ylthpl 发表于 2023-2-10 11:31
void delay_ms(u16 ms)
{
        u16 i,j;

那个U16你要是定义成长整型到是可以。
不考虑浪费资源和每次延时都得敲一堆数字的话,而且你这里的MS代表微秒
回复

使用道具 举报

5#
ID:752974 发表于 2023-2-10 14:29 | 只看该作者
软件延时是不准的,是根据执行的指令周期计算延时时间,这要看编译后的汇编指令。
回复

使用道具 举报

6#
ID:596109 发表于 2023-2-10 15:52 | 只看该作者
这种延时是要看硬件来估算的,j=110那行本就是估算的结果,你写的那个估算这一步都没有,单片机咋知道你要延时多久
回复

使用道具 举报

7#
ID:646520 发表于 2023-2-10 16:28 | 只看该作者
因为那是软件延时,人家那是通过计算次才得出来的,传入参数就可以得到粗略的延时。你的想法只是单纯延时
回复

使用道具 举报

8#
ID:883242 发表于 2023-2-10 16:55 | 只看该作者
没人发现第一个for语句后面多写了一个;导致延迟根本就不对吗?
回复

使用道具 举报

9#
ID:1034262 发表于 2023-2-10 22:02 | 只看该作者
楼主不理解一个循环的时间。
回复

使用道具 举报

10#
ID:1060328 发表于 2023-2-11 09:41 | 只看该作者


void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--)                                                   //;
        for(j=110;j>0;j--);
}

这才是ms毫秒的延时
这个延时是不是很精确取决于编译器将C语言转换成汇编后的汇编语言情况,还有时钟精确度,晶振一般精度高,RC精度要低。
回复

使用道具 举报

11#
ID:872867 发表于 2023-2-11 18:44 | 只看该作者
可以,数据有范围的
回复

使用道具 举报

12#
ID:353115 发表于 2023-2-11 19:41 | 只看该作者
不是说变量取名叫ms,它减1就真的是过去1ms了,哈哈
回复

使用道具 举报

13#
ID:743654 发表于 2023-2-13 09:28 | 只看该作者

void delay_ms(u16 ms)
{
        u16 i,j;
        for(i=ms;i>0;i--);
        for(j=110;j>0;j--);
}
这个是软件延时,要根据MCU的时机器周期计算。
u16的范围是0~65535,若ms为1ms,则最大可延时0~65535ms。
void delay_ms(u16 ms)
{
while(us--);
}
这个程序也有错,两个参数ms,us。若us为1us,则最大可延时0~65535us。
延时时间大于66ms,这个程序就不通用了,第一个程序也便于理解
精确延时请用定时器
回复

使用道具 举报

14#
ID:587810 发表于 2023-2-17 14:02 | 只看该作者
机械延时,两个for嵌套更精准。
回复

使用道具 举报

15#
ID:1062123 发表于 2023-3-4 16:48 | 只看该作者
你们都好厉害我应该懂了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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