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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機i/o(輸入/輸出)端口詳解

          AVR單片機i/o(輸入/輸出)端口詳解

          作者: 時間:2016-12-01 來源:網絡 收藏
          通過前面示例的講解,已基本知道了單片機I/O端口的用法。為了更好、更深入地運用好I/O端口,下面再來詳細討論一下AVR單片機ATMega16的端口結構。

          輸入/輸出端口(I/O端口)是單片機所能依賴進行控制的唯一通道,如果把單片機內核比作人的大腦,那I/O端口就相當于人的五官和四肢,負責著信息的獲取和動作的執(zhí)行,如果沒有I/O端口單片機本身就變得毫無意義,因此很有必要來詳細了解它們的內部結構。ATMega16的端口為具有可選上拉電阻的雙向I/O端口,下面是其中某一位I/O口的內部結構圖(來自于Datasheet)。

          在上圖中,Pxn就是這一位的輸入/輸出端口,也就是單片機的某個外部引腳。它通過PORTxn寄存器和數據總線(DATA BUS)相連。前面示例中對PORTxn的賦值其實就是通過數據總線來寫這個寄存器實現的。在圖中還可以看到,在Pxn和PORTxn之間實際上還串有一個門控位,如果要讓PORTxn的結果輸出至Pxn,那這個門控位必須得打開,而該門控位的受控信號來自于DDxn(DDRx中的一位)寄存器。通過數據總線對該寄存器位寫1,就可打開門控位,讓輸出信號直接輸出至引腳Pxn。這也正是為什么單片機引腳要處于輸出狀態(tài)就必須要給DDRx方向寄存器賦值1的原因所在。如果給DDxn賦值0,則門控位斷開,引腳Pxn不能做為輸出,只能做為輸入。但輸入信號可以取自兩個地方,一個是直接從外部引腳Pxn來取(圖中的下半部分),實際上是把外部引腳的信號鎖存到PINxn寄存器中來讀??;另一個則是從輸出寄存器PORTxn來取(圖中門控位控制信號為RRx的地方)。一般稱“從外部引腳(PINxn)來取”為讀引腳,稱“從寄存器PORTxn來取”為讀端口寄存器。
          從圖中還可以看出,在引腳Pxn的上方,有一個受控于MOS管的上拉電阻。而MOS管又同時受到PUD位、DDxn位和PORTxn位的共同控制。當引腳做為輸入時(DDxn=0),在給PORTxn賦值1后,通過PUD就可以控制引腳是否使用上拉電阻。當PUD位為0時,上拉電阻有效,否則相反。PUD存在于寄存器SFIOR中的第2位,見下圖。

          下面幾個圖給出了以端口A為代表的三個寄存器配置的具體情況:

          從圖中可以看出,PORT和DDR兩個寄存器為可讀可寫的,而PIN寄存器為只讀的。對于寄存器中每一位的操作,在IAR開發(fā)環(huán)境中可以直接引用,這在第二個示例中已經闡述過了。下表給出了這幾個寄存器組合配置的具體情況:

          在使用I/O端口時還有幾點需要說明一下:
          1、作為通用數字I/O使用時,所有I/O端口都具有真正的讀――修改――寫的功能。
          2、不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平。
          3、讀取軟件賦予的引腳電平時,需要在賦值指令和讀取指令之間至少有一個時鐘周期的間隔(可插入一條nop指令)。
          4、如果某些引腳未被使用,建議還是給這些引腳賦予一個確定電平。
          5、復位時,上拉電阻將被禁用,各引腳為高阻態(tài)。
          6、穩(wěn)定狀態(tài)條件下每個I/O端口可以承受的拉電流或灌電流為:VCC=5V時為20mA、VCC=3V時為10mA。
          7、所有端口拉電流或灌電流的總和不能超過400mA,且端口A、B、C、D各自的拉電流或灌電流總和不能超過200mA(在DIP封裝方式下,端口B、C、D可達300mA)。
          除了通用數字I/O功能之外,大多數端口引腳都還具有第二功能,這也就是所謂的端口復用。因為單片機的引腳畢竟是有限的,而且在大多數時候做為通用數字I/O口的引腳不一定全部用完,所以不必為單片機再實現其它功能而單獨制作引腳。比如A/D(模/數)轉換,就可不必再單獨為單片機做輸入引腳,而直接把這個功能附屬在PORTA的I/O口上就可以了。這樣PORTA的八個引腳就有了第二功能,即做為A/D轉換的信號輸入端。當然,在某個時刻只能使用其中的一種功能,不可能兩種功能同時使用,所以才稱之為復用。這里要注意,所謂的第二功能只是一種說法,有些單片機的引腳復用的很厲害,可以實現兩種以上的功能。
          要實現引腳的第二功能,其端口內部結構較為復雜,這里就不再進行深入探討了,以下僅給出ATMega16單片機引腳復用的第二功能。

          要實現端口的第二功能,當然還必須得有相關的寄存器來進行選擇控制。不同的第二功能所配置的寄存器不同,配置方式也不一樣,因此要根據實際情況來確定。引腳第二功能的具體使用會在后續(xù)的相關討論中進行詳細講述


          評論


          技術專區(qū)

          關閉
          看屁屁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); })();