單片機6 第六章系統(tǒng)擴展_第1頁
單片機6 第六章系統(tǒng)擴展_第2頁
單片機6 第六章系統(tǒng)擴展_第3頁
單片機6 第六章系統(tǒng)擴展_第4頁
單片機6 第六章系統(tǒng)擴展_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應用單片機原理及應用北京化工大學北京化工大學信息科學與技術(shù)學院信息科學與技術(shù)學院主講教師:郭青主講教師:郭青E-mail: 第六章單片機系統(tǒng)的擴展對于簡單的應用場合,對于簡單的應用場合,80C51的最小系統(tǒng)就能滿足要求;的最小系統(tǒng)就能滿足要求;對于復雜的應用場合,就需要利用單片機的擴展功能,構(gòu)對于復雜的應用場合,就需要利用單片機的擴展功能,構(gòu)成功能強,規(guī)模較大的系統(tǒng)。成功能強,規(guī)模較大的系統(tǒng)。系統(tǒng)擴展是指單片機內(nèi)部各功能部件不能滿足應用系統(tǒng)要系統(tǒng)擴展是指單片機內(nèi)部各功能部件不能滿足應用系統(tǒng)要求時,在片外連接相應的外圍芯片以滿足應用系統(tǒng)要求。求時,在片外連接相應的外圍芯片以滿足應用系

2、統(tǒng)要求。外部程序存儲器外部程序存儲器ROM / EPROM的擴展的擴展外部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器RAM的擴展的擴展I/O接口的擴展接口的擴展中斷系統(tǒng)擴展中斷系統(tǒng)擴展其它特殊功能擴展其它特殊功能擴展擴展內(nèi)容擴展內(nèi)容第六章第六章 單片機系統(tǒng)的擴展單片機系統(tǒng)的擴展一、一、80C5180C51的總線結(jié)構(gòu)的總線結(jié)構(gòu)當單片機進行外部并行擴展時,其外部連線就成為一當單片機進行外部并行擴展時,其外部連線就成為一般微型機的三總線結(jié)構(gòu)形式般微型機的三總線結(jié)構(gòu)形式6.16.1 概述概述擴展方法擴展方法并行擴展并行擴展串行擴展串行擴展利用三總線結(jié)構(gòu)利用三總線結(jié)構(gòu)利用利用SPI三線總線和三線總線和I2C雙總線雙總線8

3、0C5180C51總線結(jié)構(gòu)總線結(jié)構(gòu)ALE:當訪問外部存儲器時,:當訪問外部存儲器時,ALE信號的信號的負跳變負跳變將將P0口口上的上的低低8位地址送入地址鎖存器位地址送入地址鎖存器PSEN:在訪問:在訪問外部程序存儲器外部程序存儲器讀取指令碼時,每個機器讀取指令碼時,每個機器周期產(chǎn)生兩次周期產(chǎn)生兩次PSEN信號,與地址信號配合,選通相應的信號,與地址信號配合,選通相應的外部程序存儲單元,讀取指令碼,外部程序存儲單元,讀取指令碼,指令碼從指令碼從P0口輸入口輸入WR、RD:外部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器讀、寫選通,讀、寫選通,低電平有效低電平有效。由。由MOVX指令產(chǎn)生指令產(chǎn)生EA:訪問內(nèi)部或外部

4、程序存儲器選擇信號。:訪問內(nèi)部或外部程序存儲器選擇信號。EA=1,訪問,訪問內(nèi)部程序存儲器,當內(nèi)部程序存儲器,當PC超過片內(nèi)存儲器空間,自動轉(zhuǎn)向外超過片內(nèi)存儲器空間,自動轉(zhuǎn)向外部;部;EA=0,訪問外部程序存儲器。,訪問外部程序存儲器。二、外部串行擴展性能(略)二、外部串行擴展性能(略)控制總線作用簡述控制總線作用簡述一、外部程序存儲器的擴展一、外部程序存儲器的擴展單片微機的內(nèi)外程序存儲器最大可擴展至單片微機的內(nèi)外程序存儲器最大可擴展至64KB擴展芯片可采用擴展芯片可采用EPROM1、擴展的基本方法、擴展的基本方法地址線、數(shù)據(jù)線對應相連地址線、數(shù)據(jù)線對應相連單片機的單片機的PSEN線與擴展芯片

5、的線與擴展芯片的MEMR(OE)線相連)線相連擴展芯片的擴展芯片的片選線可接地片選線可接地或與或與線性選擇線線性選擇線或或譯碼輸出線譯碼輸出線相連相連ALE與地址鎖存器選通與地址鎖存器選通相連相連EA接地或接接地或接+5V6.2 單片機的外部并行擴展程序存儲器擴展框圖程序存儲器擴展框圖EA接地,外部程序存儲器地址從接地,外部程序存儲器地址從0000H開始開始2、鎖存器、鎖存器74HC373:鎖存緩沖器:鎖存緩沖器D0 D7:數(shù)據(jù)輸入Q0 Q7:數(shù)據(jù)輸出LE:鎖存允許端 :輸出允許端OE74HC373真值表真值表74HC373邏輯圖邏輯圖單片機外部程序存儲器取指單片機外部程序存儲器取指 操作時序

6、操作時序s1s2s3s4s5s6s1s2s3s4s5s6機器周期機器周期1機器周期機器周期2XTAL1ALEPSENPCHPCHP2PCHPCL指令指令P0PCL指令指令PCL指令指令P2口連續(xù)輸出口連續(xù)輸出PC高高8位地址,剩余位線不能再作為位地址,剩余位線不能再作為I/O口使用口使用80C5180C51擴展擴展27322732為程序存儲器為程序存儲器27324K8位EPROM12位地址線8位數(shù)據(jù)線片選線CE輸出允許端OE2732的地址范圍的地址范圍1000H1FFFHVCCEA P2.0P2.3 ALE80C51 P0GND PSENA8A11 VCC2732A0A7 CEO0O7 GND

7、 OE+5V LE VCC Q074HC373 Q7OE D0D7+5V+5V8884EA上拉到上拉到+5 VPC小于小于0FFFH時,時,訪問片內(nèi)程序存儲器;訪問片內(nèi)程序存儲器;PC大于大于0FFFH時,時,訪問片外程序存儲器訪問片外程序存儲器2732。80C31擴展兩片8 K8位片外程序存儲器2764地址范圍地址范圍P2.5=0, 選中片選中片1:0000H1FFFHP2.5=1, 選中片選中片2:2000H3FFFH1、擴展概述、擴展概述最大可擴展最大可擴展64K字節(jié),連接方法與程序存儲器連接方字節(jié),連接方法與程序存儲器連接方法大致相同法大致相同地址線、數(shù)據(jù)線對應相連地址線、數(shù)據(jù)線對應相

8、連存儲器讀輸入存儲器讀輸入RD與單片機讀輸出與單片機讀輸出RD(P37)相連)相連存儲器寫輸入存儲器寫輸入WR與單片機寫輸出與單片機寫輸出WR(P36)相連)相連ALE連接方法同程序存儲器連接方法同程序存儲器二、外部數(shù)據(jù)存儲器擴展二、外部數(shù)據(jù)存儲器擴展MOVX A, DPTR MOVX A, DPTR 和和 MOVX DPTR,A MOVX DPTR,A 操作時序操作時序s1s2s3s4s5s6s1s2s3s4s5s6PCHDPHPCL指令指令DPL數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸出機器周期機器周期1機器周期機器周期2XTAL1ALEPSENP2P0RDP0WRPCL指令指令DPLs1s2s3s

9、4s5s6s1s2s3s4s5s6PCHP2口鎖存器內(nèi)容口鎖存器內(nèi)容PCL指令指令Ri數(shù)據(jù)輸入數(shù)據(jù)輸入PCL指令指令Ri數(shù)據(jù)輸出數(shù)據(jù)輸出機器周期機器周期1機器周期機器周期2XTAL1ALEPSENP2P0RDP0WRMOVX A, Ri 和 MOVX Ri, A 操作時序2、擴展片外數(shù)據(jù)存儲器的硬件電路在在80C51的擴展系統(tǒng)中,片外數(shù)據(jù)存儲器一般由隨機存取的擴展系統(tǒng)中,片外數(shù)據(jù)存儲器一般由隨機存取存儲器組成,最大可擴展存儲器組成,最大可擴展64 KB由于面向控制,實際上擴展的容量都不會太大,一般采用由于面向控制,實際上擴展的容量都不會太大,一般采用靜態(tài)靜態(tài)RAM,如如6116(2 K8位)和

10、位)和6264(8 K8位)位)地址鎖存器與擴展程序存儲器時一樣,采用地址鎖存器與擴展程序存儲器時一樣,采用8D鎖存器鎖存器74HC273或鎖存緩沖器或鎖存緩沖器74HC373擴展片外數(shù)據(jù)存儲器的硬件電路靜態(tài)數(shù)據(jù)存儲器(靜態(tài)數(shù)據(jù)存儲器(61166116)常用的靜態(tài)數(shù)據(jù)存儲器:常用的靜態(tài)數(shù)據(jù)存儲器: 6116(2K8);); 6264(8K8)靜態(tài)數(shù)據(jù)存儲器的特點:靜態(tài)數(shù)據(jù)存儲器的特點: 1)無需考慮保持數(shù)據(jù)而設置的刷新電路,擴展電路簡單)無需考慮保持數(shù)據(jù)而設置的刷新電路,擴展電路簡單 2)通過有源電路來保持存儲器中的數(shù)據(jù),消耗較多功率)通過有源電路來保持存儲器中的數(shù)據(jù),消耗較多功率 3)價格高

11、)價格高6116,采用,采用CMOS工藝制作,單一工藝制作,單一5V電源,額定功耗電源,額定功耗160mw,典型存取時間為,典型存取時間為200ns,24線雙列直插式封裝。線雙列直插式封裝。操作方式操作方式 操作方式操作方式 CE OE WE IO0IO7 寫寫 L H L Din 讀讀 L L H Dout 未選中未選中 H 任意任意 任意任意 高阻高阻 寫寫 L L L Din6116引腳及邏輯符號A7A6A5A4A3A2A1A0IO0IO1IO2GNDACCA8A9WEOEA10CEIO7 IO6IO5IO4IO31241213A10A011IO7IO08CEOEWEVCCGND5V擴展

12、擴展2K2K8 8位片外數(shù)據(jù)存儲器位片外數(shù)據(jù)存儲器靜態(tài)數(shù)據(jù)存儲器靜態(tài)數(shù)據(jù)存儲器626462646264,采用,采用CMOS工藝制作,單一工藝制作,單一5V電源,額定功耗電源,額定功耗200mw,典型存取時間為,典型存取時間為200ns,增加了兩根地址線,增加了兩根地址線,28線線雙列直插式封裝。雙列直插式封裝。 操作方式操作方式 CE1 CE2 OE WE IO0IO7 寫寫 L H H L Din 寫寫 L H L L Din 讀讀L H L H Dout 未選中未選中 H 任意任意 任意任意 任意任意 高阻高阻 未選中未選中 任意任意 L 任意任意 任意任意 高阻高阻 輸出禁止輸出禁止 L

13、 H H H 高阻高阻62646264引腳引腳A12A013IO8IO18CEOEWEVCCGND5V6264邏輯圖邏輯圖兩片6264擴展16 K8位片外數(shù)據(jù)存儲器當當P2.5=0時時,訪問片訪問片(1);當;當P2.5=1時,訪問片時,訪問片(2)。 片片(1)的地址范圍為的地址范圍為0000H1FFFH;片片(2)的地址范圍為的地址范圍為2000H3FFFH。三、擴展片外程序存儲器和片外數(shù)據(jù)存儲器1 1、 分別擴展片外程序存儲器和片外數(shù)據(jù)存儲器分別擴展片外程序存儲器和片外數(shù)據(jù)存儲器在單片機系統(tǒng)中,既需要擴展片外程序存儲器,也需要擴展在單片機系統(tǒng)中,既需要擴展片外程序存儲器,也需要擴展片外數(shù)

14、據(jù)存儲器。片外數(shù)據(jù)存儲器。分別擴展片外程序存儲器和片外數(shù)據(jù)存儲器l程序存儲器和數(shù)據(jù)存儲器都由程序存儲器和數(shù)據(jù)存儲器都由P2口提供高口提供高8位地址、位地址、P0口提供低口提供低8位地址和位地址和8位數(shù)據(jù)或指令,且公用一個地位數(shù)據(jù)或指令,且公用一個地址鎖存器。址鎖存器。l兩者共處同一地址空間,即程序存儲器地址范圍為兩者共處同一地址空間,即程序存儲器地址范圍為0000H 1FFFH,數(shù)據(jù)存儲器的地址范圍也是數(shù)據(jù)存儲器的地址范圍也是0000H1FFFH。l程序存儲器由讀選通信號程序存儲器由讀選通信號PSEN控制,數(shù)據(jù)存儲器的讀控制,數(shù)據(jù)存儲器的讀和寫由和寫由RD和和WR信號控制。信號控制。l由于控制

15、信號的不同,程序存儲器和數(shù)據(jù)存儲器的空由于控制信號的不同,程序存儲器和數(shù)據(jù)存儲器的空間在邏輯上是嚴格分開的,所以在訪問它們時不會發(fā)間在邏輯上是嚴格分開的,所以在訪問它們時不會發(fā)生總線沖突。生總線沖突。EEPROM:電擦寫可編程只讀存儲器,特點是能在線:電擦寫可編程只讀存儲器,特點是能在線+5V改寫,掉電時原存信息不丟失。改寫,掉電時原存信息不丟失。以以2817A為例介紹單片機擴展為例介紹單片機擴展EEPROM為通用存儲器的方法為通用存儲器的方法1、外特性、外特性 容量為容量為2KB外部外部EEPROMEEPROM存儲器擴展存儲器擴展工作方式工作方式 CE OE WE RDY/BUSY 輸入輸入

16、/輸出輸出 讀讀 0 0 1 高阻高阻 Dout 寫寫 0 1 0 0 Din 維持維持 1 X X 高阻高阻 高阻高阻字節(jié)擦除字節(jié)擦除 字節(jié)寫入前自動擦除字節(jié)寫入前自動擦除2、接口電路、接口電路地址線、數(shù)據(jù)線及片選線的連接與地址線、數(shù)據(jù)線及片選線的連接與RAM和和EPEOM相同相同因為因為EEPROM即可隨機讀寫,又不會因掉電而丟失信息,即可隨機讀寫,又不會因掉電而丟失信息,所以即可作為程序存儲器又可作為數(shù)據(jù)存儲器使用所以即可作為程序存儲器又可作為數(shù)據(jù)存儲器使用下圖為下圖為8031單片機擴展單片機擴展2817AEEPROM作為通用存儲器的作為通用存儲器的電路圖電路圖RDY/BUSY:寫入寫入

17、1字節(jié)時間為字節(jié)時間為16ms左右,在寫入期間為低左右,在寫入期間為低電平,電平,P10輸入低電平;寫入結(jié)束,輸入低電平;寫入結(jié)束,RDY/BUSY呈高阻狀呈高阻狀態(tài),態(tài),P10由由3K電阻及電阻及+5V電壓上拉至高電平。電壓上拉至高電平。8031單片機擴展單片機擴展 EEPROM 2817A作為通用存儲器作為通用存儲器3、程序舉例、程序舉例將將2817A的的0700H07FFH(256個)單元依次寫入數(shù)個)單元依次寫入數(shù)據(jù)據(jù)00HFFH的子程序段的子程序段ORG 0100HMOV DPL , #00HMOV DPH , #07HMOV A , #00HMOVX DPTR , AJNB P1.

18、0 , $INC DPTRINC AJNZ LOOPRETSTART:LOOP:; 置首地址置首地址;P10為為1,表示已寫完;,表示已寫完;為為0,表示正在寫,等待,表示正在寫,等待;寫入最大值為;寫入最大值為FFH,加加1為為00H,傳送結(jié)束,傳送結(jié)束四、通過并行總線擴展四、通過并行總線擴展I/OI/O口口I/O (輸入輸入/輸出輸出)接口是接口是MCS-51與外設交換數(shù)字信息的橋梁。與外設交換數(shù)字信息的橋梁。I/O擴展也屬于系統(tǒng)擴展的一部分。擴展也屬于系統(tǒng)擴展的一部分。真正用作真正用作I/O口線的只有口線的只有P1口的口的8位位I/O線和線和P3口的某些位線。口的某些位線。在多數(shù)應用系統(tǒng)

19、中,在多數(shù)應用系統(tǒng)中,MCS-51單片機都需要外擴單片機都需要外擴I/O接口電路。接口電路。I/O接口電路應滿足以下要求: 1.實現(xiàn)和不同外設的速度匹配實現(xiàn)和不同外設的速度匹配 2. 輸出數(shù)據(jù)鎖存輸出數(shù)據(jù)鎖存 3. 輸入數(shù)據(jù)三態(tài)緩沖輸入數(shù)據(jù)三態(tài)緩沖 通過并行總線擴展通過并行總線擴展I/OI/O口口完成輸入完成輸入/輸出口功能的擴展,可以利用簡單的輸出口功能的擴展,可以利用簡單的TTL電路電路或或CMOS電路,也可以使用可編程接口芯片。電路,也可以使用可編程接口芯片。如:可編程并行接口(如:可編程并行接口(8155、8255) 可編程通用同步可編程通用同步/異步通信接口(異步通信接口(8251)

20、 可編程定時可編程定時/計數(shù)器(計數(shù)器(8253)等)等使用接口芯片優(yōu)點:與使用接口芯片優(yōu)點:與80C51信號體制一致,利用擴展片外信號體制一致,利用擴展片外數(shù)據(jù)存儲器的并行總線進行訪問,使用數(shù)據(jù)存儲器的并行總線進行訪問,使用MOVX指令,接口指令,接口非常方便。非常方便。1 1、80C5180C51擴展擴展8255A8255A接口電路接口電路8255A是是Intel公司生產(chǎn)的可編程并行公司生產(chǎn)的可編程并行I/O接口芯片接口芯片具有具有3個個8位的并行位的并行I/O口,口,3種工作方式種工作方式引腳圖引腳圖D7D0:三態(tài)雙向數(shù)據(jù)線:三態(tài)雙向數(shù)據(jù)線CS:片選信號線,低電平有效:片選信號線,低電平

21、有效RD:讀出信號線:讀出信號線WR:寫入信號線:寫入信號線Vcc:+5V電源電源PA7PA0:A口輸入口輸入/輸出線輸出線PB7PB0:B口輸入口輸入/輸出線輸出線PC7PC0:C口輸入口輸入/輸出線輸出線A1、A0:地址線,用來選擇:地址線,用來選擇8255A內(nèi)部的內(nèi)部的4個端口。個端口。 3個個8位的并行位的并行I/O口口 PA口:數(shù)據(jù)輸出鎖存和緩沖;數(shù)據(jù)輸入鎖存口:數(shù)據(jù)輸出鎖存和緩沖;數(shù)據(jù)輸入鎖存 PB口:數(shù)據(jù)輸出鎖存和緩沖;數(shù)據(jù)輸入緩沖??冢簲?shù)據(jù)輸出鎖存和緩沖;數(shù)據(jù)輸入緩沖。 PC口:數(shù)據(jù)輸出鎖存;數(shù)據(jù)輸入緩沖??冢簲?shù)據(jù)輸出鎖存;數(shù)據(jù)輸入緩沖。 PC口可在軟件的控制下,分為兩個口可在

22、軟件的控制下,分為兩個4位端口位端口 作為作為PA口、口、PB口選通方式操作時的狀態(tài)控制信號口選通方式操作時的狀態(tài)控制信號。8255A各端口編址各端口編址A1A0端口端口00A口口01B口口10C口口11控制字寄存器控制字寄存器A1A0RDWRCS工作狀態(tài)工作狀態(tài)00010讀端讀端A A:A A口數(shù)據(jù)口數(shù)據(jù)數(shù)據(jù)總線數(shù)據(jù)總線讀端口讀端口B B:B B口數(shù)據(jù)口數(shù)據(jù)數(shù)據(jù)總線數(shù)據(jù)總線讀端口讀端口C C:C C口數(shù)據(jù)口數(shù)據(jù)數(shù)據(jù)總線數(shù)據(jù)總線010101001000100寫端口寫端口A A:總線數(shù)據(jù)總線數(shù)據(jù)A A口口寫端口寫端口B B:總線數(shù)據(jù)總線數(shù)據(jù)B B口口寫端口寫端口C C:總線數(shù)據(jù)總線數(shù)據(jù)C C口口

23、寫控制字:總線數(shù)據(jù)寫控制字:總線數(shù)據(jù)控制字寄存器控制字寄存器0110010100111001數(shù)據(jù)總線為高阻數(shù)據(jù)總線為高阻11010非法狀態(tài)非法狀態(tài)110數(shù)據(jù)總線為高阻數(shù)據(jù)總線為高阻8255A8255A端口工作狀態(tài)選擇端口工作狀態(tài)選擇8255A有三種工作方式:有三種工作方式:l 方式方式0:基本輸入輸出:基本輸入輸出l 方式方式1:選通輸入輸出:選通輸入輸出l 方式方式2:雙向傳送(僅:雙向傳送(僅A口有)口有)l 三種工作方式由方式控制字來決定三種工作方式由方式控制字來決定8255A8255A的工作方式的工作方式8255A8255A的工作方式的工作方式P0.0P0.774HC373ALED7D

24、0A1A02P2.7CS80C518255ARDWRRDWR8255A 各口地址:各口地址:A:8000HB:8001HC:8002H控制字寄存器:控制字寄存器: 8003H設未用地址線為設未用地址線為080C5180C51與與82558255接口電路接口電路初始化程序舉例初始化程序舉例 A組設置成方式組設置成方式2,B組為方式組為方式1,B口作為口作為輸出口,控制字為輸出口,控制字為 C4H MOV DPTR,#8003HMOV A,#0C4HMOVX DPTR, A輸出緩輸出緩沖器滿沖器滿乙機接收過程乙機接收過程 檢測檢測PC4 輸入數(shù)據(jù)輸入數(shù)據(jù) 通過通過PC0發(fā)應發(fā)應答信號答信號甲機發(fā)送

25、過程甲機發(fā)送過程發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) 通過通過PC7硬硬件置低電平件置低電平檢測檢測PC6,準備下一組數(shù)準備下一組數(shù)據(jù)據(jù)INTRA2 2、擴展簡單的輸入、擴展簡單的輸入/ / 輸出口輸出口擴展擴展8個輸出口的電路個輸出口的電路 使用使用 MOVX Ri , A 時,口地址為時,口地址為00H07H 使用使用 MOVX DPTR , A 時,口地址為時,口地址為 0000H0007HWR有片外數(shù)據(jù)存儲器時的擴展有片外數(shù)據(jù)存儲器時的擴展P1.0口來選擇口來選擇I/O或或RAM0 RAM 地址范圍為地址范圍為0000H1FFFH 1 I/O輸入口輸入口 地址任意地址任意 外圍設備向單片機輸出數(shù)據(jù)時,有一

26、選通信號連接在外圍設備向單片機輸出數(shù)據(jù)時,有一選通信號連接在74HC373的鎖存允許端上,在選通信號的低電平期間將發(fā)的鎖存允許端上,在選通信號的低電平期間將發(fā)來的數(shù)據(jù)鎖存,同時向來的數(shù)據(jù)鎖存,同時向CPU發(fā)出中斷申請。發(fā)出中斷申請。 在中斷服務程序中由P0口讀入鎖存器中的數(shù)據(jù)。 例:將單片機從輸入口讀入的數(shù)據(jù),存入片外數(shù)據(jù)存儲器例:將單片機從輸入口讀入的數(shù)據(jù),存入片外數(shù)據(jù)存儲器6264的以的以1000H為首地址的區(qū)域。為首地址的區(qū)域。 初始化和中斷服務程序如下。初始化和中斷服務程序如下。中斷系統(tǒng)初始化程序:中斷系統(tǒng)初始化程序:INIT:CLR IT0 ; MOV DPTR,#1000H SET

27、B EX0 SETB EA;外部中斷;外部中斷0選為低電平觸發(fā)選為低電平觸發(fā) ;置數(shù)據(jù)區(qū)首址置數(shù)據(jù)區(qū)首址;外部中斷外部中斷0允許允許;CPU開中斷開中斷中斷服務程序:中斷服務程序: ORG 0003H AJMP INT ORG 0100H INT: SETB P1.0MOVX A, DPTR CLR P1.0 MOVX DPTR, A INC DPTR RETI;外部中斷外部中斷0入口地址入口地址 ;中斷服務程序;中斷服務程序;指向輸入口指向輸入口;輸入口數(shù)據(jù)讀入累加器輸入口數(shù)據(jù)讀入累加器;指向;指向6264;存入數(shù)據(jù)區(qū);存入數(shù)據(jù)區(qū);調(diào)整地址指針;調(diào)整地址指針;中斷返回;中斷返回6.36.3

28、單片機的外部串行擴展單片機的外部串行擴展80C51系列單片機的串行總線包括:系列單片機的串行總線包括: SPI 三線總線三線總線 和和 I2C 公用雙總線公用雙總線一、一、 I2C 公用雙總線結(jié)構(gòu)公用雙總線結(jié)構(gòu)在器件之間使用兩根信號線(在器件之間使用兩根信號線(SDA 和和SCL)以串行的方)以串行的方法進行信息傳送,并允許若干兼容器件共享的雙線總線,法進行信息傳送,并允許若干兼容器件共享的雙線總線,稱為稱為I2C 總線總線6.3.16.3.1 串行擴展串行擴展E E2 2PROMPROMI I2 2C C總線系統(tǒng)示意圖總線系統(tǒng)示意圖有有I2C 接口的接口的主機主機有有I2C 接口的接口的從機

29、從機有有I2C 接口的接口的從機從機 I2C總線總線SCLSDASDA稱為串行數(shù)據(jù)線,用于傳輸雙向數(shù)據(jù)稱為串行數(shù)據(jù)線,用于傳輸雙向數(shù)據(jù)SCL稱為串行時鐘線,用于傳輸時鐘信號,來同步串稱為串行時鐘線,用于傳輸時鐘信號,來同步串行數(shù)據(jù)線上的數(shù)據(jù)行數(shù)據(jù)線上的數(shù)據(jù)Vcc掛接在掛接在I2C 總線上的器件,根據(jù)其功能可以分為兩種:總線上的器件,根據(jù)其功能可以分為兩種: 主控器件和從控器件主控器件和從控器件主控器件:控制總線存取,產(chǎn)生串行時鐘(主控器件:控制總線存取,產(chǎn)生串行時鐘(SCL)信號,)信號,并產(chǎn)生啟動傳送及結(jié)束傳送的條件,總線必須由一個主控并產(chǎn)生啟動傳送及結(jié)束傳送的條件,總線必須由一個主控器件控

30、制。主控器件一般稱為主器件。器件控制。主控器件一般稱為主器件。從控器件:在總線上被主控器件尋址的器件,它們根據(jù)主從控器件:在總線上被主控器件尋址的器件,它們根據(jù)主控器件的命令來接收和發(fā)送數(shù)據(jù)。一般稱為從器件??仄骷拿顏斫邮蘸桶l(fā)送數(shù)據(jù)。一般稱為從器件。數(shù)據(jù)傳輸協(xié)議:只有當總線不忙時,數(shù)據(jù)傳輸才能開始;數(shù)數(shù)據(jù)傳輸協(xié)議:只有當總線不忙時,數(shù)據(jù)傳輸才能開始;數(shù)據(jù)傳送期間,無論何時串行時鐘線為高,串行數(shù)據(jù)線必須保據(jù)傳送期間,無論何時串行時鐘線為高,串行數(shù)據(jù)線必須保持穩(wěn)定;當串行時鐘線為高時,串行數(shù)據(jù)線的改變將被認為持穩(wěn)定;當串行時鐘線為高時,串行數(shù)據(jù)線的改變將被認為是傳送的開始或停止。是傳送的開始或

31、停止。定義如下總線條件定義如下總線條件1、總線不忙、總線不忙 串行時鐘線(串行時鐘線(SCL)和串行數(shù)據(jù)線()和串行數(shù)據(jù)線(SDA)保持高電平)保持高電平2、開始數(shù)據(jù)傳送、開始數(shù)據(jù)傳送 在在SCL=1時,時,SDA上發(fā)生一個由高電平到低電平的變上發(fā)生一個由高電平到低電平的變化決定起始條件,或稱起始信號(化決定起始條件,或稱起始信號(START)。)。 總線上所有命令都在起始條件后進行??偩€上所有命令都在起始條件后進行。3、停止數(shù)據(jù)傳送、停止數(shù)據(jù)傳送 在在SCL=1情況下,情況下,SDA上發(fā)生一個由低電平到高電平的過上發(fā)生一個由低電平到高電平的過程,稱為停止條件,或稱停止信號(程,稱為停止條件,

32、或稱停止信號(STOP)。)。 總線上所有操作必須在停止條件以前結(jié)束??偩€上所有操作必須在停止條件以前結(jié)束。4 4、數(shù)據(jù)有效、數(shù)據(jù)有效 在開始條件后,在在開始條件后,在SCL=1 SCL=1 的周期期間,當?shù)闹芷谄陂g,當SDASDA穩(wěn)定時,串穩(wěn)定時,串行數(shù)據(jù)線的狀態(tài)表示數(shù)據(jù)線是有效的行數(shù)據(jù)線的狀態(tài)表示數(shù)據(jù)線是有效的 在在SCL 保持低電平(保持低電平(SCL=0)的周期期間,)的周期期間,SDA上的數(shù)上的數(shù)據(jù)應該改變。每位數(shù)據(jù)需要一個時鐘脈沖。據(jù)應該改變。每位數(shù)據(jù)需要一個時鐘脈沖。 每次數(shù)據(jù)傳送在起始信號下啟動,在停止信號下結(jié)束。重每次數(shù)據(jù)傳送在起始信號下啟動,在停止信號下結(jié)束。重復的起始信號

33、將結(jié)束前一個傳送過程,但不釋放復的起始信號將結(jié)束前一個傳送過程,但不釋放I2C 總線,可總線,可接著進行下一個傳送過程。接著進行下一個傳送過程。I2C總線上數(shù)據(jù)傳送有兩種方式,它們由總線上數(shù)據(jù)傳送有兩種方式,它們由START后的第一個后的第一個字節(jié)的最低位(即方向位字節(jié)的最低位(即方向位 )決定)決定WR/ 主發(fā)送到從接收主發(fā)送到從接收 從發(fā)送到主接收從發(fā)送到主接收二、利用模擬I2C擴展串行E2PROM1 1、串行、串行E E2 2PROM24LC32PROM24LC32的特點及引腳的特點及引腳 32 Kb(4 K8位)串行存取的電擦除可編程的只讀存儲器位)串行存取的電擦除可編程的只讀存儲器具

34、有如下特點:具有如下特點:n 芯片對快速寫操作具有芯片對快速寫操作具有8個個8字節(jié)頁面、或者字節(jié)頁面、或者64字節(jié)的字節(jié)的高速緩存器,并具有二線串行接口。高速緩存器,并具有二線串行接口。n在在I2C上作從器件使用上作從器件使用; 可在電源電壓低到可在電源電壓低到2.5V的條件下的條件下工作,芯片還有功率等待模式,以降低功耗;等待電流工作,芯片還有功率等待模式,以降低功耗;等待電流和額定電流分別為和額定電流分別為5 A和和3 mA;n地址線允許地址線允許8片片24LC32連接到相同的總線上,得到連接到相同的總線上,得到256 Kb位地址空間位地址空間1 1、串行、串行E E2 2PROM24LC

35、32PROM24LC32的特點及引腳的特點及引腳 24LC32引腳排列引腳排列 8腳和腳和14腳雙列直插式封裝腳雙列直插式封裝 24LC3224LC32的引腳功能的引腳功能 SDA: 串行地址串行地址/數(shù)據(jù)輸入數(shù)據(jù)輸入/輸出端,雙向輸出端,雙向u用于傳送地址和數(shù)據(jù)進入器件或從器件發(fā)出數(shù)據(jù)。用于傳送地址和數(shù)據(jù)進入器件或從器件發(fā)出數(shù)據(jù)。u漏極開路端,因此要求漏極開路端,因此要求接一個上拉電阻接一個上拉電阻到到Vcc(100 kHz時,電阻值為時,電阻值為10 k;400 kHz時,電時,電阻值為阻值為2 k)。)。u對于一般的數(shù)據(jù)傳輸,只有在對于一般的數(shù)據(jù)傳輸,只有在SCL為低電平期間,為低電平期

36、間,SDA才允許變化。在才允許變化。在SCL高電平期間,高電平期間,SDA的變的變化用于指示開始和停止條件?;糜谥甘鹃_始和停止條件。SCL:串行時鐘端,輸入端串行時鐘端,輸入端 用于同步傳輸進入器件和從器件發(fā)出的數(shù)據(jù)。用于同步傳輸進入器件和從器件發(fā)出的數(shù)據(jù)。24LC3224LC32的引腳功能的引腳功能A0、A1、A2:芯片地址輸入端。芯片地址輸入端。l24LC32使用使用A0、A1、A2輸入端來完成多器件操作,輸入端來完成多器件操作,并且形成二線總線標準。并且形成二線總線標準。l加在這些端的電平?jīng)Q定了在地址區(qū)中器件所占有的加在這些端的電平?jīng)Q定了在地址區(qū)中器件所占有的地址塊。地址塊。l在控制字

37、節(jié)中發(fā)送的相應位(在控制字節(jié)中發(fā)送的相應位(A2、A1、A0)選擇指選擇指定的器件。定的器件。l最多可并聯(lián)最多可并聯(lián)8片片24LC32芯片芯片WP-寫保護端。寫保護端。WP=Vcc,器件只讀;,器件只讀;WP=0,器件能正常讀寫。,器件能正常讀寫。2 2、器件的尋址和操作、器件的尋址和操作1)控制字節(jié)和器件尋址控制字節(jié)和器件尋址 控制字節(jié)是跟隨在主器件發(fā)出的開始條件后,器件首先控制字節(jié)是跟隨在主器件發(fā)出的開始條件后,器件首先接收到的字節(jié)。接收到的字節(jié)。控制字節(jié)的配置控制字節(jié)的配置4位控制碼位控制碼器件選擇位器件選擇位選擇選擇8個從器件中的一個個從器件中的一個讀寫選擇位讀寫選擇位start控制字

38、節(jié)和器件尋址控制字節(jié)和器件尋址操作操作控制碼控制碼塊選擇塊選擇讀讀/寫(寫(R/W)讀讀1010塊地址塊地址1寫寫1010塊地址塊地址0讀讀/寫操作的控制字格式寫操作的控制字格式控制字節(jié)的前四位由控制字節(jié)的前四位由4位控制碼組成位控制碼組成當控制碼為當控制碼為1010時,表示對時,表示對24LC32的讀和寫操作的讀和寫操作在開始條件之后,在開始條件之后,24LC32監(jiān)視監(jiān)視SDA線,檢查發(fā)送出的線,檢查發(fā)送出的控制字節(jié)。當接收到控制字節(jié)。當接收到1010碼和相應的器件選擇位時,被碼和相應的器件選擇位時,被選中的器件在選中的器件在SDA線上輸出一個應答信號線上輸出一個應答信號控制字節(jié)和器件尋址控

39、制字節(jié)和器件尋址控制字節(jié)之后,控制字節(jié)之后,主器件緊接著發(fā)送兩個字節(jié)的地址信息主器件緊接著發(fā)送兩個字節(jié)的地址信息,定義了要訪問從器件內(nèi)定義了要訪問從器件內(nèi)第一個數(shù)據(jù)字節(jié)的地址第一個數(shù)據(jù)字節(jié)的地址。4K8位串行位串行EEPROM 字節(jié)地址為字節(jié)地址為12位位要訪問的要訪問的24LC32中中內(nèi)第內(nèi)第一個數(shù)據(jù)字節(jié)的地址一個數(shù)據(jù)字節(jié)的地址地址的最高有效字地址的最高有效字節(jié)的最高有效位最節(jié)的最高有效位最先發(fā)送先發(fā)送2 2)寫操作)寫操作 字節(jié)寫主器件發(fā)出開始條件以后,再發(fā)送主器件發(fā)出開始條件以后,再發(fā)送R/W=0的控制字的控制字指示被尋址的從接收器的兩個地址字及一個數(shù)據(jù)字將跟在指示被尋址的從接收器的兩個

40、地址字及一個數(shù)據(jù)字將跟在第第9個時鐘周期產(chǎn)生的確認(應答)位之后。個時鐘周期產(chǎn)生的確認(應答)位之后。主器件發(fā)送的下一個字節(jié)是字地址的高地址字節(jié),應答后,主器件發(fā)送的下一個字節(jié)是字地址的高地址字節(jié),應答后,接著是低地址字節(jié),再次應答后,它們將被寫入接著是低地址字節(jié),再次應答后,它們將被寫入24LC32的的地址指針。隨后主器件發(fā)送寫入到被尋址的存儲器里的數(shù)地址指針。隨后主器件發(fā)送寫入到被尋址的存儲器里的數(shù)據(jù)字節(jié)。據(jù)字節(jié)。24LC32應答后,主器件發(fā)出停止條件。應答后,主器件發(fā)出停止條件。P 頁面寫寫控制字、字地址和第一個數(shù)據(jù)字節(jié)以與字節(jié)寫相同的方式寫控制字、字地址和第一個數(shù)據(jù)字節(jié)以與字節(jié)寫相同的

41、方式發(fā)送到發(fā)送到24LC32。但是替代產(chǎn)生停止條件,主器件可發(fā)送多達但是替代產(chǎn)生停止條件,主器件可發(fā)送多達8頁的頁的8個數(shù)據(jù)字節(jié)(總共個數(shù)據(jù)字節(jié)(總共64個字節(jié))。個字節(jié))。24LC32先將這些數(shù)據(jù)字節(jié)暫存在片內(nèi)的頁面高速緩存器中。先將這些數(shù)據(jù)字節(jié)暫存在片內(nèi)的頁面高速緩存器中。一旦接收到主器件的停止條件后,則內(nèi)部的寫周期開始,這一旦接收到主器件的停止條件后,則內(nèi)部的寫周期開始,這些數(shù)據(jù)字節(jié)將從頁面高速緩存器中寫入些數(shù)據(jù)字節(jié)將從頁面高速緩存器中寫入E2PROM陣列。接收陣列。接收到每一個字節(jié)后,到每一個字節(jié)后,24LC32的低的低6位順序地址指針在內(nèi)部加位順序地址指針在內(nèi)部加1,高高7位順序地址

42、指針保持不變。位順序地址指針保持不變。 應答登記由于在寫周期期間,器件將不會應答,所以,這一點可由于在寫周期期間,器件將不會應答,所以,這一點可以用來決定周期在什么時候完成。以用來決定周期在什么時候完成。一旦針對寫命令的停止條件由主器件發(fā)出,器件開始進一旦針對寫命令的停止條件由主器件發(fā)出,器件開始進行內(nèi)部定時寫周期,行內(nèi)部定時寫周期,ACK登記被立即啟動。如果寫周期登記被立即啟動。如果寫周期器件仍然很忙,則器件仍然很忙,則ACK信號將不會被恢復;如果周期已信號將不會被恢復;如果周期已經(jīng)完成,則器件將恢復經(jīng)完成,則器件將恢復ACK信號。主器件將可以進行下信號。主器件將可以進行下一次的讀或?qū)懖僮鳌?/p>

43、一次的讀或?qū)懖僮鳌?)讀操作讀操作 當控制字的當控制字的R/W位被置為位被置為“1”時,啟動讀操作。時,啟動讀操作。三種基本的讀操作類型:三種基本的讀操作類型:l 讀當前地址內(nèi)容讀當前地址內(nèi)容l 讀隨意地址內(nèi)容讀隨意地址內(nèi)容l 讀順序地址內(nèi)容讀順序地址內(nèi)容 讀當前地址內(nèi)容24LC32內(nèi)部包含一個地址計數(shù)器,它保存被存取過的最內(nèi)部包含一個地址計數(shù)器,它保存被存取過的最后一個字的地址,并在片內(nèi)自動加后一個字的地址,并在片內(nèi)自動加1。如果以前存取的地。如果以前存取的地址為址為n,下一次讀操作則從下一次讀操作則從n+1地址中讀數(shù)據(jù)。地址中讀數(shù)據(jù)。主器件發(fā)送一個讀控制字。主器件發(fā)送一個讀控制字。在接收到

44、的從地址中的在接收到的從地址中的R/W為為1的情況下,的情況下,24LC32發(fā)送一發(fā)送一個應答位,并且送出個應答位,并且送出8位數(shù)據(jù)字。位數(shù)據(jù)字。主器件發(fā)出非應答信號主器件發(fā)出非應答信號(NO ACK),使從器件釋放數(shù)據(jù)線,使從器件釋放數(shù)據(jù)線,以便主器件發(fā)出一個停止條件,從而終止數(shù)據(jù)傳送。以便主器件發(fā)出一個停止條件,從而終止數(shù)據(jù)傳送。 讀隨意地址內(nèi)容這種方式允許主器件以任意方式讀存儲器任意地址的內(nèi)容。這種方式允許主器件以任意方式讀存儲器任意地址的內(nèi)容。l 先置字地址,即主器件將字地址作為寫操作的一部分送先置字地址,即主器件將字地址作為寫操作的一部分送給給24LC32。l 發(fā)送字地址以后,主器件

45、在應答位之后產(chǎn)生一個開始條發(fā)送字地址以后,主器件在應答位之后產(chǎn)生一個開始條件,以終止寫操作。件,以終止寫操作。l 主器件再次發(fā)主器件再次發(fā)R/W為為1的讀操作控制字。的讀操作控制字。24LC32將發(fā)出將發(fā)出應答位,并發(fā)送出應答位,并發(fā)送出8位數(shù)據(jù)字。位數(shù)據(jù)字。l 主器件將發(fā)送非應答信號,并產(chǎn)生一個停止條件,從而主器件將發(fā)送非應答信號,并產(chǎn)生一個停止條件,從而終止發(fā)送終止發(fā)送 讀順序地址內(nèi)容l 讀順序地址內(nèi)容方式與讀隨意地址內(nèi)容方式的啟動方法讀順序地址內(nèi)容方式與讀隨意地址內(nèi)容方式的啟動方法一樣,但是在一樣,但是在24LC32發(fā)送第一個數(shù)據(jù)字節(jié)后,發(fā)送第一個數(shù)據(jù)字節(jié)后,主器件不主器件不發(fā)出終止發(fā)送

46、的信號。發(fā)出終止發(fā)送的信號。l 24LC32繼續(xù)發(fā)送下一個地址的繼續(xù)發(fā)送下一個地址的8位數(shù)據(jù),其內(nèi)部的地址位數(shù)據(jù),其內(nèi)部的地址指針在操作后自動加指針在操作后自動加1。地址指針允許在一次操作期間,地址指針允許在一次操作期間,連續(xù)順序地讀出整個存儲器連續(xù)順序地讀出整個存儲器l 當主器件接收到最后一個字節(jié)后,主器件將產(chǎn)生非應答當主器件接收到最后一個字節(jié)后,主器件將產(chǎn)生非應答信號及一個停止條件,終止傳送信號及一個停止條件,終止傳送3 3、80C5180C51與串行與串行2424LC32LC32的接口和編程的接口和編程 80 80C51C51與串行與串行 24 24LC32LC32的接口的接口A2,A1

47、,A0接地接地地址地址000BA2,A1接地接地A0接接+5V地址地址001B最多接最多接8片片24LC32作為從器件作為從器件主器件主器件從器件從器件模擬模擬I I2 2C C總線的編程總線的編程模擬模擬I2C總線時,一般需用兩根總線時,一般需用兩根I/O口線口線本例中,本例中,P1.6用作用作SCL線,線,P1.7用作用作SDA線線以下子程序中,設定單片機所使用的晶體振蕩器為以下子程序中,設定單片機所使用的晶體振蕩器為6MHz,即機器周期為即機器周期為2S。若晶體振蕩器不是若晶體振蕩器不是6MHz,則可根據(jù)情況增減程序中則可根據(jù)情況增減程序中的的NOP指令即可。指令即可。定義以下模擬總線定

48、義以下模擬總線:SDABITP1.7SCLBITP1.6數(shù)據(jù)傳輸規(guī)定數(shù)據(jù)傳輸規(guī)定l 發(fā)送起始條件發(fā)送起始條件l 數(shù)據(jù)傳送,在數(shù)據(jù)傳送,在SCL低電平期間,允許低電平期間,允許SDA狀態(tài)改變;狀態(tài)改變;l 發(fā)送停止條件發(fā)送停止條件啟動與停止I2C總線子程序開始條件開始條件 SCL高電平期間,高電平期間,SDA由高到低表示啟動由高到低表示啟動I2C總線;總線;停止條件停止條件 SCL高電平期間,高電平期間,SDA由低到高表示停止由低到高表示停止I2C總線;總線;啟動I2C總線子程序在在SCL高電平期間,發(fā)送一個低電平作為開始條件高電平期間,發(fā)送一個低電平作為開始條件SDA由高到低表示啟動由高到低表

49、示啟動STA:SETB SDASETB SCLNOPNOPCLRSDANOP NOPNOPCLRSCLNOPRET停止停止I I2 2C C總線子程序總線子程序在在SCL高電平期間,發(fā)送一個高電平作為停止條件高電平期間,發(fā)送一個高電平作為停止條件SDA由低到高表示停止由低到高表示停止STOP:CLRSDA NOP SETBSCL NOP NOP SETBSDA NOP NOP ; CLRSCL NOP RET發(fā)送與接收數(shù)據(jù)待發(fā)送的數(shù)據(jù)在待發(fā)送的數(shù)據(jù)在SCL低電平期間放到低電平期間放到SDA上;上;要接收的數(shù)據(jù)在要接收的數(shù)據(jù)在SCL高電平期間,高電平期間,SDA穩(wěn)定時,讀入穩(wěn)定時,讀入I/O口。

50、口。發(fā)送一個字節(jié)數(shù)據(jù)將累加器將累加器ACC中的待發(fā)送數(shù)據(jù)送上中的待發(fā)送數(shù)據(jù)送上SDA線線WRBYT: MOVR7, #8; 發(fā)送發(fā)送8位位WRBYT1: RLCA;將發(fā)送位移入將發(fā)送位移入C中中 JCWRBYT2;此位為此位為1,轉(zhuǎn)轉(zhuǎn)WRBYT2 CLRSDA;此位為此位為0,發(fā)送發(fā)送0 SETBSCL; 時鐘脈沖開始時鐘脈沖開始 NOP NOP CLRSCL; 時鐘脈沖結(jié)束時鐘脈沖結(jié)束 DJNZR7,WRBYT1 ;未發(fā)送完未發(fā)送完,轉(zhuǎn)轉(zhuǎn)WRBYT1RET發(fā)送一個字節(jié)數(shù)據(jù)WRBYT2: SETBSDA ; 此位為此位為1,發(fā)送發(fā)送1 SETBSCL ; 時鐘脈沖開始時鐘脈沖開始 NOP NOP CLRSCL ; 時鐘脈沖結(jié)束時鐘脈沖結(jié)束 CLRSDA

溫馨提示

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

評論

0/150

提交評論