欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 這個(gè)單片機(jī)程序想實(shí)現(xiàn)光電測速傳感器來測被擋光的時(shí)間,哪里有問題?感覺中斷沒啟動(dòng) [打印本頁]

作者: 霧里看花zxp    時(shí)間: 2019-12-14 12:03
標(biāo)題: 這個(gè)單片機(jī)程序想實(shí)現(xiàn)光電測速傳感器來測被擋光的時(shí)間,哪里有問題?感覺中斷沒啟動(dòng)
我想用這個(gè)程序測量光電測速傳感器被擋住的時(shí)間,此光電測速傳感器沒遮擋時(shí)輸出低電平,擋住時(shí)輸出高電平,但感覺中斷沒啟動(dòng)。我想用來做一個(gè)光電門,測量擋光的時(shí)間

單片機(jī)源程序如下:
  1. #include<reg52.h>

  2. unsigned long int cnt;
  3. unsigned long int t;//長整型,時(shí)間

  4. sbit in=P3^2;     //信號(hào)輸入口

  5. sbit dula=P2^6;
  6. sbit wela=P2^7;
  7. unsigned char code table_du[]={
  8. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  9. 0x7d,0x07,0x7f,0x6f,0x77,0x7c,
  10. 0x39,0x5e,0x79,0x71};
  11. unsigned char code table_we[]={
  12. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

  13. unsigned char disnum[6];



  14. delay(unsigned char x)
  15. {
  16.         unsigned char a,b;
  17.         for(a=x;a>0;a--)
  18.                 for(b=200;b>0;b--);

  19. }

  20. timedis(void)
  21. {
  22.    
  23.         disnum[0]=t/10000000;
  24.         disnum[1]=(t%10000000)/1000000;
  25.         disnum[2]=(t%1000000)/100000;
  26.         disnum[3]=(t%100000)/10000;
  27.         disnum[4]=(t%10000)/1000;
  28.         disnum[5]=(t%1000)/100;
  29.         

  30. }
  31. display()
  32. {
  33.         unsigned char i;
  34.         for(i=0;i<6;i++)
  35.         {
  36.                 P0=0xff;
  37.                 wela=1;
  38.                 wela=0;
  39.                 P0=table_du[disnum[i]];
  40.                 dula=1;
  41.                 dula=0;
  42.                 P0=table_we[i];
  43.                 wela=1;
  44.                 wela=0;
  45.                 delay(5);
  46.         }
  47. }


  48. void int0() interrupt 0
  49. {
  50.         t=cnt;
  51.     cnt=0;
  52.         
  53. }

  54. void timer0 () interrupt 1
  55. {
  56.     TH0=(65536-100)/256;
  57.     TL0=(65536-100)%256;
  58.         cnt++;
  59. }


  60. void main()
  61. {
  62.         TMOD=0x09;
  63.     TH0=(65536-100)/256;
  64.     TL0=(65536-100)%256;
  65.         TR0=0;  
  66.     ET0=1;
  67.         
  68.     IT0=1;
  69.         EX0=1;
  70.         EA=1;        
  71.         
  72.     while(1)
  73.         {
  74.                 if(in==0)
  75.                 {
  76.             TR0=1;
  77.         }
  78.         timedis();
  79.                 display();
  80.         }
  81. }
復(fù)制代碼

作者: csmyldl    時(shí)間: 2019-12-14 16:43
如果程序沒問題,應(yīng)該是從擋住光到不擋光會(huì)發(fā)生中斷,如果要擋住光發(fā)生中斷,需把信號(hào)反相(可用非門或單個(gè)三極管),目前不知道你傳感器是如何接入P32的,程序中看不出
作者: 51hei**1140    時(shí)間: 2019-12-14 17:27
你好!把 in 為高的時(shí)候,作為結(jié)束,算出期間經(jīng)過的時(shí)間;以前做過小球下落時(shí)間檢測的實(shí)物。。。













作者: 霧里看花zxp    時(shí)間: 2019-12-14 19:49
csmyldl 發(fā)表于 2019-12-14 16:43
如果程序沒問題,應(yīng)該是從擋住光到不擋光會(huì)發(fā)生中斷,如果要擋住光發(fā)生中斷,需把信號(hào)反相(可用非門或單個(gè)三極 ...

謝謝你的指導(dǎo),光電傳感器的輸出直接接p3.2口的,我是想用定時(shí)器TMOD 0x09模式(Gate=1),先TR0=0,不啟動(dòng)定時(shí)器,然后在while循環(huán)中檢測in是否為低電平,再TR0=1,等in為高電平時(shí)才會(huì)開啟定時(shí)器,等高電平變?yōu)榈碗娖綍r(shí)由外部中斷(設(shè)置為下降沿觸發(fā))讀取時(shí)間,這個(gè)邏輯是否行得通?
作者: 霧里看花zxp    時(shí)間: 2019-12-14 20:42
QQ搜3205931140 發(fā)表于 2019-12-14 17:27
你好!把 in 為高的時(shí)候,作為結(jié)束,算出期間經(jīng)過的時(shí)間;以前做過小球下落時(shí)間檢測的實(shí)物。。。



謝謝您的指導(dǎo)




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1