找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

小白在单片机中断程序中关于if使用的问题

查看数: 4413 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-14 11:55

正文摘要:

整个程序是对外部脉冲进行一个计数 图1是一开始写的代码,是可以直接运行,对外部脉冲的计数也是正常的,由于所测信号是非周期信号,为了减小误差我决定测3次取均值,就写了图2的代码,可以编译通过,但仿真的时候 ...

回复

ID:782419 发表于 2020-6-17 21:04
如果三个相等的判断的话,可以用switch……case……,或者if……else if……else,试下
ID:282850 发表于 2020-6-17 14:30
hhh402 发表于 2020-6-14 18:32
正常情况下if()语句的判断要使用>或=60)比较好。

同感,有些人不注重这些细节,bug在哪里自己找不出来。
ID:781819 发表于 2020-6-17 11:17
C语言书上有讲解用法和举例
ID:636538 发表于 2020-6-17 09:53
66行下count没有清零,当你在开始下一个的时候总是在累加,导致运行过程中count,而且需要添加一个time=0;这相当与三个周期结束下一个三次采样,time从0开始计数,cout也从零计数,认为楼上说的不对,没有见过你把time到结束清零
ID:548551 发表于 2020-6-16 22:31
这三个if可以同时运行, 也可以说只运行第一个.为什么这杨说呢?你这个time++,适用于下面三个,也就是说等于60 ,120,180的时候就会清零对吧. 但是.重点来了.这个time+到60之后就被你清零了,也就是说后面的120 ,180.永远到不了.明白了不? 所以这个time永远在60的时候就没有了,就从新开始计数了.我不知道你这个计时3s 6s 9s是怎么样才算是计满了.所以不知道你的思路. 只能说帮你解决你这个计数的问题

评分

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

查看全部评分

ID:123289 发表于 2020-6-16 16:20
思路正确。
注意一下:每次的起点、终点如何界定。
ID:491577 发表于 2020-6-14 18:32
正常情况下if()语句的判断要使用>或<,不要用==,用==有风险,比如if(time==60),如果有高等级中断的话有可能错过,改成if(time>=60)比较好。
ID:773058 发表于 2020-6-14 16:20
建议你去找本书看看,可能是此处的量增多,在其它地方也应该跟着进行变动

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

Powered by 单片机教程网

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