單片機入門 必讀 第三章.ppt_第1頁
單片機入門 必讀 第三章.ppt_第2頁
單片機入門 必讀 第三章.ppt_第3頁
單片機入門 必讀 第三章.ppt_第4頁
單片機入門 必讀 第三章.ppt_第5頁
已閱讀5頁,還剩159頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章:MCS-51單片機的系統(tǒng)擴展及應(yīng)用,通過地址總線、數(shù)據(jù)總線和控制總線實現(xiàn)系統(tǒng)的擴展。 定時器、串行口和A/D、D/A等應(yīng)用場合下的硬件接口和軟件編程。 3.1:程序存儲器的擴展 3.2:數(shù)據(jù)存儲器的擴展 3.3:輸入、輸出口的擴展 3.4:定時計數(shù)器的應(yīng)用 3.5:串行口的應(yīng)用 3.6:MCS-51與D/A轉(zhuǎn)換器的接口 3.7:MCS-51與A/D轉(zhuǎn)換器的接口 3.8:動態(tài)數(shù)碼顯示及鍵盤掃描電路,3.1:程序存儲器ROM的擴展,1,在使用8031(無片內(nèi)ROM)或大于4K程序存儲器時,必須通過外接ROM來構(gòu)成、擴充系統(tǒng)的程序存儲區(qū)。 2,當(dāng)使用外部存儲器來擴展系統(tǒng)時,必須占用單片機的P

2、0、P2口作為外部電路的數(shù)據(jù)、地址總線。此時,P0、P2口就不能作為通用的I/O端口。 3,在系統(tǒng)擴展時,外部電路與單片機連接的依據(jù)是單片機訪問外部存儲器的時序,所以正確的理解時序是硬件電路設(shè)計的關(guān)鍵。,MCS-51與32K ROM的連接,P2.7 : : : P2.0 P0.7 : : : P0.0 ALE /EA Psen,CE A14 : : A8 A7 O7 : : : : : : A0 O0 OE,D7 Q7 D0 Q0 CP,27256 32K ROM,MCS-51,/CE = P2.7(A15),返回前一次,完整的地址信號,外部ROM的狀態(tài)與地址線A15的關(guān)系表,訪問外部程序存儲

3、器ROM的時序:,A15-A8(PC),A7-A0,OP,A7-A0,常數(shù),存儲器數(shù)據(jù)輸出控制 /Psen,地址總線(高八位)P2口,地址數(shù)據(jù)總線(低8位)P0 口,S1,S2,S6,S5,S4,S3,373地址鎖存信號 ALE,A15-A8 (DPTR+A),MOVC A,A+DPTR,A B,轉(zhuǎn)電路圖,返回前一次,(參考講義70頁),片外存儲器訪問時序說明,P0、P2口作地址和數(shù)據(jù)總線。其中P0口作為地址和數(shù)據(jù)復(fù)用總線,前半部(A段)作地址總線,后半部(B段)作為數(shù)據(jù)總線。 外部程序存儲器ROM的操作步驟如下: 1,單片機必須為其提供完整的(15位)地址信息; 2,ROM芯片的/CE 端=

4、0,選中該芯片; 3,在滿足上述條件的基礎(chǔ)上,當(dāng)ROM的/OE=0時(B時間段),存儲器輸出數(shù)據(jù)的三態(tài)門打開,并將與輸入地址相對應(yīng)的存儲單元中的指令(數(shù)據(jù))向外輸出,單片機通過P0口將指令送至CPU 內(nèi)部。 74LS373鎖存器:將A時間段P0口輸出的低位地址進行保存,使ROM在B時間段仍然可以得到完整的地址信號。,轉(zhuǎn)電路圖,轉(zhuǎn)時序圖,外部ROM的容量擴展原理(一),如何使用兩片32K的ROM芯片擴展為64K的存儲陣列。,A15 P2口 MCS - 51 P0口 ALE /EA Psen,/CE2 A14 A8 A7 A0 /OE2 O0O7,/CE1 A14 A8 A7 A0 /OE1 O0

5、O7,74LS373,由兩片32K的ROM構(gòu)成64K存儲陣列與A15的關(guān)系表,外部ROM的容量擴展原理(二),若需要對2片以上的芯片擴展,可以通過譯碼電路實現(xiàn)。,P2.7 P2.6 P2.5 P2.4 P2.0 P0口 ALE Psen,/CE0 A12 A8 A7 8K8 A0 /OE1 O0O7,74LS373,C y7 B A 0 y,/CE1 A12 A8 A7 8K8 A0 /OE1 O0O7,/CE7 A12 A8 A7 8K8 A0 /OE1 O0O7,MCS51,74LS138,采用LS138譯碼器實現(xiàn)ROM擴展示意表,小結(jié):,1,單片機的P0、P2口作為地址數(shù)據(jù)總線; 2,P

6、0口為數(shù)據(jù)、地址復(fù)用總線,所以必須加入八位鎖存器74LS373來鎖存P0口的低八位地址。 3,外接ROM是靠MOVC指令產(chǎn)生的Psen信號來打開數(shù)據(jù)三態(tài)門,使ROM中的指令通過P0口送入單片機內(nèi)部。 4,存儲器的容量M與其地址線條數(shù)n的關(guān)系:M=2n 5,當(dāng)使用兩片ROM擴展時,可以使用一個反向器實現(xiàn)容量的擴展,通過ROM芯片的/CE端實現(xiàn)。 6,當(dāng)使用2片以上的ROM芯片擴展時,就要使用譯碼器實現(xiàn)存儲容量的擴展,譯碼器的輸入與高位地址相連接,輸出端分別與各ROM芯片的/CE連接(如圖所示)。 7,當(dāng)外接ROM的高八位地址線與P2口高八位線沒有完全用足時,要注意外存儲的地址重疊問題。,返回,3

7、.2:數(shù)據(jù)存儲器RAM的擴展,與程序存儲器擴展原理相同,數(shù)據(jù)存儲器的擴展也是使用P0、P2口作為地址、數(shù)據(jù)總線。 1,當(dāng)使用MOVX Ri指令時,系統(tǒng)使用P0口輸出地址 信號(P2口不用); 2,當(dāng)使用MOVX DPTR指令時,P0口輸出DPTR提供 的低八位地址信號,P2口輸出DPTR提供的高八位地 址信號。 3,不論哪種情況,P0口都是地址/數(shù)據(jù)復(fù)用總線,因此 仍要使用74LS373來鎖存P0口的地位地址信號。 與ROM擴展不同:使用訪問外部RAM指令MOVX 時,在時序中將產(chǎn)生/RD或/WR信號,因此將此信號與外RAM的讀(/RD) 、寫(/WR)控制端相連接就實現(xiàn)系統(tǒng)對外RAM的讀寫控

8、制。,設(shè)外部RAM2000H單元中有一個數(shù)x,且DPTR中已存有該數(shù)地址2000H.則CPU 執(zhí)行外部ROM中的指令: movx a,dptr ;將外RAM的x送A,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A15-A8(DPH),A7-A0,指令,A7-A0,數(shù)據(jù),RD,P2口,P0口,選中外部RAM,讀外部數(shù)據(jù)存儲器RAM的指令時序,MCS-51與32K RAM的連接,P2.5 P2.4 : : P2.0 P0.7 : : : P0.0 ALE RD WR,CE A12 : : A8 A7 O7 : : : : : :

9、A0 O0 OE WE,D7 Q7 D0 Q0 CP,6264 8K RAM,MCS-51,/CE = P2.5(A12),思考題:,使用6264(8KRAM)芯片和2764(8KROM)芯片組成16K RAM和16KROM的外存儲陣列(邏輯圖)。 采用74LS138和74LS373實現(xiàn)譯碼和鎖存功能。 根據(jù)設(shè)計的結(jié)果,寫出RAM和ROM的地址范圍。,返回,3.3:輸入、輸出口的擴展,如果系統(tǒng)使用了外部存儲器時,P0、P2口被外存儲器占用,留給用戶的只有P1口。因此I/O端口的擴展是使用MCS-51作為嵌入式控制器進行硬件設(shè)計中經(jīng)常遇到的問題: 3.3.1,使用8243擴展I/O端口 3.3.

10、2,使用8155擴展I/O 端口 3.3.3,使用8255擴展I/O端口 3.3.4,使用串行口擴展I/O端口,繼續(xù),3.3.1:使用8243擴展I/O端口,8243為4X4位的擴展口。,P4.0 P4.1 P2.0 P4.2 P2.1 P4.3 P2.2 P2.3 P5.0 P5.1 P5.2 P5.3 P6.0 P6.1 P6.2 P6.3 PROG P7.0 /CE P7.1 P7.2 P7.3,接單片機,P2口:用于CPU與8243之間傳送命令、 數(shù)據(jù)。 其中:命令碼中含口地址(兩位)、 操作碼(兩位)。數(shù)據(jù)為四位。 PROG:控制端。 P4P7:4X4位具有鎖存功能的雙向I/O 端口

11、。,8243的時序,P4.0 P4.1 P2.0 P4.2 P2.1 P4.3 P2.2 P2.3 P5.0 P5.1 P5.2 P5.3 P6.0 P6.1 P6.2 P6.3 PROG P7.0 /CE P7.1 P7.2 P7.3,操作碼、口地址,數(shù)據(jù)(4位),PROG,P2口,1,由高變低時,將P2口的命令(口地址、操作碼)信息所存到8243 。 2,由低變高時: a,寫操作時:8243將P2口上的數(shù)據(jù)寫入對應(yīng)的端口; b,讀操作時:當(dāng)操作碼一譯出,選中的端口的輸入緩沖器與P2口接通,等待CPU讀走。當(dāng)PROG變高后,結(jié)束讀操作。,1,2,8243應(yīng)用舉例1:使用51的P2口與8243

12、連接,并從8243的P6口讀入數(shù)據(jù),51的P2.6 P2.7 留作輸入。,P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 MCS-51,P4.0 P4.1 P2.0 P4.2 P2.1 P4.3 P2.2 P2.3 P5.0 PROG P5.1 /CE P5.2 P5.3 P6.0 P6.1 P6.2 P6.3 P7.0 P7.1 P7.2 P7.3 8243,IN8243:MOV A,#11010010B ;控制字 MOV P2,A;輸出控制字 CLR P2.4 ;8243接收操作碼 MOV A,P2 ;讀取P6口數(shù)據(jù) SETB P2.4 ;PROG=1結(jié)束讀

13、 SETB P2.5 ;關(guān)閉8243 RET 【注意】: 1,控制字11010010的含義; 2,根據(jù)8243的時序,在使 PROG 變高前 單片機必須讀入P6口中的數(shù)據(jù)。,8243應(yīng)用舉例2:將R2寄存器的低4位寫到P7口。 P2.6 P2.7 留作輸入,P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7,P4.0 P4.1 P2.0 P4.2 P2.1 P4.3 P2.2 P2.3 P5.0 PROG P5.1 /CE P5.2 P5.3 P6.0 P6.1 P6.2 P6.3 P7.0 P7.1 P7.2 P7.3,OUT:MOV A,#11010111B ;

14、控制字 MOV P2,A ;輸出控制字 CLR P2.4 ;8243接收操作碼 MOV A,R2 ;讀取R2數(shù)據(jù) ORL A,#11110000B ;高4位置1低4位不變 ORL P2,#00001111B ;低4位置1高4位不變 ANL P2,A ;A送P2高4位不變 SETB P2.4 ;PROG=1數(shù)據(jù)寫入P7口 SETB P2.5 ;關(guān)閉8243 RET 【注意】:第1條ORL是保證不影響P2口高4位;第2條ORL指令時保證下面ANL指令能夠正確的將低4位數(shù)據(jù)寫入P2口。,返回,3.3.2:使用8155擴展I/O端口,8155的簡介 1,8155的構(gòu)成: 2,CPU 對8155的控制

15、3,8155的工作方式 4,8155內(nèi)部定時器的使用 5,8155應(yīng)用與編程舉例,繼續(xù),8155的簡介,同8243一樣,8155、8255等芯片都是美國Intel公司為8086系列微機開發(fā)出的系列通用可編程I/O接口芯片。 8155不僅可以提供三個并行的I/O端口,在其內(nèi)部還集成有256個字節(jié)的RAM存儲空間、一個14位的定時/計數(shù)器,因此非常適合與MCS-51單片機連接實現(xiàn)系統(tǒng)功能的擴展。 由于8155的特殊性,這里將主要介紹其結(jié)構(gòu)和使用、編程方法。,返回本節(jié)目錄,1,8155的構(gòu)成:,1,雙向數(shù)據(jù)總線緩沖器:傳送CPU與RAM之間的數(shù)據(jù)。 2,地址鎖存器:用于鎖存CPU送來得RAM或端口地

16、址。 3,地址譯碼(a)和讀寫控制(b): a,接收地址鎖存器的低三位地址,確定命令/狀態(tài)存存器、 定時/計數(shù)器和A、B、C口中的某個工作。 b,讀寫控制用于接收/RD或/WR上的信息實現(xiàn)CPU與8155 之間的信息控制 4,256個字節(jié)的RAM數(shù)據(jù)存儲器。 5,I/O寄存器:A,B和C雙向通用I/O端口。 6,命令寄存器:用來存放CPU送來得命令字。 7,定時/計數(shù)器:二進制的14位減一計數(shù)器,可做分頻器。,8155的內(nèi)部結(jié)構(gòu)簡圖,I/O 寄存器 A口,256 字節(jié) RAM,雙向 數(shù)據(jù) 緩沖器,地址 鎖存器,定時 計數(shù)器 (14位),讀/寫 控制器,地址譯碼,I/O 寄存器 B口,I/O 寄

17、存器 C口,狀態(tài) 命令 寄存器,AD7-AD0,/CE IO/M ALE /RD /WR REST,T / IN T / OUT,8155引腳說明,AD7-AD0:數(shù)據(jù)/地址總線。與MCS-51的P0口連接,分 時傳送地址和數(shù)據(jù)信息,是連接兩者的通道。 I/O口線:PA7-0、PB7-0和PC5-0為8155的A、B和C口。 其中A、B口為8為的通用I/O口; C口:在“通用I/O模式”下作I/O口; 在“選通I/O模式”下作命令/狀態(tài)口。 REST、/CE和IO/M :復(fù)位、片選和I/O端口/RAM選擇線。 /RD、/WR: 讀寫控制線。 ALE:8155的地址鎖存信號。ALE=1時,信號進

18、入地址鎖 存器,ALE=0時,鎖存器處于“封鎖”狀態(tài),將ALE=1 時的地址鎖存到地址鎖存器中。 T/IN、T/OUT: 計數(shù)器的脈沖輸入線和輸出線,輸出波形 與工作方式有關(guān)。,返回本節(jié)目錄,2,CPU 對8155的控制,8155的A、B和C口的數(shù)據(jù)傳送是由CPU發(fā)出的命令字控制的。 (1)8155內(nèi)部的7個寄存器地址,(2)8155的命令字,PB、PA:A、B口工作方式:0 輸入;1 輸出。 PC2、 PC1: C口工作方式:00 ALT1(輸入) 01 ALT2(輸出) 10 ALT3(選通方式) 11 ALT4(選通方式) IEBIEA: A、B口中斷允許位:0 禁止中斷;1 允許中斷。

19、 TM2 TM1:計數(shù)器工作方式:00 無操作;01 停止計數(shù); 10 計滿后停止;11開始計數(shù)。,上一次,(3)8155的狀態(tài)字表征8155的狀態(tài),INTRa: A中斷請求標志。 0 無中斷;1 有中斷。 ABF: A口緩沖器狀態(tài)。 0 空; 1 滿。 INTEa: A口中斷允許位。 0 禁止; 1 允許。 INTRb: B中斷請求標志。 0 無中斷;1 有中斷。 BBF: B口緩沖器狀態(tài)。 0 空; 1 滿。 INTEb: B口中斷允許位。 0 禁止; 1 允許。 TIMER: 定時器中斷。0 讀狀態(tài)字后或硬件復(fù)位后。 1 有定時器中斷時。,狀態(tài)字存在于8155的狀態(tài)寄存器中,其地址與命令

20、口地址一樣都是000B,可以用 MOVX A, Ri 指令來讀取8155的狀態(tài)。狀態(tài)字寄存器與命令寄存器是靠輸入、輸出來自動區(qū)分的。,返回本節(jié)目錄,3,8155的工作方式,(1)存儲方式:若IO/M=0、CE=0時,8155處于存儲器 模式,此時單片機通過AD7-AD0與8155 的RAM單元進行讀寫數(shù)據(jù)。 (2)I/O方式:若IO/M=1,CE=0時,8155處于I/O狀態(tài)。 a,通用I/O方式:A,B,C都是通用的數(shù)據(jù)端口; b,選通I/O方式:A,B為通用I/O方式,C口作 為A,B口的聯(lián)絡(luò)控制線。 選通方式是一種較為特殊的數(shù)據(jù)傳輸方式,它不同于一般并行口的I/O操作。它主要用于高速CP

21、U與低速外設(shè)之間的數(shù)據(jù)交換。這里只作基本介紹。,C口在四種工作方式下的各位定義,選通I/O數(shù)據(jù)輸入操作,當(dāng)外設(shè)準備好數(shù)據(jù)并送PA口時,發(fā)出低電平的選通信號ASTB; 8155接收到ASTB后: 1,將PA上的數(shù)據(jù)裝入A口寄存器 2,使A口數(shù)據(jù)滿ABF置位以通知外設(shè)數(shù)據(jù)已收到。 8155在ASTB的上升沿使PC0的A INTR標志置位,以通知單片機數(shù)據(jù)已收到。 CPU響應(yīng)中斷執(zhí)行服務(wù)程序,當(dāng)執(zhí)行到從A口讀取輸入的數(shù)據(jù)(MOVX)時,/RD的上升沿將PC0的INTEA清零并使PC1的ABF變低,通知外設(shè)輸入下一個數(shù)據(jù)。,P0 INT0,PA PD0-7 /RD PC1 PC2 PC0,D7- 0,

22、C口為ALT3模式 PC0:A口中斷A INTR標志輸出,送單片機; PC1:A口緩沖器滿ABF標志輸出,送外設(shè)。 PC2:A口選通輸入ASTB,,ASTB,ABF,MCS-51 8155 外設(shè),A INTR,選通I/O數(shù)據(jù)輸出操作,CPU執(zhí)行MOVX指令將數(shù)據(jù)送PA口,8155收到數(shù)據(jù)后ABF變高通知外設(shè)數(shù)據(jù)已到達PA口。 外設(shè)接收到ABF的高電平后: 1,從D7-0上接收數(shù)據(jù); 2,使ASTB變低,通知8155外 設(shè)已接收到數(shù)據(jù)。 當(dāng)8155監(jiān)測到ASTB回到高電平時,使PC0D的A INTR變?yōu)楦唠娖剑騿纹瑱C申請中斷。 單片機在中斷服務(wù)程序中巴下一個數(shù)據(jù)送到A口,進行下一個數(shù)據(jù)的輸出。

23、,P0 INT0,PA PD0-7 PC1 PC2 PC0,D7- 0,ASTB,ABF,MCS-51 8155 外設(shè),C口為ALT3模式,控制字:00011001B PC0:A口中斷A INTR標志輸出,送單片機; PC1:A口緩沖器滿ABF標志輸出,送外設(shè)。 PC2:A口選通輸入ASTB,,A INTR,4,8155內(nèi)部定時器的使用,嚴格的將,8155的定時器應(yīng)當(dāng)稱為計數(shù)器,因為定時器的計數(shù)脈沖來自外部的T/IN引腳的輸入脈沖,所以8155的定時器非常適合做1/n的分頻器(如圖)。 定時器共有4中工作方式,由計數(shù)器高8位中的最高兩位M2、M1來確定。不同的工作方式對應(yīng)著不同的T/OUT波形

24、。,8155 T/IN T/OUT,由8155作1/5分頻器,MCS-51,控制字,8155內(nèi)部定時器的4種工作方式,1,M1M2=00時:定時器在計數(shù)的后半周期在T/OUT線上輸出低電平,如果計數(shù)初值為奇數(shù),則高電平持續(xù)時間比低電平多一個計數(shù)脈沖; 2, M2M1=01時:同上一方式,差別為當(dāng)計數(shù)器“減1”到 “全0”時,自動裝入計數(shù)初值,所以在T/OUT上為連續(xù)波形; 3, M2M1=10時:當(dāng)計數(shù)器“減1”到 “全0”時,在T/OUT線上輸出一個單脈沖; 4, M2M1=11時:當(dāng)計數(shù)器“減1”到 “全0”時,在T/OUT線上輸出一個單脈沖,且自動重裝計數(shù)初值,所以在T/OUT線上輸出連

25、續(xù)的波形。,控制字,8155定時器工作方式與T/OUT波形,計數(shù)器高8位(101B),計數(shù)器低8位(100B),1個計數(shù)周期T,T/IN M2M1=00時 T/OUT M2M1=01時 T/OUT M2M1=10時 T/OUT M2M1=11時 T/OUT,思考題:哪種工作方式可以使8155完成1/n分頻器的功能? 這種分頻器與普通數(shù)字電路中的“計數(shù)器分頻”有何不同 ?(返回),5,8155應(yīng)用與編程舉例,充分利用8155的內(nèi)部資源可以簡化單片機系統(tǒng)的設(shè)計。 無論是8155或其它外圍電路與MCS-51的連接可分為兩種方式:最小化連接; 按照外部RAM地址統(tǒng)一編址。 前者適用于較小的系統(tǒng),后者用

26、于較復(fù)雜的系統(tǒng)。這里采用前者,目的是使大家掌握8155最基本的編程方法。 8155在I/O工作方式中我們選擇“通用I/O方式”為例。,返回本節(jié)目錄,8155與MCS-51的最小化連接,P2.7 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 ALE /RD /WR,/CE IO/M PA AD7 AD6 AD5 PB AD4 AD3 AD2 AD1 PC AD0 ALE T/OUT /RD /WR T/IN,MCS-51 8155,最小系統(tǒng)對8155內(nèi)部各寄存器的地址分配,設(shè)定:PA口輸入,PB口輸出,輸入脈沖進行16分頻。,ORG 1000H STR

27、AT:MOV DPTR,#7F04H;指向定時器低8位 MOV A,#10H;計數(shù)初值16 MOVX DPTR,A;裝入初值 INC DPTR;指向定時器高8位 MOV A,#40H;設(shè)定為連續(xù)方波 MOVX DPTR,A;裝入定時器高8位 MOV DPTR,#7F00H;指向命令口 MOV A, # 0C2H;控制字:(A輸入B輸出啟動定時器) MOVX DPTR,A;裝入控制字并啟動定時器 INPUT:MOV DPTR,# 7F01H;指向PA口 MOVX A,DPTR;從PA口輸入數(shù)據(jù) OUT:MOV DPTR,# 7F02H;指向PB口 MOVX DPTR,A;從PB口輸出數(shù)據(jù) END

28、 【思考題】:如何將PA口輸入的數(shù)據(jù)存到8155內(nèi)部RAM的某一單元?,控制字,MOVX DPTR,A或MOVX A,DPTR的時序,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A15-A8(DPH),A7-A0,指令,(DPL),數(shù)據(jù),RD,P2口,P0口,選中外部RAM,第一個階段:取 MOVX 指令,第二階段:執(zhí)行MOVX(從外部讀取數(shù)據(jù)),3.3.3:使用8255擴展I/O端口,1,8255的內(nèi)部結(jié)構(gòu)和引腳功能 2,8255的控制字和狀態(tài)字 (一)“方式控制字” (二)“C口單一置位復(fù)位控制字” (三)8255A的狀態(tài)

29、字 1,8255A在模式1時的狀態(tài)字 2,8255A在模式2時的狀態(tài)字 3,8255的工作模式 4,8255A應(yīng)用舉例,繼續(xù),8255的內(nèi)部結(jié)構(gòu)圖,A口,C口 高四位,B口,C口 低四位,A組 控制器,B組 控制器,數(shù)緩 沖 據(jù)器,讀制 寫邏 控輯,PA7-0,PB7-0,PC7-4,PC3-0,D7-D0,/RD /WR A0 A1 RESE /CS,返回前一次,1,8255的內(nèi)部結(jié)構(gòu)和引腳功能,(一):內(nèi)部結(jié)構(gòu):由四部分組成。 1,A口,B口和C口; 2,A組控制器,B組控制器; 3,數(shù)據(jù)緩沖器; 4,讀寫控制器。 A口。8位數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖/鎖存的I/O端口。 B,C口。8位

30、數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖的I/O端口。 A組控制器,B組控制器。接收CPU發(fā)送的控制字并確定8255的工作模式,其中A組控制器控制A口和C口的高4位; B組控制器控制B口和C口的低4位。 數(shù)據(jù)緩沖器。雙向8位,用于傳送CPU與8255之間的數(shù)據(jù)和控制字。 讀寫控制邏輯。接收CPU送來的讀(/RD),寫(/WR)和片選(/CS)等信號,用于對8255的讀寫控制。,(二)引腳功能:40腳DIP封裝。 1,數(shù)據(jù)總線D7D0,與內(nèi)部數(shù)據(jù)緩沖器連接,用來傳送CPU與 8255之間的數(shù)據(jù)字、控制字。 2,控制總線:RESET:復(fù)位線,高電平有效; /CS:片選信號,低電平有效; /RD,/WR讀寫命令

31、線: 低電平有效; A0,A1:地址輸入線,用于選中A口,B口,C口和控制寄存器。 3,并行I/O總線(24條): PA7PA0:雙向I/O總線,可由控制字設(shè)定為輸入、輸出或 輸入輸出雙向方式; PB7PB0:雙向I/O總線,可由控制字設(shè)定為輸入或輸出方式; PC7PC0:雙向I/O總線,可以設(shè)定為傳送I/O數(shù)據(jù)(模式0) 或控制/狀態(tài)信息(模式1,2); 4,電源線:Vcc和GND.,8255控制信號功能、地址表(設(shè)/CS=C0H),返回本節(jié)目錄,轉(zhuǎn)8255框圖,2,8255的控制字和狀態(tài)字,8255有兩個控制字:“方式控制字”和“C口置復(fù)位控制字”。兩者以控制字的D7=1或D7=0來區(qū)別。

32、 (一)“方式控制字”:用于確定三個端口的輸入或輸出等; D7:控制字標志位。=1表明為“方式控制字”,=0表明為C口置復(fù)位控制字; D6,D5: A組方式選擇位。00:模式0,01:模式1,1X:模式2。 D4: A口輸入/輸出控制位。=0時A口用于輸出;=1時A口用于輸入。 D3: C口高4位輸入/輸出控制位。=0時C口高4位用于輸出;=0用于輸入。 D2: B組方式選擇位。D2=0時,B組設(shè)定為模式0;=1時, 設(shè)定為模式1。 D1: B口輸入/輸出控制。D1=0時,B口用于輸出;=1時,B口用于輸入。 D0: C口低4位輸入/輸出控制。=0時用于輸出;=1時,用于輸入。,標志位 A組方

33、式選擇 A口、C口高4 B組方式 B口、C口低4,返回前次,(二)“C口單一置位復(fù)位控制字”: 使C口各位在模式1,2時單獨置位或復(fù)位,以實現(xiàn)某些控制功能。如:設(shè)置或清除A口、B口的中斷允許位等。 D7:控制字標志位。=0表明為“C口單一支復(fù)位控制字”。 D6-D4: 不用。 D3D1: C口選擇位。三位二進制數(shù)(000111),確定C口中8個位(D7D0)中的某一位。 D0: 置復(fù)位控制位。D0=0時,復(fù)位;D0=1時,置位。,標志位=0 D6-D4位不用 C口位選擇位 置復(fù)位控制位,舉例,若8255的控制寄存器選口地址為FBH,試寫出令PC3先置“1”,后置“0”的程序。 【解】: MOV

34、 R0,#0FBH;設(shè)定8255的控制口 MOV A,#07H;令PC3置“1”的控制字送A MOVX R0,A;令PC3=1 MOV A,#06H;PC3置“0”的控制字送A MOVX R0,A;令PC3置“0” : END,標志位=0 D6-D4位不用 C口位選擇位 置復(fù)位控制位,(三)8255A的狀態(tài)字 當(dāng)8255A設(shè)定為模式1、模式2時,可以通過讀C口獲得相應(yīng)的“狀態(tài)字”,以便了解8255A的工作狀態(tài)。 1,8255A在模式1時的狀態(tài)字:( I/O為引腳的電平信號),C口各位,輸入口用時,輸出口用時,輸入口用時,輸出口用時,返回前一次,PC7 PC6 PC5 PC4 PC3 PC2 P

35、C1 PC0,PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0,2,8255A在模式2時的狀態(tài)字,/OBFa:A口“輸出緩沖器滿”標志。 INTE1:A口與輸出相關(guān)的中斷允許位,軟件置位。 IBFa:A口“輸入緩沖器滿”標志。 INTE2:A口與輸入相關(guān)的中斷允許位,軟件置位。 INTRa:A口中斷請求信號,高電平有效。 INTEb:B口中斷允許位,軟件置位。 IBFb:B口“輸入緩沖器滿”標志。 INTRb:B口中斷請求信號,高電平有效。,C口各位: D7 D6 D5 D4 D3 D2 D1 D0,返回上一次,A組模式2(輸入、輸出) B組模式1 輸出(或輸入),3,8255的

36、工作模式,8255A有三種工作模式:模式0,模式1,和模式2。用戶可以通過“8255A方式控制字”來設(shè)定所需的工作模式。 (1)模式0: 基本的輸入/輸出方式 (2)模式1: 選通輸入、選通輸出方式 A口、B口作為輸入或輸出,C口做聯(lián)絡(luò)線 (3)模式2: A口的雙向選通(輸入/輸出)方式,標志位 A組方式選擇 A口、C口高4 B組方式 B口、C口低4,(1)模式0: 基本的輸入/輸出方式,A口、B口和C口均可設(shè)定為此種模式。 【例如】:設(shè)定A口和C口的高4位為模式0的輸出方式,B口和C口的低4位為模式0的輸入方式。 MOV R0,#0FBH;控制寄存器地址送R0 MOV A,#10000011

37、B;方式控制字83H送A MOV R0,A;控制字83H送控制寄存器 在模式0時,CPU可以對8255A無條件的進行I/O數(shù)據(jù)傳送,數(shù)據(jù)可以在8255A對應(yīng)的鎖存器中鎖存。同樣,外設(shè)的I/O數(shù)據(jù)同樣可以送到各端口得到鎖存或緩沖。也可以將某些位設(shè)定為外設(shè)的狀態(tài)輸入位,CPU通過查詢狀態(tài)與外設(shè)進行異步I/O數(shù)據(jù)傳送。,轉(zhuǎn)控制字,(2)模式1: 選通輸入、選通輸出方式,A口、B口均可獨立的設(shè)置為這種工作模式。 在這種模式下,A口、B口通常用于傳送與它們相連外設(shè)的I/O數(shù)據(jù)。而此時,C口作為A口、B口與外設(shè)之間的聯(lián)絡(luò)握手信號,可以實現(xiàn)CPU與外設(shè)之間以“中斷”的方式進行異步I/O數(shù)據(jù)傳送。,標志位 A

38、組方式選擇 A口、C口高4 B組方式 B口、C口低4,轉(zhuǎn)8255邏輯圖,模式1下C口各位定義如下,INTR:8255A發(fā)出的中斷請求信號,經(jīng)反相后送單片機。 IBF:8255A發(fā)出“輸入緩沖器滿”信號。/OBF:輸出緩沖器滿信號 /STB:外設(shè)發(fā)出的“選通信號”,用于8255A的數(shù)據(jù)鎖存用。 /ACK:外設(shè)發(fā)出通知8255A的“已接收到數(shù)據(jù)” 的應(yīng)答信號。,(1)8255的模式1:選通輸入方式(口),1,當(dāng)外設(shè)輸入數(shù)據(jù)到PA口時, 自動的向/STBa發(fā)出一個低電平選通信號; 2,8255A收到/STBa上的負脈沖后作兩件事: 一是將數(shù)據(jù)存入A口輸入緩沖/鎖存器中; 二是輸入“緩沖器滿”的IBF

39、a高電平信號,通知外設(shè)已收到數(shù)據(jù)。 3,8255A檢測到/STBa變?yōu)楦唠姇r,若Qibfa高電平,Qintra高電平時,將INTRa變高向CPU申請中斷(Qintra可由用戶對PC4進行單一置復(fù)位控制字控制,參見模式一時的狀態(tài)字)。 4,CPU響應(yīng)中斷后,從A口讀取數(shù)據(jù),并在讀走數(shù)據(jù)后8255A撤掉INTRa信號,并使/STBa變低通知外設(shè)送下一個字節(jié)的數(shù)據(jù)。,P0 8031 /INT0,D7-D0 PA PC4 PC5 PC3,D7-D0 輸入設(shè)備,INTEa,/STBa,IBFa,INTRa,1,2,轉(zhuǎn)符號說明,(2)8255的模式1:選通輸出方式(口),P0 8031 /INT0,D7-

40、D0 PB PC1 PC2 PC0,D7-D0 輸入設(shè)備,INTEb,/OBFb,/ACKb,INTRb,1,3,1,CPU通過 MOVX Ri ,A 指令將數(shù)據(jù)送到B口輸出鎖存器,8255A收到數(shù)據(jù)后便令“輸出緩沖器滿”/OBFb變?yōu)榈碗娖? 通知外設(shè)準備接收。 2,外設(shè)接到/OBFb的低電平后作兩件事情: 一,從PB上取走數(shù)據(jù);二,使/ACKb線變低,通知8255A:外設(shè)已收到數(shù)據(jù)。 3,8255A接收到/ACKb線變低后,就對/OBFb ,/ACKb 和Qinteb的狀態(tài)進行檢測,當(dāng)它們皆為“1”時,INTRb變?yōu)楦唠娖较駽PU發(fā)終端申請。 4,CPU響應(yīng)中斷后,通過中斷服務(wù)程序?qū)⑾乱粋€

41、數(shù)據(jù)送到8255A的B口,同時撤掉INTRb信號。,2,模式一時的狀態(tài)字,(3)模式2: A口的雙向(輸入/輸出)方式,只有A口具有模式2 方式。此時,PA口為雙向I/O總線。 1,當(dāng)PA作輸入口時,由/STBa和IBFa信號控制, 過程同模式1的輸入操作。 2,當(dāng)PA作輸出口時,由/OBFa和/ACKa控制,工作過程同模式1的輸出操作。 模式2 非常適應(yīng)像終端一類的外設(shè),如鍵盤、顯示器等設(shè)備。,P0 8031 /INT0,D7-D0 PA,D7-D0 輸入設(shè)備,PC7,INTE1,/OBFa,/ACKa,INTRa,PC6,PC4,PC5,PC3,IBFa,/STBa,+,INTE2,返回本

42、節(jié)目錄,模式2 狀態(tài)字,4,8255A應(yīng)用舉例(方式0),/RD /WR P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 ALE 89C51,D7 Q7 D6 Q6 D5 Q5 D4 Q4 D3 Q3 D2 Q2 D1 Q1 D0 Q0 74LS373 G /E,/RD /WR RESET /CS PC口 8255A A1 A0 PB口 D7 D6 D5 D4 D3 D2 PA口 D1 D0,設(shè)8255A工作在方式0,且A口輸入,B、C口輸出。,/CS=FF7XH,A口:FF7CH B口: FF7DH, C口: FF7EH, 控制口:FF7FH,程序清單,ORG

43、 0100H START:MOV A,#90H;方式0,A口輸入,B口、C口輸出 MOV DPTR,#0FF7FH;8255A控制口地址送指針 MOVX DPTR,A;控制字送8255A控制寄存器 MOV DPTR,#0FF7C;A口地址送指針 MOVX A,DPTR;從A口輸入數(shù)據(jù)到A MOV DPTR,#0FF7DH; B口地址送指針 MOV A,DATA1;從內(nèi)存DATA1單元中取數(shù)X1到A MOVX DPTR,A;數(shù)據(jù)從B口輸出 MOV DPTR,#0FF7EH; C口地址送指針 MOV A,DATA2;從內(nèi)存DATA2單元中取數(shù)X2到A MOVX DPTR,A;數(shù)據(jù)從C口輸出,標志位

44、 A組方式選擇 A口、C口高4 B組方式 B口、C口低4,返回本節(jié)目錄,3.3.4,使用串行口擴展I/O端口,在MCS-51單片機串行口的4種工作模式中模式0 (同步移位模式)可以用來實現(xiàn)系統(tǒng)并行I/O端口的擴展。 使用這種方式的特點: 擴展I/O端口數(shù)量可以不受限制(N*8位); 擴展端口與單片機之間的連線少(2 3條); 擴展口與單片機之間的數(shù)據(jù)交換時間較長; 需要使用外部的“并入串出” 或“串入并出” 移位寄存器。,MCS-51 RXD TXD,移位寄存器,移位寄存器,同步移位脈沖,由MCS-51的串口與兩個8位移位寄存器(74LS164)構(gòu)成的16位并行輸出口,數(shù)據(jù)線,串行口0模式,特

45、點: 同步移位方式。8位數(shù)據(jù)移位,低位在先; 波特率固定為fosc/12; 數(shù)據(jù)由RXD(P3.0)出入,同步移位脈沖由TXD發(fā)出。 與串行口模式0相關(guān)的寄存器 SBUF。用來裝載接收或待傳送數(shù)據(jù)的緩沖器; SCON。設(shè)定工作模式,存放相關(guān)標志的串口控制寄存器。 設(shè)定串口模式:00000000B 模式0 時發(fā)送機的控制字; 00010000B 模式0 時接收機的控制字。 【注意】: 在接收或發(fā)送前必須將對應(yīng)的標志RI或TI清零! 只要REN=1便開始啟動接收。,使用2片74LS165構(gòu)成的16位輸入擴展口,MCS-51 P3.0 P3.1 P1.0,H G F E D C B A QH 74L

46、S165 SIN S/ L CLK,H G F E D C B A QH 74LS165 SIN S/ L CLK,RXD,TXD,16位并行I/O端口,74LS165: AH:8位并行數(shù)據(jù)輸入端; 并入串出移位寄存器 SIN: 串行數(shù)據(jù)輸入端; QH: 串行數(shù)據(jù)輸出端; S/ L: =0時鎖存并行數(shù)據(jù),=1時允許串行移位。,編程舉例:讀入20個字節(jié)的數(shù)據(jù)并送入內(nèi)部RAM單元,MOV R7,#14H;字節(jié)數(shù)20送計數(shù)器R7 MOV R0,#20H;內(nèi)部數(shù)據(jù)區(qū)指針R0賦初值 SETB F0;設(shè)置“讀入字節(jié)數(shù)奇偶數(shù)”標志 RCV0:CLR P1.0;并行置入數(shù)據(jù) SETB P1.0;允許串行移位

47、RCV1:MOV SCON,#00010000B;設(shè)定模式0并啟動接收(REN=1) LOOP:JNB RI,$;等待接收結(jié)束 CLR RI; 首先清RI準備下一次接收 MOV A,SBUF;將接收的數(shù)據(jù)送A MOV R0,A;數(shù)據(jù)送內(nèi)存 INC R0 CPL F0;標志取反 JB F0,RCV2;接收偶次后重新置入數(shù)據(jù) DEC R7;接收奇次時要再接收一幀 SJMP RCV1;轉(zhuǎn)RCV1再接收一幀數(shù)據(jù) RCV2:DJNZ R7,RCV0;是否完成20個字節(jié)的輸入 【注意】:F0的作用和程序根據(jù)F0的狀態(tài)轉(zhuǎn)移到RCV1、RCV0的區(qū)別。,思考題:編一個在下面的電路中讀入20個字節(jié)的數(shù)據(jù)的程序,

48、MCS-51 P3.0 P3.1 P1.0,H G F E D C B A QH 74LS165 SIN S/ L CLK,RXD,TXD,使用2片74LS164構(gòu)成的16位輸出擴展口,MCS-51 P3.0 P3.1 P1.0,QA QH A,B 74LS164 /CLR CLK,QA QH A,B 74LS164 /CLR CLK,RXD,TXD,共陽極LED數(shù)碼管 . g f e d c b a,共陽極LED數(shù)碼管 . g f e d c b a,+5V,編程:利用靜態(tài)數(shù)碼管顯示電路,顯示RAM中的數(shù)據(jù),數(shù)據(jù)存RAM的20H開始的單元,以BCD碼的形式存儲(高4位為0); 再送數(shù)碼管顯示

49、前必須事先利用查表程序?qū)CD碼轉(zhuǎn)換為共陽極的字符碼。,a b c d e f g dp,+VCC,a,b,c,d,e,f,g,dp,ORG 2000H DISP:MOV R7,02H;設(shè)置顯示位數(shù) MOV R0,#20H;設(shè)置數(shù)據(jù)區(qū)指針 MOV SCON,#00H;設(shè)串行口為模式0 MOV DPTR, # TABLE;設(shè)置字符表指針 DISP0:MOV A , R0;取數(shù)據(jù)到A MOVC A,A+DPTR;從表中取與A對應(yīng)的字符到A MOV SBUF,A;字符向外傳送 LOOP:JNB TI,$;等待傳送結(jié)束 CLR TI;清除標志TI INC R0;指向下一個數(shù)據(jù) DJNZ R7,DISP

50、0;未完時轉(zhuǎn)DISP0繼續(xù) RET TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1, 2,3,4的字符碼 DB 92H,82H,0F8H,80H,98H;5,6,7,8,9的字符碼 END,返回,3.4:定時計數(shù)器的應(yīng)用,3.4.1:定時計數(shù)器的四種工作模式 3.4.2:定時器相關(guān)的寄存器 3.4.3:定時器模式1電路 3.4.4:定時計數(shù)器的初始化 3.4.5:定時器方式1應(yīng)用舉例(一) 3.4.6:定時器方式1應(yīng)用舉例(二) 3.4.7:定時器門控位GATE的應(yīng)用,繼續(xù),3.4.1:定時計數(shù)器的四種工作模式,模式0、模式1:基本相同,區(qū)別在于模式0計數(shù)器的長度為1

51、3位;模式1時計數(shù)器長度為16位; 模式2:主要用于單片機的串行通訊時的“波特率”發(fā)生器,將在下一節(jié)“串行口應(yīng)用中介紹”。 本節(jié)主要介紹模式1 的應(yīng)用。,返回本節(jié)目錄,3.4.2: 定時器相關(guān)的寄存器,定時/計數(shù)器1,定時/計數(shù)器0,1,模式控制寄存器TMOD ( SFR 89H),2,控制寄存器TCON (SFR地址:88H),返回本節(jié)目錄,T0、T1的啟動TR和溢出標志TF 外部中斷標志IE和觸發(fā)極性選擇IT,3.4.3:定時器模式1電路,TL1,TH1,震蕩器,1/12,(8位),(8位),TF1,中斷,控制,T1 引腳,TR1,GATE,INT1,C/T=0,C/T=1,返回本節(jié)目錄,

52、3.4.4:定時計數(shù)器的初始化,(一)初始化的步驟: 1,根據(jù)需要,設(shè)定工作方式(C/T位)計數(shù)或定時; 2,確定定時或計數(shù)初值; 3,設(shè)置相應(yīng)的中斷參數(shù)、優(yōu)先級別; 4,送命令字,啟動定時、計數(shù)器。 (二)定時、計數(shù)初值的計算: TC為計數(shù)初值; 1,計數(shù)初值計算公式: TC=M-C 其中 M為計數(shù)器的模; C為計數(shù)值; 【舉例】:在方式0時,每接收100個外部事件,要求產(chǎn)生一個中斷,確定計數(shù)初值。TC=8192-100=8092=1F9CH,1FH,9CH,THi=FCH TLi=1CH,2,定時器初值計算公式:TC=M-T/T計數(shù) (其中:M 計數(shù)模;T 定時時間;T計數(shù) 系統(tǒng)時鐘周期的

53、12倍) 設(shè)系統(tǒng)時鐘為12MHZ,則T計數(shù) =1。定時器4種模式的最大定時時間與M有關(guān)。,【舉例】:請計算定時50ms所需要的定時初值。 1,確定模式.。選擇模式1 2,計算定時初值。 Tc=65536-50ms/1=65536-50000=15536=3CB0H 既THi=3CH;TLi=B0H,返回本節(jié)目錄,3.4.5:定時器方式1應(yīng)用舉例(一),利用單片機的P1.0產(chǎn)生一個頻率為50HZ的對稱方波。 【解】:使用T0。首先確定工作方式、工作模式和定時初值。 1,選定時方式(C/T=0); 2,模式1(M2 M1=01) , 3,TC = 65536-10ms / 1us = 55536

54、= D8F0H, 既TH=D8H,TL=F0H。,20ms,10ms,10ms,TMOD 0000 0001,ORG 1000H STRAT:MOV TMOD,#01H;設(shè)定時器為定時,模式1 SETB TR0;啟動定時器T0 LOOP:MOV TH0,# 0D8H;設(shè)定時初值 MOV TL0,# 0F0H JNB TF0,$;定時時間到? CLR TF0;清T0標志 CPL P1.0;P1.0取反 SJMP LOOP;循環(huán)繼續(xù) END,程序清單,返回本節(jié)目錄,3.4.6: 定時器方式1應(yīng)用舉例(二),利用P1.0口線輸出周期為2S的方波。 【解】如何產(chǎn)生1S(1000ms)的定時? 1000ms的定時由50ms累計20次。 1, 設(shè)定T0為定時方式,模式1。 2,TC=65535-50ms/1us=3CB0H 3,TMOD控制字為:00000001B=01H

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論