色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
          通過(guò)前面示例的講解,已基本知道了單片機(jī)I/O端口的用法。為了更好、更深入地運(yùn)用好I/O端口,下面再來(lái)詳細(xì)討論一下AVR單片機(jī)ATMega16的端口結(jié)構(gòu)。

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

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

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

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

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

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


          關(guān)鍵詞: AVR單片機(jī)io輸入輸

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉