第六章mcs-51單片機(jī)IO端口(1)_第1頁
第六章mcs-51單片機(jī)IO端口(1)_第2頁
第六章mcs-51單片機(jī)IO端口(1)_第3頁
第六章mcs-51單片機(jī)IO端口(1)_第4頁
第六章mcs-51單片機(jī)IO端口(1)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第六章mcs-51單片機(jī)IO端口(1) 第六章第六章 MCS-51MCS-51的的I/0I/0 第六章mcs-51單片機(jī)IO端口(1) 單片機(jī)單片機(jī)I/O口的使用口的使用 n對單片機(jī)的控制,其實(shí)就是對對單片機(jī)的控制,其實(shí)就是對I/O口的控制,無論單片機(jī)口的控制,無論單片機(jī) 對外界進(jìn)行何種控制,或接受外部的控制,都是通過對外界進(jìn)行何種控制,或接受外部的控制,都是通過I/O 口進(jìn)行的??谶M(jìn)行的。51單片機(jī)總共有單片機(jī)總共有P0、P1、P2、P3四個四個8位雙位雙 向輸入輸出端口,每個端口都有鎖存器、輸出驅(qū)動器和輸向輸入輸出端口,每個端口都有鎖存器、輸出驅(qū)動器和輸 入緩沖器。入緩沖器。4個個I/O端

2、口都能作輸入輸出口用,其中端口都能作輸入輸出口用,其中P0和和 P2通常用于對外部存儲器的訪問。通常用于對外部存儲器的訪問。 第六章mcs-51單片機(jī)IO端口(1) 5151系列單片機(jī)有系列單片機(jī)有4 4個個I/OI/O端口,每個端口都是端口,每個端口都是8 8位準(zhǔn)雙向位準(zhǔn)雙向 口,共占口,共占3232根引腳。每個端口都包括一個鎖存器根引腳。每個端口都包括一個鎖存器( (即專用寄即專用寄 存器存器P0P0P3)P3)、一個輸出驅(qū)動器和輸入緩沖器。通常把、一個輸出驅(qū)動器和輸入緩沖器。通常把4 4個端個端 口籠統(tǒng)地表示為口籠統(tǒng)地表示為P0P0P3P3。 在無片外擴(kuò)展存儲器的系統(tǒng)中,這在無片外擴(kuò)展存

3、儲器的系統(tǒng)中,這4個端口的每一位都個端口的每一位都 可以作為準(zhǔn)雙向通用可以作為準(zhǔn)雙向通用I/O端口使用。在具有片外擴(kuò)展存儲器的端口使用。在具有片外擴(kuò)展存儲器的 系統(tǒng)中,系統(tǒng)中,P2口作為高口作為高8位地址線,位地址線,P0口分時(shí)作為低口分時(shí)作為低8位地址位地址 線和雙向數(shù)據(jù)總線。線和雙向數(shù)據(jù)總線。 51單片機(jī)單片機(jī)4個個I/O端口線路設(shè)計(jì)的非常巧妙,學(xué)習(xí)端口線路設(shè)計(jì)的非常巧妙,學(xué)習(xí)I/O端口端口 邏輯電路,不但有利于正確合理地使用端口,而且會給設(shè)計(jì)邏輯電路,不但有利于正確合理地使用端口,而且會給設(shè)計(jì) 單片機(jī)外圍邏輯電路有所啟發(fā)。單片機(jī)外圍邏輯電路有所啟發(fā)。 第六章mcs-51單片機(jī)IO端口(1

4、) 下面簡單介紹一下輸入下面簡單介紹一下輸入/ /輸出端口結(jié)構(gòu)。輸出端口結(jié)構(gòu)。 6.1 P06.1 P0口和口和P2P2的結(jié)構(gòu)的結(jié)構(gòu) 第六章mcs-51單片機(jī)IO端口(1) 下圖為下圖為P0P0口的某位口的某位P0.n(n=0P0.n(n=07)7)結(jié)構(gòu)圖,它由一個輸出鎖結(jié)構(gòu)圖,它由一個輸出鎖 存器、兩個三態(tài)輸入緩沖器、一個輸出驅(qū)動電路和一個輸出控存器、兩個三態(tài)輸入緩沖器、一個輸出驅(qū)動電路和一個輸出控 制電路組成。輸出驅(qū)動電路由一對制電路組成。輸出驅(qū)動電路由一對FETFET(場效應(yīng)管)組成,其(場效應(yīng)管)組成,其 工作狀態(tài)受輸出控制電路的控制,后者包括:工作狀態(tài)受輸出控制電路的控制,后者包括:

5、1 1個與門、個與門、1 1個反個反 相器和相器和1 1個模擬轉(zhuǎn)換開關(guān)(個模擬轉(zhuǎn)換開關(guān)(MUXMUX)。)。 D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 一、一、P0P0口的結(jié)構(gòu)口的結(jié)構(gòu) 第六章mcs-51單片機(jī)IO端口(1) 1 1、P0P0口作為普通口作為普通I/OI/O口口 輸出時(shí)輸出時(shí) 模擬轉(zhuǎn)換開關(guān)的位置由來自模擬轉(zhuǎn)換開關(guān)的位置由來自CPU的控制信號決定,當(dāng)?shù)目刂菩盘枦Q定,當(dāng) 控制信號為控制信號為0(低電平)時(shí),開關(guān)處于圖示位置,它把輸出(低電平)時(shí)

6、,開關(guān)處于圖示位置,它把輸出 級與鎖存器的級與鎖存器的Q端接通。同時(shí),因?yàn)榕c門輸出為端接通。同時(shí),因?yàn)榕c門輸出為0,輸出,輸出 級中的上拉級中的上拉FET處于截止?fàn)顟B(tài),因此輸出級是漏極開路的處于截止?fàn)顟B(tài),因此輸出級是漏極開路的 開漏電路。這時(shí)開漏電路。這時(shí)P0口可作一般的口可作一般的I/O口用??谟?。 D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 第六章mcs-51單片機(jī)IO端口(1) nCPU向端口輸出數(shù)據(jù)時(shí),寫脈沖加在觸發(fā)器時(shí)鐘端向端口輸出數(shù)據(jù)時(shí),寫脈沖加

7、在觸發(fā)器時(shí)鐘端CLK上,這上,這 樣與內(nèi)部總線相連的樣與內(nèi)部總線相連的D端的數(shù)據(jù)取反后就出現(xiàn)在端的數(shù)據(jù)取反后就出現(xiàn)在Q端上,又經(jīng)輸端上,又經(jīng)輸 出出FET反相,在反相,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。P0 口的輸出級可以驅(qū)動口的輸出級可以驅(qū)動8個個LS TTL輸入,但在開漏狀態(tài)下,為了驅(qū)輸入,但在開漏狀態(tài)下,為了驅(qū) 動動NMOS或其它拉流負(fù)載,需要外接上拉電阻?;蚱渌髫?fù)載,需要外接上拉電阻。 D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1

8、 T2 P0P0口口 引腳引腳 第六章mcs-51單片機(jī)IO端口(1) 輸入時(shí)輸入時(shí)-分讀引腳或讀鎖存器分讀引腳或讀鎖存器 讀引腳:讀引腳:由傳送指令由傳送指令(MOVMOV)實(shí)現(xiàn);實(shí)現(xiàn); n端口中的端口中的2個三態(tài)緩沖器用于讀操作。一個緩沖器用于直接讀個三態(tài)緩沖器用于讀操作。一個緩沖器用于直接讀 端口引腳處的數(shù)據(jù),當(dāng)執(zhí)行一般由端口輸入的指令時(shí),讀脈沖端口引腳處的數(shù)據(jù),當(dāng)執(zhí)行一般由端口輸入的指令時(shí),讀脈沖 把圖中下面一個三態(tài)緩沖器打開,這樣端口上的數(shù)據(jù)將經(jīng)過緩把圖中下面一個三態(tài)緩沖器打開,這樣端口上的數(shù)據(jù)將經(jīng)過緩 沖器送至內(nèi)部總線。沖器送至內(nèi)部總線。 D Q CLK QMUX P0.n 讀鎖存

9、器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 第六章mcs-51單片機(jī)IO端口(1) D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 輸入時(shí)輸入時(shí)-分讀引腳或讀鎖存器分讀引腳或讀鎖存器 圖中上面一個緩沖器并不直接讀取端口引腳上的數(shù)據(jù),而圖中上面一個緩沖器并不直接讀取端口引腳上的數(shù)據(jù),而 是讀取鎖存器是讀取鎖存器Q端的數(shù)據(jù)。端的數(shù)據(jù)。Q端與引腳處的數(shù)據(jù)是一致的。結(jié)構(gòu)端與引

10、腳處的數(shù)據(jù)是一致的。結(jié)構(gòu) 上這樣安排是為了適應(yīng)所謂上這樣安排是為了適應(yīng)所謂“讀讀-修改修改-寫寫”類指令的需要。這類類指令的需要。這類 指令的特點(diǎn)是:先讀口,隨之可能對讀入的數(shù)據(jù)進(jìn)行修改,然指令的特點(diǎn)是:先讀口,隨之可能對讀入的數(shù)據(jù)進(jìn)行修改,然 后再寫到端口上。后再寫到端口上。 第六章mcs-51單片機(jī)IO端口(1) n例如邏輯與指令:例如邏輯與指令:ANL P0,A就屬于這類指令。此指令先把就屬于這類指令。此指令先把 P0上的數(shù)據(jù)讀入上的數(shù)據(jù)讀入CPU,隨之與累加器,隨之與累加器A內(nèi)的數(shù)據(jù)按位進(jìn)行邏輯內(nèi)的數(shù)據(jù)按位進(jìn)行邏輯 與操作,最后再把與的結(jié)果送回與操作,最后再把與的結(jié)果送回P0口。這類指

11、令同樣適用于口。這類指令同樣適用于 P1P3口???。 n對于對于“讀讀-修改修改-寫寫”指令,不直接讀引腳上的數(shù)據(jù)而讀鎖存器指令,不直接讀引腳上的數(shù)據(jù)而讀鎖存器 上的數(shù)據(jù),是為了避免錯讀引腳上電平的可能性。例如,若用上的數(shù)據(jù),是為了避免錯讀引腳上電平的可能性。例如,若用 一根口線去驅(qū)動一個晶體管的基極,當(dāng)向此口線寫一根口線去驅(qū)動一個晶體管的基極,當(dāng)向此口線寫1時(shí),晶體管時(shí),晶體管 導(dǎo)通,并把引腳上的電平拉低。這時(shí)若從引腳上讀取數(shù)據(jù),會導(dǎo)通,并把引腳上的電平拉低。這時(shí)若從引腳上讀取數(shù)據(jù),會 把此數(shù)據(jù)(應(yīng)為把此數(shù)據(jù)(應(yīng)為1)錯讀為)錯讀為0,若從鎖存器,若從鎖存器Q端讀取,則可以得端讀取,則可以得

12、 到正確的數(shù)據(jù)。到正確的數(shù)據(jù)。 第六章mcs-51單片機(jī)IO端口(1) D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 n準(zhǔn)雙向口:從圖中結(jié)構(gòu)看,引腳上的外部信號既加在三態(tài)緩準(zhǔn)雙向口:從圖中結(jié)構(gòu)看,引腳上的外部信號既加在三態(tài)緩 沖器的輸入端上,又加在輸出級沖器的輸入端上,又加在輸出級FET2的漏極上,若此的漏極上,若此FET2 是導(dǎo)通的(相當(dāng)于曾輸出鎖存過數(shù)據(jù)是導(dǎo)通的(相當(dāng)于曾輸出鎖存過數(shù)據(jù)0),則引腳上的電位始),則引腳上的電位始 終被鉗位在終被鉗位在0電平上

13、(除非外部信號源有極大的負(fù)載能力),電平上(除非外部信號源有極大的負(fù)載能力), 輸入數(shù)據(jù)不可能正確地讀入。因此輸入數(shù)據(jù)不可能正確地讀入。因此P0口是一個準(zhǔn)雙向口,即口是一個準(zhǔn)雙向口,即 在輸入數(shù)據(jù)時(shí),應(yīng)先把口置在輸入數(shù)據(jù)時(shí),應(yīng)先把口置1,也就是鎖存器的,也就是鎖存器的Q為為0,這樣,這樣 使輸出級的使輸出級的2個個FET都截止,引腳處于懸浮狀態(tài),可作高阻抗都截止,引腳處于懸浮狀態(tài),可作高阻抗 輸入。這就是所謂的準(zhǔn)雙向口。輸入。這就是所謂的準(zhǔn)雙向口。 第六章mcs-51單片機(jī)IO端口(1) n當(dāng)當(dāng)P0口作為地址口作為地址/數(shù)據(jù)總線使用時(shí),可以分為兩種情況。一種情況數(shù)據(jù)總線使用時(shí),可以分為兩種情況

14、。一種情況 是從是從P0輸出地址或數(shù)據(jù),這時(shí)輸出地址或數(shù)據(jù),這時(shí)CPU發(fā)出的控制信號應(yīng)為高電平發(fā)出的控制信號應(yīng)為高電平1, 轉(zhuǎn)換開關(guān)把反相器輸出端與下拉轉(zhuǎn)換開關(guān)把反相器輸出端與下拉FET接通,同時(shí)與門開鎖。輸出的接通,同時(shí)與門開鎖。輸出的 地址或數(shù)據(jù)信號即通過與門去驅(qū)動上拉地址或數(shù)據(jù)信號即通過與門去驅(qū)動上拉FET,又通過反相器去驅(qū)動,又通過反相器去驅(qū)動 下拉下拉FET。另一種情況是從。另一種情況是從P0輸入數(shù)據(jù),這時(shí)信號仍應(yīng)從輸入緩沖輸入數(shù)據(jù),這時(shí)信號仍應(yīng)從輸入緩沖 器進(jìn)入內(nèi)部總線。器進(jìn)入內(nèi)部總線。 D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引

15、腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 2 2、P0P0作為地址作為地址/ /數(shù)據(jù)總線數(shù)據(jù)總線 第六章mcs-51單片機(jī)IO端口(1) P0P0引腳輸出地址引腳輸出地址/ /輸入數(shù)據(jù)輸入數(shù)據(jù) 輸入信號是從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。輸入信號是從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。 此時(shí),此時(shí),CPUCPU自動使自動使MUXMUX向下,并向向下,并向P0P0口寫口寫“1 1”,“讀引腳讀引腳”控制控制 信信 號有效,下面的緩沖器打開,外部數(shù)據(jù)讀入內(nèi)部總線。號有效,下面的緩沖器打開,外部數(shù)據(jù)讀入內(nèi)部總線。 2 2、P0P0作為地址作為地址/ /數(shù)據(jù)總

16、線數(shù)據(jù)總線 D Q CLK QMUX P0.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址/ /數(shù)據(jù)數(shù)據(jù) 控制控制 VCC T1 T2 P0P0口口 引腳引腳 第六章mcs-51單片機(jī)IO端口(1) n綜上所述,綜上所述,P0口既可以作為地址口既可以作為地址/數(shù)據(jù)總線使用,又可以數(shù)據(jù)總線使用,又可以 作為通用作為通用I/O口用;用作輸出口時(shí),輸出級屬于漏極開路,口用;用作輸出口時(shí),輸出級屬于漏極開路, 在驅(qū)動在驅(qū)動nmos電路時(shí)應(yīng)外接上拉電阻;用作輸入口時(shí),應(yīng)電路時(shí)應(yīng)外接上拉電阻;用作輸入口時(shí),應(yīng) 先向鎖存器寫先向鎖存器寫1,這時(shí)輸出級的,這時(shí)輸出級的2個個F

17、ET都截止,可作高阻都截止,可作高阻 抗輸入。當(dāng)抗輸入。當(dāng)P0口作地址口作地址/數(shù)據(jù)總線使用時(shí),就不能再把它數(shù)據(jù)總線使用時(shí),就不能再把它 當(dāng)通用當(dāng)通用I/O口使用??谑褂?。 第六章mcs-51單片機(jī)IO端口(1) 二、二、P2P2的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 1.P21.P2口作為普通口作為普通I/OI/O口口 D Q CLK QMUX P2.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址控制控制 VCC R T P2口引 腳 nP2口的位結(jié)構(gòu)如圖,它內(nèi)部有上拉電阻。在結(jié)構(gòu)上,口的位結(jié)構(gòu)如圖,它內(nèi)部有上拉電阻。在結(jié)構(gòu)上,P2口比口比 P1口多了一個輸出轉(zhuǎn)換控制部分。當(dāng)

18、轉(zhuǎn)換開關(guān)(口多了一個輸出轉(zhuǎn)換控制部分。當(dāng)轉(zhuǎn)換開關(guān)(MUX)與鎖存)與鎖存 器的器的Q端接通時(shí),端接通時(shí),P2口作通用的口作通用的I/O口用,是一個準(zhǔn)雙向口??谟?,是一個準(zhǔn)雙向口。 第六章mcs-51單片機(jī)IO端口(1) 2.P22.P2口作為地址總線口作為地址總線 n當(dāng)系統(tǒng)中接有外部存儲器時(shí),當(dāng)系統(tǒng)中接有外部存儲器時(shí),P2口可用于輸出高口可用于輸出高8位地址,這位地址,這 時(shí)在時(shí)在CPU控制下,轉(zhuǎn)換開關(guān)與地址線接通。在外接程序存儲器的控制下,轉(zhuǎn)換開關(guān)與地址線接通。在外接程序存儲器的 系統(tǒng)中,由于訪問外部存儲器的操作連續(xù)不斷,系統(tǒng)中,由于訪問外部存儲器的操作連續(xù)不斷,P2口不斷送出口不斷送出 高

19、高8位地址,故這時(shí)位地址,故這時(shí)P2口不可能再作通用口不可能再作通用I/O口使用??谑褂谩?D Q CLK QMUX P2.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 地址地址控制控制 VCC R T P2口引 腳 第六章mcs-51單片機(jī)IO端口(1) n在不接外部程序存儲器而接有外部數(shù)據(jù)存儲器的系統(tǒng)中,情況有所不在不接外部程序存儲器而接有外部數(shù)據(jù)存儲器的系統(tǒng)中,情況有所不 同。若外接數(shù)據(jù)存儲器的容量為同。若外接數(shù)據(jù)存儲器的容量為256B,則可以使用,則可以使用MOVXRi類指類指 令由令由P0口送出口送出8位地址,位地址,P2口引腳上的內(nèi)容,在整個訪外期間,不會

20、口引腳上的內(nèi)容,在整個訪外期間,不會 改變,故改變,故P2口仍可作通用口仍可作通用I/O口。若外接存儲器容量較大,需用口。若外接存儲器容量較大,需用 MOVXDPTR類指令由類指令由P0和和P2口送出口送出16位地址,在讀寫周期內(nèi),位地址,在讀寫周期內(nèi), P2口引腳上將保持地址信息,但是從圖示的結(jié)構(gòu)可知,輸出地址時(shí),口引腳上將保持地址信息,但是從圖示的結(jié)構(gòu)可知,輸出地址時(shí), 并不要求并不要求P2鎖存器鎖存鎖存器鎖存1,鎖存器的內(nèi)容也不會在送地址的過程中改,鎖存器的內(nèi)容也不會在送地址的過程中改 變,故訪問外部數(shù)據(jù)存儲器周期結(jié)束后,變,故訪問外部數(shù)據(jù)存儲器周期結(jié)束后,P2鎖存器的內(nèi)容又會重現(xiàn)在鎖存

21、器的內(nèi)容又會重現(xiàn)在 引腳上。這樣根據(jù)訪問外部數(shù)據(jù)存儲器的頻繁程度,引腳上。這樣根據(jù)訪問外部數(shù)據(jù)存儲器的頻繁程度,P2口仍可在一定口仍可在一定 限度內(nèi)作一般限度內(nèi)作一般I/O口使用。在外部數(shù)據(jù)存儲器容量不太大的情況下,口使用。在外部數(shù)據(jù)存儲器容量不太大的情況下, 也可以從軟件上設(shè)法,只利用也可以從軟件上設(shè)法,只利用P1P3口中的某幾根口線送高口中的某幾根口線送高8位地址,位地址, 而保留而保留P2中的部分或全部口線作通用中的部分或全部口線作通用I/O口用口用 第六章mcs-51單片機(jī)IO端口(1) 6.2 P16.2 P1口、口、P3P3口的內(nèi)部結(jié)構(gòu)口的內(nèi)部結(jié)構(gòu) P1P1口的一位的結(jié)構(gòu)口的一位的

22、結(jié)構(gòu) nP1口也是一個準(zhǔn)雙向口,用作輸入時(shí),口鎖存器必須為口也是一個準(zhǔn)雙向口,用作輸入時(shí),口鎖存器必須為 “1”。它的。它的8位引出線位引出線P1.7P1.0能獨(dú)立地用作輸入線或輸出能獨(dú)立地用作輸入線或輸出 線。線。P1口的每一位均由鎖存器、輸出驅(qū)動器和三態(tài)緩沖器組口的每一位均由鎖存器、輸出驅(qū)動器和三態(tài)緩沖器組 成,其結(jié)構(gòu)如圖所示。成,其結(jié)構(gòu)如圖所示。 D QD Q CLK QCLK Q P1.nP1.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 VCC R T T P1口引 腳 第六章mcs-51單片機(jī)IO端口(1) nP1口的位鎖存器由口的位鎖存器由D觸發(fā)器組成。

23、在觸發(fā)器組成。在CPU的的“寫鎖存器寫鎖存器”信號驅(qū)動下,信號驅(qū)動下, 將內(nèi)部總線上的一位數(shù)據(jù)寫入鎖存器中,經(jīng)輸出驅(qū)動器出現(xiàn)在輸出線將內(nèi)部總線上的一位數(shù)據(jù)寫入鎖存器中,經(jīng)輸出驅(qū)動器出現(xiàn)在輸出線 上。鎖存器的上。鎖存器的Q端反饋到通往內(nèi)部總線的三態(tài)輸入緩沖器的輸入端,端反饋到通往內(nèi)部總線的三態(tài)輸入緩沖器的輸入端, 以響應(yīng)以響應(yīng)CPU的的“讀鎖存器讀鎖存器”信號,把鎖存器的內(nèi)容讀入內(nèi)部總線上。信號,把鎖存器的內(nèi)容讀入內(nèi)部總線上。 在響應(yīng)在響應(yīng)CPU“讀引腳讀引腳”信號時(shí),則將引腳上的信息讀至內(nèi)部總線。但信號時(shí),則將引腳上的信息讀至內(nèi)部總線。但 是在是在“讀引腳讀引腳”即輸入之前,應(yīng)先將即輸入之前,

24、應(yīng)先將“1”寫入鎖存器,使輸出驅(qū)動器寫入鎖存器,使輸出驅(qū)動器 的場效應(yīng)管的場效應(yīng)管T截止,引腳由內(nèi)部上拉電阻拉成了高電平(輸出截止,引腳由內(nèi)部上拉電阻拉成了高電平(輸出1)。當(dāng))。當(dāng) 外部輸入外部輸入1時(shí),該引腳為高電平,輸入時(shí),該引腳為高電平,輸入0時(shí),該引腳為低電平。時(shí),該引腳為低電平。 n結(jié)構(gòu)上這樣安排是為了結(jié)構(gòu)上這樣安排是為了“讀讀修改修改寫寫”類指令的需要,這類指令是類指令的需要,這類指令是 從鎖存器讀取數(shù)據(jù),進(jìn)行處理,并把處理后的數(shù)據(jù)重新寫入鎖存器。從鎖存器讀取數(shù)據(jù),進(jìn)行處理,并把處理后的數(shù)據(jù)重新寫入鎖存器。 在在ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ、M

25、OV等指等指 令中,當(dāng)目的操作數(shù)為某令中,當(dāng)目的操作數(shù)為某I/O口或口或I/O口的某一位時(shí),就是口的某一位時(shí),就是“讀讀修修 改改寫寫”。例如:。例如:ANL P1,A指令,先把指令,先把P1口上的數(shù)據(jù)讀入口上的數(shù)據(jù)讀入CPU, 隨之與累加器隨之與累加器A按位進(jìn)行與操作,最后再把結(jié)果送按位進(jìn)行與操作,最后再把結(jié)果送P1口。又如:口。又如:MOV P1.0,C指令,是先把指令,是先把P1口的口的8位讀入,再修改位讀入,再修改P1.0位即進(jìn)位標(biāo)志位即進(jìn)位標(biāo)志C 送送P1.0,最后再把新字節(jié)寫回到,最后再把新字節(jié)寫回到P1口???。 n讀引腳指令一般都是以讀引腳指令一般都是以I/O口為源操作數(shù)的指令,

26、執(zhí)行讀引腳指令時(shí),口為源操作數(shù)的指令,執(zhí)行讀引腳指令時(shí), 打開三態(tài)緩沖器,輸入接口的狀態(tài)。例如,讀打開三態(tài)緩沖器,輸入接口的狀態(tài)。例如,讀P1口的輸入狀態(tài)時(shí),讀口的輸入狀態(tài)時(shí),讀 引腳指令為引腳指令為MOV A,P1 第六章mcs-51單片機(jī)IO端口(1) P3P3的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) D QD Q CLK QCLK Q P3.nP3.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 VCC R T T P3口引 腳 第二輸入功能第二輸入功能 第二輸出功能第二輸出功能 一、作為通用一、作為通用I/OI/O口與口與P1P1口類似口類似-準(zhǔn)雙向口準(zhǔn)雙向口(W=1)(W=1)

27、nP3口也是準(zhǔn)雙向口,與口也是準(zhǔn)雙向口,與P1不同的是不同的是P3口是雙功能口??谑请p功能口。P3 口作為第一功能使用時(shí),同口作為第一功能使用時(shí),同P1口。作為第二功能使用時(shí),口。作為第二功能使用時(shí), 它的引腳見后面列表。它的引腳見后面列表。 W 第六章mcs-51單片機(jī)IO端口(1) nP3口的位結(jié)構(gòu)如圖所示。比口的位結(jié)構(gòu)如圖所示。比P1口多了一個與非門。與非門口多了一個與非門。與非門 的兩個輸入端是鎖存器的的兩個輸入端是鎖存器的Q端和第二輸出功能端。當(dāng)?shù)诙撕偷诙敵龉δ芏?。?dāng)?shù)诙?輸出功能為高電平時(shí),與非門的輸出就是輸出功能為高電平時(shí),與非門的輸出就是Q,與,與P1口的結(jié)口的結(jié) 構(gòu)相同。

28、當(dāng)鎖存器的構(gòu)相同。當(dāng)鎖存器的Q端為高電平時(shí),第二功能的輸出信端為高電平時(shí),第二功能的輸出信 號從第二輸出功能線經(jīng)過與非門反相再通過輸出驅(qū)動器反號從第二輸出功能線經(jīng)過與非門反相再通過輸出驅(qū)動器反 相后輸出。當(dāng)與非門的兩個輸入端都為高電平時(shí),輸出驅(qū)相后輸出。當(dāng)與非門的兩個輸入端都為高電平時(shí),輸出驅(qū) 動器的場效應(yīng)管動器的場效應(yīng)管T截止,輸入的第二功能信號經(jīng)緩沖器,從截止,輸入的第二功能信號經(jīng)緩沖器,從 第二輸入功能線進(jìn)入。輸入的第一功能信號經(jīng)緩沖器后仍第二輸入功能線進(jìn)入。輸入的第一功能信號經(jīng)緩沖器后仍 由讀引腳信號讀入內(nèi)部總線。由讀引腳信號讀入內(nèi)部總線。 第六章mcs-51單片機(jī)IO端口(1) P3

29、P3的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) D QD Q CLK QCLK Q P3.nP3.n 讀鎖存器讀鎖存器 內(nèi)部總線內(nèi)部總線 寫鎖存器寫鎖存器 讀引腳讀引腳 VCC R T T P3口引 腳 第二輸入功能第二輸入功能 第二輸出功能第二輸出功能 二、第二功能(Q=1) 此時(shí)引腳部分輸入(Q=1、W=1) ,部分輸出(Q=1、W輸出) 。 W 第六章mcs-51單片機(jī)IO端口(1) 第二功能各引腳功能定義: 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

30、外部寫控制 P3.7:RD外部讀控制 第六章mcs-51單片機(jī)IO端口(1) n綜上所述:當(dāng)綜上所述:當(dāng)P0作為作為I/O口使用時(shí),特別是作為輸出時(shí),輸口使用時(shí),特別是作為輸出時(shí),輸 出級屬于開漏電路,必須外接上拉電阻才會有高電平輸出;出級屬于開漏電路,必須外接上拉電阻才會有高電平輸出; 如果作為輸入,必須先向相應(yīng)的鎖存器寫如果作為輸入,必須先向相應(yīng)的鎖存器寫“1”,才不會影響,才不會影響 輸入電平。輸入電平。 n當(dāng)當(dāng)CPU內(nèi)部控制信號為內(nèi)部控制信號為“1”時(shí),時(shí),P0口作為地址口作為地址/數(shù)據(jù)總線使數(shù)據(jù)總線使 用,這時(shí),用,這時(shí),P0口就無法再作為口就無法再作為I/O口使用了??谑褂昧?。 第

31、六章mcs-51單片機(jī)IO端口(1) nP1、P2 和和P3 口為準(zhǔn)雙向口口為準(zhǔn)雙向口, 在內(nèi)部差別不大在內(nèi)部差別不大, 但使用功能但使用功能 有所不同。有所不同。 nP1口是用戶專用口是用戶專用 8 位準(zhǔn)雙向位準(zhǔn)雙向I/O口口, 具有通用輸入具有通用輸入/輸出功能輸出功能, 每一位都能獨(dú)立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩斆恳晃欢寄塥?dú)立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩?入方式時(shí)入方式時(shí), 該位的鎖存器必須寫入該位的鎖存器必須寫入“1”, 然后才能進(jìn)入輸入操然后才能進(jìn)入輸入操 作。作。 nP2口是口是 8 位準(zhǔn)雙向位準(zhǔn)雙向I/O口。外接口。外接I/O設(shè)備時(shí)設(shè)備時(shí), 可作為擴(kuò)展系統(tǒng)可作

32、為擴(kuò)展系統(tǒng) 的地址總線的地址總線, 輸出高輸出高8位地址位地址, 與與P0 口一起組成口一起組成 16 位地址總位地址總 線。線。 對于對于 8031 而言而言, P2 口一般只作為地址總線使用口一般只作為地址總線使用, 而不而不 作為作為I/O線直接與外部設(shè)備相連。線直接與外部設(shè)備相連。 第六章mcs-51單片機(jī)IO端口(1) 例例1 閃爍燈閃爍燈 1實(shí)驗(yàn)任務(wù)實(shí)驗(yàn)任務(wù) 如圖所示:在如圖所示:在P1.0端口上接一個發(fā)光二極管端口上接一個發(fā)光二極管L1,使,使L1在不停地一亮一滅,在不停地一亮一滅, 一亮一滅的時(shí)間間隔為一亮一滅的時(shí)間間隔為0.2秒。秒。 2電路原理圖電路原理圖 第六章mcs-5

33、1單片機(jī)IO端口(1) 3系統(tǒng)板上硬件連線系統(tǒng)板上硬件連線 把把“單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)”區(qū)域中的區(qū)域中的P1.0端口用導(dǎo)線連接到端口用導(dǎo)線連接到“八路發(fā)光二極管指示模八路發(fā)光二極管指示模 塊塊”區(qū)域中的區(qū)域中的L1端口上。端口上。 4程序設(shè)計(jì)內(nèi)容程序設(shè)計(jì)內(nèi)容 (1) 延時(shí)程序的設(shè)計(jì)方法延時(shí)程序的設(shè)計(jì)方法 作為單片機(jī)的指令的執(zhí)行的時(shí)間是很短,數(shù)量大微秒級,因此,我們要求的閃爍作為單片機(jī)的指令的執(zhí)行的時(shí)間是很短,數(shù)量大微秒級,因此,我們要求的閃爍 時(shí)間間隔為時(shí)間間隔為0.2秒,相對于微秒來說,相差太大,所以我們在執(zhí)行某一指令時(shí),秒,相對于微秒來說,相差太大,所以我們在執(zhí)行某一指令時(shí), 插入延時(shí)程序

34、,來達(dá)到我們的要求,但這樣的延時(shí)程序是如何設(shè)計(jì)呢?下面具體插入延時(shí)程序,來達(dá)到我們的要求,但這樣的延時(shí)程序是如何設(shè)計(jì)呢?下面具體 介紹其原理:介紹其原理: 如果使用的石英晶體為如果使用的石英晶體為12MHz,則,則1個機(jī)器周期為個機(jī)器周期為1微秒微秒 MOV R6,#20 2個機(jī)器周期 D1: MOV R7,#248 2個機(jī)器周期 DJNZ R7,$ 2個機(jī)器周期 DJNZ R6,D1 2個機(jī)器周期 因此,上面的延時(shí)程序時(shí)間為因此,上面的延時(shí)程序時(shí)間為2+20(2+2+2248)=10.002ms 延時(shí)程序的思路:延時(shí)程序的思路: 第六章mcs-51單片機(jī)IO端口(1) 由以上可知,當(dāng)由以上可

35、知,當(dāng)R610、R7248時(shí),延時(shí)時(shí),延時(shí)5ms,R620、R7248時(shí),延時(shí),延 時(shí)時(shí)10ms,以此為基本的計(jì)時(shí)單位。如本實(shí)驗(yàn)要求以此為基本的計(jì)時(shí)單位。如本實(shí)驗(yàn)要求0.2秒秒200ms,10msR5 200ms,則,則R520,延時(shí)子程序如下:,延時(shí)子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2) 輸出控制輸出控制 如圖如圖1所示,當(dāng)所示,當(dāng)P1.0端口輸出高電平,即端口輸出高電平,即P1.01時(shí),根據(jù)發(fā)光二極管的單向?qū)r(shí),根據(jù)發(fā)光二極管的單向?qū)?電性

36、可知,這時(shí)發(fā)光二極管電性可知,這時(shí)發(fā)光二極管L1熄滅;當(dāng)熄滅;當(dāng)P1.0端口輸出低電平,即端口輸出低電平,即P1.00時(shí),時(shí), 發(fā)光二極管發(fā)光二極管L1亮;我們可以使用亮;我們可以使用SETBP1.0指令使指令使P1.0端口輸出高電平,使端口輸出高電平,使 用用CLRP1.0指令使指令使P1.0端口輸出低電平。端口輸出低電平。 第六章mcs-51單片機(jī)IO端口(1) 5 程序框圖程序框圖 如圖所示如圖所示 6 匯編源程序匯編源程序 ORG 0 START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R5,#

37、20 ;延時(shí)子程序,延時(shí)延時(shí)子程序,延時(shí)0.2秒秒 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 第六章mcs-51單片機(jī)IO端口(1) 例例2、多路開關(guān)狀態(tài)指示、多路開關(guān)狀態(tài)指示 如圖如圖 所示,所示,AT89S51 單片機(jī)單片機(jī) 的的 P1.0P1.3 接四個發(fā)光二極管接四個發(fā)光二極管 L1L4,P1.4P1.7 接了四個開接了四個開 關(guān)關(guān) K1K4,編程將開關(guān)的狀態(tài),編程將開關(guān)的狀態(tài) 反映到發(fā)光二極管上。(開關(guān)閉反映到發(fā)光二極管上。(開關(guān)閉 合,對應(yīng)的燈亮,開關(guān)斷開,對合,對應(yīng)的燈亮,開關(guān)斷開

38、,對 應(yīng)的燈滅)。應(yīng)的燈滅)。 對于開關(guān)狀態(tài)檢測,相對單對于開關(guān)狀態(tài)檢測,相對單 片機(jī)來說,是輸入關(guān)系,我們可片機(jī)來說,是輸入關(guān)系,我們可 輪流檢測每個開關(guān)狀態(tài),根據(jù)每輪流檢測每個開關(guān)狀態(tài),根據(jù)每 個開關(guān)的狀態(tài)讓相應(yīng)的發(fā)光二極個開關(guān)的狀態(tài)讓相應(yīng)的發(fā)光二極 管指示,可以采用管指示,可以采用 JB P1.X, REL 或或 JNB P1.X,REL 指令來完成;指令來完成; 也可以一次性檢測四路開關(guān)狀態(tài),也可以一次性檢測四路開關(guān)狀態(tài), 然后讓其指示,可以采用然后讓其指示,可以采用 MOV A, P1 指令一次把指令一次把 P1 端口的狀態(tài)全端口的狀態(tài)全 部讀入,然后取高部讀入,然后取高 4 位的狀態(tài)來位的狀態(tài)來 指示。指示。 第六章mcs

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論