找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机延时程序问题

[复制链接]
跳转到指定楼层
楼主
ID:777834 发表于 2020-9-29 16:46 来自触屏版 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家好呀,我是想在这个延时里当t为0时跳出,所以加了break,但是编译错误,把break屏蔽了就可以通过,为什么呢?

IMG_20200929_163911.jpg (2.04 MB, 下载次数: 58)

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

使用道具 举报

沙发
ID:777834 发表于 2020-9-29 16:48 来自触屏版 | 只看该作者
说错了,是当f为1是跳出这个延时
回复

使用道具 举报

板凳
ID:584814 发表于 2020-9-29 17:25 | 只看该作者
这个延时是个闭环,如果搞条件的话放在外面。
回复

使用道具 举报

地板
ID:777834 发表于 2020-9-29 17:46 来自触屏版 | 只看该作者
man1234567 发表于 2020-9-29 17:25
这个延时是个闭环,如果搞条件的话放在外面。

详细说下,谢谢啦
回复

使用道具 举报

5#
ID:451718 发表于 2020-9-29 18:56 | 只看该作者
f是全局变量吧?  在定时器中断还是外部中断里面被改变?  if语句没有起到延迟的限制作用,for循环执行完后,无论if判断结果如何,都会退出这个延迟函数。 if判断只能判断f的值,而去改变t的值。  多看看c语言基础知识吧。
回复

使用道具 举报

6#
ID:807522 发表于 2020-9-29 21:45 | 只看该作者
开环和闭环你应该没有搞清楚吧
回复

使用道具 举报

7#
ID:777834 发表于 2020-9-30 00:46 来自触屏版 | 只看该作者
说说原因
回复

使用道具 举报

8#
ID:272119 发表于 2020-9-30 08:16 | 只看该作者
if一般没有带break的,你的k循环不受if控制,if在这里不是for循环内嵌语句.一句话,逻辑没理清.
回复

使用道具 举报

9#
ID:708637 发表于 2020-9-30 10:54 | 只看该作者
先看下C语言for循环
回复

使用道具 举报

10#
ID:807182 发表于 2020-9-30 16:04 | 只看该作者
可以看一下循环,这个好像在switch也是在括号外面吧!其次在if能用break吗?留个问题借楼
回复

使用道具 举报

11#
ID:777834 发表于 2020-9-30 17:56 来自触屏版 | 只看该作者
所以来这里问咯
回复

使用道具 举报

12#
ID:825447 发表于 2020-10-4 08:40 | 只看该作者
你定义的i为参数。
参数应该赋给j或k,
这样才是正确for语句用法
回复

使用道具 举报

13#
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;
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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