完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的光电对射电路是这么设计的,如图所示!我把这个电路的信号输出端(J1-2脚)接在了stc89c52单片机的外部中断口1口,可是每当出现一个物体遮挡过去之后,单片机的外部中断1服务函数执行了好几次,我设置的外部中断是单片机下降沿触发!我的服务函数里面没有加去抖延迟,因为中断函数里面不想出现那些延迟什么的函数,影响单片机运行的整体效率!各位大神们有什么好的建议?能有什么办法用硬件去掉这个电路电平变化的过程产生的抖动?或者程序上怎么修改比较好,希望得到帮助!谢谢!
![]() 下面是我的外部中断函数: void tuiqiu() interrupt 2 //检测上升沿触发,快进快 { //假如没有加延迟去抖,下面的函数会被执行多次,中断里不加延迟! if(score_over>0) { if(T10s_flag==1) //到了十秒的时间,说明电机要开始反转了 { count=201; //从第二个十秒开始 } else count=0; if(score_over>0) { uart_senddata(m+5); //发送地址位 m++; if(m==13) m=0; score_over--; if(score_over==0) { djz=0; //停止电机 djf=0; TR2=0; //关定时器2 T10s_flag=0; //10秒标志位清零 count=0; //10秒计数值清零 m=0; } } } } |
|
相关推荐
6个回答
|
|
如果是信号有“抖动”就应该采用去抖动措施。但不管采取什么去抖动措施,本质都是低通滤波,一定会有延迟。和LZ的要求不符,无解哈。。。
|
|
|
|
|
|
|
|
软件去抖就必须要延迟吗?没别的办法啦吗?rs触发器靠谱不? |
|
|
|
这个方法也不行,这个中断服务函数执行的时间是很短的,在有东西挡住红外对射的时候,就有可能产生抖动的,而当外部中断服务函数已经执行完毕了,他却还在抖动,因此再次触发,照成结果出错。 |
|
|
|
你这是干扰吧。。。。 ![]() |
|
|
|
你可以对延时用一个中断,如果你的中断足够用的话
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1589 浏览 3 评论
777 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
908 浏览 0 评论
996 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
810 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10862 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-26 21:16 , Processed in 0.737856 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191