<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 51單片機(jī)邊沿觸發(fā)中斷響應(yīng)時刻的測量

          51單片機(jī)邊沿觸發(fā)中斷響應(yīng)時刻的測量

          ——
          作者:桂林電子科技大學(xué) 王朋 李智 時間:2007-04-16 來源:中采網(wǎng) 收藏
          MCS系列屬于8位,它是Intel公司繼MCS48系列的成功設(shè)計之后,于1980年推出的產(chǎn)品。由于MCS51系列具有很強(qiáng)的片內(nèi)功能和指令系統(tǒng),因而使的應(yīng)用發(fā)生了一個飛躍,這個系列的產(chǎn)品也很快成為世界上第二代的標(biāo)準(zhǔn)控制器。51系列單片機(jī)有5個中斷源,其中有2個是外部輸入中斷源INT0和INT1??捎芍袛嗫刂萍拇嫫鱐CON的IT1(TCON.2)和IT0(TCON.1)分別控制外部輸入中斷1和中斷0的中斷觸發(fā)方式。若為0,則外部輸入中斷控制為電平觸發(fā)方式;若為1,則控制為邊沿觸發(fā)方式。這里是下降沿觸發(fā)中斷。

          1  問題的引出

          幾乎國內(nèi)所有的單片機(jī)資料對單片機(jī)邊沿觸發(fā)中斷的響應(yīng)時刻方面的定義都是不明確的或者是錯誤的。例如文獻(xiàn)[1]中關(guān)于邊沿觸發(fā)時刻的描述為“對于脈沖觸發(fā)方式(即邊沿觸發(fā)方式)要檢測兩次電平,若前一次為高電平,后一次為低電平,則表示檢測到了負(fù)跳變的有效中斷請求信號”,但實際情況卻并非如此。

          我們知道,單片機(jī)外部輸入的中斷觸發(fā)電平是TTL電平。對于TTL電平,TTL邏輯門輸出高電平的允許范圍為2.4~5 V,其標(biāo)稱值

          為3.6 V;輸出低電平的允許范圍為0~0.7 V,其標(biāo)稱值為0.3 V[2],在0.7 V與2.4 V之間的是非高非低的中間電平。

          這樣,在實際應(yīng)用中,假設(shè)單片機(jī)外部中斷引腳INT0輸入一路由+5 V下降到0 V的下降沿信號,單片機(jī)在某個時鐘周期采樣INT0引腳得到2.4 V的高電平;而在下一個時鐘周期到來進(jìn)行采樣時,由于實際的外部輸入中斷觸發(fā)信號由高電平變?yōu)榈碗娖酵枰欢ǖ臅r間,因此,檢測到的可能并非真正的低電平(小于0.7 V),而是處于低電平與高電平之間的某一中間電平,即0.7~2.4 V的某一電平。對于這種情況,單片機(jī)是否會依然置位中斷觸發(fā)標(biāo)志從而引發(fā)中斷呢?關(guān)于這一點,國內(nèi)的絕大部分教材以及單片機(jī)生產(chǎn)商提供的器件資料都沒有給予準(zhǔn)確的定義,但在實際應(yīng)用中這種情況確實會碰到。

          以美國Analog公司生產(chǎn)的運算放大器芯片AD708為例,其轉(zhuǎn)換速率(slew rate)為0.3 V/μs,在由AD708芯片組成的比較器電路中,其輸出方波的下降沿由2.4 V下降到0.7 V,所需時間約為: (2.4 V-0.7 V)/0.3V



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();