找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1310|回复: 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--);
}

回复

使用道具 举报

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代表微秒
回复

使用道具 举报

ID:752974 发表于 2023-2-10 14:29 | 显示全部楼层
软件延时是不准的,是根据执行的指令周期计算延时时间,这要看编译后的汇编指令。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:883242 发表于 2023-2-10 16:55 | 显示全部楼层
没人发现第一个for语句后面多写了一个;导致延迟根本就不对吗?
回复

使用道具 举报

ID:1034262 发表于 2023-2-10 22:02 | 显示全部楼层
楼主不理解一个循环的时间。
回复

使用道具 举报

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精度要低。
回复

使用道具 举报

ID:872867 发表于 2023-2-11 18:44 | 显示全部楼层
可以,数据有范围的
回复

使用道具 举报

ID:353115 发表于 2023-2-11 19:41 | 显示全部楼层
不是说变量取名叫ms,它减1就真的是过去1ms了,哈哈
回复

使用道具 举报

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,这个程序就不通用了,第一个程序也便于理解
精确延时请用定时器
回复

使用道具 举报

ID:587810 发表于 2023-2-17 14:02 | 显示全部楼层
机械延时,两个for嵌套更精准。
回复

使用道具 举报

ID:1062123 发表于 2023-3-4 16:48 | 显示全部楼层
你们都好厉害我应该懂了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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