久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

可以使用計數器計數的方法,獲取外部輸入信號的高電平持續時間?

[復制鏈接]
跳轉到指定樓層
樓主
ID:37685 發表于 2015-4-2 11:40 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
你好,請問我可以使用計數器計數的方法,獲取外部輸入信號的高電平持續時間?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:27916 發表于 2015-4-2 12:42 | 只看該作者
可以的,你可以在檢測到上升沿或高電平后開始定時,等到低電平或是下降沿后停下來,看 看時間是多少

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:1 發表于 2015-4-2 12:58 來自手機 | 只看該作者
樓上說得對,可以反相以后,利用中斷來啟動檢測。然后循環檢測來判斷時間。或者直接采用循環判斷也行。
回復

使用道具 舉報

地板
ID:73833 發表于 2015-4-2 17:44 | 只看該作者
我送個程序你看看
定時器T0的模式2測量正脈沖寬度
#include<reg51.h>   //包含51單片機寄存器定義的頭文件
sbit ui=P3^2;  //將ui位定義為P3.2(INT0)引腳,探測輸入電壓
/*******************************************
函數功能:主函數
******************************************/       
void main(void)
  {
    TMOD=0x0a;   // TMOD=0000 1010B,使用定時器T0的模式2,GATE置1
    EA=1;         //開總中斷
    ET0=0;        //禁止定時器T0中斷     
   TH0=0;        //計數器T0高8位賦初值
   TL0=0;        //計數器T0低8位賦初值
   TR0=1;        //啟動T0
         while(1)      
     {
            while(ui==0) ;  //INT0為低電平,T0不啟動
                  
           TL0=0;   //INT0為高電平, T0啟動, TL0清0做準備
               
           while(ui==1) ; //在INT0高電平期間等待,計時結果送TH0\TL0       
       
          P1=TL0;    //INT0一旦為低電平就將計時結果送P1口(或其他變量存儲),根據機器周期可以計              

                          算出INT0上高電平存續的寬度,當然如果高電平時間太長,也可以算上TH1。
                          
        //While(1);
}
}

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 很給力!

查看全部評分

回復

使用道具 舉報

5#
ID:73833 發表于 2015-4-2 17:54 | 只看該作者
定時器T0的模式2測量正脈沖寬度
#include<reg51.h>   //包含51單片機寄存器定義的頭文件
sbit ui=P3^2;  //將ui位定義為P3.2(INT0)引腳,表示輸入電壓
/*******************************************
函數功能:主函數
******************************************/       
void main(void)
  {
    TMOD=0x0a;   // TMOD=0000 1010B,使用定時器T0的模式2,//GATE置1
    EA=1;         //開總中斷
         ET0=0;        //禁止定時器T0中斷     
         TH0=0;        //計數器T0高8位賦初值
         TL0=0;        //計數器T0低8位賦初值
TR0=1;        //啟動T0
         while(1)       //無限循環,不停地將TL0計數結果送P1口
     {
            while(ui==0) ;  //INT0為低電平,T0不能啟動
                  
                 TL0=0;   //INT0為高電平, T0已啟動, TL0清0做準備
               
while(ui==1) ; //在INT0高電平期間等待,計時結果送
//TH0\TL0               
P1=TL0;    //INT0一旦為低電平就將計時結果送P1口或其他變量//存儲,根據機器周期可以計算出高電平存續的時間當//然如果高電平時間太長,也可以算上TH0。
        //While(1);
}
}
定時器/計數器是一家人,單憑這家人是完不成任務的,還得去求人家INT0

評分

參與人數 1威望 +50 黑幣 +50 收起 理由
admin + 50 + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:37685 發表于 2015-4-3 13:52 來自手機 | 只看該作者
dingmingzhou 發表于 2015-4-2 17:54
定時器T0的模式2測量正脈沖寬度
#include   //包含51單片機寄存器定義的頭文件
sbit ui=P3^2;  //將ui位 ...

太感謝了,程序條理清晰,注釋的非常詳細,很容易讓人理解。真是幫了我的大忙,再次表示感謝,祝您身體健康萬事順利。晚上我在燒錄到單片機里面去,測試一下。
回復

使用道具 舉報

7#
ID:75077 發表于 2015-4-3 23:45 來自手機 | 只看該作者
我不是以前就上傳過答案么

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:73833 發表于 2015-4-5 09:38 | 只看該作者
/**********************************************************************
//樓主:也不知你實驗的怎樣了。不過別高興太早,這個程序是我粘來的,近日細琢磨一下,認為它還有些問題:
//1、既不查詢中斷標志,也不用中斷服務,更甚者沒開任何中斷源!而開個總中斷干什么呢?
//2、程序使用的是T0的工作方式2,它是自動重裝的8位計數器。所以注釋中說"可以算上TH0"以及存入"TH0"之類的注釋,是何意?   哎,什么人弄得!
//我把它改吧改吧,你試驗一下行不?愿討論。
/*************************************************************************/
#include<reg51.h>   //包含51單片機寄存器定義的頭文件
sbit  ui = P3^2;  //將ui位定義為P3.2(INT0)引腳,探測輸入電壓  
void main(void)
  {       
   TMOD=0x09;   // 使用定時器T0的模式1,GATE置1。定時模式。  
while(1)      
     {  
          TL0=0;           //定時器低8位清零       
          TH0=0;     //定時器高8位清零          
           while(ui);          //為了完整測量一個高電平,必須準確尋找一個完整的高電平。
                        //因此,如果此時P3.2腳上的電平為高,由于此時的TR0=0,
                        //定時器T0不能啟動。從下一個高電平開始。
            TR0=1;        //        在P3.2腳 為低電平時        ,讓TR0=1,做準備。
       while(!ui) ;        //         在P3.2腳低電平期間,等待。       
           while(ui) ;  //  程序到這一步時,P3.2腳已為高電平,同時啟動T0定時,并等待 P3.2腳變低。
                    TR0=0;    //  P3.2腳變低時,關閉定時器T0.
          P1=TL0;  
          P2=TH0;           //顯示 。TH0\TL0兩個寄存器可以存儲最大65536個數。
       
         }
   }

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:88353 發表于 2015-8-14 23:56 | 只看該作者
dingmingzhou 發表于 2015-4-5 09:38
/**********************************************************************
//樓主:也不知你實驗的怎樣 ...

正在做電賽的東西,抱走了哈~~~
回復

使用道具 舉報

10#
ID:88483 發表于 2015-8-17 17:57 | 只看該作者
我覺得可以,利用輸入捕捉,前提是你要知道你計數是上升沿觸發還是下降沿觸發和上升沿都觸發。
回復

使用道具 舉報

11#
ID:88776 發表于 2015-8-23 23:14 | 只看該作者
太好了。。。多謝樓主。。樓主好人。
回復

使用道具 舉報

12#
ID:489281 發表于 2019-5-9 09:28 | 只看該作者
感謝樓下大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区在线观看视频 | 国产剧情一区 | 成年人黄色小视频 | 精品视频免费 | 国产在线一级片 | 久久精品 | 日本高清中文字幕 | 久久久久久久av麻豆果冻 | 国产在线观看不卡一区二区三区 | 青青草免费在线视频 | 亚洲视频在线一区 | 天天操夜夜操免费视频 | 精品中文视频 | 日韩精品一区中文字幕 | 波多野结衣二区 | 婷婷综合久久 | 国产精品久久久久一区二区三区 | 中文字幕国产 | 日韩一区二区三区视频在线播放 | 中文在线一区二区 | 国产欧美精品一区二区 | 中文成人在线 | 国产日韩视频 | 97国产精品 | 国产精品亚洲成在人线 | 91色视频在线 | 一区二区视频在线 | 国产精品3区| 一二三四在线视频观看社区 | 日韩在线免费 | 成人在线日韩 | 国产欧美在线观看 | 欧美三级视频在线观看 | 日韩在线 | 午夜免费视频 | 538在线精品 | 韩日中文字幕 | 久久99精品久久久 | 秋霞在线一区二区 | 亚洲v日韩v综合v精品v | 成人黄色在线 |