《單片機原理與應(yīng)用技術(shù)》課件第2章_第1頁
《單片機原理與應(yīng)用技術(shù)》課件第2章_第2頁
《單片機原理與應(yīng)用技術(shù)》課件第2章_第3頁
《單片機原理與應(yīng)用技術(shù)》課件第2章_第4頁
《單片機原理與應(yīng)用技術(shù)》課件第2章_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章80C51單片機內(nèi)部結(jié)構(gòu)和工作原理2.1內(nèi)部結(jié)構(gòu)和引腳功能

2.2存儲空間配置和功能

2.3MCS-51系列單片機的并行端口結(jié)構(gòu)與操作

2.4時鐘和時序

2.5復(fù)位和低功耗方式

2.6ATMEL89系列單片機

2.7習(xí)題

實訓(xùn)二KeilCx51軟件中調(diào)試窗口的使用

2.1內(nèi)部結(jié)構(gòu)和引腳功能

2.1.1內(nèi)部結(jié)構(gòu)

80C51單片機由CPU、RAM數(shù)據(jù)存儲器、ROM程序存儲器、可編程I/O端口P0~P3、定時器/計數(shù)器以及各種寄存器組成的特殊功能寄存器SFR所組成。

80C51單片機的內(nèi)部功能結(jié)構(gòu)如圖2-1所示。圖2-180C51單片機功能結(jié)構(gòu)圖

2.1.2引腳功能

80C51系列單片機的封裝形式一般分為兩種:雙列直插DIP封裝和貼裝集成電路芯片。80C51單片機芯片共40個引腳,圖2-2為引腳排列圖。圖2-280C51系列單片機引腳圖 2.2存儲空間配置和功能

80C51系列單片機存儲器的配置方式與其他常用的微機系統(tǒng)有所不同,按照存儲器的類型分為程序存儲器ROM和數(shù)據(jù)存儲器RAM。ROM用來存放編寫好的程序和表格數(shù)據(jù),而RAM用來存放運算用的中間數(shù)據(jù)、輸入/輸出的數(shù)據(jù)等。

80C51系列單片機的存儲器組織結(jié)構(gòu)(見圖2-380C51存儲器空間配置圖)可以分為:

(1)片內(nèi)程序存儲器地址空間(4?KB/ROM);

(2)片外程序存儲器地址空間(64?KB/ROM);

(3)片內(nèi)數(shù)據(jù)存儲器地址空間(256?B/RAM);

(4)片外數(shù)據(jù)存儲器地址空間(64?KB/RAM)。圖2-380C51存儲器地址空間2.2.1程序存儲器ROM

MCS-51系列單片機的程序計數(shù)器PC是16位的計數(shù)器,因此它的最大尋址空間為216=64?KB,允許用戶程序隨意調(diào)用或轉(zhuǎn)向64?KB范圍內(nèi)的任何存儲單元。

8051單片機在芯片內(nèi)部設(shè)置了4?KB的程序存儲器ROM,而8751單片機內(nèi)部設(shè)置了4KB的EPROM,8031單片機內(nèi)部沒有設(shè)置程序存儲器,需要在外部擴展EPROM。無論程序存儲器在片內(nèi)還是在片外,地址空間是統(tǒng)一編址的,不會重疊。為了區(qū)別上述這些芯片,如果芯片內(nèi)部含有ROM(比如80C51、87C51),引腳應(yīng)該接高電平,單片機復(fù)位后首先從0000H開始執(zhí)行程序,當(dāng)PC值超出了它內(nèi)部程序存儲器的容量的時候,會自動轉(zhuǎn)向片外ROM10000H依次繼續(xù)執(zhí)行程序。對于80C31芯片而言,片內(nèi)無程序存儲器時,引腳必須接地。當(dāng)單片機讀取片內(nèi)的程序存儲器時,以PC程序計數(shù)器為16位地址指針,依次讀取PC指向的地址單元的指令和數(shù)據(jù),每讀一個字節(jié),PC指針自動加1。也可以根據(jù)具體的情況,由用戶修改指針地址,例如長跳轉(zhuǎn)、短跳轉(zhuǎn)和相對跳轉(zhuǎn)等轉(zhuǎn)移類指令和查表指令MOVC,就可以直接修改PC地址,并直接轉(zhuǎn)移到修改后的16位地址讀取程序存儲器中的指令和數(shù)據(jù)。當(dāng)單片機讀取片外的程序存儲器時,單片機從PC中取出ROM的16位地址后,將低8位地址由P0口送出,高8位地址由P2口送出,這時ALE地址鎖存信號有效,將低8位地址信號鎖存起來,地址鎖存器輸出的8位地址信號與P2口輸出的高8位地址信號同時加到外ROM16位地址輸入端后,當(dāng)信號有效時,外ROM將相應(yīng)地址單元中的數(shù)據(jù)送到數(shù)據(jù)總線P0口,單片機讀取這個數(shù)據(jù)后送入指定單元存儲起來。這樣完成讀取片外ROM數(shù)據(jù)的操作。

在程序存儲器的64?KB空間中,有一小段范圍(0003H~0023H)是80C51系統(tǒng)專用單元,用于存放5個中斷源中斷程序入口地址,具體的分段如下,用戶不能安排其他內(nèi)容。

0000H:單片機復(fù)位后的程序入口地址;

0003H:外部中斷0的中斷服務(wù)程序入口地址;

000BH:定時器0的中斷服務(wù)程序入口地址;

0013H:外部中斷1的中斷服務(wù)程序入口地址;

001BH:定時器1的中斷服務(wù)程序入口地址;

0023H:串行端口的中斷服務(wù)程序入口地址。

由于單片機是按照順序執(zhí)行程序的,為了使程序正常執(zhí)行,需要用一條跳轉(zhuǎn)指令跳轉(zhuǎn)到合適的地址范圍去執(zhí)行真正的主程序。2.2.2外部數(shù)據(jù)存儲器RAM

80C51系列單片機的數(shù)據(jù)存儲器同樣分為片內(nèi)RAM和片外RAM兩大部分。2.2.3內(nèi)部數(shù)據(jù)存儲器RAM

80C51單片機的內(nèi)部數(shù)據(jù)存儲器可以分為兩個不同的存儲空間,即低128?B數(shù)據(jù)存儲器空間和分為21個特殊功能寄存器(SFR)的128?B存儲器空間。對于增強型單片機,數(shù)據(jù)存儲器容量為256?B。在80C51系列單片機的片內(nèi),RAM數(shù)據(jù)存儲器共有256?B,分為低128?B和高128?B。低128位分成工作寄存器區(qū)、位尋址區(qū)、通用RAM區(qū)三部分,其結(jié)構(gòu)圖如圖2-4所示。圖2-480C51片內(nèi)RAM結(jié)構(gòu)圖

1.工作寄存器區(qū)

80C51系列單片機內(nèi)部的低32個字節(jié)(00H~1FH)區(qū)域?qū)儆诠ぷ骷拇嫫鲄^(qū),共分成4個寄存器組,每組占8個單元,一般用R0~R7來表示,即寄存器0組:地址為00H~07H;寄存器1組:地址為08H~0FH;寄存器2組:地址為10H~17H;寄存器3組:地址為18H~1FH。每組有8個寄存器R0~R7。80C51單片機的指令系統(tǒng)當(dāng)中有專門用于工作寄存器操作的指令,這些指令的特點就是工作速度快,要求內(nèi)RAM的讀寫速度也要快,并且具有間接尋址的功能,給用戶編程帶來了方便。程序運行時,只能有一個工作寄存器組作為當(dāng)前工作寄存器組。當(dāng)前工作寄存器組是由軟件編程來確定的,主要是由特殊功能寄存器的程序狀態(tài)字PSW中的RS0、RS1兩位來確定的(選擇方法見表2-1)。這樣可以提高單片機的工作效率和響應(yīng)中斷的速度。如果在實際系統(tǒng)中不需要4個工作寄存器組,那么多余的單元還可以作為一般的數(shù)據(jù)緩沖器使用。表2-1當(dāng)前工作寄存器組的選擇方法

2.位尋址區(qū)

80C51系列單片機具有位處理功能,在片內(nèi)的RAM數(shù)據(jù)存儲器的20H~2FH區(qū)間,我們習(xí)慣將這一區(qū)間稱為位尋址區(qū)(見表2-2)。位尋址區(qū)主要用來存放各種標志位信息和位數(shù)據(jù)。位尋址區(qū)共有16個字節(jié)(Byte),128位。每一個字節(jié)都有一個地址,而每一個位也同樣有一個位地址,這兩個概念一定要區(qū)別開來。表2-280C51系列單片機的位尋址區(qū)

3.通用RAM區(qū)

在位尋址區(qū)之后的30H~7FH單元共80個字節(jié)(Byte)作為通用數(shù)據(jù)緩沖區(qū),這一區(qū)域主要用來存放各種數(shù)據(jù)和中間計算結(jié)果,起到了數(shù)據(jù)緩沖的作用。另外在實際應(yīng)用中,80C51系列單片機的堆棧操作一般都設(shè)置到30H~7FH這個區(qū)間范圍內(nèi)。堆棧的位置由SP寄存器來指示。系統(tǒng)復(fù)位后SP的初值為07H,在系統(tǒng)初始化時可以重新設(shè)置這個數(shù)值。2.2.4MCS-51系列單片機的特殊功能寄存器

在80C51系列單片機內(nèi)部的80H~FFH區(qū)間內(nèi)分布了21個特殊功能寄存器(SFR),其中十六進制的字節(jié)地址碼尾數(shù)為8、0或能被8整除的就是具有位地址的寄存器。在SFR地址空間內(nèi)共有有效的位地址83個(詳見表2-3)。訪問這些SFR特殊功能寄存器只允許使用直接尋址方式。表2-380C51單片機特殊功能寄存器位地址及字節(jié)地址表

1.程序狀態(tài)字寄存器

PSW是8位的程序狀態(tài)字寄存器,其結(jié)構(gòu)和意義見表2-4。表2-4PSW程序狀態(tài)寄存器的結(jié)構(gòu)和定義

2.與堆棧相關(guān)的寄存器

1)?SP堆棧指針

在MCS-51系列單片機中的堆棧設(shè)置在內(nèi)部RAM中,SP是一個8位寄存器,用來專門指示堆棧頂部數(shù)據(jù)的地址,無論是壓入堆棧數(shù)據(jù)還是彈出堆棧數(shù)據(jù)后,SP都是指向堆棧頂部。

堆棧是一個特殊的存儲區(qū),用來暫存數(shù)據(jù)和地址,它是按照“先進后出、后進先出”的原則存取數(shù)據(jù)的。寫入堆棧的操作簡稱為進棧;與之相反,讀取堆棧里的數(shù)據(jù)的操作稱為出棧,這兩種操作是堆棧的主要操作方式。

2)?DPTR數(shù)據(jù)指針

DPTR是一個16位的特殊功能寄存器,由兩個8位寄存器DPH、DPL組成,DPH為DPTR的高8位寄存器,DPL為DPTR的低8位寄存器。DPTR稱為數(shù)據(jù)指針,主要是為了區(qū)別于程序計數(shù)器(PC)地址指針,實際上DPTR是一個16位的地址寄存器,作為訪問片外存儲器(數(shù)據(jù)存儲器RAM和程序存儲器ROM)的地址指針。

3.與端口相關(guān)的寄存器

1)?P0、P1、P2、P3I/O端口

MCS-51系列單片機共有4個并行輸入/輸出端口寄存器P0、P1、P2、P3,特殊功能寄存器中的地址分別為80H、90H、A0H、B0H。通過對這4個特殊功能寄存器的讀/寫操作就可以實現(xiàn)單片機與外部設(shè)備數(shù)據(jù)的交換。

2)?SBUF串行口緩沖寄存器

在單片機與外部設(shè)備進行數(shù)據(jù)交換時,無論是發(fā)送數(shù)據(jù)還是接收數(shù)據(jù)只要把數(shù)據(jù)傳送到SBUF串行口緩沖寄存器,單片機就會自動完成SBUF中數(shù)據(jù)的發(fā)送或接收,完成數(shù)據(jù)的交換。

3)?SCON串行端口控制寄存器

單片機通過SCON串行口緩沖寄存器來設(shè)置串行口工作的方式及中斷標志。

4)?PCON串行通信波特率倍增寄存器(電源控制寄存器)

PCON在特殊功能寄存器中的字節(jié)地址為87H,該寄存器不能進行位尋址。讀/寫操作時,只能整體字節(jié)操作,不能按位操作。

4.與定時器/計數(shù)器相關(guān)的寄存器

MCS-51系列單片機內(nèi)部設(shè)有兩個定時器/計數(shù)器T0和T1,其中TH0、TL0是定時器/計數(shù)器T0的兩個8位計數(shù)初值寄存器,可以構(gòu)成16位的計數(shù)器,TH0為高8位計數(shù)初值寄存器,而TL0為低8位計數(shù)初值寄存器。TH1、TL1為定時器/計數(shù)器T1的兩個8位計數(shù)初值寄存器,同樣可以構(gòu)成16位的計數(shù)器,其中TH1為高8位計數(shù)初值寄存器,而TL1為低8位計數(shù)初值寄存器。

TMOD是定時器/計數(shù)器的工作模式寄存器。TCON是定時器/計數(shù)器的控制寄存器。

5.與中斷相關(guān)的寄存器

(1)?IE為中斷允許控制寄存器,只有IE為1時,單片機的串行口中斷才允許進入。

(2)?IP為中斷優(yōu)先級控制寄存器,用來設(shè)置中斷優(yōu)先級的高低。

2.3MCS-51系列單片機的并行端口結(jié)構(gòu)與操作

2.3.1P0口

當(dāng)需要擴展外部存儲器時,P0口作為分時復(fù)用的低8位地址/數(shù)據(jù)總線,其位結(jié)構(gòu)圖如圖2-5所示。圖2-5P0口的位結(jié)構(gòu)圖

(3)外部數(shù)據(jù)讀入到內(nèi)部總線有兩種方式:一種是“讀鎖存器”;另一種是“讀引腳”。采用哪種方式由單片機的指令來決定。當(dāng)單片機執(zhí)行“讀-修改-寫”指令時,單片機選擇“讀鎖存器”方式,采用這種方式可以防止因外部電路的原因?qū)е乱_狀態(tài)發(fā)生變化而產(chǎn)生誤讀。其他指令均通過“讀引腳”方式將引腳狀態(tài)讀入到內(nèi)部總線上。

2.P0口作為地址/數(shù)據(jù)總線

P0口除了能作通用的I/O口外,還能用作地址總線低8位和數(shù)據(jù)總線,供單片機系統(tǒng)的外部資源并行擴展時使用。

(1)?P0口作為輸出口線。P0口作為地址/數(shù)據(jù)總線輸出時,單片機將“控制”端信號設(shè)置為高電平,其作用有兩個:一是使多路開關(guān)MUX接通高電平“1”端,與P0口的鎖存器斷開;二是將與門開通,與門的輸出端的狀態(tài)由“地址/數(shù)據(jù)”端的狀態(tài)決定。若地址/數(shù)據(jù)端信號為“1”,并同時輸入到與門和反相器(非門),與門輸出為“1”,V1導(dǎo)通,反相器輸出為“0”,V2截止,P0口的引腳輸出為“1”;若“地址/數(shù)據(jù)”端信號為“0”,則與門輸出短信號為“0”,V1截止,反相器輸出為“1”,V2導(dǎo)通,引腳輸出為“0”。這樣單片機的地址/數(shù)據(jù)信號通過與門和反相器、驅(qū)動管V1和V2輸出到了P0口的引腳上,就完成了地址/數(shù)據(jù)總線輸出的功能。

(2)P0口作為數(shù)據(jù)總線輸入。當(dāng)P0口作為數(shù)據(jù)輸入口時,與P0口作為一般輸入口情況一樣,單片機使V1和V2驅(qū)動管均截止。當(dāng)單片機讀引腳信號為高電平時,緩沖器打開,從外部輸入到單片機的引腳上的數(shù)據(jù)就可以經(jīng)過緩沖器U2進入內(nèi)部數(shù)據(jù)總線。

MCS-51系列單片機在不進行并行擴展片外存儲器時,能夠作為通用的I/O口使用,而在單片機進行并行擴展片外存儲器時,P0口只能用作地址/數(shù)據(jù)總線。2.3.2P1口

P1口只能用作通用的I/O口,其位結(jié)構(gòu)圖如圖2-6所示。圖2-6P1口的位結(jié)構(gòu)圖2.3.3P2口

P2口的位結(jié)構(gòu)如圖2-7所示。P2端口是由一個輸出鎖存器(P2.X鎖存器)、一個轉(zhuǎn)換開關(guān)MCU、兩個三態(tài)輸入緩沖器(U1和U2)、輸出驅(qū)動電路和一個非門組成。圖中的控制信號控制多路開關(guān)的狀態(tài),當(dāng)C?=?1時,開關(guān)撥向地址線位置;而C?=?0時,開關(guān)撥向鎖存器位置。P2口能用作通用的I/O口或地址總線的高8位。圖2-7P2口的位結(jié)構(gòu)圖

(2)當(dāng)P2口作為輸出口線時,內(nèi)部數(shù)據(jù)總線上的數(shù)據(jù)在單片機發(fā)出的“寫鎖存器”信號的作用下由D端進入鎖存器,經(jīng)過反相器反相后送到場效應(yīng)管V,再經(jīng)過V的反相后,在P2口線引腳上出現(xiàn)的數(shù)據(jù)就是內(nèi)部數(shù)據(jù)總線要輸出的數(shù)據(jù)。

2.P2口作為地址總線

當(dāng)單片機的內(nèi)部存儲器不能滿足工業(yè)控制系統(tǒng)的要求時,就需要進行片外的擴展。當(dāng)單片機執(zhí)行MOVC指令讀片外程序存儲器,或執(zhí)行MOVX@DPTR指令讀/寫片外RAM、I/O口線時,單片機自動將控制信號C置為1,多路開關(guān)撥向地址線端,這時P2口線上的狀態(tài)正好與地址線上的信號數(shù)據(jù)相同。2.3.4P3口

圖2-8為P3口的位結(jié)構(gòu)圖,P3口既可用作通用的I/O口同時也可用作第二功能控制口線。P3口由一個輸出鎖存器(P3.X鎖存器)、三個輸入緩沖器(U1、U2和U3)、輸出驅(qū)動電路和一個與非門組成。其中輸出驅(qū)動電路與P2口和P1口相同,內(nèi)部設(shè)有上拉電阻。圖2-8P3口的位結(jié)構(gòu)圖

1.P3口作為通用I/O口

當(dāng)單片機對P3口進行字節(jié)或位尋址時,單片機自動將第二功能輸出線O置為1。與非門的輸出取決于鎖存器的Q端信號。當(dāng)單片機用作輸出時,內(nèi)部總線的數(shù)據(jù)就會輸出到P3口引腳上。作為輸入口時,首先要向端口鎖存器寫入1,鎖存器輸出為1,與非門輸出為0,這樣使P3口引腳處于高阻狀態(tài),輸入到引腳的數(shù)據(jù)通過單片機控制的“讀引腳”信號的作用下,進入內(nèi)部數(shù)據(jù)總線。

2.P3口用作第二功能口

當(dāng)單片機不對P3口進行字節(jié)或位尋址時,單片機內(nèi)部硬件自動將端口鎖存器的端置為1,這樣與非門和輸出狀態(tài)只受“第二功能輸出”端控制,“第二功能輸出”引腳的數(shù)據(jù)經(jīng)過與非門和場效應(yīng)管T反相后輸出到該位引腳上。

P3.0:RXD串行口輸入;

P3.1:TXD串行口輸出;2.3.5并行端口的負載能力

MCS-51系列單片機的4個并行I/O口(即P0、P1、P2、P3口)均由內(nèi)部總線控制,端口的功能復(fù)用由硬件自動控制。4個端口均為并行I/O端口,每個口8根口線,共有32個I/O口。P0口是準雙向I/O口,當(dāng)用作片外存儲器或接口擴展時,分時復(fù)用為數(shù)據(jù)總線和低8位地址總線,可驅(qū)動8個LSTTL負載。在作通用I/O口使用時,輸出驅(qū)動電路是開漏的,因此驅(qū)動集電極開路電路或漏極開路電路時需外接上拉電阻。當(dāng)作為地址/數(shù)據(jù)總線使用時,口線不是開漏的,無須外接上拉電阻。P1口是8位準雙向I/O口,具有內(nèi)部上拉電阻,驅(qū)動能力為4個LSTTL負載。P2是8位準雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動4個LSTTL負載,當(dāng)用來進行外部擴展時用作高8位地址總線。P3口是8位準雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動4個LSTTL負載。P3口的所有口線都具有第二功能,實現(xiàn)控制總線的作用。

通常,數(shù)字邏輯器件在高電平輸出時,負載的輸出電流很小,因此僅考慮低電平輸出時的負載能力。一般情況下,LSTTL電路的低電平輸入電流為?-0.4?mA,而MCS-51系列單片機的P0口的低電平輸出電流為4?mA,P1、P2、P3口的低電平輸出電流為2?mA。

2.4時?鐘?和?時?序

2.4.1時鐘電路

MCS-51系列單片機的時鐘信號通常由兩種方式產(chǎn)生:一個是內(nèi)部振蕩方式;另一個是外部時鐘方式,如圖2-9所示。在MCS-51系列單片機的內(nèi)部有一個高增益反相放大器,只要在單片機內(nèi)部的XTAL1和XTAL2引腳外接晶體振蕩器就構(gòu)成了自激振蕩器,并在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。振蕩頻率取決于石英晶體的振蕩頻率,范圍可取1.2~12?MHz,典型值為12?MHz和6?MHz,圖2-9(a)中的兩個電容C1和C2起到了穩(wěn)定頻率和快速起振的作用,一般電容值在5~30?pF,典型值為30?pF。圖2-980C51單片機時鐘電路2.4.2時鐘周期和機器周期

1.時鐘周期

時鐘周期是80C51系列單片機振蕩器產(chǎn)生的時鐘脈沖頻率的倒數(shù),即為系統(tǒng)時鐘信號的振蕩周期,簡稱時鐘周期。它是單片機的最基本的定時信號。

2.狀態(tài)周期

晶振頻率經(jīng)分頻器后形成兩相錯開的時鐘信號P1和P2。時鐘信號的周期也稱為機器狀態(tài)周期,它是時鐘周期的2倍。即一個狀態(tài)周期包含兩個時鐘周期,分為兩個節(jié)拍P1和P2(如圖2-10所示),CPU就是以兩相時鐘P1和P2為基本節(jié)拍指揮8051的各個部件協(xié)調(diào)地工作。圖2-1080C51單片機的時鐘信號

3.機器周期

CPU完成一種基本操作所需要的時間稱為機器周期,基本的機器周期有取指周期、存儲器讀周期和存儲器寫周期等,各種指令功能都是由這幾種基本機器周期實現(xiàn)的。

一個機器周期含有6個狀態(tài)周期,分別為S1、S2、S3、S4、S5、S6,每個狀態(tài)又分為兩個節(jié)拍P1、P2,則一個機器周期的12個節(jié)拍依次為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。機器周期與時鐘周期有著固定的倍數(shù)關(guān)系,即機器周期是時鐘周期的12倍(T機器周期

=?12T時鐘周期)。如果系統(tǒng)時鐘的晶振頻率fOSC為12?MHz時,則

4.指令周期指令周期指單片機執(zhí)行一條指令需要的時間。MCS-51單片機執(zhí)行各種指令的時間是不一樣的,基本上可以分為三種:單周期指令、雙周期指令和四周期指令。MCS-51系列單片機的匯編語言指令共有111條指令,按照指令執(zhí)行時間分為1個機器周期指令64條、2個指令周期指令45條、4個機器周期指令2條。四周期指令只有乘、除兩條指令,其余指令全部都是單周期指令或雙周期指令,三字節(jié)指令均為雙機器周期指令。2.4.3MCS-51系列單片機的取指令和執(zhí)行指令時序

1.單周期指令

對于單周期單字節(jié)指令,在S1P2期間把指令讀入指令寄存器并開始執(zhí)行指令,在S4P2期間讀的下一個指令的操作碼就要丟棄(如圖2-11所示),且PC不加1。而對于單周期雙字節(jié)指令,在S1P2把指令碼讀入指令寄存器,并開始執(zhí)行指令。在S4P2讀入指令的第二字節(jié)(如圖2-12所示)。無論是單字節(jié)還是雙字節(jié)指令均在S6P2期間結(jié)束該指令的操作。圖2-11單字節(jié)指令時序圖2-12雙字節(jié)指令時序

2.雙周期指令

對于單字節(jié)雙周期指令,在兩個機器周期之內(nèi)要進行4次讀操作,只是后3次的讀操作無效(如圖2-13所示)。圖2-13單字節(jié)雙周期指令時序2.4.4讀外ROM時序

圖2-1480C51讀外ROM時序2.4.5讀/寫外RAM時序

1.讀外RAM數(shù)據(jù)存儲器過程

讀外RAM數(shù)據(jù)存儲器過程(如圖2-15所示),可以分為以下幾個步驟:

(1)取指令:在第一機器周期的S1~S4內(nèi),讀寫片外的RAM時首先就要讀取外RAM中的指令,操作過程與讀ROM一樣。

(2)輸出外RAM地址:在第一周期的S5~S6期間,在ALE的第二個下降沿讀取片外RAM的地址,這個片外RAM的地址分別從P2和P0口送出,其中P0口鎖存的是低8位地址,而P2口傳送的是高8位地址,組合成16位的地址信息。圖2-1580C51讀外RAM時序

2.5復(fù)位和低功耗方式

2.5.1復(fù)位方式

復(fù)位操作就是使單片機的CPU或系統(tǒng)中的其他部件恢復(fù)到某種預(yù)先確定的初始狀態(tài),并從這一狀態(tài)開始工作。只需給單片機的復(fù)位引腳RST加上大于兩個機器周期(即24個時鐘振蕩周期)的高電平就可以使單片機復(fù)位。例如,如果時鐘頻率為12?MHz,單個機器周期為1?ms,則只需2?ms以上時間的高電平;若時鐘頻率為6?MHz,每個機器周期為2?ms,則需要持續(xù)4?ms以上時間的高電平。

MCS-51系列單片機復(fù)位操作后內(nèi)部各寄存器的值如表2-5所示。表2-5SFR特殊功能寄存器的復(fù)位值

1.復(fù)位電路

單片機的復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式(如圖2-16所示)。

在圖2-16(a)所示上電復(fù)位電路中,RC構(gòu)成了微分電路,在上電瞬間,將產(chǎn)生一個微分脈沖,其寬度如果大于2個機器周期,80C51單片機將產(chǎn)生復(fù)位操作。為保證微分脈沖寬度大于2個機器周期,RC時間常數(shù)應(yīng)大于2個機器周期,一般電容取22?mF、電阻取1?kW。

在圖2-16(b)所示按鈕復(fù)位電路中,該電路除具有上電復(fù)位功能外,如果要復(fù)位,只需要按下RESET鍵,1?kΩ的電阻和10?mF的電容構(gòu)成了微分電路,使RST端產(chǎn)生一個微分脈沖復(fù)位,復(fù)位完畢后電容經(jīng)電阻放電,等待下一次按下復(fù)位按鍵。圖2-16MCS-51單片機的復(fù)位電路

2.程序運行工作方式

MCS-51單片機的程序運行方式包括連續(xù)執(zhí)行方式和單步執(zhí)行方式兩種。其中,連續(xù)執(zhí)行方式是程序最基本的執(zhí)行方式,即從當(dāng)前PC程序計數(shù)器指針值開始,連續(xù)不斷地執(zhí)行程序,直到遇到程序結(jié)束或暫停標志。當(dāng)CPU執(zhí)行復(fù)位操作后,PC指針總是指向0000H地址單元,而實際的程序運行應(yīng)允許從程序存儲器的任意位置開始,可通過調(diào)整程序計數(shù)器PC的數(shù)值使PC指向程序的實際起始地址。2.5.2低功耗方式

MCS-51單片機具有兩種低功耗的工作方式:空閑方式和掉電保護方式。

正常情況下,在電源電壓VCC=5?V,fOSC=12?MHz的條件下,MCS-51單片機的工作電流約為20?mA;而空閑方式下電流約為5?mA;掉電保護工作方式下電流僅為75?mA。這兩種低功耗工作方式不是自動產(chǎn)生的,硬件本身不具有這種功能,只有通過編程方式置位特殊功能寄存器PCON(電源控制寄存器)有關(guān)位才能使MCS-51單片機進入節(jié)電工作狀態(tài)的。

PCON字節(jié)地址為87H,不能進行位尋址,讀寫時只能進行按字節(jié)操作,其各位功能定義如表2-6所示。表2-6PCON各位功能定義

2.6ATMEL89系列單片機

ATMEL89系列單片機采用的是8031內(nèi)核,因此它和8051系列單片機是兼容的。用ATMEL公司的89系列單片機取代8051是非常簡單的,而且ATMEL89系列單片機的優(yōu)點是片內(nèi)ROM為FlashROM,讀寫方便,并可多次擦寫,價格低廉。

ATMEL89系列單片機可以分為標準型、低檔型和高檔型三大類。標準型以AT89C51為代表,低檔型以AT892051為代表,高檔型以AT89S8252為代表。表2-7為ATMEL89系列單片機片內(nèi)功能配置情況。表2-7AT89系列單片機片內(nèi)功能配置

89系列單片機與80C51系列單片機相比具有如下優(yōu)點。

(1)片內(nèi)含有Flash存儲器。

(2)與80C51系列單片機的引腳兼容。

(3)采用靜態(tài)時鐘方式。

(4)在線可編程模式。

(5)89系列單片機型號多樣。2.6.1AT89C51系列單片機

AT89C51系列單片機屬于標準型,引腳和功能與80C51完全兼容。它是一種帶4K字節(jié)Flash可編程可擦除只讀存儲器(FPEROM,F(xiàn)lashProgrammableandErasableReadOnlyMemory)的低電壓、高性能8位CMOS單片機。AT89C51系列單片機的主要特點是:

(1)片內(nèi)含有足夠的FlashROM,可避免擴展外ROM。

(2)?FlashROM修改程序十分方便。

(3)芯片的價格低廉,而性價比較高。

(4)加密功能更強。

(5)引腳功能。

(6)編程功能。

(7)工作頻率更高。

(8)電源范圍更寬。

(9)抗干擾性更強。

(10)?AT89S51內(nèi)新增SFR,雙數(shù)據(jù)指針,AT89S51向下完全兼容51系列的所有產(chǎn)品,性價比更高,初學(xué)者盡可能選擇這類單片機來學(xué)習(xí)。2.6.2AT89C2051系列單片機

AT89C51系列單片機是美國ATMEL公司生產(chǎn)制造的低電壓、高性能8位CMOS低檔型非總線型單片機,其型號包括AT89C1051、AT89C2051、AT89C4051等。

AT89C2051是一個帶有2?KB字節(jié)Flash可編程可擦除只讀存儲器(EEPROM)的低電壓、高性能8位CMOS單片機。它的主要特點是體積小。

圖2-17為其引腳示意圖。圖2-17AT89C2051引腳示意圖 2.7習(xí)題

1.MCS-51系列單片機內(nèi)部結(jié)構(gòu)包含哪些功能部件?各自具有什么功能?

2.MCS-51系列單片機有幾種制作工藝?分別有什么特點?

3.ALE信號頻率與時鐘頻率有什么關(guān)系?ALE信號的功能如何?

6.MCS-51系列單片機片內(nèi)外數(shù)據(jù)存儲器RAM是如何分配的?

7.片內(nèi)的位尋址區(qū)是如何分配空間的?

8.80C51片內(nèi)有多少特殊功能寄存器?地址空間如何分配?

9.PSW是什么寄存器?主要功能是什么?

10.什么是堆棧?它的作用是什么?

11.DPTR是什么寄存器?它是如何組成的?主要功能是什么?

12.PC是否屬于特殊功能寄存器?它有什么作用?

13.MCS-51系列單片機如何實現(xiàn)工作寄存器組的選擇?

14.?80C51單片機外RAM和ROM使用相同的地址,是否會在總線上出現(xiàn)沖突??為什么?

15.P0口是如何實現(xiàn)通用I/O口的功能的?

16.P0口是如何實現(xiàn)地址和數(shù)據(jù)復(fù)用功能的?

17.P0~P3口的負載能力如何?

18.MCS-51系列單片機的時鐘信號通常有幾種產(chǎn)生方式?

19.簡述時鐘周期、狀態(tài)周期、機器周期和指令周期的關(guān)系。

20.MCS-51系列單片機是如何訪問片外ROM的?

21.MCS-51系列單片機是如何讀寫外RAM的?

22.80C51單片機的工作方式有幾種?

23.80C51單片機如何實現(xiàn)復(fù)位功能的?復(fù)位后的狀態(tài)如何?

24.MCS-51系列單片機有幾種低功耗的工作方式?

25.簡述89系列單片機與80C51系列單片機相比具有哪些優(yōu)點。

26.AT89C51-12PI單片機的型號有什么含義?

27.AT89C51系列單片機有什么特點?

28.AT89C2051系列單片機有什么特點?實訓(xùn)二KeilCx51軟件中調(diào)試窗口的使用

一、實驗?zāi)康?/p>

(1)掌握在KeilCx51軟件上編譯、連接和運行程序的方法和過程。

(2)熟悉并掌握在KeilCx51軟件中調(diào)試匯編源程序或單片機的Cx51語言的方法和各種調(diào)試窗口的使用。

二、實驗設(shè)備與元器件

(1)具有至少20?MB硬盤、16?MB內(nèi)存的Pentium、Pentium-Ⅱ或相應(yīng)兼容處理器的PC機。

(2)?KeilCV8.08版本的?mVision2/3軟件。三、實驗要求

(1)運行KeilCx51開發(fā)環(huán)境,熟悉各個菜單的功能。

(2)編寫簡單的匯編源程序或單片機的Cx51語言,學(xué)會源程序的編輯、編譯過程。

(3)掌握匯編源程序及Cx51程序的調(diào)試方法。

四、實驗內(nèi)容與步驟

(1)在KeilCx51軟件中,內(nèi)建了一個仿真CPU用來模擬執(zhí)行程序,該仿真CPU功能強大,可以在沒有硬件和仿真機的情況下進行程序的調(diào)試,單擊工具條上的按鈕(如圖2-18所示)即可進入調(diào)試狀態(tài)。圖2-18工程調(diào)試選擇進入調(diào)試狀態(tài)后,界面與編輯狀態(tài)相比有明顯的變化,Debug菜單項中原來不能用的命令現(xiàn)在可以使用了,工具欄會多出一個用于運行和調(diào)試的工具條,如圖2-19所示。Debug菜單上的大部分命令可以在此找到對應(yīng)的快捷按鈕,從左至右依次是復(fù)位、全速運行、暫停、單步運行、過程單步、執(zhí)行完當(dāng)前子程序、運行到當(dāng)前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、反匯編窗口、觀察窗口、代碼作用范圍分析、1#串行窗口、內(nèi)存窗口、性能分析和工具按鈕等命令。圖2-19mVision運行調(diào)試工具條在調(diào)試過程中,程序的運行有多種方式,主要分為單步執(zhí)行、全速運行和過程單步運行。所謂全速運行是指從程序的第一條指令開始執(zhí)行,一直執(zhí)行到最后一條指令,中間不停止,這樣執(zhí)行的程序速度很快,并可以看到該段程序執(zhí)行的總體效果。但如果程序有錯,則難以確認錯誤出現(xiàn)在哪些程序行。單步執(zhí)行時每次執(zhí)行一行程序,執(zhí)行完該行程序以后即停止,等待命令再執(zhí)行下一行程序,此時可以觀察該行程序執(zhí)行完以后得到的結(jié)果,是否與我們寫該行程序所想要得到的結(jié)果相同,借此可以找到程序中的問題所在。過程單步運行是指將匯編語言中的子程序或高級語言中的函數(shù)作為一個語句來全速執(zhí)行。程序調(diào)試中,這三種運行方式都要用到。單擊工具欄上的STEP按鈕或使用功能鍵F11即可單步執(zhí)行程序(如圖2-20所示),單擊工具欄上的STEPOVER按鈕或使用功能鍵F10可以過程單步形式執(zhí)行命令。按下F11命令鍵,可以看到源程序窗口的左邊出現(xiàn)了一個黃色調(diào)試箭頭,指向源程序的第一行,每次按下F11鍵即執(zhí)行該箭頭所指程序行,然后箭頭指向下一行。當(dāng)箭頭指向ACALLDELAY行時,再次按下F11鍵,會發(fā)現(xiàn)箭頭指向了延時子程序DELAY的第一行。不斷按F11鍵,即可逐步執(zhí)行延時子程序。圖2-20單步運行示意圖通過單步執(zhí)行程序,可以找到一些問題的所在,但是僅僅依靠單步執(zhí)行來查錯有時是困難的,雖然能查出錯誤,但效率較低,為此必須輔之其他的方法,如本例中的延時程序。如果用按F11鍵的方法來執(zhí)行完該程序行顯然不合適,為此可以采取以下一些方法:①用鼠標在子程序的最后一行點一下,把光標定位于該行,然后選擇菜單Debug→RuntoCursorLine(執(zhí)行到光標所在行),即可全速執(zhí)行完黃色箭頭與光標之間的程序行;②在進入該子程序后,使用菜單Debug→StepOutofcurrentfunction(單步執(zhí)行到該函數(shù)外),使用該命令后,即全速執(zhí)行完調(diào)試光標所在的子程序或子函數(shù)并指向主程序中的下一行程序(這里是AJMPSTART);③在開始調(diào)試時,按F10鍵而非F11鍵,程序也將單步執(zhí)行,不同的是,執(zhí)行到ACALLDELAY行時,按下F10過程單步執(zhí)行鍵,調(diào)試光標不進入子程序的內(nèi)部,而是全速執(zhí)行完該子程序,然后直接指向下一行AJMPSTART。靈活使用上述這幾種方法,可以大大提高查錯的效率。

(2)在線匯編。在進入Keil的調(diào)試環(huán)境以后,如果發(fā)現(xiàn)程序有錯,可以直接對源程序進行修改。但是要使修改后的代碼起作用,必須先退出調(diào)試環(huán)境,重新進行編譯、連接后再次進入調(diào)試。如果只是需要對某些程序行進行測試,或僅需對源程序進行臨時的修改,這樣的過程就有些麻煩。為此,Keil軟件提供了在線匯編能力,將光標定位于需要修改的程序行上,選擇菜單Debug→InlineAssembler…,即可出現(xiàn)如圖2-21所示的對話框。在EnterNew后的文本框內(nèi)直接輸入需更改的程序語句,輸入完成后按Enter鍵。同時,文本框內(nèi)容自動變?yōu)橄乱粭l語句,可以繼續(xù)修改

溫馨提示

  • 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

提交評論