姓名:郝津銳??? 學(xué)號(hào):19020100179??? 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自:https://blog.csdn.net/zi_yang_/article/details/76767960
【嵌牛導(dǎo)讀】本文介紹了單片機(jī)中的IO口與其基本組成、工作過(guò)程
【嵌牛鼻子】單片機(jī)IO口
【嵌牛提問(wèn)】單片機(jī)的IO是什么锻梳,都有那些種類(lèi)骇笔、功能
【嵌牛正文】
51單片機(jī)總的io分為:電平可變化的io口和VCC著角、GND兩類(lèi)陨亡,其中電平可變化的io有P0口、P1口趁桃、P2口踊沸、P3口、P4口权纤、P5口钓简。而所謂的P0.0可以理解為屬于P0口,P0.0稱(chēng)為P0.0端口汹想,如果需要定義一個(gè)端口外邓,可使用 sbit Sftclk = P0^0,這樣就申明了一個(gè)端口P1.6為Sftclk古掏,注意這里是端口而不是口损话。使用口時(shí)可用 P0 = 0xFF,這樣就可以讓P0口的所有端口置成1槽唾。
P0端口的結(jié)構(gòu)及工作原理:P0端口由鎖存器丧枪、輸入緩沖器光涂、切換開(kāi)關(guān)、一個(gè)與非門(mén)豪诲、一個(gè)與門(mén)及場(chǎng)效應(yīng)管驅(qū)動(dòng)電路構(gòu)成顶捷。
(1)D鎖存器:構(gòu)成一個(gè)鎖存器,通常要用一個(gè)時(shí)序電路屎篱,時(shí)序的單元電路在學(xué)數(shù)字電路時(shí)我們已知道服赎,一個(gè)觸發(fā)器可以保存一位的二進(jìn)制數(shù),在51單片機(jī)的32根I/O口線中都是用一個(gè)D觸發(fā)器來(lái)構(gòu)成鎖存器的交播。對(duì)于D觸發(fā)器來(lái)講重虑,當(dāng)D輸入端有一個(gè)輸入信號(hào),如果這時(shí)控制端CP沒(méi)有信號(hào)(也就是時(shí)序脈沖沒(méi)有到來(lái))秦士,這時(shí)輸入端D的數(shù)據(jù)是無(wú)法傳輸?shù)捷敵龆薗及反向輸出端Q非的缺厉。如果時(shí)序控制端CP的時(shí)序脈沖一旦到了,這時(shí)D端輸入的數(shù)據(jù)就會(huì)傳輸?shù)絈及Q非端隧土。數(shù)據(jù)傳送過(guò)來(lái)后提针,當(dāng)CP時(shí)序控制端的時(shí)序信號(hào)消失了,這時(shí)曹傀,輸出端還會(huì)保持著上次輸入端D的數(shù)據(jù)辐脖。如果下一個(gè)時(shí)序控制脈沖信號(hào)來(lái)了,這時(shí)D端的數(shù)據(jù)才再次傳送到Q端皆愉,從而改變Q端的狀態(tài)嗜价。
(2)輸入緩沖器:在P0口中,有兩個(gè)三態(tài)的緩沖器幕庐,我們知道三態(tài)門(mén)有三個(gè)狀態(tài)久锥,即在其的輸出端可以是高電平、低電平异剥,同時(shí)還有一種就是高阻狀態(tài)(或稱(chēng)為禁止?fàn)顟B(tài))瑟由,要讀取D鎖存器輸出端Q的數(shù)據(jù),那就要使讀鎖存器的這個(gè)緩沖器的三態(tài)控制端有效冤寿。
(3)多路開(kāi)關(guān):在51單片機(jī)中错妖,當(dāng)內(nèi)部的存儲(chǔ)器夠用(也就是不需要外擴(kuò)展存儲(chǔ)器時(shí),這里講的存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器及程序存儲(chǔ)器)時(shí)疚沐,P0口可以作為通用的輸入輸出端口使用,對(duì)于8031(內(nèi)部沒(méi)有ROM)的單片機(jī)或者編寫(xiě)的程序超過(guò)了單片機(jī)內(nèi)部的存儲(chǔ)器容量潮模,需要外擴(kuò)存儲(chǔ)器時(shí)亮蛔,P0口就作為‘地址/數(shù)據(jù)’總線使用。
(4)輸出驅(qū)動(dòng):P0口的輸出是由兩個(gè)MOS管組成的推拉式結(jié)構(gòu)擎厢,也就是說(shuō)究流,這兩個(gè)MOS管一次只能導(dǎo)通一個(gè)辣吃,當(dāng)V1導(dǎo)通時(shí),V2就截止芬探,當(dāng)V2導(dǎo)通時(shí)神得,V1截止。
1偷仿、作為I/O端口使用時(shí)的工作原理:
P0口作為I/O端口使用時(shí)哩簿,多路開(kāi)關(guān)的控制信號(hào)為0(低電平),多路開(kāi)關(guān)的控制信號(hào)同時(shí)與與門(mén)的一個(gè)輸入端是相接的酝静,我們知道與門(mén)的邏輯特點(diǎn)是“全1出1节榜,有0出0”那么控制信號(hào)是0的話,這時(shí)與門(mén)輸出的也是一個(gè)0(低電平)别智,與讓的輸出是0宗苍,V1管就截止,在多路控制開(kāi)關(guān)的控制信號(hào)是0(低電平)時(shí)薄榛,多路開(kāi)關(guān)是與鎖存器的Q非端相接的(即P0口作為I/O口線使用)讳窟。
2、P0口用作I/O口線敞恋,其由數(shù)據(jù)總線向引腳輸出的工作過(guò)程:
當(dāng)寫(xiě)鎖存器信號(hào)CP 有效丽啡,數(shù)據(jù)總線的信號(hào)→鎖存器的輸入端D→鎖存器的反向輸出Q非端→多路開(kāi)關(guān)→V2管的柵極→V2的漏極到輸出端P0.X。由于當(dāng)多路開(kāi)關(guān)的控制信號(hào)為低電平0時(shí)耳舅,與門(mén)輸出為低電平碌上,V1管是截止的,所以作為輸出口時(shí)浦徊,P0是漏極開(kāi)路輸出馏予,類(lèi)似于OC門(mén),當(dāng)驅(qū)動(dòng)上接電流負(fù)載時(shí)盔性,需要外接上拉電阻霞丧。
3、P0口用作I/O口線冕香,其由引腳向內(nèi)部數(shù)據(jù)總線輸入(即輸入狀態(tài)Input)的工作過(guò)程:
數(shù)據(jù)輸入時(shí)(讀P0口)有兩種情況:(1)讀引腳:讀芯片引腳上的數(shù)據(jù)蛹尝,讀引腳數(shù)時(shí),讀引腳緩沖器打開(kāi)(即三態(tài)緩沖器的控制端要有效)悉尾,通過(guò)內(nèi)部數(shù)據(jù)總線輸入突那。(2)讀鎖存器:通過(guò)打開(kāi)讀鎖存器三態(tài)緩沖器讀取鎖存器輸出端Q的狀態(tài)。
在輸入狀態(tài)下构眯,從鎖存器和從引腳上讀來(lái)的信號(hào)一般是一致的愕难,但也有例外。例如,當(dāng)從內(nèi)部總線輸出低電平后猫缭,鎖存器Q=0葱弟,Q非=1,場(chǎng)效應(yīng)管T2開(kāi)通猜丹,端口線呈低電平狀態(tài)芝加。此時(shí)無(wú)論端口線上外接的信號(hào)是低電乎還是高電平,從引腳讀入單片機(jī)的信號(hào)都是低電平射窒,因而不能正確地讀入端口引腳上的信號(hào)围橡。又如期奔,當(dāng)從內(nèi)部總線輸出高電平后蟀拷,鎖存器Q=1志衍,Q非=0,場(chǎng)效應(yīng)管T2截止弊予。如外接引腳信號(hào)為低電平祥楣,從引腳上讀入的信號(hào)就與從鎖存器讀入的信號(hào)不同。為此汉柒,8051單片機(jī)在對(duì)端口P0一P3的輸入操作上误褪,有如下約定:凡屬于讀-修改-寫(xiě)方式的指令,從鎖存器讀入信號(hào)碾褂,其它指令則從端口引腳線上讀入信號(hào)兽间。讀-修改-寫(xiě)指令的特點(diǎn)是,從端口輸入(讀)信號(hào)正塌,在單片機(jī)內(nèi)加以運(yùn)算(修改)后嘀略,再輸出(寫(xiě))到該端口上。
————————————————
版權(quán)聲明:本文為CSDN博主「zi_yang_」的原創(chuàng)文章乓诽,遵循CC 4.0 BY-SA版權(quán)協(xié)議帜羊,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zi_yang_/article/details/76767960