|
單片機(jī)學(xué)習(xí)第三課 對(duì)單片機(jī)的控制,其實(shí)就是對(duì)I/O口的控制,無(wú)論單片機(jī)對(duì)外界進(jìn)行何種控制,或接受外部的何種控制,都是通過(guò)I/O口進(jìn)行的。51單片機(jī)總共有P0、P1、P2、P3四個(gè)8位雙向輸入輸出端口,每個(gè)端口都有鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器。4個(gè)I/O端口都能作輸入輸出口用,其中P0和P2通常用于對(duì)外部存儲(chǔ)器的訪問(wèn)。 51系列單片機(jī)有4個(gè)I/O端口,每個(gè)端口都是8位準(zhǔn)雙向口,共占32根引腳。每個(gè)端口都包括一個(gè)鎖存器(即專用寄存器P0~P3)、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。通常把4個(gè)端口籠統(tǒng)地表示為P0~P3。 在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這4個(gè)端口的每一位都可以作為準(zhǔn)雙向通用I/O端口使用。在具有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,P2口作為高8位地址線,P0口分時(shí)作為低8位地址線和雙向數(shù)據(jù)總線。 51單片機(jī)4個(gè)I/O端口線路設(shè)計(jì)的非常巧妙,學(xué)習(xí)I/O端口邏輯電路,不但有利于正確合理地使用端口,而且會(huì)給設(shè)計(jì)單片機(jī)外圍邏輯電路有所啟發(fā)。 下面簡(jiǎn)單介紹一下輸入/輸出端口結(jié)構(gòu)。 1.P0口和P2的結(jié)構(gòu) 1.1 P0口的結(jié)構(gòu):下圖為P0口的某位P0.n(n=0~7)結(jié)構(gòu)圖,它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路及控制電路組成。從圖中可以看出,P0口既可以作為I/O用,也可以作為地址/數(shù)據(jù)線用。 1.2 P0口作為普通I/O口: ①輸出時(shí),CPU發(fā)出控制電平“ ② 輸入時(shí)----分讀引腳或讀鎖存器 讀引腳:由傳送指令(MOV)實(shí)現(xiàn); 下面一個(gè)緩沖器用于讀端口引腳數(shù)據(jù),當(dāng)執(zhí)行一條由端口輸入的指令時(shí),讀脈沖把該三態(tài)緩沖器打開,這樣端口引腳上的數(shù)據(jù)經(jīng)過(guò)緩沖器讀入到內(nèi)部總線。 讀鎖存器:有些指令 如:ANL P0,A稱為“讀-改-寫” 指令,需要讀鎖存器。上面一個(gè)緩沖器用于讀端口鎖存器數(shù)據(jù)。 **原因:如果此時(shí)該端口的負(fù)載恰是一個(gè)晶體管基極,且原端口輸出值為1,那么導(dǎo)通了的PN結(jié)會(huì)把端口引腳高電平拉低;若此時(shí)直接讀端口引腳信號(hào),將會(huì)把原輸出的“ 說(shuō)明: n P0口必須接上拉電阻; n 在讀信號(hào)之前數(shù)據(jù)之前,先要向相應(yīng)的鎖存器做寫1操作的I/O口稱為準(zhǔn)雙向口; n 三態(tài)輸入緩沖器的作用: n (ANL P0,A) 準(zhǔn)雙向口: 從圖中可以看出,在讀入端口數(shù)據(jù)時(shí),由于輸出驅(qū)動(dòng)FET并接在引腳上,如果T2導(dǎo)通,就會(huì)將輸入的高電平拉成低電平,產(chǎn)生誤讀。所以在端口進(jìn)行輸入操作前,應(yīng)先向端口鎖存器寫“ 2、P0作為地址/數(shù)據(jù)總線 在系統(tǒng)擴(kuò)展時(shí),P0端口作為地址/數(shù)據(jù)總線使用時(shí),分為: (1) P0引腳輸出地址/數(shù)據(jù)信息: CPU發(fā)出控制電平“ P0作為地址/數(shù)據(jù)總線----真正的雙向口 (2)P0引腳輸出地址/輸入數(shù)據(jù): 輸入信號(hào)是從引腳通過(guò)輸入緩沖器進(jìn)入內(nèi)部總線。此時(shí),CPU自動(dòng)使MUX向下,并向P0口寫“ 二、P2的內(nèi)部結(jié)構(gòu) 2.1 .P2口作為普通I/O口:CPU發(fā)出控制電平“ 輸出Q端,構(gòu)成一個(gè)準(zhǔn)雙向口。其功能與P1相同。 2.2 .P2口作為地址總線: 在系統(tǒng)擴(kuò)展片外程序存儲(chǔ)器擴(kuò)展數(shù)據(jù)存儲(chǔ)器且容量超過(guò)256B (用MOVX @DPTR指令)時(shí),CPU發(fā)出控制電平“ 三.P1口、P3口的內(nèi)部結(jié)構(gòu) ①P1口的一位的結(jié)構(gòu) 它由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路組成----準(zhǔn)雙向口。 ②P3的內(nèi)部結(jié)構(gòu) 一、作為通用I/O口與P1口類似----準(zhǔn)雙向口(W=1) 二、P3第二功能(Q=1) 此時(shí)引腳部分輸入(Q=1、W=1) ,部分輸出(Q=1、W輸出) 。 P3第二功能各引腳功能定義: P3.0:RXD串行口輸入 P3.1:TXD串行口輸出 P3.2:INT0外部中斷0輸入 P3.3:INT1外部中斷1輸入 P3.4:T0定時(shí)器0外部輸入 P3.5:T1定時(shí)器1外部輸入 P3.6:WR外部寫控制 P3.7:RD外部讀控制 綜上所述:當(dāng)P0作為I/O口使用時(shí),特別是作為輸出時(shí),輸出級(jí)屬于開漏電路,必須外接上拉電阻才會(huì)有高電平輸出;如果作為輸入,必須先向相應(yīng)的鎖存器寫“1”,才不會(huì)影響輸入電平。 當(dāng)CPU內(nèi)部控制信號(hào)為“1”時(shí),P0口作為地址/數(shù)據(jù)總線使用,這時(shí),P0口就無(wú)法再作為I/O口使用了。 P1、P2 和P3 口為準(zhǔn)雙向口, 在內(nèi)部差別不大, 但使用功能有所不同。 P1口是用戶專用 8 位準(zhǔn)雙向I/O口, 具有通用輸入/輸出功能, 每一位都能獨(dú)立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩斎敕绞綍r(shí), 該位的鎖存器必須寫入“ P2口是 8 位準(zhǔn)雙向I/O口。外接I/O設(shè)備時(shí), 可作為擴(kuò)展系統(tǒng)的地址總線, 輸出高8位地址, 與P0 口一起組成 16 位地址總線。 對(duì)于 8031 而言, P2 口一般只作為地址總線使用, 而不作為I/O線直接與外部設(shè)備相連。
下一課將實(shí)際動(dòng)手操作IO,最簡(jiǎn)單的是控制 |
|
|