單片機(jī)第2章課件_第1頁
單片機(jī)第2章課件_第2頁
單片機(jī)第2章課件_第3頁
單片機(jī)第2章課件_第4頁
單片機(jī)第2章課件_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章MCS-51單片機(jī)硬件與系統(tǒng)擴(kuò)展2.1MCS-51外部引腳2.2P0、P1、P2、P3口的內(nèi)部結(jié)構(gòu)及使用2.3單片機(jī)內(nèi)部硬件資源2.4時(shí)鐘與復(fù)位電路2.5單片機(jī)系統(tǒng)擴(kuò)展2.6習(xí)題

對(duì)于硬件系統(tǒng)設(shè)計(jì)人員來說,掌握單片機(jī)硬件資源是十分重要的,只有熟悉了單片機(jī)的硬件“家底”,才能合理安排、正確使用現(xiàn)有資源,并做到物盡其用。MCS-51單片機(jī)是美國Intel公司的產(chǎn)品,但在實(shí)際應(yīng)用時(shí)常常選用美國ATMEL公司的產(chǎn)品,如AT89C51/52(40腳)和AT89C2051(20腳)。ATMEL公司AT系列單片機(jī)相當(dāng)于Intel公司單片機(jī)的Flash版本,兩者硬件結(jié)構(gòu)相同,指令兼容,但Flash版本可以使程序的修改、調(diào)整更加方便,所以ATMEL公司的產(chǎn)品幾乎成了MSC-51系列單片機(jī)的主流。2.1MCS-51外部引腳AT89C51/52的外部有40個(gè)腳(與8051/8751相同,如圖2-1所示),這些管腳根據(jù)功能可以將它們分成三大組:2.與外部電路聯(lián)絡(luò)的腳(32個(gè)腳)P0:在擴(kuò)展時(shí)作為數(shù)據(jù)總線/地址低8位線,擴(kuò)展不用時(shí)可以作為用戶I/O線。P1:僅作用戶I/O口。P2:在擴(kuò)展時(shí)作為地址高8位線,擴(kuò)展不用時(shí)作為用戶I/O線。P3:首先保證第二功能(如表2-1所示),若第二功能不用,則可作為用戶I/O線。

3.控制腳(3個(gè)腳)(1)/VPP(31腳):為片內(nèi)、片外ROM選擇控制腳,具體如圖2-2所示,早期的8031等內(nèi)部沒有ROM,故使用時(shí)接地,目前AT89C51/52內(nèi)部均有ROM(Flash),所以使用時(shí)直接接VCC。對(duì)于EPROM型單片機(jī)(如8751),在編程期間該腳用于提供編程電壓(VPP)。圖2-2MCS-51程序存儲(chǔ)器結(jié)構(gòu)(3)(29腳):片外程序存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期該信號(hào)兩次有效,以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。要注意的是該腳與外部數(shù)據(jù)存儲(chǔ)器的讀、寫無關(guān)。用于控制的腳其實(shí)還有P3口的、,它們用于外部數(shù)據(jù)存儲(chǔ)器及I/O的讀、寫控制。盡管控制線數(shù)量不多,但在應(yīng)用系統(tǒng)中擔(dān)當(dāng)著十分重要的角色,在系統(tǒng)擴(kuò)展部分我們可以體會(huì)這一點(diǎn)。2.2P0、P1、P2、P3口的內(nèi)部結(jié)構(gòu)及使用2.2.1P0口的內(nèi)部結(jié)構(gòu)及使用特點(diǎn)由圖2-3可見,電路中包含一個(gè)數(shù)據(jù)輸出鎖存器、兩個(gè)三態(tài)數(shù)據(jù)輸入緩沖器、一個(gè)數(shù)據(jù)輸出的驅(qū)動(dòng)電路和一個(gè)輸出控制電路。當(dāng)對(duì)P0口進(jìn)行寫操作時(shí),由鎖存器和驅(qū)動(dòng)電路構(gòu)成數(shù)據(jù)輸出通路。由于通路中已有輸出鎖存器,因此數(shù)據(jù)輸出時(shí)可以與外設(shè)直接連接,而不需再加數(shù)據(jù)鎖存電路。圖2-3P0口一位結(jié)構(gòu)圖在P0口的內(nèi)部有一個(gè)多路轉(zhuǎn)接電路MUX,在控制信號(hào)的作用下,多路轉(zhuǎn)接電路可以分別接通鎖存器輸出或地址/數(shù)據(jù)線,使P0口作為外部擴(kuò)展時(shí)的數(shù)據(jù)總線/兼地址低8位線。另外,P0口結(jié)構(gòu)的一大特點(diǎn)(不同于P1、P2、P3口)為輸出電路是漏極開路電路,當(dāng)P0口進(jìn)行一般的I/O輸出時(shí)必須外接上拉電阻才能有高電平輸出。當(dāng)P0口進(jìn)行一般的I/O輸入時(shí),必須先向電路中的鎖存器寫入“1”,使場(chǎng)效應(yīng)管V2截止,以避免V2導(dǎo)通對(duì)引腳讀入的影響。2.2.3P2口的內(nèi)部結(jié)構(gòu)及使用特點(diǎn)如圖2-5所示,P2口電路比P1口電路多了一個(gè)多路轉(zhuǎn)接電路MUX,這又正好與P0口一樣。P2口可以作為通用I/O口使用,這時(shí)多路轉(zhuǎn)接電路開關(guān)倒向鎖存器Q端,同時(shí)又可作為高位地址線使用,此時(shí)多路轉(zhuǎn)接電路開關(guān)應(yīng)倒向“地址”位置。圖2-5P2口一位結(jié)構(gòu)圖2.2.4P3口的內(nèi)部結(jié)構(gòu)及使用特點(diǎn)P3口的特點(diǎn)在于,為適應(yīng)引腳信號(hào)第二功能的需要,增加了第二功能控制邏輯。由于第二功能信號(hào)有輸入和輸出兩類,因此分兩種情況說明,結(jié)構(gòu)如圖2-6所示。對(duì)于第二功能為輸出的信號(hào)引腳,當(dāng)作為I/O使用時(shí),第二功能信號(hào)引線應(yīng)保持高電平,與非門開通,以維持從鎖存器到輸出端數(shù)據(jù)輸出通路的暢通。圖2-6P3口一位結(jié)構(gòu)圖對(duì)于第二功能為輸入的信號(hào)引腳,在口線的輸入通路上增加了一個(gè)緩沖器,輸入的第二功能信號(hào)就從這個(gè)緩沖器的輸出端取得。而作為I/O使用的數(shù)據(jù)輸入,仍取自三態(tài)緩沖器的輸出端。不管是作為輸入口使用還是第二功能信號(hào)輸入,輸出電路中的鎖存器輸出和第二功能輸出信號(hào)線都應(yīng)保持高電平。P3口作為輸入使用時(shí),也必須先寫“1”,讓輸出電路的場(chǎng)效應(yīng)管截止。

圖2-7驅(qū)動(dòng)LED電路

圖2-7驅(qū)動(dòng)LED電路(續(xù))2.驅(qū)動(dòng)繼電器實(shí)例繼電器的驅(qū)動(dòng),從電平角度來說也有高電平驅(qū)動(dòng)和低電平驅(qū)動(dòng)兩種,但實(shí)際使用的繼電器的工作電壓都是9V、12V甚至更高,所以除了考慮驅(qū)動(dòng)電流是否足夠(繼電器所需的驅(qū)動(dòng)電流可用繼電器的標(biāo)稱工作電壓除以標(biāo)稱電阻來估算,常見的大約在40mA~60mA,所以不管哪種結(jié)構(gòu)都需要三極管等電流放大電路)外,還要考慮低電平、高電平哪種驅(qū)動(dòng)更容易實(shí)現(xiàn)。

(a)(b)

(c)圖2-8驅(qū)動(dòng)繼電器電路3.光耦器件的接口電路單片機(jī)應(yīng)用在強(qiáng)電系統(tǒng)時(shí),為提高抗干擾能力,隔離輸出級(jí)帶來的干擾和不安全性,常常使用光耦器件作為接口,常用光耦器件的內(nèi)部結(jié)構(gòu)如圖2-9所示。圖2-9常用光耦內(nèi)部結(jié)構(gòu)2.3單片機(jī)內(nèi)部硬件資源圖2-11是MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)框圖,從圖中可以看出,單片機(jī)內(nèi)部主要包括:圖2-11單片機(jī)內(nèi)部結(jié)構(gòu)框圖(1)一個(gè)8位CPU(含運(yùn)算器、控制器)。(2)一個(gè)片內(nèi)振蕩器及時(shí)鐘電路。(3)片內(nèi)存儲(chǔ)器(RAM和ROM,AT89C系列是Flash)。(4)特殊功能寄存器(SFR)。(5)4個(gè)8位并行I/O口(P0、P1、P2、P3)。(6)一個(gè)全雙工可編程串行口。(7)定時(shí)器/計(jì)數(shù)器中斷系統(tǒng)。2.3.1片內(nèi)程序存儲(chǔ)器在MCS-51單片機(jī)系列中,8031、8032內(nèi)部沒有程序存儲(chǔ)器,8051/8751/AT89C51內(nèi)部有4K的程序存儲(chǔ)器,8052/8752/AT89C52內(nèi)部有8K的程序存儲(chǔ)器。程序存儲(chǔ)器有不同版本,有些是ROM,如8051/8052等;有些是EPROM,如8751/8752等;有些是Flash,如AT89C51/AT89C52等。程序存儲(chǔ)器主要用來存放程序,同時(shí)也常常用來存放數(shù)據(jù)表格(通過DB指令建立數(shù)碼管字型表等),在具體存放程序和建立數(shù)據(jù)表格時(shí)應(yīng)該注意,程序存儲(chǔ)器的部分空間的使用是有規(guī)定的,主要如下。在上述入口地址區(qū)域不能放置用戶的程序和建立數(shù)據(jù)表格,原因是:由于兩個(gè)中斷入口地址間僅有8個(gè)單元(如0003H到000BH),用來存放中斷發(fā)生后的用戶程序(一般稱中斷服務(wù)程序)顯然是不夠的,我們將中斷服務(wù)程序放在程序存儲(chǔ)器的其他“自由”空間,在這些入口地址放一條跳轉(zhuǎn)指令(如:LJMPXXXX,其中“XXXX”就是實(shí)際中斷服務(wù)程序的起始地址或標(biāo)號(hào)),由這條跳轉(zhuǎn)指令去“找到”實(shí)際的中斷服務(wù)程序。2.3.2片內(nèi)部數(shù)據(jù)存儲(chǔ)器圖2-12是單片機(jī)內(nèi)部數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu)框圖,對(duì)于8031/8051/8751/AT89C51,內(nèi)部有128B(00H~7FH)的數(shù)據(jù)存儲(chǔ)器,80H地址以上的空間離散分布著SFR(特殊功能寄存器),沒有用戶可用的RAM;對(duì)于8032/8052/8752/AT89C52,內(nèi)部有256B數(shù)據(jù)存儲(chǔ)器,00H~7FH的單元與8051等相同,但在80H地址以上的空間則既有SFR(采用寄存器或直接尋址),同時(shí)也有用戶可用的RAM(采用寄存器間接尋址)。

圖2-12內(nèi)部數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu)1.通用工作寄存器區(qū)地址00H~1FH的空間為通用工作寄存器區(qū),32個(gè)單元又可以分成4個(gè)組,分別如下。(1)00H~07H:工作寄存器0組,符號(hào)為R0~R7。(2)08H~0FH:工作寄存器1組,符號(hào)為R0~R7。(3)10H~17H:工作寄存器2組,符號(hào)為R0~R7。(4)18H~1FH:工作寄存器3組,符號(hào)為R0~R7。上述4個(gè)組的寄存器符號(hào)都為R0~R7,也就是說,一個(gè)符號(hào)(如R0)可以對(duì)應(yīng)4個(gè)單元(如00H、08H、10H、18H),使用時(shí)是否會(huì)混淆呢?當(dāng)然不會(huì),因?yàn)樵谑褂玫娜魏螘r(shí)候只能選中一個(gè)組,到底使用哪個(gè)組,由特殊功能寄存器PSW來指定(見SFR部分介紹)。2.位尋址區(qū)什么是位尋址區(qū)呢?可以這么來理解,這些區(qū)除了每個(gè)單元都有確定的單元地址外,單元內(nèi)的8位數(shù)的每個(gè)位置也有地址。要理解這點(diǎn)我們不妨打個(gè)比方:一個(gè)單元好像一間宿舍,單元的地址對(duì)應(yīng)宿舍的房間號(hào),而位則對(duì)應(yīng)宿舍內(nèi)的床,位地址正好對(duì)應(yīng)床鋪號(hào),位尋址區(qū)的地址如表2-2所示。單元地址MSB位地址LSB2FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100位尋址區(qū)比普通用戶RAM相比具有的優(yōu)點(diǎn)是,它具有位尋址功能,常常用來做標(biāo)記,同時(shí)利用位操作功能可以使程序更加簡單,除了位尋址區(qū)有位地址之外,特殊功能寄存(SFR)中地址末位是0H或8H的12個(gè)單元也有位地址。在使用位地址時(shí),容易與單元地址混淆,如地址“20H”,既可以理解成單元的地址,也可以理解成24H單元中的一個(gè)位地址(見表2-2倒數(shù)第5行),具體是指單元地址還是位地址,除了看文字表述外,在指令中看指令的類型和含義就可知道了。3.用戶RAM區(qū)30H~7FH之間是普通的用戶RAM。對(duì)于8032/8052/8752/AT89C52還包括80H~FFH空間,這里的單元沒有通用寄存器中的符號(hào)(即具有寄存器尋址功能),也沒有位尋址區(qū)中的位地址,每個(gè)單元只有一個(gè)特定的地址與之相對(duì)應(yīng)。需要強(qiáng)調(diào)的是,30H~7FH可以采用直接尋址和寄存器間接尋址,而80H~FFH只能通過寄存器間接尋址,不能采用直接尋址。4.特殊功能寄存器區(qū)特殊功能寄存器簡稱SFR(SpecialFunctionRegister),在單片機(jī)中扮演著十分重要的角色。它們離散地分布在地址為80H~FFH的空間中,特殊功能寄存器地址表如表2-3所示,這里先介紹幾個(gè)常用的特殊功能寄存器,其余的在相關(guān)章節(jié)應(yīng)用時(shí)介紹。

(1)累加器ACC(E0H):累加器ACC(Accumulator)為8位寄存器,助記符記作A,是最常用、最繁忙的專用寄存器,所有的運(yùn)算結(jié)果最終都放在ACC中,許多功能的實(shí)現(xiàn)必須由A來完成,如與外部RAM的數(shù)據(jù)傳送等。(2)寄存器B(F0H):寄存器B是一個(gè)專門為乘法、除法運(yùn)算設(shè)置的,在乘法、除法運(yùn)算中由A和B來完成,所以寄存器B又稱為乘法除法寄存器。(3)程序狀態(tài)寄存器PSW(D0H):PSW(ProgramStatusWord)用來存放程序運(yùn)行后的各種標(biāo)志或狀態(tài),供程序查詢或判斷用。內(nèi)部8位的具體定義如下:D7HD6HD5HD4HD3HD2HD1HD0HCyACF0RS1RS0OVF1PCy(PSW.7)——進(jìn)位標(biāo)志位。Cy是PSW中最常用的標(biāo)志位。其功能有二:一是存放算術(shù)運(yùn)算的進(jìn)位標(biāo)志,在進(jìn)行加或減運(yùn)算時(shí),如果操作結(jié)果的最高位有進(jìn)位或借位時(shí),Cy由硬件置“1”,否則被清“0”;二是在位操作中,作累加位使用。AC(PSW.6)——輔助進(jìn)位標(biāo)志位。在進(jìn)行加減運(yùn)算中,當(dāng)?shù)?位向高4位進(jìn)位或借位時(shí),AC由硬件置“1”,否則AC位被清“0”。在BCD碼調(diào)整中也要用到AC位狀態(tài)。F0(PSW.5)——用戶標(biāo)志位。這是一個(gè)供用戶定義的標(biāo)志位,需要利用軟件方法置位或復(fù)位,用以控制程序的轉(zhuǎn)向。RS1和RS0(PSW.4,PSW.3)——寄存器組選擇位。它們被用于選擇CPU當(dāng)前使用的通用寄存器組號(hào),其對(duì)應(yīng)關(guān)系如表2-4所示。RS1RS0寄存器組片內(nèi)RAM地址00第0組00H~07H01第1組08H~0FH10第2組10H~17H11第3組18H~1FH表2-4寄存器組選擇表OV:做加法或減法時(shí),由硬件置位或清零,以指示運(yùn)算結(jié)果是否溢出。OV=1反映運(yùn)算結(jié)果超出了累加器的數(shù)值范圍(無符號(hào)數(shù)的范圍為0~255,以補(bǔ)碼形式表示一個(gè)有符號(hào)數(shù)的范圍為-128~+127)。進(jìn)行無符號(hào)數(shù)的加法或減法時(shí),OV的值與進(jìn)位位C的值相同;進(jìn)行有符號(hào)數(shù)的加法時(shí),如最高位、次高位之一有進(jìn)位,或做減法時(shí),如最高位、次高位之一有借位,OV被置位,即OV的值為最高位和次高位的異或(C7⊕C6)。P(PSW.0)——奇偶標(biāo)志位。表明累加器A中內(nèi)容的奇偶性,如果A中有奇數(shù)個(gè)“1”,則P置“1”,否則置“0”。凡是改變累加器A中內(nèi)容的指令均會(huì)影響P標(biāo)志位。此標(biāo)志位對(duì)串行通信中的數(shù)據(jù)傳輸有重要的意義,在串行通信中常采用奇偶校驗(yàn)的辦法來校驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃?。?)數(shù)據(jù)指針DPTR(83H、82H):數(shù)據(jù)指針是單片機(jī)中唯一一個(gè)用戶可操作的16位寄存器。編程時(shí),DPTR既可以按16位寄存器使用,也可以將兩個(gè)8位寄存器分開使用,即:DPH(83H) 代表DPTR高位字節(jié)DPL(82H) 代表DPTR低位字節(jié)DPTR通常在訪問外部數(shù)據(jù)存儲(chǔ)器、外部I/O端口時(shí)作地址指針使用(把地址賦值給DPTR),也在程序存儲(chǔ)器進(jìn)行查表時(shí)作基址,DPTR的尋址范圍為64KB(216)。(5)堆棧指針SP(81H):堆棧操作是在內(nèi)存RAM區(qū)專門開辟出來的按照“先進(jìn)后出”原則進(jìn)行數(shù)據(jù)存取的一種工作方式,主要用于子程序調(diào)用及返回、中斷處理斷點(diǎn)的保護(hù)及返回,它在完成子程序嵌套和多重中斷處理中是必不可少的。為保證逐級(jí)正確返回,進(jìn)入棧區(qū)的“斷點(diǎn)”數(shù)據(jù)應(yīng)遵循“先進(jìn)后出”的原則。SP用來指示堆棧所處的位置,在進(jìn)行操作之前,先用指令給SP賦值,以規(guī)定棧區(qū)在RAM區(qū)的起始地址(棧底層)。當(dāng)數(shù)據(jù)推入棧區(qū)后,SP的值也自動(dòng)隨之變化。MCS-51單片機(jī)系統(tǒng)復(fù)位后,SP初始化為07H(在通用寄存器區(qū)0組R7),實(shí)際編程時(shí),最好先將SP設(shè)置到RAM地址的高端,如對(duì)于8031/8051/8751/AT89C51等,設(shè)置在60H以上。對(duì)于8032/8052/8752/AT89C52則設(shè)置成A0H等。如SP不在RAM地址的高端,則很容易破壞用戶放在RAM中的臨時(shí)數(shù)據(jù),程序調(diào)試時(shí),這種錯(cuò)誤相對(duì)比較隱蔽,不太容易被發(fā)現(xiàn)。綜上所述,片內(nèi)數(shù)據(jù)存儲(chǔ)器可以用表2-5表示。表2-5MCS-51片內(nèi)RAM結(jié)構(gòu)地址范圍功能或名稱80H~FFHSFR、數(shù)據(jù)緩沖區(qū)30H~7FH數(shù)據(jù)緩沖區(qū)20H~2FH位尋址區(qū)18H~1FH工作寄存器3組,R0~R710H~17H工作寄存器2組,R0~R708H~0FH工作寄存器1組,R0~R700H~07H工作寄存器0組,R0~R7(6)程序計(jì)數(shù)器PC:PC(ProgramCounter)是一個(gè)16位專用寄存器,可尋址范圍是0000H~0FFFFH,共64KB。PC用于存放CPU下一條要執(zhí)行的指令地址,CPU要執(zhí)行哪條指令時(shí),就把該條指令所在的單元的地址送上地址總線。在順序執(zhí)行程序中,當(dāng)PC的內(nèi)容被送到地址總線后會(huì)自動(dòng)加1,即(PC)←(PC)+1,又指向CPU下一條要執(zhí)行的指令地址。需要注意的是用戶無法通過指令改變PC中的數(shù)值,也即PC是不可操作的。2.4.1時(shí)鐘與時(shí)序1.時(shí)鐘單片機(jī)內(nèi)部每個(gè)部件要想?yún)f(xié)調(diào)一致地工作,必須在統(tǒng)一口令——時(shí)鐘信號(hào)的控制下工作。單片機(jī)工作所需要的時(shí)鐘信號(hào)有兩種產(chǎn)生方式,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。圖2-13(a)是內(nèi)部時(shí)鐘方式:單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端,這個(gè)放大器與作為反饋元件的片外晶振一起構(gòu)成自激振蕩器。在該圖中,電容C1和C2取30pF左右,晶體的振蕩頻率范圍是1.2MHz~12MHz(AT89C51/52最高工作頻率達(dá)24MHz),晶體振蕩頻率高,則系統(tǒng)的時(shí)鐘頻率也高,單片機(jī)運(yùn)行速度也就快。在通常應(yīng)用情況下,MCS-51單片機(jī)使用振蕩頻率為6MHz或12MHz,在通信系統(tǒng)中則常用11.0592MHz,這樣可使誤差最小。

圖2-13(b)是外部時(shí)鐘方式:時(shí)鐘信號(hào)來自外部的振蕩電路(大多數(shù)情況是來自另外單片機(jī)的時(shí)鐘信號(hào),以保持多片CPU工作同步),外接的TTL門電路和上拉電阻對(duì)波形進(jìn)行波整形。需要說明的是,對(duì)于CHMOS的單片機(jī)(如80C51),外部時(shí)鐘的引入方法有些不同,即信號(hào)引到XTAL1,而XTAL2則懸空(NC)。(a)內(nèi)部時(shí)鐘方式(b)外部時(shí)鐘方式圖2-13時(shí)鐘信號(hào)的產(chǎn)生方式2.時(shí)序每執(zhí)行一條指令,CPU的控制器就要發(fā)出一系列特定的控制信號(hào),這些信號(hào)在時(shí)間上有嚴(yán)格的順序,我們稱之為時(shí)序。在此我們先來講述幾個(gè)與時(shí)鐘信號(hào)有關(guān)的周期的概念。(1)時(shí)鐘周期:所謂時(shí)鐘周期,就是時(shí)鐘頻率的倒數(shù),即1/fosc,如選用6MHz晶振時(shí),時(shí)鐘周期為1/6μs。(2)狀態(tài)周期:是振蕩頻率經(jīng)過片內(nèi)二分頻后的信號(hào)周期,也即等于2倍的時(shí)鐘周期,表示為2/fosc。(3)機(jī)器周期:是機(jī)器完成一個(gè)基本操作所需的時(shí)間,一個(gè)機(jī)器周期由6個(gè)狀態(tài)周期組成,從數(shù)量上等于12/fosc。機(jī)器周期是非常重要的概念,在以后與時(shí)間有關(guān)的計(jì)算中,我們可以看到都是以機(jī)器周期為基本單位的。(4)指令周期:是指機(jī)器完成一條指令所需的時(shí)間,由于指令功能的不同,完成所需要的時(shí)間也就不同,指令周期在1~4倍的機(jī)器周期內(nèi),如選用12MHz晶振時(shí),最快的指令只需要1μs時(shí)間(12/fosc)。圖2-14、圖2-15給出了單片機(jī)在部分操作時(shí)的時(shí)序。圖2-14MCS-51的取指/執(zhí)行時(shí)序圖2-15讀ROM時(shí)的時(shí)序2.4.2復(fù)位單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),例如復(fù)位后PC=0000H,使單片機(jī)從0000H單元取指令開始運(yùn)行。單片機(jī)復(fù)位的條件是:必須使RST/VPD(9腳)加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。復(fù)位包括上電復(fù)位(相當(dāng)于計(jì)算機(jī)的冷啟動(dòng))、手動(dòng)復(fù)位(相當(dāng)于計(jì)算機(jī)的熱啟動(dòng))和自動(dòng)復(fù)位。在無人值守的系統(tǒng)中往往需要死機(jī)后的自動(dòng)復(fù)位,即采用看門狗技術(shù)的自動(dòng)復(fù)位。在PIC等單片機(jī)中,芯片已經(jīng)內(nèi)置看門狗,MCS-51則需要外接看門狗專用芯片來實(shí)現(xiàn)自動(dòng)復(fù)位。圖2-16、圖2-17分別給出了上述三種復(fù)位電路,對(duì)于看門狗復(fù)位電路,必須由軟件配合才能正常工作。在MCS-51單片機(jī)系列中,8031、8032內(nèi)部沒有程序存儲(chǔ)器,8051/8751/AT89C51內(nèi)部有4K的程序存儲(chǔ)器,8052/8752/AT89C52內(nèi)部有8K的程序存儲(chǔ)器。(a)上電復(fù)位(b)手動(dòng)復(fù)位圖2-16上電復(fù)位、手動(dòng)復(fù)位圖2-17看門狗(自動(dòng))復(fù)位2.3.1片內(nèi)程序存儲(chǔ)器復(fù)位后機(jī)器將從初始狀態(tài)開始工作,各主要寄存器狀態(tài)也被復(fù)位,具體如下。其中:*表示無關(guān)位。RAM中的數(shù)據(jù),若是上電復(fù)位則是隨機(jī)的,若是手動(dòng)復(fù)位或看門狗復(fù)位,則保持不變。2.5單片機(jī)系統(tǒng)擴(kuò)展單片機(jī)本身已經(jīng)包含了RAM、ROM(部分8031/8032沒有)和I/O端口等,因此從某種意義上說,單個(gè)芯片加上振蕩、復(fù)位就可以構(gòu)成一個(gè)應(yīng)用系統(tǒng)。然而在很多時(shí)候,僅有這些資源還不能滿足實(shí)際要求,比如,在一個(gè)數(shù)據(jù)采集系統(tǒng)中,128B的RAM(除了寄存器實(shí)際能用的不到128B)是遠(yuǎn)遠(yuǎn)不能滿足要求的,這樣,在單片機(jī)的外部需要另外構(gòu)建新的RAM系統(tǒng),所做的這些工作稱為系統(tǒng)擴(kuò)展。系統(tǒng)擴(kuò)展一般包括RAM、ROM、I/O的擴(kuò)展,當(dāng)選用AT89C51/52等時(shí),ROM的擴(kuò)展往往可以省卻。在一個(gè)實(shí)際的單片機(jī)應(yīng)用系統(tǒng)中,其硬件部分可以包括兩大部分:基本部分(又稱最小系統(tǒng))和擴(kuò)展部分。基本部分是任何一個(gè)系統(tǒng)所必需的,電路結(jié)構(gòu)上沒多少變化;擴(kuò)展部分是根據(jù)具體要實(shí)現(xiàn)的功能來設(shè)計(jì)的,目前這方面的資料很多,只要掌握其基本原理和方法,結(jié)合現(xiàn)有資料,經(jīng)過分析、取舍、修改,硬件系統(tǒng)的設(shè)計(jì)也就變得簡單了。2.5.1基本部分的組成圖2-18最小系統(tǒng)(1)電源電路:因?yàn)閱纹瑱C(jī)是比較復(fù)雜的數(shù)字系統(tǒng),要求電源電壓穩(wěn)定、紋波系數(shù)小,在有電機(jī)控制的系統(tǒng)中一定要消除電機(jī)工作時(shí)對(duì)電源的干擾,以免系統(tǒng)不穩(wěn),如電機(jī)單獨(dú)供電。目前大多數(shù)單片機(jī)工作電壓都是5V,所以電源部分設(shè)計(jì)常用7805穩(wěn)壓,并配以充足的濾波電容。(2)復(fù)位電路:如前所述,根據(jù)不同場(chǎng)合及要求進(jìn)行選擇。(3)晶振電路:如前所述,可以用內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式,一般獨(dú)立系統(tǒng)都采用內(nèi)部時(shí)鐘方式。(4)帶ROM的CPU:MCS-51單片機(jī)系統(tǒng)常選用ATMEL公司的產(chǎn)品,如AT89C51/52/2051等?;静糠值目驁D如圖2-18所示。圖2-18最小系統(tǒng)2.5.2系統(tǒng)的擴(kuò)展當(dāng)單片機(jī)自身的硬件資源不夠用時(shí),必須采用擴(kuò)展的辦法來滿足實(shí)際要求,系統(tǒng)擴(kuò)展的任務(wù)實(shí)際是用三組總線(數(shù)據(jù)總線、地址總線、控制總線)將外部的芯片或電路與CPU連起來構(gòu)成一個(gè)整體,在程序的控制下完成CPU與外部芯片或電路之間的數(shù)據(jù)傳送、信息的獲取和行為控制等。系統(tǒng)擴(kuò)展主要依靠CPU的P0、P1、P2、P3及其他控制線,具體方法如下。(1)數(shù)據(jù)總線的連接方法:CPURAMROMI/OP0.0~P0.7<——————>對(duì)應(yīng)的數(shù)據(jù)線(2)地址總線的連接:分為低8位和高8位(高8位很多時(shí)候沒有全部用掉)。鎖存器CPURAMROM低8位P0.0~P0.7——>對(duì)應(yīng)的地址低8位線高8位P2.0~2.7——————>對(duì)應(yīng)的地址高8位線(3)控制線的連接方法:CPURAMROM——————>——————>——————————————>ALE——————>鎖存器的控制腳注:I/O的地址線和控制線在后面的I/O擴(kuò)展例子中說明。上面的規(guī)則可以用圖2-19來表示:圖2-19系統(tǒng)擴(kuò)展示意圖圖2-20RAM6116管腳圖2.RAM擴(kuò)展在很多場(chǎng)合,芯片內(nèi)部的RAM往往是不夠用的,所以擴(kuò)展RAM是我們常常要做的工作,下面介紹兩個(gè)例子?!纠?-1】6116的擴(kuò)展:在RAM、ROM的型號(hào)中隱含了重要的信息,后面二位或三位除以8就可得到它們的容量(單位是KB),如RAM6116,16/8KB=2KB=2×210B=211B,同時(shí)可以知道共有11(從211B而知)根地址線,可以記作A0、A1、…、A10。圖2-20是6116的管腳圖,I/On是數(shù)據(jù)總線。根據(jù)上述擴(kuò)展思想,可以畫出RAM6116與CPU的連接圖,如圖2-21所示。圖2-20RAM6116管腳圖圖2-21RAM6116擴(kuò)展圖芯片擴(kuò)展完后,我們用地址表來分析RAM6116存儲(chǔ)器的地址,地址表的第1行是CPU提供的所有地址線:高8位地址(P2口提供)和低8位地址(P0口提供);第2行是RAM6116對(duì)應(yīng)的地址線連接情況,其中沒連的用“x”表示;第3行是地址線變量取最小值(全部取“0”)的地址,也就是初始地址;第4行是地址線變量取最大值(全部取“1”)的地址,即末地址。由于“x”代表無關(guān)項(xiàng),在取值時(shí)可以取“0”,也可以取“1”,所以理論上RAM6116的地址是非常多的,但盡管如此,在取值時(shí),水平方向的“x”可以取不同值,而垂直方向必須取一致的值。為便于計(jì)算,常常將“x”全部取“0”或者全部取“1”。在表2-6中,我們將“x”全部取“1”,形成的地址范圍是:7800H~7FFFH。表2-66116地址表P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0xxxxA10A9A8A7A6A5A4A3A2A1A00xxxx000000000000xxxx11111111111在小上面例子中,是芯片的片選端,對(duì)多數(shù)芯片是低電平選中(看符號(hào)上有沒有一橫,有就說明是低電平選中)。在系統(tǒng)擴(kuò)展過程中,片選端的處理是相對(duì)較難的,我們可以按照下面的方法處理:(1)同種芯片(RAM與I/O屬于同種)只有單個(gè)時(shí),片選端直接接地或者接P2口多余的地址線。(2)同種芯片(RAM與I/O屬于同種)有多個(gè)時(shí),片選端分別接到P2口多余的地址線,這種方法稱為“線選法”,也可以用剩余P2口的線進(jìn)行譯碼后分別接到芯片片選端,即“采用譯碼法”。(3)不同種(RAM與ROM屬于不同種)芯片的片選信號(hào)可以共用?!纠?-2】兩片6264的擴(kuò)展:根據(jù)以上所述,RAM6264的容量為64/8KB=8KB=213B,地址線為A12、A13、…、A0,其管腳如圖2-22所示。按照擴(kuò)展基本思想,兩片6264與CPU的連接圖如圖2-23所示。6264(1)、(2)片選端CS2都直接接VCC(+5V),6264(1)的接空余地址線P2.7,6264(2)的接空余地址線P2.6,采用的是線選法。從圖中可以分別列出它們的地址表格,如表2-7、表2-8所示。圖2-22RAM6264管腳圖圖2-23兩片RAM6264擴(kuò)展圖表2-76264(1)地址表表2-86264(2)地址表注意:在線選法計(jì)算地址的時(shí)候,盡管對(duì)于6264(1)來說,P2.6是與其無關(guān)的,但必須恒取“1”,見表2-7,因?yàn)樵谶x中芯片6264(1)時(shí),6264(2)不能被選中,否則造成地址重疊,讀、寫時(shí)數(shù)據(jù)出錯(cuò)。同樣地,在表2-8中,P2.7必須恒取“1”。所以:芯片6264(1)的地址范圍為:7800H~7FFFH(x取“1”)。芯片6264(2)的地址范圍為:B800H~BFFFH(x取“1”)。線選法的優(yōu)點(diǎn)是不用增加額外器件,電路簡單,但芯片之間地址可能不連續(xù)(如例2-2,地址不連續(xù)會(huì)大大增加程序的難度),存儲(chǔ)空間也得不到充分利用。3.ROM擴(kuò)展由于目前的CPUAT89C51/52內(nèi)部已經(jīng)有了4KB/8KB的程序存儲(chǔ)器,所以實(shí)際應(yīng)用時(shí),ROM的擴(kuò)展很少碰到了,下面舉一個(gè)例子,主要為了說明片選端的“譯碼法”用法和地址計(jì)算,如圖2-24所示。圖2-24兩片ROM2764譯碼法擴(kuò)展圖芯片2764(1)的片選來自,片選為“0”時(shí)必須滿足“P2.7P2.6P2.5”=“000”(參考有關(guān)74LS138的功能表),所以地址表如表2-9所示。表2-92764(1)地址表所以:芯片2764(1)的地址為:0000H~1FFFH。芯片2764(2)的片選來自,片選為“0”時(shí)必須滿足“P2.7P2.6P2.5”=“001”(參考有關(guān)74LS138的功能表),所以地址表如表2-10所示。表2-102764(2)地址表所以芯片2764(2)的地址為:2000H~3FFFH。譯碼法硬件線路稍復(fù)雜,但可以充分利用地址空間,使地址能夠連續(xù),采用全譯碼(指沒有空余的地址線,如例2-2)還可避免地址重疊現(xiàn)象,當(dāng)然部分譯碼因?yàn)檫€有其他線未參加譯碼,也會(huì)產(chǎn)生地址重疊現(xiàn)象。4.I/O端口擴(kuò)展單片機(jī)本身有P0、P1、P2、P3四個(gè)I/O端口,但在上面RAM、ROM的擴(kuò)展中發(fā)現(xiàn),P0口已經(jīng)全部作為數(shù)據(jù)線/地址低8位,P2口做地址的高位使用了,P3口也用掉了部分線(、),所以在有RAM等擴(kuò)展的系統(tǒng)中,真正的I/O線已經(jīng)所剩無幾了,因此I/O擴(kuò)展也幾乎成了必做的工作。在實(shí)際I/O擴(kuò)展中,根據(jù)系統(tǒng)要求,可以將I/O擴(kuò)展分為簡單數(shù)字電路芯片(TTL、CMOS鎖存器、緩沖器電路)的I/O擴(kuò)展和相對(duì)復(fù)雜的可編程芯片(8255、8155)的擴(kuò)展,另外一種是比較特殊的利用單片機(jī)串行口的擴(kuò)展方法,將在第6章介紹。除了用串行口擴(kuò)展I/O外,其余兩種I/O擴(kuò)展都將占用外部數(shù)據(jù)存儲(chǔ)器的地址,因?yàn)樗鼈兣c外部RAM使用相同的地址線和相同的讀、寫控制線。(1)用簡單數(shù)字電路芯片的I/O擴(kuò)展可以

溫馨提示

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

評(píng)論

0/150

提交評(píng)論