找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3868|回復: 6
打印 上一主題 下一主題
收起左側

單片機外部中斷0給脈沖計數,計數不準確?

[復制鏈接]
跳轉到指定樓層
樓主
ID:408519 發(fā)表于 2019-5-11 14:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我用外部中斷0做了一個統(tǒng)計槽形光耦脈沖的個數,光碼盤裝在一個一分鐘只有十五轉的電機上,統(tǒng)計5個脈沖的個數,然后執(zhí)行相應的程序,但是不知道為什么統(tǒng)計不到5個,就執(zhí)行相應的程序了,這是為什么?

單片機源程序如下:
  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為跳變沿觸發(fā)方式
  17.         EX0=1;//打開外部中斷0
  18.         EA=1;//全局中斷允許位
  19. }
  20. void INT_0() interrupt 0{
  21.         count++;
  22. }
復制代碼



捕獲.PNG (138.46 KB, 下載次數: 24)

捕獲.PNG

TIM圖片20190511141905.jpg (4.52 MB, 下載次數: 34)

TIM圖片20190511141905.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:425825 發(fā)表于 2019-5-11 21:50 | 只看該作者
這樣的紅外對射,精度有限,可能會產生毛刺,也就是多次被誤觸發(fā)了
回復

使用道具 舉報

板凳
ID:149451 發(fā)表于 2019-5-12 07:16 | 只看該作者
你的遮光速度很慢,不知是否應加入除顫功能(類似按鍵除顫),用示波器觀察下,遮光板波形邊緣應該不“干凈”
回復

使用道具 舉報

地板
ID:408519 發(fā)表于 2019-5-12 19:49 | 只看該作者
來51學習 發(fā)表于 2019-5-11 21:50
這樣的紅外對射,精度有限,可能會產生毛刺,也就是多次被誤觸發(fā)了

謝謝你,我已經解決了問題,加了延時函數之后就行了
回復

使用道具 舉報

5#
ID:408519 發(fā)表于 2019-5-12 19:49 | 只看該作者
w1179benp 發(fā)表于 2019-5-12 07:16
你的遮光速度很慢,不知是否應加入除顫功能(類似按鍵除顫),用示波器觀察下,遮光板波形邊緣應該不“干凈 ...

謝謝你,是這樣的,我加入延時函數之后就行了
回復

使用道具 舉報

6#
ID:408519 發(fā)表于 2019-5-12 19:54 | 只看該作者
我解決的辦法是在外部中斷里面加了一個延時函數,就行了。但是我不知道這樣做是否妥當???
回復

使用道具 舉報

7#
ID:470129 發(fā)表于 2021-8-17 11:01 | 只看該作者
亢亢 發(fā)表于 2019-5-12 19:54
我解決的辦法是在外部中斷里面加了一個延時函數,就行了。但是我不知道這樣做是否妥當???

你好,樓主,我用的夏普槽形光耦計數脈沖,發(fā)現不準,請問你的延時是加在哪里的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表