找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

帮忙看看这个波形(过零检测)

查看数: 8994 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-5-18 20:12

正文摘要:

先贴程序: #include <reg52.h> sbit singal=P1^0;   //信号输出端,就是图中蓝色波形 bit flag; void delayms(unsigned int x) {         unsigned int i,j; & ...

回复

ID:374869 发表于 2018-11-19 09:27
楼主,我也遇到同样问题,程序跟你写差不多,最后咋解决了?

IMG_3771.JPG (1.29 MB, 下载次数: 70)

IMG_3771.JPG
ID:242534 发表于 2017-10-24 19:14
delayms(1); 延时函数最好用定时器做
ID:242487 发表于 2017-10-24 17:04
delayms(1); 延时函数最好用定时器做
ID:69679 发表于 2015-5-30 12:26
我的问题还没有解决,可就是程序而言,我建议还是像我给你回复的程序那样,用中断写比较好些,相互学习

评分

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

查看全部评分

ID:81546 发表于 2015-5-30 10:41
我前面说的不完全。你的这个波形处理,可以把:
                        singal=0;    //产生外部中断后,把信号拉低
                        delayms(1);  //延时一会
                        singal=1;  //再拉高
放在中断函数中去处理,并适当增长延时时间,漏过过零信号中的干扰。

评分

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

查看全部评分

ID:81546 发表于 2015-5-30 10:36
  if(flag==1)
                 {
                         singal=0;    //产生外部中断后,把信号拉低
                        delayms(1);  //延时一会
                        singal=1;  //再拉高
                        flag=0;  //置零等待下一次中断
                }
这程序中可能有问题:如果在执行delayms(1)时,又发生了中断,输出波形就出错了。所以延时时间要尽可能短。  

评分

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

查看全部评分

ID:80474 发表于 2015-5-19 14:01
if(flag==1) 这里加一个限制条件,即自定义一个时间,时间不到不执行里面的语句,这样就只能执行一次

评分

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

查看全部评分

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

Powered by 单片机教程网

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