找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3109|回复: 8
收起左侧

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

[复制链接]
ID:774612 发表于 2020-6-14 11:55 | 显示全部楼层 |阅读模式
整个程序是对外部脉冲进行一个计数
图1是一开始写的代码,是可以直接运行,对外部脉冲的计数也是正常的,由于所测信号是非周期信号,为了减小误差我决定测3次取均值,就写了图2的代码,可以编译通过,但仿真的时候计数就明显不正常了。还望个位大佬能帮助小白,怎么改才行。

图2

图2

图1

图1
回复

使用道具 举报

ID:773058 发表于 2020-6-14 16:20 | 显示全部楼层
建议你去找本书看看,可能是此处的量增多,在其它地方也应该跟着进行变动
回复

使用道具 举报

ID:491577 发表于 2020-6-14 18:32 | 显示全部楼层
正常情况下if()语句的判断要使用>或<,不要用==,用==有风险,比如if(time==60),如果有高等级中断的话有可能错过,改成if(time>=60)比较好。
回复

使用道具 举报

ID:123289 发表于 2020-6-16 16:20 | 显示全部楼层
思路正确。
注意一下:每次的起点、终点如何界定。
回复

使用道具 举报

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:636538 发表于 2020-6-17 09:53 | 显示全部楼层
66行下count没有清零,当你在开始下一个的时候总是在累加,导致运行过程中count,而且需要添加一个time=0;这相当与三个周期结束下一个三次采样,time从0开始计数,cout也从零计数,认为楼上说的不对,没有见过你把time到结束清零
回复

使用道具 举报

ID:781819 发表于 2020-6-17 11:17 | 显示全部楼层
C语言书上有讲解用法和举例
回复

使用道具 举报

ID:282850 发表于 2020-6-17 14:30 | 显示全部楼层
hhh402 发表于 2020-6-14 18:32
正常情况下if()语句的判断要使用>或=60)比较好。

同感,有些人不注重这些细节,bug在哪里自己找不出来。
回复

使用道具 举报

ID:782419 发表于 2020-6-17 21:04 | 显示全部楼层
如果三个相等的判断的话,可以用switch……case……,或者if……else if……else,试下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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