亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 怎么用單片機的普通I/O口測脈沖寬度(100ms左右) [打印本頁]

作者: 職教電子    時間: 2013-7-2 22:05
標(biāo)題: 怎么用單片機的普通I/O口測脈沖寬度(100ms左右)
如題,怎么用單片機的普通I/O口測量脈沖寬度(100ms左右)?比如把脈沖加到STC89C52RC的P1.6口進(jìn)行測量。
作者: ahshmj    時間: 2013-7-3 08:17
可以使用查詢方式。
作者: 職教電子    時間: 2013-7-3 09:40
標(biāo)題:
本帖最后由 職教電子 于 2013-7-3 09:48 編輯
ahshmj 發(fā)表于 2013-7-3 08:17
可以使用查詢方式。


能說具體點嗎?我剛學(xué),看了很多例程,都是把脈沖加到中斷口才行,我試著用了查詢方式,但沒有成功。我就是想用一個普通I/O口來識別四個不同寬度的正脈沖,即:我把100ms的正脈沖加到P1.6口,讓單片機干第一件事情;當(dāng)我把200ms的正脈沖加到P1.6口,讓單片機干第二件事情......(每種脈沖都是連續(xù)發(fā)送)
作者: ahshmj    時間: 2013-7-3 11:45
使用循環(huán),一直查詢該腳是否變成高電平。如果是,就啟動定時器開始計時。然后繼續(xù)查詢,該腳是否變成低電平,若是,則停止定時器計時,然后讀出計時值即可計算脈沖寬度。
作者: 職教電子    時間: 2013-7-3 12:31
ahshmj 發(fā)表于 2013-7-3 11:45
使用循環(huán),一直查詢該腳是否變成高電平。如果是,就啟動定時器開始計時。然后繼續(xù)查詢,該腳是否變成低電平 ...

定時器最多只能有幾十毫秒的定時時間吧,我需要上百毫秒。我是這樣做的:
void keyscan() //
  {
    //uint ci=0;前面已定義成全局變量
    TMOD=0x02; //T0模式2
      TH0=0; //賦初值
     TL0=0;
       EA=1; //開總中斷
     ET0=1;//開定時器中斷

    if(key==1)   //key=P1^6
      {
        TR0=1;   //啟動定時器
        while(!key) //等待低電平到來
        if(key==0)
        {
          TR0=0; //關(guān)閉定時器
      if((ci>200) && (ci<300)) //若200<ci<300
            num=0;
      }
      }

    }
void T0_time() interrupt 1   //T0中斷
{
  ci++;
  }
l哪錯了?
作者: ahshmj    時間: 2013-7-3 17:37
如果使用6.0000m晶振可以在一次中斷內(nèi)做到65535*2微秒(130ms多)。

如果在要再長時間,可以像時鐘程序一樣另外設(shè)一個計數(shù)器,記錄中斷次數(shù)。
作者: 職教電子    時間: 2013-7-3 20:36
ahshmj 發(fā)表于 2013-7-3 17:37
如果使用6.0000m晶振可以在一次中斷內(nèi)做到65535*2微秒(130ms多)。

如果在要再長時間,可以像時鐘程序 ...

謝謝版主的回復(fù),我用全局變量記錄溢出次數(shù)為什么不行呢?我只需要把40ms-----300ms的不同脈寬區(qū)分開就行。不需要準(zhǔn)確的數(shù)值。




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