找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机外部中断0给脉冲计数,计数不准确?

[复制链接]
跳转到指定楼层
楼主
我用外部中断0做了一个统计槽形光耦脉冲的个数,光码盘装在一个一分钟只有十五转的电机上,统计5个脉冲的个数,然后执行相应的程序,但是不知道为什么统计不到5个,就执行相应的程序了,这是为什么?

单片机源程序如下:
  1. #include <reg52.h>

  2. unsigned char count;
  3. void INT0_init();

  4. void main(){
  5.         INT0_init();
  6.         P1=0x00;
  7.         while(1){               
  8.         if(count==5){
  9.                 P1=0xff;
  10.                 count=0;        
  11.                 }
  12.         }
  13. }
  14. //有遮挡输出高电平,没有遮挡为低电平
  15. void INT0_init(){
  16.         IT0=1;//外部中断0为跳变沿触发方式
  17.         EX0=1;//打开外部中断0
  18.         EA=1;//全局中断允许位
  19. }
  20. void INT_0() interrupt 0{
  21.         count++;
  22. }
复制代码



捕获.PNG (138.46 KB, 下载次数: 19)

捕获.PNG

TIM图片20190511141905.jpg (4.52 MB, 下载次数: 28)

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

使用道具 举报

沙发
ID:425825 发表于 2019-5-11 21:50 | 只看该作者
这样的红外对射,精度有限,可能会产生毛刺,也就是多次被误触发了
回复

使用道具 举报

板凳
ID:149451 发表于 2019-5-12 07:16 | 只看该作者
你的遮光速度很慢,不知是否应加入除颤功能(类似按键除颤),用示波器观察下,遮光板波形边缘应该不“干净”
回复

使用道具 举报

地板
ID:408519 发表于 2019-5-12 19:49 | 只看该作者
来51学习 发表于 2019-5-11 21:50
这样的红外对射,精度有限,可能会产生毛刺,也就是多次被误触发了

谢谢你,我已经解决了问题,加了延时函数之后就行了
回复

使用道具 举报

5#
ID:408519 发表于 2019-5-12 19:49 | 只看该作者
w1179benp 发表于 2019-5-12 07:16
你的遮光速度很慢,不知是否应加入除颤功能(类似按键除颤),用示波器观察下,遮光板波形边缘应该不“干净 ...

谢谢你,是这样的,我加入延时函数之后就行了
回复

使用道具 举报

6#
ID:408519 发表于 2019-5-12 19:54 | 只看该作者
我解决的办法是在外部中断里面加了一个延时函数,就行了。但是我不知道这样做是否妥当???
回复

使用道具 举报

7#
ID:470129 发表于 2021-8-17 11:01 | 只看该作者
亢亢 发表于 2019-5-12 19:54
我解决的办法是在外部中断里面加了一个延时函数,就行了。但是我不知道这样做是否妥当???

你好,楼主,我用的夏普槽形光耦计数脉冲,发现不准,请问你的延时是加在哪里的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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