版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章80C51單片機(jī)內(nèi)部結(jié)構(gòu)和工作原理2.1內(nèi)部結(jié)構(gòu)和引腳功能
2.2存儲(chǔ)空間配置和功能
2.3MCS-51系列單片機(jī)的并行端口結(jié)構(gòu)與操作
2.4時(shí)鐘和時(shí)序
2.5復(fù)位和低功耗方式
2.6ATMEL89系列單片機(jī)
2.7習(xí)題
實(shí)訓(xùn)二KeilCx51軟件中調(diào)試窗口的使用
2.1內(nèi)部結(jié)構(gòu)和引腳功能
2.1.1內(nèi)部結(jié)構(gòu)
80C51單片機(jī)由CPU、RAM數(shù)據(jù)存儲(chǔ)器、ROM程序存儲(chǔ)器、可編程I/O端口P0~P3、定時(shí)器/計(jì)數(shù)器以及各種寄存器組成的特殊功能寄存器SFR所組成。
80C51單片機(jī)的內(nèi)部功能結(jié)構(gòu)如圖2-1所示。圖2-180C51單片機(jī)功能結(jié)構(gòu)圖
2.1.2引腳功能
80C51系列單片機(jī)的封裝形式一般分為兩種:雙列直插DIP封裝和貼裝集成電路芯片。80C51單片機(jī)芯片共40個(gè)引腳,圖2-2為引腳排列圖。圖2-280C51系列單片機(jī)引腳圖 2.2存儲(chǔ)空間配置和功能
80C51系列單片機(jī)存儲(chǔ)器的配置方式與其他常用的微機(jī)系統(tǒng)有所不同,按照存儲(chǔ)器的類型分為程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM。ROM用來存放編寫好的程序和表格數(shù)據(jù),而RAM用來存放運(yùn)算用的中間數(shù)據(jù)、輸入/輸出的數(shù)據(jù)等。
80C51系列單片機(jī)的存儲(chǔ)器組織結(jié)構(gòu)(見圖2-380C51存儲(chǔ)器空間配置圖)可以分為:
(1)片內(nèi)程序存儲(chǔ)器地址空間(4?KB/ROM);
(2)片外程序存儲(chǔ)器地址空間(64?KB/ROM);
(3)片內(nèi)數(shù)據(jù)存儲(chǔ)器地址空間(256?B/RAM);
(4)片外數(shù)據(jù)存儲(chǔ)器地址空間(64?KB/RAM)。圖2-380C51存儲(chǔ)器地址空間2.2.1程序存儲(chǔ)器ROM
MCS-51系列單片機(jī)的程序計(jì)數(shù)器PC是16位的計(jì)數(shù)器,因此它的最大尋址空間為216=64?KB,允許用戶程序隨意調(diào)用或轉(zhuǎn)向64?KB范圍內(nèi)的任何存儲(chǔ)單元。
8051單片機(jī)在芯片內(nèi)部設(shè)置了4?KB的程序存儲(chǔ)器ROM,而8751單片機(jī)內(nèi)部設(shè)置了4KB的EPROM,8031單片機(jī)內(nèi)部沒有設(shè)置程序存儲(chǔ)器,需要在外部擴(kuò)展EPROM。無論程序存儲(chǔ)器在片內(nèi)還是在片外,地址空間是統(tǒng)一編址的,不會(huì)重疊。為了區(qū)別上述這些芯片,如果芯片內(nèi)部含有ROM(比如80C51、87C51),引腳應(yīng)該接高電平,單片機(jī)復(fù)位后首先從0000H開始執(zhí)行程序,當(dāng)PC值超出了它內(nèi)部程序存儲(chǔ)器的容量的時(shí)候,會(huì)自動(dòng)轉(zhuǎn)向片外ROM10000H依次繼續(xù)執(zhí)行程序。對(duì)于80C31芯片而言,片內(nèi)無程序存儲(chǔ)器時(shí),引腳必須接地。當(dāng)單片機(jī)讀取片內(nèi)的程序存儲(chǔ)器時(shí),以PC程序計(jì)數(shù)器為16位地址指針,依次讀取PC指向的地址單元的指令和數(shù)據(jù),每讀一個(gè)字節(jié),PC指針自動(dòng)加1。也可以根據(jù)具體的情況,由用戶修改指針地址,例如長跳轉(zhuǎn)、短跳轉(zhuǎn)和相對(duì)跳轉(zhuǎn)等轉(zhuǎn)移類指令和查表指令MOVC,就可以直接修改PC地址,并直接轉(zhuǎn)移到修改后的16位地址讀取程序存儲(chǔ)器中的指令和數(shù)據(jù)。當(dāng)單片機(jī)讀取片外的程序存儲(chǔ)器時(shí),單片機(jī)從PC中取出ROM的16位地址后,將低8位地址由P0口送出,高8位地址由P2口送出,這時(shí)ALE地址鎖存信號(hào)有效,將低8位地址信號(hào)鎖存起來,地址鎖存器輸出的8位地址信號(hào)與P2口輸出的高8位地址信號(hào)同時(shí)加到外ROM16位地址輸入端后,當(dāng)信號(hào)有效時(shí),外ROM將相應(yīng)地址單元中的數(shù)據(jù)送到數(shù)據(jù)總線P0口,單片機(jī)讀取這個(gè)數(shù)據(jù)后送入指定單元存儲(chǔ)起來。這樣完成讀取片外ROM數(shù)據(jù)的操作。
在程序存儲(chǔ)器的64?KB空間中,有一小段范圍(0003H~0023H)是80C51系統(tǒng)專用單元,用于存放5個(gè)中斷源中斷程序入口地址,具體的分段如下,用戶不能安排其他內(nèi)容。
0000H:?jiǎn)纹瑱C(jī)復(fù)位后的程序入口地址;
0003H:外部中斷0的中斷服務(wù)程序入口地址;
000BH:定時(shí)器0的中斷服務(wù)程序入口地址;
0013H:外部中斷1的中斷服務(wù)程序入口地址;
001BH:定時(shí)器1的中斷服務(wù)程序入口地址;
0023H:串行端口的中斷服務(wù)程序入口地址。
由于單片機(jī)是按照順序執(zhí)行程序的,為了使程序正常執(zhí)行,需要用一條跳轉(zhuǎn)指令跳轉(zhuǎn)到合適的地址范圍去執(zhí)行真正的主程序。2.2.2外部數(shù)據(jù)存儲(chǔ)器RAM
80C51系列單片機(jī)的數(shù)據(jù)存儲(chǔ)器同樣分為片內(nèi)RAM和片外RAM兩大部分。2.2.3內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM
80C51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器可以分為兩個(gè)不同的存儲(chǔ)空間,即低128?B數(shù)據(jù)存儲(chǔ)器空間和分為21個(gè)特殊功能寄存器(SFR)的128?B存儲(chǔ)器空間。對(duì)于增強(qiáng)型單片機(jī),數(shù)據(jù)存儲(chǔ)器容量為256?B。在80C51系列單片機(jī)的片內(nèi),RAM數(shù)據(jù)存儲(chǔ)器共有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系列單片機(jī)內(nèi)部的低32個(gè)字節(jié)(00H~1FH)區(qū)域?qū)儆诠ぷ骷拇嫫鲄^(qū),共分成4個(gè)寄存器組,每組占8個(gè)單元,一般用R0~R7來表示,即寄存器0組:地址為00H~07H;寄存器1組:地址為08H~0FH;寄存器2組:地址為10H~17H;寄存器3組:地址為18H~1FH。每組有8個(gè)寄存器R0~R7。80C51單片機(jī)的指令系統(tǒng)當(dāng)中有專門用于工作寄存器操作的指令,這些指令的特點(diǎn)就是工作速度快,要求內(nèi)RAM的讀寫速度也要快,并且具有間接尋址的功能,給用戶編程帶來了方便。程序運(yùn)行時(shí),只能有一個(gè)工作寄存器組作為當(dāng)前工作寄存器組。當(dāng)前工作寄存器組是由軟件編程來確定的,主要是由特殊功能寄存器的程序狀態(tài)字PSW中的RS0、RS1兩位來確定的(選擇方法見表2-1)。這樣可以提高單片機(jī)的工作效率和響應(yīng)中斷的速度。如果在實(shí)際系統(tǒng)中不需要4個(gè)工作寄存器組,那么多余的單元還可以作為一般的數(shù)據(jù)緩沖器使用。表2-1當(dāng)前工作寄存器組的選擇方法
2.位尋址區(qū)
80C51系列單片機(jī)具有位處理功能,在片內(nèi)的RAM數(shù)據(jù)存儲(chǔ)器的20H~2FH區(qū)間,我們習(xí)慣將這一區(qū)間稱為位尋址區(qū)(見表2-2)。位尋址區(qū)主要用來存放各種標(biāo)志位信息和位數(shù)據(jù)。位尋址區(qū)共有16個(gè)字節(jié)(Byte),128位。每一個(gè)字節(jié)都有一個(gè)地址,而每一個(gè)位也同樣有一個(gè)位地址,這兩個(gè)概念一定要區(qū)別開來。表2-280C51系列單片機(jī)的位尋址區(qū)
3.通用RAM區(qū)
在位尋址區(qū)之后的30H~7FH單元共80個(gè)字節(jié)(Byte)作為通用數(shù)據(jù)緩沖區(qū),這一區(qū)域主要用來存放各種數(shù)據(jù)和中間計(jì)算結(jié)果,起到了數(shù)據(jù)緩沖的作用。另外在實(shí)際應(yīng)用中,80C51系列單片機(jī)的堆棧操作一般都設(shè)置到30H~7FH這個(gè)區(qū)間范圍內(nèi)。堆棧的位置由SP寄存器來指示。系統(tǒng)復(fù)位后SP的初值為07H,在系統(tǒng)初始化時(shí)可以重新設(shè)置這個(gè)數(shù)值。2.2.4MCS-51系列單片機(jī)的特殊功能寄存器
在80C51系列單片機(jī)內(nèi)部的80H~FFH區(qū)間內(nèi)分布了21個(gè)特殊功能寄存器(SFR),其中十六進(jìn)制的字節(jié)地址碼尾數(shù)為8、0或能被8整除的就是具有位地址的寄存器。在SFR地址空間內(nèi)共有有效的位地址83個(gè)(詳見表2-3)。訪問這些SFR特殊功能寄存器只允許使用直接尋址方式。表2-380C51單片機(jī)特殊功能寄存器位地址及字節(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系列單片機(jī)中的堆棧設(shè)置在內(nèi)部RAM中,SP是一個(gè)8位寄存器,用來專門指示堆棧頂部數(shù)據(jù)的地址,無論是壓入堆棧數(shù)據(jù)還是彈出堆棧數(shù)據(jù)后,SP都是指向堆棧頂部。
堆棧是一個(gè)特殊的存儲(chǔ)區(qū),用來暫存數(shù)據(jù)和地址,它是按照“先進(jìn)后出、后進(jìn)先出”的原則存取數(shù)據(jù)的。寫入堆棧的操作簡(jiǎn)稱為進(jìn)棧;與之相反,讀取堆棧里的數(shù)據(jù)的操作稱為出棧,這兩種操作是堆棧的主要操作方式。
2)?DPTR數(shù)據(jù)指針
DPTR是一個(gè)16位的特殊功能寄存器,由兩個(gè)8位寄存器DPH、DPL組成,DPH為DPTR的高8位寄存器,DPL為DPTR的低8位寄存器。DPTR稱為數(shù)據(jù)指針,主要是為了區(qū)別于程序計(jì)數(shù)器(PC)地址指針,實(shí)際上DPTR是一個(gè)16位的地址寄存器,作為訪問片外存儲(chǔ)器(數(shù)據(jù)存儲(chǔ)器RAM和程序存儲(chǔ)器ROM)的地址指針。
3.與端口相關(guān)的寄存器
1)?P0、P1、P2、P3I/O端口
MCS-51系列單片機(jī)共有4個(gè)并行輸入/輸出端口寄存器P0、P1、P2、P3,特殊功能寄存器中的地址分別為80H、90H、A0H、B0H。通過對(duì)這4個(gè)特殊功能寄存器的讀/寫操作就可以實(shí)現(xiàn)單片機(jī)與外部設(shè)備數(shù)據(jù)的交換。
2)?SBUF串行口緩沖寄存器
在單片機(jī)與外部設(shè)備進(jìn)行數(shù)據(jù)交換時(shí),無論是發(fā)送數(shù)據(jù)還是接收數(shù)據(jù)只要把數(shù)據(jù)傳送到SBUF串行口緩沖寄存器,單片機(jī)就會(huì)自動(dòng)完成SBUF中數(shù)據(jù)的發(fā)送或接收,完成數(shù)據(jù)的交換。
3)?SCON串行端口控制寄存器
單片機(jī)通過SCON串行口緩沖寄存器來設(shè)置串行口工作的方式及中斷標(biāo)志。
4)?PCON串行通信波特率倍增寄存器(電源控制寄存器)
PCON在特殊功能寄存器中的字節(jié)地址為87H,該寄存器不能進(jìn)行位尋址。讀/寫操作時(shí),只能整體字節(jié)操作,不能按位操作。
4.與定時(shí)器/計(jì)數(shù)器相關(guān)的寄存器
MCS-51系列單片機(jī)內(nèi)部設(shè)有兩個(gè)定時(shí)器/計(jì)數(shù)器T0和T1,其中TH0、TL0是定時(shí)器/計(jì)數(shù)器T0的兩個(gè)8位計(jì)數(shù)初值寄存器,可以構(gòu)成16位的計(jì)數(shù)器,TH0為高8位計(jì)數(shù)初值寄存器,而TL0為低8位計(jì)數(shù)初值寄存器。TH1、TL1為定時(shí)器/計(jì)數(shù)器T1的兩個(gè)8位計(jì)數(shù)初值寄存器,同樣可以構(gòu)成16位的計(jì)數(shù)器,其中TH1為高8位計(jì)數(shù)初值寄存器,而TL1為低8位計(jì)數(shù)初值寄存器。
TMOD是定時(shí)器/計(jì)數(shù)器的工作模式寄存器。TCON是定時(shí)器/計(jì)數(shù)器的控制寄存器。
5.與中斷相關(guān)的寄存器
(1)?IE為中斷允許控制寄存器,只有IE為1時(shí),單片機(jī)的串行口中斷才允許進(jìn)入。
(2)?IP為中斷優(yōu)先級(jí)控制寄存器,用來設(shè)置中斷優(yōu)先級(jí)的高低。
2.3MCS-51系列單片機(jī)的并行端口結(jié)構(gòu)與操作
2.3.1P0口
當(dāng)需要擴(kuò)展外部存儲(chǔ)器時(shí),P0口作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)總線,其位結(jié)構(gòu)圖如圖2-5所示。圖2-5P0口的位結(jié)構(gòu)圖
(3)外部數(shù)據(jù)讀入到內(nèi)部總線有兩種方式:一種是“讀鎖存器”;另一種是“讀引腳”。采用哪種方式由單片機(jī)的指令來決定。當(dāng)單片機(jī)執(zhí)行“讀-修改-寫”指令時(shí),單片機(jī)選擇“讀鎖存器”方式,采用這種方式可以防止因外部電路的原因?qū)е乱_狀態(tài)發(fā)生變化而產(chǎn)生誤讀。其他指令均通過“讀引腳”方式將引腳狀態(tài)讀入到內(nèi)部總線上。
2.P0口作為地址/數(shù)據(jù)總線
P0口除了能作通用的I/O口外,還能用作地址總線低8位和數(shù)據(jù)總線,供單片機(jī)系統(tǒng)的外部資源并行擴(kuò)展時(shí)使用。
(1)?P0口作為輸出口線。P0口作為地址/數(shù)據(jù)總線輸出時(shí),單片機(jī)將“控制”端信號(hào)設(shè)置為高電平,其作用有兩個(gè):一是使多路開關(guān)MUX接通高電平“1”端,與P0口的鎖存器斷開;二是將與門開通,與門的輸出端的狀態(tài)由“地址/數(shù)據(jù)”端的狀態(tài)決定。若地址/數(shù)據(jù)端信號(hào)為“1”,并同時(shí)輸入到與門和反相器(非門),與門輸出為“1”,V1導(dǎo)通,反相器輸出為“0”,V2截止,P0口的引腳輸出為“1”;若“地址/數(shù)據(jù)”端信號(hào)為“0”,則與門輸出短信號(hào)為“0”,V1截止,反相器輸出為“1”,V2導(dǎo)通,引腳輸出為“0”。這樣單片機(jī)的地址/數(shù)據(jù)信號(hào)通過與門和反相器、驅(qū)動(dòng)管V1和V2輸出到了P0口的引腳上,就完成了地址/數(shù)據(jù)總線輸出的功能。
(2)P0口作為數(shù)據(jù)總線輸入。當(dāng)P0口作為數(shù)據(jù)輸入口時(shí),與P0口作為一般輸入口情況一樣,單片機(jī)使V1和V2驅(qū)動(dòng)管均截止。當(dāng)單片機(jī)讀引腳信號(hào)為高電平時(shí),緩沖器打開,從外部輸入到單片機(jī)的引腳上的數(shù)據(jù)就可以經(jīng)過緩沖器U2進(jìn)入內(nèi)部數(shù)據(jù)總線。
MCS-51系列單片機(jī)在不進(jìn)行并行擴(kuò)展片外存儲(chǔ)器時(shí),能夠作為通用的I/O口使用,而在單片機(jī)進(jìn)行并行擴(kuò)展片外存儲(chǔ)器時(shí),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端口是由一個(gè)輸出鎖存器(P2.X鎖存器)、一個(gè)轉(zhuǎn)換開關(guān)MCU、兩個(gè)三態(tài)輸入緩沖器(U1和U2)、輸出驅(qū)動(dòng)電路和一個(gè)非門組成。圖中的控制信號(hào)控制多路開關(guān)的狀態(tài),當(dāng)C?=?1時(shí),開關(guān)撥向地址線位置;而C?=?0時(shí),開關(guān)撥向鎖存器位置。P2口能用作通用的I/O口或地址總線的高8位。圖2-7P2口的位結(jié)構(gòu)圖
(2)當(dāng)P2口作為輸出口線時(shí),內(nèi)部數(shù)據(jù)總線上的數(shù)據(jù)在單片機(jī)發(fā)出的“寫鎖存器”信號(hào)的作用下由D端進(jìn)入鎖存器,經(jīng)過反相器反相后送到場(chǎng)效應(yīng)管V,再經(jīng)過V的反相后,在P2口線引腳上出現(xiàn)的數(shù)據(jù)就是內(nèi)部數(shù)據(jù)總線要輸出的數(shù)據(jù)。
2.P2口作為地址總線
當(dāng)單片機(jī)的內(nèi)部存儲(chǔ)器不能滿足工業(yè)控制系統(tǒng)的要求時(shí),就需要進(jìn)行片外的擴(kuò)展。當(dāng)單片機(jī)執(zhí)行MOVC指令讀片外程序存儲(chǔ)器,或執(zhí)行MOVX@DPTR指令讀/寫片外RAM、I/O口線時(shí),單片機(jī)自動(dòng)將控制信號(hào)C置為1,多路開關(guān)撥向地址線端,這時(shí)P2口線上的狀態(tài)正好與地址線上的信號(hào)數(shù)據(jù)相同。2.3.4P3口
圖2-8為P3口的位結(jié)構(gòu)圖,P3口既可用作通用的I/O口同時(shí)也可用作第二功能控制口線。P3口由一個(gè)輸出鎖存器(P3.X鎖存器)、三個(gè)輸入緩沖器(U1、U2和U3)、輸出驅(qū)動(dòng)電路和一個(gè)與非門組成。其中輸出驅(qū)動(dòng)電路與P2口和P1口相同,內(nèi)部設(shè)有上拉電阻。圖2-8P3口的位結(jié)構(gòu)圖
1.P3口作為通用I/O口
當(dāng)單片機(jī)對(duì)P3口進(jìn)行字節(jié)或位尋址時(shí),單片機(jī)自動(dòng)將第二功能輸出線O置為1。與非門的輸出取決于鎖存器的Q端信號(hào)。當(dāng)單片機(jī)用作輸出時(shí),內(nèi)部總線的數(shù)據(jù)就會(huì)輸出到P3口引腳上。作為輸入口時(shí),首先要向端口鎖存器寫入1,鎖存器輸出為1,與非門輸出為0,這樣使P3口引腳處于高阻狀態(tài),輸入到引腳的數(shù)據(jù)通過單片機(jī)控制的“讀引腳”信號(hào)的作用下,進(jìn)入內(nèi)部數(shù)據(jù)總線。
2.P3口用作第二功能口
當(dāng)單片機(jī)不對(duì)P3口進(jìn)行字節(jié)或位尋址時(shí),單片機(jī)內(nèi)部硬件自動(dòng)將端口鎖存器的端置為1,這樣與非門和輸出狀態(tài)只受“第二功能輸出”端控制,“第二功能輸出”引腳的數(shù)據(jù)經(jīng)過與非門和場(chǎng)效應(yīng)管T反相后輸出到該位引腳上。
P3.0:RXD串行口輸入;
P3.1:TXD串行口輸出;2.3.5并行端口的負(fù)載能力
MCS-51系列單片機(jī)的4個(gè)并行I/O口(即P0、P1、P2、P3口)均由內(nèi)部總線控制,端口的功能復(fù)用由硬件自動(dòng)控制。4個(gè)端口均為并行I/O端口,每個(gè)口8根口線,共有32個(gè)I/O口。P0口是準(zhǔn)雙向I/O口,當(dāng)用作片外存儲(chǔ)器或接口擴(kuò)展時(shí),分時(shí)復(fù)用為數(shù)據(jù)總線和低8位地址總線,可驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。在作通用I/O口使用時(shí),輸出驅(qū)動(dòng)電路是開漏的,因此驅(qū)動(dòng)集電極開路電路或漏極開路電路時(shí)需外接上拉電阻。當(dāng)作為地址/數(shù)據(jù)總線使用時(shí),口線不是開漏的,無須外接上拉電阻。P1口是8位準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,驅(qū)動(dòng)能力為4個(gè)LSTTL負(fù)載。P2是8位準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動(dòng)4個(gè)LSTTL負(fù)載,當(dāng)用來進(jìn)行外部擴(kuò)展時(shí)用作高8位地址總線。P3口是8位準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻,可驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。P3口的所有口線都具有第二功能,實(shí)現(xiàn)控制總線的作用。
通常,數(shù)字邏輯器件在高電平輸出時(shí),負(fù)載的輸出電流很小,因此僅考慮低電平輸出時(shí)的負(fù)載能力。一般情況下,LSTTL電路的低電平輸入電流為?-0.4?mA,而MCS-51系列單片機(jī)的P0口的低電平輸出電流為4?mA,P1、P2、P3口的低電平輸出電流為2?mA。
2.4時(shí)?鐘?和?時(shí)?序
2.4.1時(shí)鐘電路
MCS-51系列單片機(jī)的時(shí)鐘信號(hào)通常由兩種方式產(chǎn)生:一個(gè)是內(nèi)部振蕩方式;另一個(gè)是外部時(shí)鐘方式,如圖2-9所示。在MCS-51系列單片機(jī)的內(nèi)部有一個(gè)高增益反相放大器,只要在單片機(jī)內(nèi)部的XTAL1和XTAL2引腳外接晶體振蕩器就構(gòu)成了自激振蕩器,并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào)。振蕩頻率取決于石英晶體的振蕩頻率,范圍可取1.2~12?MHz,典型值為12?MHz和6?MHz,圖2-9(a)中的兩個(gè)電容C1和C2起到了穩(wěn)定頻率和快速起振的作用,一般電容值在5~30?pF,典型值為30?pF。圖2-980C51單片機(jī)時(shí)鐘電路2.4.2時(shí)鐘周期和機(jī)器周期
1.時(shí)鐘周期
時(shí)鐘周期是80C51系列單片機(jī)振蕩器產(chǎn)生的時(shí)鐘脈沖頻率的倒數(shù),即為系統(tǒng)時(shí)鐘信號(hào)的振蕩周期,簡(jiǎn)稱時(shí)鐘周期。它是單片機(jī)的最基本的定時(shí)信號(hào)。
2.狀態(tài)周期
晶振頻率經(jīng)分頻器后形成兩相錯(cuò)開的時(shí)鐘信號(hào)P1和P2。時(shí)鐘信號(hào)的周期也稱為機(jī)器狀態(tài)周期,它是時(shí)鐘周期的2倍。即一個(gè)狀態(tài)周期包含兩個(gè)時(shí)鐘周期,分為兩個(gè)節(jié)拍P1和P2(如圖2-10所示),CPU就是以兩相時(shí)鐘P1和P2為基本節(jié)拍指揮8051的各個(gè)部件協(xié)調(diào)地工作。圖2-1080C51單片機(jī)的時(shí)鐘信號(hào)
3.機(jī)器周期
CPU完成一種基本操作所需要的時(shí)間稱為機(jī)器周期,基本的機(jī)器周期有取指周期、存儲(chǔ)器讀周期和存儲(chǔ)器寫周期等,各種指令功能都是由這幾種基本機(jī)器周期實(shí)現(xiàn)的。
一個(gè)機(jī)器周期含有6個(gè)狀態(tài)周期,分別為S1、S2、S3、S4、S5、S6,每個(gè)狀態(tài)又分為兩個(gè)節(jié)拍P1、P2,則一個(gè)機(jī)器周期的12個(gè)節(jié)拍依次為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。機(jī)器周期與時(shí)鐘周期有著固定的倍數(shù)關(guān)系,即機(jī)器周期是時(shí)鐘周期的12倍(T機(jī)器周期
=?12T時(shí)鐘周期)。如果系統(tǒng)時(shí)鐘的晶振頻率fOSC為12?MHz時(shí),則
4.指令周期指令周期指單片機(jī)執(zhí)行一條指令需要的時(shí)間。MCS-51單片機(jī)執(zhí)行各種指令的時(shí)間是不一樣的,基本上可以分為三種:?jiǎn)沃芷谥噶?、雙周期指令和四周期指令。MCS-51系列單片機(jī)的匯編語言指令共有111條指令,按照指令執(zhí)行時(shí)間分為1個(gè)機(jī)器周期指令64條、2個(gè)指令周期指令45條、4個(gè)機(jī)器周期指令2條。四周期指令只有乘、除兩條指令,其余指令全部都是單周期指令或雙周期指令,三字節(jié)指令均為雙機(jī)器周期指令。2.4.3MCS-51系列單片機(jī)的取指令和執(zhí)行指令時(shí)序
1.單周期指令
對(duì)于單周期單字節(jié)指令,在S1P2期間把指令讀入指令寄存器并開始執(zhí)行指令,在S4P2期間讀的下一個(gè)指令的操作碼就要丟棄(如圖2-11所示),且PC不加1。而對(duì)于單周期雙字節(jié)指令,在S1P2把指令碼讀入指令寄存器,并開始執(zhí)行指令。在S4P2讀入指令的第二字節(jié)(如圖2-12所示)。無論是單字節(jié)還是雙字節(jié)指令均在S6P2期間結(jié)束該指令的操作。圖2-11單字節(jié)指令時(shí)序圖2-12雙字節(jié)指令時(shí)序
2.雙周期指令
對(duì)于單字節(jié)雙周期指令,在兩個(gè)機(jī)器周期之內(nèi)要進(jìn)行4次讀操作,只是后3次的讀操作無效(如圖2-13所示)。圖2-13單字節(jié)雙周期指令時(shí)序2.4.4讀外ROM時(shí)序
圖2-1480C51讀外ROM時(shí)序2.4.5讀/寫外RAM時(shí)序
1.讀外RAM數(shù)據(jù)存儲(chǔ)器過程
讀外RAM數(shù)據(jù)存儲(chǔ)器過程(如圖2-15所示),可以分為以下幾個(gè)步驟:
(1)取指令:在第一機(jī)器周期的S1~S4內(nèi),讀寫片外的RAM時(shí)首先就要讀取外RAM中的指令,操作過程與讀ROM一樣。
(2)輸出外RAM地址:在第一周期的S5~S6期間,在ALE的第二個(gè)下降沿讀取片外RAM的地址,這個(gè)片外RAM的地址分別從P2和P0口送出,其中P0口鎖存的是低8位地址,而P2口傳送的是高8位地址,組合成16位的地址信息。圖2-1580C51讀外RAM時(shí)序
2.5復(fù)位和低功耗方式
2.5.1復(fù)位方式
復(fù)位操作就是使單片機(jī)的CPU或系統(tǒng)中的其他部件恢復(fù)到某種預(yù)先確定的初始狀態(tài),并從這一狀態(tài)開始工作。只需給單片機(jī)的復(fù)位引腳RST加上大于兩個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可以使單片機(jī)復(fù)位。例如,如果時(shí)鐘頻率為12?MHz,單個(gè)機(jī)器周期為1?ms,則只需2?ms以上時(shí)間的高電平;若時(shí)鐘頻率為6?MHz,每個(gè)機(jī)器周期為2?ms,則需要持續(xù)4?ms以上時(shí)間的高電平。
MCS-51系列單片機(jī)復(fù)位操作后內(nèi)部各寄存器的值如表2-5所示。表2-5SFR特殊功能寄存器的復(fù)位值
1.復(fù)位電路
單片機(jī)的復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式(如圖2-16所示)。
在圖2-16(a)所示上電復(fù)位電路中,RC構(gòu)成了微分電路,在上電瞬間,將產(chǎn)生一個(gè)微分脈沖,其寬度如果大于2個(gè)機(jī)器周期,80C51單片機(jī)將產(chǎn)生復(fù)位操作。為保證微分脈沖寬度大于2個(gè)機(jī)器周期,RC時(shí)間常數(shù)應(yīng)大于2個(gè)機(jī)器周期,一般電容取22?mF、電阻取1?kW。
在圖2-16(b)所示按鈕復(fù)位電路中,該電路除具有上電復(fù)位功能外,如果要復(fù)位,只需要按下RESET鍵,1?kΩ的電阻和10?mF的電容構(gòu)成了微分電路,使RST端產(chǎn)生一個(gè)微分脈沖復(fù)位,復(fù)位完畢后電容經(jīng)電阻放電,等待下一次按下復(fù)位按鍵。圖2-16MCS-51單片機(jī)的復(fù)位電路
2.程序運(yùn)行工作方式
MCS-51單片機(jī)的程序運(yùn)行方式包括連續(xù)執(zhí)行方式和單步執(zhí)行方式兩種。其中,連續(xù)執(zhí)行方式是程序最基本的執(zhí)行方式,即從當(dāng)前PC程序計(jì)數(shù)器指針值開始,連續(xù)不斷地執(zhí)行程序,直到遇到程序結(jié)束或暫停標(biāo)志。當(dāng)CPU執(zhí)行復(fù)位操作后,PC指針總是指向0000H地址單元,而實(shí)際的程序運(yùn)行應(yīng)允許從程序存儲(chǔ)器的任意位置開始,可通過調(diào)整程序計(jì)數(shù)器PC的數(shù)值使PC指向程序的實(shí)際起始地址。2.5.2低功耗方式
MCS-51單片機(jī)具有兩種低功耗的工作方式:空閑方式和掉電保護(hù)方式。
正常情況下,在電源電壓VCC=5?V,fOSC=12?MHz的條件下,MCS-51單片機(jī)的工作電流約為20?mA;而空閑方式下電流約為5?mA;掉電保護(hù)工作方式下電流僅為75?mA。這兩種低功耗工作方式不是自動(dòng)產(chǎn)生的,硬件本身不具有這種功能,只有通過編程方式置位特殊功能寄存器PCON(電源控制寄存器)有關(guān)位才能使MCS-51單片機(jī)進(jìn)入節(jié)電工作狀態(tài)的。
PCON字節(jié)地址為87H,不能進(jìn)行位尋址,讀寫時(shí)只能進(jìn)行按字節(jié)操作,其各位功能定義如表2-6所示。表2-6PCON各位功能定義
2.6ATMEL89系列單片機(jī)
ATMEL89系列單片機(jī)采用的是8031內(nèi)核,因此它和8051系列單片機(jī)是兼容的。用ATMEL公司的89系列單片機(jī)取代8051是非常簡(jiǎn)單的,而且ATMEL89系列單片機(jī)的優(yōu)點(diǎn)是片內(nèi)ROM為FlashROM,讀寫方便,并可多次擦寫,價(jià)格低廉。
ATMEL89系列單片機(jī)可以分為標(biāo)準(zhǔn)型、低檔型和高檔型三大類。標(biāo)準(zhǔn)型以AT89C51為代表,低檔型以AT892051為代表,高檔型以AT89S8252為代表。表2-7為ATMEL89系列單片機(jī)片內(nèi)功能配置情況。表2-7AT89系列單片機(jī)片內(nèi)功能配置
89系列單片機(jī)與80C51系列單片機(jī)相比具有如下優(yōu)點(diǎn)。
(1)片內(nèi)含有Flash存儲(chǔ)器。
(2)與80C51系列單片機(jī)的引腳兼容。
(3)采用靜態(tài)時(shí)鐘方式。
(4)在線可編程模式。
(5)89系列單片機(jī)型號(hào)多樣。2.6.1AT89C51系列單片機(jī)
AT89C51系列單片機(jī)屬于標(biāo)準(zhǔn)型,引腳和功能與80C51完全兼容。它是一種帶4K字節(jié)Flash可編程可擦除只讀存儲(chǔ)器(FPEROM,F(xiàn)lashProgrammableandErasableReadOnlyMemory)的低電壓、高性能8位CMOS單片機(jī)。AT89C51系列單片機(jī)的主要特點(diǎn)是:
(1)片內(nèi)含有足夠的FlashROM,可避免擴(kuò)展外ROM。
(2)?FlashROM修改程序十分方便。
(3)芯片的價(jià)格低廉,而性價(jià)比較高。
(4)加密功能更強(qiáng)。
(5)引腳功能。
(6)編程功能。
(7)工作頻率更高。
(8)電源范圍更寬。
(9)抗干擾性更強(qiáng)。
(10)?AT89S51內(nèi)新增SFR,雙數(shù)據(jù)指針,AT89S51向下完全兼容51系列的所有產(chǎn)品,性價(jià)比更高,初學(xué)者盡可能選擇這類單片機(jī)來學(xué)習(xí)。2.6.2AT89C2051系列單片機(jī)
AT89C51系列單片機(jī)是美國ATMEL公司生產(chǎn)制造的低電壓、高性能8位CMOS低檔型非總線型單片機(jī),其型號(hào)包括AT89C1051、AT89C2051、AT89C4051等。
AT89C2051是一個(gè)帶有2?KB字節(jié)Flash可編程可擦除只讀存儲(chǔ)器(EEPROM)的低電壓、高性能8位CMOS單片機(jī)。它的主要特點(diǎn)是體積小。
圖2-17為其引腳示意圖。圖2-17AT89C2051引腳示意圖 2.7習(xí)題
1.MCS-51系列單片機(jī)內(nèi)部結(jié)構(gòu)包含哪些功能部件?各自具有什么功能?
2.MCS-51系列單片機(jī)有幾種制作工藝?分別有什么特點(diǎn)?
3.ALE信號(hào)頻率與時(shí)鐘頻率有什么關(guān)系?ALE信號(hào)的功能如何?
6.MCS-51系列單片機(jī)片內(nèi)外數(shù)據(jù)存儲(chǔ)器RAM是如何分配的?
7.片內(nèi)的位尋址區(qū)是如何分配空間的?
8.80C51片內(nèi)有多少特殊功能寄存器?地址空間如何分配?
9.PSW是什么寄存器?主要功能是什么?
10.什么是堆棧?它的作用是什么?
11.DPTR是什么寄存器?它是如何組成的?主要功能是什么?
12.PC是否屬于特殊功能寄存器?它有什么作用?
13.MCS-51系列單片機(jī)如何實(shí)現(xiàn)工作寄存器組的選擇?
14.?80C51單片機(jī)外RAM和ROM使用相同的地址,是否會(huì)在總線上出現(xiàn)沖突??為什么?
15.P0口是如何實(shí)現(xiàn)通用I/O口的功能的?
16.P0口是如何實(shí)現(xiàn)地址和數(shù)據(jù)復(fù)用功能的?
17.P0~P3口的負(fù)載能力如何?
18.MCS-51系列單片機(jī)的時(shí)鐘信號(hào)通常有幾種產(chǎn)生方式?
19.簡(jiǎn)述時(shí)鐘周期、狀態(tài)周期、機(jī)器周期和指令周期的關(guān)系。
20.MCS-51系列單片機(jī)是如何訪問片外ROM的?
21.MCS-51系列單片機(jī)是如何讀寫外RAM的?
22.80C51單片機(jī)的工作方式有幾種?
23.80C51單片機(jī)如何實(shí)現(xiàn)復(fù)位功能的?復(fù)位后的狀態(tài)如何?
24.MCS-51系列單片機(jī)有幾種低功耗的工作方式?
25.簡(jiǎn)述89系列單片機(jī)與80C51系列單片機(jī)相比具有哪些優(yōu)點(diǎn)。
26.AT89C51-12PI單片機(jī)的型號(hào)有什么含義?
27.AT89C51系列單片機(jī)有什么特點(diǎn)?
28.AT89C2051系列單片機(jī)有什么特點(diǎn)?實(shí)訓(xùn)二KeilCx51軟件中調(diào)試窗口的使用
一、實(shí)驗(yàn)?zāi)康?/p>
(1)掌握在KeilCx51軟件上編譯、連接和運(yùn)行程序的方法和過程。
(2)熟悉并掌握在KeilCx51軟件中調(diào)試匯編源程序或單片機(jī)的Cx51語言的方法和各種調(diào)試窗口的使用。
二、實(shí)驗(yàn)設(shè)備與元器件
(1)具有至少20?MB硬盤、16?MB內(nèi)存的Pentium、Pentium-Ⅱ或相應(yīng)兼容處理器的PC機(jī)。
(2)?KeilCV8.08版本的?mVision2/3軟件。三、實(shí)驗(yàn)要求
(1)運(yùn)行KeilCx51開發(fā)環(huán)境,熟悉各個(gè)菜單的功能。
(2)編寫簡(jiǎn)單的匯編源程序或單片機(jī)的Cx51語言,學(xué)會(huì)源程序的編輯、編譯過程。
(3)掌握匯編源程序及Cx51程序的調(diào)試方法。
四、實(shí)驗(yàn)內(nèi)容與步驟
(1)在KeilCx51軟件中,內(nèi)建了一個(gè)仿真CPU用來模擬執(zhí)行程序,該仿真CPU功能強(qiáng)大,可以在沒有硬件和仿真機(jī)的情況下進(jìn)行程序的調(diào)試,單擊工具條上的按鈕(如圖2-18所示)即可進(jìn)入調(diào)試狀態(tài)。圖2-18工程調(diào)試選擇進(jìn)入調(diào)試狀態(tài)后,界面與編輯狀態(tài)相比有明顯的變化,Debug菜單項(xiàng)中原來不能用的命令現(xiàn)在可以使用了,工具欄會(huì)多出一個(gè)用于運(yùn)行和調(diào)試的工具條,如圖2-19所示。Debug菜單上的大部分命令可以在此找到對(duì)應(yīng)的快捷按鈕,從左至右依次是復(fù)位、全速運(yùn)行、暫停、單步運(yùn)行、過程單步、執(zhí)行完當(dāng)前子程序、運(yùn)行到當(dāng)前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、反匯編窗口、觀察窗口、代碼作用范圍分析、1#串行窗口、內(nèi)存窗口、性能分析和工具按鈕等命令。圖2-19mVision運(yùn)行調(diào)試工具條在調(diào)試過程中,程序的運(yùn)行有多種方式,主要分為單步執(zhí)行、全速運(yùn)行和過程單步運(yùn)行。所謂全速運(yùn)行是指從程序的第一條指令開始執(zhí)行,一直執(zhí)行到最后一條指令,中間不停止,這樣執(zhí)行的程序速度很快,并可以看到該段程序執(zhí)行的總體效果。但如果程序有錯(cuò),則難以確認(rèn)錯(cuò)誤出現(xiàn)在哪些程序行。單步執(zhí)行時(shí)每次執(zhí)行一行程序,執(zhí)行完該行程序以后即停止,等待命令再執(zhí)行下一行程序,此時(shí)可以觀察該行程序執(zhí)行完以后得到的結(jié)果,是否與我們寫該行程序所想要得到的結(jié)果相同,借此可以找到程序中的問題所在。過程單步運(yùn)行是指將匯編語言中的子程序或高級(jí)語言中的函數(shù)作為一個(gè)語句來全速執(zhí)行。程序調(diào)試中,這三種運(yùn)行方式都要用到。單擊工具欄上的STEP按鈕或使用功能鍵F11即可單步執(zhí)行程序(如圖2-20所示),單擊工具欄上的STEPOVER按鈕或使用功能鍵F10可以過程單步形式執(zhí)行命令。按下F11命令鍵,可以看到源程序窗口的左邊出現(xiàn)了一個(gè)黃色調(diào)試箭頭,指向源程序的第一行,每次按下F11鍵即執(zhí)行該箭頭所指程序行,然后箭頭指向下一行。當(dāng)箭頭指向ACALLDELAY行時(shí),再次按下F11鍵,會(huì)發(fā)現(xiàn)箭頭指向了延時(shí)子程序DELAY的第一行。不斷按F11鍵,即可逐步執(zhí)行延時(shí)子程序。圖2-20單步運(yùn)行示意圖通過單步執(zhí)行程序,可以找到一些問題的所在,但是僅僅依靠單步執(zhí)行來查錯(cuò)有時(shí)是困難的,雖然能查出錯(cuò)誤,但效率較低,為此必須輔之其他的方法,如本例中的延時(shí)程序。如果用按F11鍵的方法來執(zhí)行完該程序行顯然不合適,為此可以采取以下一些方法:①用鼠標(biāo)在子程序的最后一行點(diǎn)一下,把光標(biāo)定位于該行,然后選擇菜單Debug→RuntoCursorLine(執(zhí)行到光標(biāo)所在行),即可全速執(zhí)行完黃色箭頭與光標(biāo)之間的程序行;②在進(jìn)入該子程序后,使用菜單Debug→StepOutofcurrentfunction(單步執(zhí)行到該函數(shù)外),使用該命令后,即全速執(zhí)行完調(diào)試光標(biāo)所在的子程序或子函數(shù)并指向主程序中的下一行程序(這里是AJMPSTART);③在開始調(diào)試時(shí),按F10鍵而非F11鍵,程序也將單步執(zhí)行,不同的是,執(zhí)行到ACALLDELAY行時(shí),按下F10過程單步執(zhí)行鍵,調(diào)試光標(biāo)不進(jìn)入子程序的內(nèi)部,而是全速執(zhí)行完該子程序,然后直接指向下一行AJMPSTART。靈活使用上述這幾種方法,可以大大提高查錯(cuò)的效率。
(2)在線匯編。在進(jìn)入Keil的調(diào)試環(huán)境以后,如果發(fā)現(xiàn)程序有錯(cuò),可以直接對(duì)源程序進(jìn)行修改。但是要使修改后的代碼起作用,必須先退出調(diào)試環(huán)境,重新進(jìn)行編譯、連接后再次進(jìn)入調(diào)試。如果只是需要對(duì)某些程序行進(jìn)行測(cè)試,或僅需對(duì)源程序進(jìn)行臨時(shí)的修改,這樣的過程就有些麻煩。為此,Keil軟件提供了在線匯編能力,將光標(biāo)定位于需要修改的程序行上,選擇菜單Debug→InlineAssembler…,即可出現(xiàn)如圖2-21所示的對(duì)話框。在EnterNew后的文本框內(nèi)直接輸入需更改的程序語句,輸入完成后按Enter鍵。同時(shí),文本框內(nèi)容自動(dòng)變?yōu)橄乱粭l語句,可以繼續(xù)修改
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廠長勞動(dòng)合同簽訂與勞動(dòng)爭(zhēng)議調(diào)解協(xié)議4篇
- 2025年度體育設(shè)施承包經(jīng)營協(xié)議范本3篇
- 二零二五新春企業(yè)復(fù)工環(huán)境保護(hù)合同2篇
- 2025年度環(huán)保型產(chǎn)品宣傳冊(cè)創(chuàng)意設(shè)計(jì)制作服務(wù)合同4篇
- 2025年廠房租賃合同智能化管理版4篇
- 個(gè)人二手車輛交易合同2024年專用
- 2025年度文化遺產(chǎn)地拆遷產(chǎn)權(quán)保護(hù)協(xié)議4篇
- 2025年度智能安防產(chǎn)品委托設(shè)計(jì)合同4篇
- 2025不動(dòng)產(chǎn)交易擔(dān)保合同范本3篇
- 兩地研學(xué)合作協(xié)議合同范本 2篇
- GB/T 12494-1990食品機(jī)械專用白油
- 運(yùn)輸供應(yīng)商年度評(píng)價(jià)表
- 成熙高級(jí)英語聽力腳本
- 北京語言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)完整版課件
- 商場(chǎng)裝修改造施工組織設(shè)計(jì)
- (中職)Dreamweaver-CC網(wǎng)頁設(shè)計(jì)與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級(jí)語文上冊(cè) 第5單元教材解讀 PPT
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤使用手冊(cè)
評(píng)論
0/150
提交評(píng)論