找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机延时程序问题

查看数: 2850 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-29 16:46

正文摘要:

大家好呀,我是想在这个延时里当t为0时跳出,所以加了break,但是编译错误,把break屏蔽了就可以通过,为什么呢?

回复

ID:155507 发表于 2020-10-4 09:45

改成这样, 编译不会错误

void delay_x2ms(unsigned int i)
{
        unsigned char j, k;
        for(i; i>0;i--)       
        for(j=4;j>0;j--)
        for(k=248;k>0;k--)  //; 后面多了个分号
        if(f==1)
        {
                t=0;
                break;
        }
}
ID:825447 发表于 2020-10-4 08:40
你定义的i为参数。
参数应该赋给j或k,
这样才是正确for语句用法
ID:777834 发表于 2020-9-30 17:56
所以来这里问咯
ID:807182 发表于 2020-9-30 16:04
可以看一下循环,这个好像在switch也是在括号外面吧!其次在if能用break吗?留个问题借楼
ID:708637 发表于 2020-9-30 10:54
先看下C语言for循环
ID:272119 发表于 2020-9-30 08:16
if一般没有带break的,你的k循环不受if控制,if在这里不是for循环内嵌语句.一句话,逻辑没理清.
ID:777834 发表于 2020-9-30 00:46
说说原因
ID:807522 发表于 2020-9-29 21:45
开环和闭环你应该没有搞清楚吧
ID:451718 发表于 2020-9-29 18:56
f是全局变量吧?  在定时器中断还是外部中断里面被改变?  if语句没有起到延迟的限制作用,for循环执行完后,无论if判断结果如何,都会退出这个延迟函数。 if判断只能判断f的值,而去改变t的值。  多看看c语言基础知识吧。
ID:777834 发表于 2020-9-29 17:46
man1234567 发表于 2020-9-29 17:25
这个延时是个闭环,如果搞条件的话放在外面。

详细说下,谢谢啦
ID:584814 发表于 2020-9-29 17:25
这个延时是个闭环,如果搞条件的话放在外面。
ID:777834 发表于 2020-9-29 16:48
说错了,是当f为1是跳出这个延时

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

Powered by 单片机教程网

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