-
- 素材大。
- 1.34 MB
- 素材授權(quán):
- 免費(fèi)下載
- 素材格式:
- .ppt
- 素材上傳:
- ppt
- 上傳時(shí)間:
- 2018-02-14
- 素材編號(hào):
- 183494
- 素材類(lèi)別:
- 儀器設(shè)備PPT
-
素材預(yù)覽
這是一個(gè)關(guān)于單片機(jī)簡(jiǎn)介ppt,包括了MCS-51單片機(jī)的主要性能和特點(diǎn),MCS-51單片機(jī)內(nèi)部方框圖,MCS-51單片機(jī)的引腳定義,MCS-51單片機(jī)的存儲(chǔ)器的配置,震蕩器、時(shí)鐘電路和CPU的時(shí)序,輸入輸出端口,MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器,MCS-51單片機(jī)的串行接口,MCS-51的中斷系統(tǒng)等內(nèi)容,單片機(jī)原理與接口技術(shù)嵌入式微控制器的開(kāi)發(fā)入門(mén)參考資料 1, 《單片機(jī)原理及其接口技術(shù)》 ----胡漢才 清華大學(xué)出版社(32元) 2,《MCS-51/96系列單片機(jī)原理及應(yīng)用》 ----孫涵芳 徐愛(ài)卿 北京航空航天大學(xué)出版社(35元) 3,《MCS-51系列單片機(jī)實(shí)用接口技術(shù)》 ---- 李華北京航空航天大學(xué)出版社(40元) 4,《電子世界》 ----中國(guó)電子學(xué)會(huì)主辦(期刊 6.00元/期)本課主要內(nèi)容及課時(shí)安排 總講課課時(shí)24學(xué)時(shí) 第一章:MCS-51系列單片機(jī)的基本硬件結(jié)構(gòu) (8課時(shí)) 介紹51單片機(jī)內(nèi)部硬件結(jié)構(gòu)(數(shù)據(jù)寄存器、程序存儲(chǔ)器、輸入輸出端口、定時(shí)計(jì)數(shù)器、串行口及中斷等) 第二章:MCS-51單片機(jī)的指令系統(tǒng) (4課時(shí)) 51單片機(jī)的111條指令的分類(lèi)、尋址方式、偽指令及使用中的注意事項(xiàng) 第三章:MCS-51單片機(jī)的系統(tǒng)擴(kuò)展及應(yīng)用 (12課時(shí)) 程序與數(shù)據(jù)存儲(chǔ)器的擴(kuò)展、定時(shí)/計(jì)數(shù)器的應(yīng)用、串行口的應(yīng)用及A/D、D/A轉(zhuǎn)換器與單片機(jī)的接口和鍵盤(pán)掃描/動(dòng)態(tài)顯示接口電路,歡迎點(diǎn)擊下載單片機(jī)簡(jiǎn)介ppt。
單片機(jī)簡(jiǎn)介ppt是由紅軟PPT免費(fèi)下載網(wǎng)推薦的一款儀器設(shè)備PPT類(lèi)型的PowerPoint.
單片機(jī)原理與接口技術(shù)嵌入式微控制器的開(kāi)發(fā)入門(mén)參考資料 1, 《單片機(jī)原理及其接口技術(shù)》 ----胡漢才 清華大學(xué)出版社(32元) 2,《MCS-51/96系列單片機(jī)原理及應(yīng)用》 ----孫涵芳 徐愛(ài)卿 北京航空航天大學(xué)出版社(35元) 3,《MCS-51系列單片機(jī)實(shí)用接口技術(shù)》 ---- 李華北京航空航天大學(xué)出版社(40元) 4,《電子世界》 ----中國(guó)電子學(xué)會(huì)主辦(期刊 6.00元/期)本課主要內(nèi)容及課時(shí)安排 總講課課時(shí)24學(xué)時(shí) 第一章:MCS-51系列單片機(jī)的基本硬件結(jié)構(gòu) (8課時(shí)) 介紹51單片機(jī)內(nèi)部硬件結(jié)構(gòu)(數(shù)據(jù)寄存器、程序存儲(chǔ)器、輸入輸出端口、定時(shí)計(jì)數(shù)器、串行口及中斷等) 第二章:MCS-51單片機(jī)的指令系統(tǒng) (4課時(shí)) 51單片機(jī)的111條指令的分類(lèi)、尋址方式、偽指令及使用中的注意事項(xiàng) 第三章:MCS-51單片機(jī)的系統(tǒng)擴(kuò)展及應(yīng)用 (12課時(shí)) 程序與數(shù)據(jù)存儲(chǔ)器的擴(kuò)展、定時(shí)/計(jì)數(shù)器的應(yīng)用、串行口的應(yīng)用及A/D、D/A轉(zhuǎn)換器與單片機(jī)的接口和鍵盤(pán)掃描/動(dòng)態(tài)顯示接口電路。 如何學(xué)習(xí)本門(mén)課程第一章是基礎(chǔ),只有熟知單片機(jī)的硬件結(jié)構(gòu)和特點(diǎn)才能正確的使用單片機(jī)進(jìn)行各種編程、應(yīng)用和開(kāi)發(fā)。 第二章的關(guān)鍵是要正確的理解和掌握指令的尋址方式。MCS-51單片機(jī)的111條指令,要正確理解和運(yùn)用。 第三章要求要運(yùn)用許多基礎(chǔ)知識(shí),將各種外圍電路與單片機(jī)之間實(shí)現(xiàn)接口,因此要掌握外圍電路的原理、特性和使用方法。這是進(jìn)行系統(tǒng)設(shè)計(jì)的基礎(chǔ)。 參加實(shí)驗(yàn)前認(rèn)真做好預(yù)習(xí)。實(shí)驗(yàn)中獨(dú)立地進(jìn)行編程、調(diào)試。完整的掌握單片機(jī)的編程、調(diào)試過(guò)程是每一個(gè)從事單片機(jī)開(kāi)發(fā)的工程師所必須跨出的第一步。 好的參考書(shū)。無(wú)論是初學(xué)入門(mén),還是將來(lái)開(kāi)發(fā),它都是很好的“工具”和“鑰匙”。硬件基本概念:微型計(jì)算機(jī):由CPU、存儲(chǔ)器、定時(shí)/計(jì)數(shù)器、并行輸入/輸出接口電路、中斷控制器等大規(guī)模IC芯片安置在一個(gè)電路板上,加上鍵盤(pán)、顯示器等構(gòu)成了微型計(jì)算機(jī)的硬體部分。單片機(jī)將微型計(jì)算機(jī)系統(tǒng)所用的大多數(shù)IC芯片集成到一個(gè)芯片中?梢哉J(rèn)為,單片機(jī)就是將微型計(jì)算機(jī)的CPU、存儲(chǔ)器、I/O端口、中斷控制器等全部做在一個(gè)芯片中去。美國(guó)INTEL公司生產(chǎn)的MCS-51單片機(jī)就是一種典型的、按照微型計(jì)算機(jī)的框架,采用大規(guī)模IC工藝制造的單片機(jī),也是目前世界上使用量最大的一種較典型的產(chǎn)品。嵌入式微控制器是單片機(jī)發(fā)展的一個(gè)高級(jí)形式,也是單片機(jī)發(fā)展的必然趨勢(shì)。它的設(shè)計(jì)理念不再停留在模仿微型計(jì)算機(jī)的結(jié)構(gòu),而是面向應(yīng)用、加大功能、減少功耗、精簡(jiǎn)指令系統(tǒng)提高運(yùn)行速度為出發(fā)點(diǎn)來(lái)設(shè)計(jì)單片機(jī)的框架。這種處理器的最大特征是不僅包含了一般單片機(jī)的所有硬件電路,還集成了放大器、比較器、A/D轉(zhuǎn)換器和PWM電路等等。用它來(lái)設(shè)計(jì)一個(gè)智能化的產(chǎn)品,可以進(jìn)一步簡(jiǎn)化外圍電路,降低開(kāi)發(fā)成本,甚至完成一般的單片機(jī)所不能完成的任務(wù)。美國(guó)Microchip公司生產(chǎn)的PIC單片機(jī)等產(chǎn)品就是這類(lèi)產(chǎn)品的代表,實(shí)際上PIC單片機(jī)也稱為“嵌入式微控制器”,如PIC16F877等。嵌入式計(jì)算機(jī)系統(tǒng)人們?cè)诠I(yè)控制、家電產(chǎn)品、智能儀表、汽車(chē)電子等領(lǐng)域進(jìn)行智能化設(shè)計(jì)時(shí),將嵌入到被控制對(duì)象(如:家電、汽車(chē)、機(jī)床等)中的、已經(jīng)失去了原有的計(jì)算機(jī)形態(tài)及功能的專用計(jì)算機(jī)稱之為“嵌入式計(jì)算機(jī)系統(tǒng)”。 在這些被控制對(duì)象中,往往要求嵌入式計(jì)算機(jī)系統(tǒng)要有極小的體積和極低的成本,要有極小的功耗和較高的可靠性。而這些又恰恰是通用計(jì)算機(jī)無(wú)法作到的。因此以單片機(jī)為代表的嵌入式計(jì)算機(jī)系統(tǒng)(也稱嵌入式微控制器)極大的滿足了這種市場(chǎng)的需求。反過(guò)來(lái),市場(chǎng)的需要也迫使單片機(jī)去不斷完善、發(fā)展,使其分類(lèi)越來(lái)越細(xì),品種越來(lái)越多。微型計(jì)算機(jī)與單片機(jī)在硬件結(jié)構(gòu)上的比較 微型計(jì)算機(jī) 單片機(jī)第一章:MCS-51系列單片機(jī)的基本硬件結(jié)構(gòu) 1.1 MCS-51單片機(jī)的主要性能和特點(diǎn)內(nèi)部程序存儲(chǔ)器ROM ( 以89C51為例 ):4K的存儲(chǔ)容量;內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM:256B(128B的RAM+21B的SFR) ;寄存器區(qū):設(shè)有4個(gè)寄存器區(qū),每一個(gè)區(qū)有R0-R7八個(gè)工作寄存器; 8位并行輸入輸出端口:P0、P1、P2和P3;定時(shí)/計(jì)數(shù)器:2個(gè)16位的定時(shí)/計(jì)數(shù)器;串型口: 全雙工的端口(RXD:接收端,TXD發(fā)送端);中斷系統(tǒng):設(shè)有5個(gè)中斷源;系統(tǒng)擴(kuò)展能力:可外接64K的 ROM 和64K的 RAM;堆棧:設(shè)在RAM單元中,可以浮動(dòng)既通過(guò)堆棧指針SP來(lái)確定堆棧的位置布爾處理機(jī):配合布爾運(yùn)算的指令進(jìn)行各種邏輯運(yùn)算;指令系統(tǒng):111條指令。按功能可分為數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、 控制轉(zhuǎn)移和布爾操作5大類(lèi)。 1.2 : MCS-51單片機(jī)內(nèi)部方框圖 MCS-51系列芯片及制造工藝 1.3:MCS-51單片機(jī)的引腳定義 MCS-51單片機(jī)有兩種封裝形式: a.40腳的雙列直插DIP封裝; b.44腳的PLCC。 1,主電源引腳 :Vcc(+5V--- 40腳)和Vss(GND 20腳); 2,外接晶體引腳:XTAL1(19腳)、XTAL2(18腳),只要在這兩腳之間接入一個(gè)晶體震蕩器,單片機(jī)就可以以此晶體的頻率開(kāi)始工作。常用的晶體頻率有0-24M,頻率越高,單片機(jī)的工作速度就越快,但單片機(jī)的功耗就要增加。 3,控制或與電源復(fù)用引腳:RST/Vpd、ALE/PROG、/PSEN和Vdd RST/Vpd(9腳):在系統(tǒng)上電震蕩器開(kāi)始工作時(shí), 在內(nèi)部加在此引腳上有一個(gè)兩個(gè)時(shí)鐘周期的高電平使單片機(jī)復(fù)位。但為了使系統(tǒng)復(fù)位可靠,建議外加 一個(gè)上電復(fù)位電路,延長(zhǎng)復(fù)位的時(shí)間。當(dāng)單片機(jī)掉點(diǎn)時(shí),此引腳可以接入備用電源向單片機(jī)內(nèi)部的RAM供電,以防止RAM中的數(shù)據(jù)丟失。 在復(fù)位狀態(tài)下:所有SFR的內(nèi)容全變?yōu)?ldquo;0”, 端口輸出“1”。RAM內(nèi)容不變。使用555電路構(gòu)成的掉電保護(hù)電路掉電保護(hù)原理及過(guò)程電源監(jiān)控電路對(duì)電源VCC進(jìn)行監(jiān)控,當(dāng)VCC的電源開(kāi)始下降時(shí)向單片機(jī)的/INT0或/INT1發(fā)一個(gè)中斷申請(qǐng)信號(hào)。單片機(jī)收到中斷信號(hào),立即進(jìn)入中斷程序。在電源消失前: 1,迅速將一些重要的信息送RAM保存; 2,從P1.0引腳輸出負(fù)脈沖,觸發(fā)單穩(wěn)進(jìn)行電源切換。外部單穩(wěn)電路進(jìn)入但穩(wěn)態(tài)后,由于VCC的消失,使電路無(wú)法對(duì)單穩(wěn)電容充電,所以單穩(wěn)電路一直處于“休眠狀態(tài)”。當(dāng)VCC電源恢復(fù)后,VCC對(duì)電容充電,經(jīng)ΔΤ后脫離單穩(wěn)態(tài)。 ALE/PROG(30腳):以一個(gè)不變的頻率(系統(tǒng)時(shí)鐘 fosc/6 )周期性輸出正脈。 當(dāng)單片機(jī)使用外部存儲(chǔ)器時(shí),此信號(hào)可作為低八位地址的鎖存信。 對(duì)于EPROM型的單片機(jī),此腳還是用于寫(xiě)程序時(shí),輸入編程脈沖。 /PSEN(29腳):外部程序程序存儲(chǔ)器的選通信號(hào)。當(dāng)單片機(jī)使用外部程序存儲(chǔ)器時(shí),此腳在一個(gè)機(jī)器周期內(nèi)產(chǎn)生兩次負(fù)脈沖。注意,訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),此信號(hào)無(wú)效。 /EA / Vdd (31腳):外部程序存儲(chǔ)器的選擇端控制端:當(dāng)此腳加入“1”電平是,單片機(jī)使用內(nèi)部的程序存儲(chǔ)器;當(dāng)EA加入低電平時(shí),系統(tǒng)只使用外部的程序存儲(chǔ)器。 但要特別注意:如果EA=1既使用單片機(jī)內(nèi)部的程序存儲(chǔ)器時(shí),如果程序計(jì)數(shù)器PC的值超過(guò)0FFFH時(shí),單片機(jī)將自動(dòng)轉(zhuǎn)向外部程序存儲(chǔ)器1000H開(kāi)始的單元。 對(duì)于EPROM型的單片機(jī),此腳還是用于寫(xiě)程序時(shí),加入21伏的編程電壓。 4,并行輸入輸出端口引腳(P0-P3) P0.0 - P0.7 P0端口線(39-32腳):輸出能力最強(qiáng)的端口,可以帶動(dòng)8個(gè)TTL負(fù)載。驅(qū)動(dòng)一個(gè)MOS負(fù)載時(shí),應(yīng)接一個(gè)10K左右的上拉電阻。如果系統(tǒng)使用外接存儲(chǔ)器時(shí),該口還作為地址(低八位)總線和數(shù)據(jù)總線,注意在這種情況下,P0口就不能通用的I/O端口。 P1.0 - P1.7 P1端口線(1 – 8腳):負(fù)載能力為4個(gè)TTL負(fù)載。 P2.0 – P2.7 P2端口線(21 – 28腳):通用I/O端口。 除了做通用I/O端口外,當(dāng)系統(tǒng)使用外接存儲(chǔ)器時(shí),該口還作為地址(高八位)總線,在這種情況下,P0口就不能通用的I/O端口。負(fù)載能力為4個(gè)TTL。 P3.0 – P3.7 P3端口線 (10 – 17腳): P3口除了做通用的I/O端口外,同時(shí)它還有第二功能),負(fù)載能力為4個(gè)TTL。 MCS-51單片機(jī)外型圖(DIP封裝) MCS-51單片機(jī)的邏輯符號(hào)圖 1.4 MCS-51單片機(jī)的存儲(chǔ)器的配置 1.4.0 MCS-51單片機(jī)的存儲(chǔ)器的配置特點(diǎn)(89C51) 在MCS-51單片機(jī)的內(nèi)部集成了4K的程序存儲(chǔ)器和256B的數(shù)據(jù)存儲(chǔ)器,同時(shí)還可以使用片外的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,其擴(kuò)展能力都是64K。 從物理結(jié)構(gòu)的角度講,51單片機(jī)的存儲(chǔ)系統(tǒng)可以分為四個(gè)存儲(chǔ)空間:既片內(nèi)ROM,RAM和片外ROM、RAM。 從邏輯上講(既用戶編程的角度講)51單片機(jī)的存儲(chǔ)系統(tǒng)又可分為三個(gè)存儲(chǔ)空間。既片內(nèi)RAM,片外RAM和片內(nèi)、外的程序存儲(chǔ)器ROM。從物理結(jié)構(gòu)上單片機(jī)系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)圖 (四個(gè)部分) 1.4.1 程序存儲(chǔ)器(片內(nèi)與片外) 程序存儲(chǔ)器是用來(lái)存放編好的程序、常數(shù)和表格的。 在MCS-51單片機(jī)中,當(dāng)引腳EA=1時(shí),系統(tǒng)使用片內(nèi)的4KROM來(lái)存儲(chǔ)程序。EA=0時(shí),系統(tǒng)使用片外的ROM。 無(wú)論是使用片內(nèi)還是使用片外的ROM(既 EA=1或EA=0),其起始地址都是從0000H單元開(kāi)始。 如果EA=1(使用片內(nèi)的程序存儲(chǔ)器時(shí)): 程序從0000H開(kāi)始執(zhí)行。 注意:在這種情況下,如果程序計(jì)數(shù)器的指針PC值超過(guò)0FFFH(4K)時(shí),單片機(jī)就要自動(dòng)的轉(zhuǎn)向片外的ROM存儲(chǔ)器(盡管EA=1),且從片外ROM的1000H單元開(kāi)始執(zhí)行程序。但單片機(jī)是無(wú)法使用片外ROM的0000H-0FFFH這4K單元。 MCS-51單片機(jī)片內(nèi)、外程序存儲(chǔ)器的使用示意圖 程序存儲(chǔ)器六個(gè)特殊的單元在程序存儲(chǔ)器中,有六個(gè)單元是具有特定功能。編程者是不能隨便使用的。 0000H單元:上電時(shí),程序計(jì)數(shù)器PC所指向的單元 0003H單元:外部中斷/INT0的入口地址; 000BH單元:定時(shí)器T0的溢出中斷入口地址; 0013H單元:外部中斷/INT1的入口地址; 001BH單元:定時(shí)器T1的溢出中斷入口地址; 0023H單元:串行口接收、傳送的中斷入口地址。 1.4.2 內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM 數(shù)據(jù)存儲(chǔ)器無(wú)論在物理上還是邏輯上都分為兩個(gè)地址空間,既一個(gè)內(nèi)部和一個(gè)外部的數(shù)據(jù)存儲(chǔ)空間。 訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)單元時(shí),使用 MOV 指令; 而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),使用 MOVX 指令。 內(nèi)部數(shù)據(jù)存儲(chǔ)器從功能上又將256B空間分為二個(gè)不同的塊: 1,低128B的RAM塊; 2,高128B的SFR (Special Function Register)塊。在低128B的RAM存儲(chǔ)單元中又可劃分為:工作寄存器區(qū)、可位尋址區(qū)、通用存儲(chǔ)數(shù)據(jù)的便簽區(qū)。高128B的專用寄存器區(qū)中僅僅使用了21寄存器(51系列),其它單元未定義不能使用。 MCS-51 片內(nèi) 、片外 數(shù)據(jù)存儲(chǔ)器示意圖 片內(nèi)RAM低 128B 字節(jié)功能分配圖 片內(nèi) RAM(20H-2FH)中的位尋址區(qū)結(jié)構(gòu)圖 位尋址區(qū)內(nèi)的地址是位地址。共有00-7FH(共128個(gè)位); 要區(qū)分字節(jié)地址和位地址這兩個(gè)不同的地址概念: 從物理的角度,每一個(gè)字節(jié)地址內(nèi)包含了8個(gè)位,既: D7,D6,D5,D4,D3,D2,D1,D0 在一般情況,我們提到的RAM地址都是字節(jié)地址。 從邏輯的角度講,字節(jié)地址和位地址是靠不同類(lèi)型的指令來(lái)區(qū)分的。如: MOV A, 20h ;將RAM的20單元內(nèi)容送累加器A; MOV C ,20h ;將RAM位尋址區(qū)中20H位送CY中。 在這二個(gè)例子中,第一條指令為字節(jié)傳送指令,所以20H為字節(jié)地址;第二個(gè)例子中的指令為位操作指令,所以20H為位地址。有關(guān)詳細(xì)內(nèi)容將在第二章中描述。 0區(qū)工作寄存器區(qū)結(jié)構(gòu)圖特殊功能寄存器SFR 特殊功能寄存器SFR (Special Function Register) 特殊用途寄存器的集合。用來(lái)設(shè)定單片機(jī)內(nèi)部各個(gè)部件的工作方式,存放相關(guān)部件的狀態(tài),定時(shí)器初值寄存器,并行端口的鎖存器等等。 盡管特殊功能寄存器與RAM在同一個(gè)單元中,但不能作為普通的RAM存儲(chǔ)單元來(lái)使用。只有在編程中根據(jù)需要,進(jìn)行一些特定功能的設(shè)定,或者是從中查尋相關(guān)部件的狀態(tài)時(shí),才能進(jìn)行讀、寫(xiě)操作。如中斷方式的設(shè)定、定時(shí)器工作模式的設(shè)定,查詢串行口發(fā)送或接收是否結(jié)束等等。 SFR(表二) 特殊功能寄存器SFR說(shuō)明程序計(jì)數(shù)器PC: 用來(lái)存放下一條要執(zhí)行的指令地址,長(zhǎng)度為16位,所以尋址范圍為0-65535(64K).在物理上是獨(dú)立于SFR. 累加器A: 最常用的專用寄存器, 大多數(shù)的指令操作數(shù)都來(lái)自累加器A.所有的算術(shù)運(yùn)算指令的運(yùn)算結(jié)果都存放在A中. B寄存器:乘除法指令使用的寄存器. 數(shù)據(jù)指針DPTR: 一個(gè)16位的寄存器.由高八位DPH和低八位DPL構(gòu)成.DPTR主要用來(lái)存放片內(nèi)ROM的地址和片外RAM,ROM的地址.這樣單片機(jī)可以通過(guò)間址的方式來(lái)訪問(wèn)片內(nèi)ROM或片外的RAM,ROM。 例如:片外RAM的2000H單元中有一個(gè)數(shù)x,試將其送到累加器A中. MOV DPTR,#2000h ; DPTR ← 2000H MOVX A,@DPTR ; A ← x 程序狀態(tài)字PSW: 8位寄存器. 表征程序執(zhí)行的狀態(tài)信息。 CY (PSW.7)進(jìn)位標(biāo)志: 在加減法運(yùn)算中,累加器A的最高位A7有進(jìn)位,則CY=1,否則CY=0.同理,在減法運(yùn)算中,如果A7有借位,則CY=1.因此CY往往作為無(wú)符號(hào)數(shù)運(yùn)算是否有溢出的標(biāo)志。 AC(PSW.6):輔助進(jìn)位位: 用來(lái)判斷加減法運(yùn)算時(shí),低四位是否向高四位進(jìn)位或借位(既A3的進(jìn)位或借位).往往用來(lái)判斷壓縮的BCD碼的運(yùn)算處理. F0(PSW.5) 用戶標(biāo)志位: 完全由用戶來(lái)定義和使用。 RS1,RS0工作寄存器區(qū)選擇位:確定工作寄存器R0-R7在哪個(gè)區(qū)中. 單片機(jī)在上電或復(fù)位后RS1、RS0=00。當(dāng)需要人為的修改RS1,RS0的值來(lái)改變工作寄存器區(qū)的位置。 OV(PSW.2) 溢出標(biāo)志位: 判斷符號(hào)數(shù)加減法運(yùn)算時(shí)是否有溢出. OV的結(jié)果可以用一個(gè)算法來(lái)表示: OV=CP異或CS 其中:CP為A7的進(jìn)位,CS為A6的進(jìn)位OV=1表明有溢出。 P(PSW.0)奇偶標(biāo)志位: 用來(lái)標(biāo)志累加器A中運(yùn)算后1的個(gè)數(shù)。 當(dāng)P=1時(shí),表明A中1的個(gè)數(shù)為奇數(shù)個(gè),反之為偶數(shù)個(gè)。 【舉例】:有兩個(gè)數(shù)0FH和F8H,試將兩數(shù)相加 MOV A,#0FH ;將立即數(shù)0f h 送累加器A ADD A,#0F 8H ;A的內(nèi)容與立即數(shù)0f8h相加,結(jié)果送A 0000 1111 運(yùn)算結(jié)果:A=07H,CY=1(既CP=1), + 1111 1000 CS=1,OV=0(因?yàn)镃P=1,CS=1) Cy→1 0000 0111 AC=1,P=1 如何根據(jù)PSW來(lái)分析運(yùn)算結(jié)果是否正確?是否有溢出? 1,若數(shù)據(jù)為無(wú)符號(hào)數(shù)。既15+248=263=107H 既CY=1,A=07H。 2,若數(shù)據(jù)為有符號(hào)數(shù)。既+15加-8=+7=07H,OV=0表明無(wú)溢出。 SP 堆棧指針:8位寄存器,用來(lái)指示堆棧的位置,可由軟件修改。在MCS-51單片機(jī)的設(shè)計(jì)中,片內(nèi)RAM區(qū)為堆棧的可用空間。上電或復(fù)位時(shí),SP被初始化為07H,既堆棧底部被確定在RAM的07H單元。 堆棧操作過(guò)程: 進(jìn)棧: PUSH ACC指令 (設(shè) SP=07H), 1,SP+1送SP,此時(shí)SP=08H; 2,ACC送RAM的08H單元;出棧: POP ACC (設(shè)SP=08H); 1,將RAM 中08H單元內(nèi)容送A; 2,SP-1送SP ,此時(shí)SP=07H。 并行端口P0-P3:SFR中的P0-P3實(shí)際上就是I/O端口的數(shù)據(jù)鎖存器。與RAM中的任意一個(gè)單元一樣,P0-P3都有自己的RAM地址:80H、90H、A0H、B0H。所以,在51單片機(jī)中的輸入、輸出操作實(shí)際上就是個(gè)普通的RAM單元操作一樣:如 輸出指令 MOV 80H,A ;將累加器中的數(shù)據(jù)送到P0口輸出輸入指令 MOV A,90H ;將P1口的數(shù)據(jù)輸入到累加器A中 既MCS-51的指令系統(tǒng)中沒(méi)有專用的輸入、輸出(IN、OUT)指令,而是把P0-P3作為普通的內(nèi)存單元來(lái)使用。上面的第一個(gè)例子實(shí)際上就是MCS-51的輸出指令;同理后者是MCS-51的輸入指令。 串行數(shù)據(jù)緩沖器SBUF:它是專門(mén)用來(lái)存放發(fā)送或接收的數(shù)據(jù),實(shí)際上它是兩個(gè)獨(dú)立的寄存器。盡管在SFR中的RAM地址只是99H,但根據(jù)指令“發(fā)送”或“接收”兩種不同的操作,硬件會(huì)自動(dòng)的區(qū)分,將數(shù)據(jù)送如對(duì)應(yīng)的緩沖單元。 定時(shí)/計(jì)數(shù)器T0、T1:無(wú)論是定時(shí)還是計(jì)數(shù),對(duì)于MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)說(shuō),都是一個(gè)“計(jì)數(shù)器”在計(jì)數(shù)。這個(gè)“計(jì)數(shù)器”是由兩個(gè)8位寄存器(高位和低位)構(gòu)成的16位計(jì)數(shù)器,分別是TH0、TL0(T0);TH1、TL1(T1)。TH和TL中的數(shù)據(jù)直接與“定時(shí)操作”或“計(jì)數(shù)操作”有關(guān),因此在使用定時(shí)/計(jì)數(shù)器之前,要對(duì)它進(jìn)行初始化,其中就要對(duì)TH、TL賦初值。如: MOV 8CH,#01H MOV 8AH,#20H 大家試分析上面兩條指令的作用。 有關(guān)SFR中其它寄存器的說(shuō)明將相關(guān)的章節(jié)中作介紹。 1.4.3 外部數(shù)據(jù)存儲(chǔ)器在片內(nèi)RAM不能滿足需要時(shí),就要外接RAM。P0、P1作為外部RAM的地址和數(shù)據(jù)總線。 MCS-51對(duì)外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展能力為64KB。除了硬件電路外,系統(tǒng)主要是靠專門(mén)的指令來(lái)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器。 如: MOV R0,#20H ;將外部RAM單元地址20H送R0寄存器 MOVX A,@R0 ;從外部RAM20H單元取數(shù)據(jù)到累加器A 這里使用了R0做間址寄存器,所以尋址范圍為256KB。 同理: MOV DPTR,#2000H ;將外部 RAM 單元的地址的2000送DPTR MOVX A ,@DPTR ;從外部 RAM 2000H單元中取數(shù)據(jù)到 A 這里使用了16位的寄存器DPTR,所以尋址范圍為64KB。 第一章第四節(jié)內(nèi)容小結(jié) 1.4 MCS-51單片機(jī)的存儲(chǔ)器的配置 片內(nèi)4K的程序存儲(chǔ)器ROM和256B的數(shù)據(jù)存儲(chǔ)器RAM;片外可以擴(kuò)展64K的ROM和RAM.從用戶編程的角度可以將它們分為3個(gè)存儲(chǔ)空間: 1,片內(nèi)RAM; 2,片外RAM; 3,片內(nèi)+片外的ROM. 1.4.1 程序存儲(chǔ)器(片內(nèi)與片外) 當(dāng)引腳EA=1時(shí),單片機(jī)上電復(fù)位后從片內(nèi)ROM的0000H單元運(yùn)行程序; 若引腳EA=0時(shí),單片機(jī)上電復(fù)位后從片外ROM的0000H單元運(yùn)行程序. 當(dāng)引腳EA=1,且PC值大于1FFFH時(shí),單片機(jī)就自動(dòng)轉(zhuǎn)到片外ROM的2000H單元繼續(xù)運(yùn)行程序. 無(wú)論是使用片內(nèi)還是片外的ROM,有六個(gè)單元是有特定意義的: 1,0000H單元:上電,復(fù)位后的啟動(dòng)地址; 2,0003H單元:外部中斷INT0的入口地址; 3,000BH單元:定時(shí)器T0的中斷入口地址; 4,0013H單元:外部中斷INT1的入口地址; 5,001BH單元:定時(shí)器T1的中斷入口地址; 6,0023H單元:串行口中斷的入口地址. 1.4.2 內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM 內(nèi)部RAM的256B分為低128B和高128B. 其中低128B中有 1,工作寄存器區(qū);2,位尋址區(qū);3,便箋區(qū). 高128B中僅僅使用了小部分做特殊功能寄存器SFR用. 注意: 1,SFR不同于一般的數(shù)據(jù)RAM,它不是用于存儲(chǔ)數(shù)據(jù),而是用來(lái)存儲(chǔ)和表 征單片機(jī)內(nèi)部幾個(gè)邏輯部件的特征,狀態(tài)等重要信息. 2,在使用RAM時(shí),要注意字節(jié)地址和位地址的概念. 3,訪問(wèn)內(nèi)部RAM的指令為 MOV 指令. 1.4.3 外部數(shù)據(jù)存儲(chǔ)器 在硬件具備的條件下,MCS-51單片機(jī)可以使用64KB的外部數(shù)據(jù)存儲(chǔ)器.如果要訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器RAM時(shí),只能使用間址的尋址方式. 間址寄存器有R0,R1或DPTR.前者尋址范圍為256KB(00H-FFH);后者為64KB(0000H-FFFFH).使用的指令是 MOVX. 1.5 震蕩器、時(shí)鐘電路和CPU的時(shí)序 1.5.1 震蕩器、與時(shí)鐘電路: MCS-51內(nèi)部有一個(gè)用于構(gòu)成震蕩器的高增益反相放大器.在單片機(jī)引腳的XTAL1和XTAL2分別是此放大器的輸入和輸出端.與作為反饋元件的晶體或陶瓷諧振器一起構(gòu)成了一個(gè)自激震蕩器(見(jiàn)右上圖). 如果使用外部震蕩器信號(hào),其外來(lái)的信號(hào)加在XTAL1的引腳上(見(jiàn)右下圖). 1.5.2 MCS-51單片機(jī)的時(shí)序時(shí)鐘周期 ,T:時(shí)序中最小的時(shí)間單位.其值由外接晶體或外輸入時(shí)鐘來(lái)決定,其值為石英振蕩器頻率的倒數(shù)。 例如:在單片機(jī)外接1MH的晶體,則單片機(jī)的系統(tǒng)時(shí)鐘的頻率為1M, 時(shí)鐘周期為1us. 機(jī)器周期:完成特定功能所需要的時(shí)間,在MCS-51單片機(jī)中機(jī)器周期由12個(gè)時(shí)鐘周期構(gòu)成,并分為6個(gè)狀態(tài)(S1-S6),每個(gè)狀態(tài)又分為P1和P2兩拍.這樣一個(gè)機(jī)器周期的12個(gè)震蕩周期可以表示為: S1P1,S1P2,S2P1,S2P2,S3P1,S3P2 … S6P1,S6P2 將12個(gè)震蕩周期用6個(gè)狀態(tài)和2拍來(lái)替代。 指令周期:這是時(shí)序圖中最大的時(shí)間單位,既執(zhí)行一條指令所需要的時(shí)間.在MCS-51系統(tǒng)中,不同的指令它所包含的機(jī)器周期數(shù)不同.它們分別是: 1,單機(jī)器周期指令; 2,雙機(jī)器周期指令; 3,四機(jī)器周期指令 我們知道:一個(gè)機(jī)器周期包含了12個(gè)震蕩周期.如果我們使用一個(gè)12M的晶體震蕩器,那么: 一個(gè)機(jī)器周期為1us, 兩個(gè)機(jī)器周期為2us, 四個(gè)機(jī)器周期為4us. 可見(jiàn)一條指令的運(yùn)算速度與它所包含的機(jī)器周期數(shù)有關(guān).機(jī)器周期數(shù)越少,執(zhí)行的速度就越快.在MCS-51單片機(jī)的指令系統(tǒng)中,除了乘、除法指令為四個(gè)機(jī)器周期外,其余都是單周期和雙周期指令. 指令的字節(jié)數(shù)與指令周期之間的關(guān)系: 在MCS-51單片機(jī)的指令系統(tǒng)中有: 單字節(jié); 雙字節(jié); 三字節(jié)指令。 在MCS-51的111條指令中,可以分為六種基本的時(shí)序: 1,單字節(jié)單周期指令; 4,雙字節(jié)單周期指令; 2,單字節(jié)雙周期指令; 5,雙字節(jié)雙周期指令; 3,單字節(jié)四周期指令; 6,三字節(jié)雙周期指令. 單字節(jié)單周期指令的時(shí)序: 指令特點(diǎn):在程序存儲(chǔ)器ROM中僅占一個(gè)存儲(chǔ)單元。 在ALE第一次有效(S2P1)時(shí),從ROM中讀取指令的操作碼,送入指令寄存器IR中.并譯碼執(zhí)行,在ALE第二次有效時(shí),封鎖PC加一,使第二次讀數(shù)無(wú)效.可見(jiàn): 1, ALE信號(hào)對(duì)應(yīng)這從ROM中讀指令,所以在一個(gè)機(jī)器周期中CPU可以讀兩次指令; 2,對(duì)于單字節(jié)單周期的指令,CPU通過(guò)譯碼后封死PC,實(shí)際上指令的后半部不做任何工作. 雙字節(jié)單周期指令時(shí)序 指令特點(diǎn):一條指令長(zhǎng)度為兩個(gè)字節(jié),并存儲(chǔ)在ROM相鄰的兩個(gè)單元中。要想完整的將這樣的指令執(zhí)行完,必須從ROM中讀兩次操作碼. 在ALE第一次有效時(shí),CPU 從ROM的n單元中取出指令的第一個(gè)字節(jié)OP1-1,并送入IR譯碼,通過(guò)譯碼CPU知道這是一條雙字節(jié)指令,所以使PC加一,并在ALE第二次有效時(shí),從ROM的n+1單元取出指令的第二個(gè)字節(jié)OP1-2送入IR進(jìn)行譯碼,并產(chǎn)生對(duì)應(yīng)的操作.最后在S6P2時(shí)完成本條指令的運(yùn)行. 單字節(jié)雙周期指令的時(shí)序指令特點(diǎn):單字節(jié), 需要兩個(gè)機(jī)器周期運(yùn)行.如: INC DPTR DPTR為兩個(gè)8位的寄存器,加一時(shí),必須分兩步完成.既第一步 DPL加一,如果DPL加一有進(jìn)位則還要進(jìn)行第二步對(duì)DPH加一. 在指令周期的第一個(gè)ALE時(shí),將ROM中的操作碼OP取出, 經(jīng)IR譯碼后得知為單字節(jié)雙周期指令,所以一面執(zhí)行該指令, 同時(shí)封鎖后面三次ALE有效時(shí)的PC+1,在第二個(gè)機(jī)器周期的S6P2時(shí),完成操作. 1.5.3 訪問(wèn)外部程序存儲(chǔ)器ROM的時(shí)序: 設(shè):單片機(jī)使用片外ROM,且要執(zhí)行的是一條 : movc a,@a+dptr指令.(設(shè)a+dptr=2000H) 1,在S2P1時(shí)刻,P2口輸出外部ROM的高八位地址A15-A8,P0口輸出低八位地址A7-A0, 這時(shí)地址是由程序計(jì)數(shù)器PC提供的ROM中的指令地址; 2,在ALE的下降沿,P0口的數(shù)據(jù)(低八位地址)被鎖存到74LS373中. 3,在S3P2到S4P1期間,/psen變低電平時(shí),外部程序ROM被選中, 數(shù)據(jù)輸出端的三態(tài)門(mén)被打開(kāi),被選中單元中的指令movc送到P0口上,且在S4P2時(shí)指令經(jīng)P0口送至CPU的IR中. 4,CPU對(duì)指令譯碼后,在S4P2時(shí)進(jìn)行常數(shù)地址計(jì)算并由P0、P2口輸出. 5,在S5P2時(shí),ALE將常數(shù)地址的低八位鎖存 6,在S6P1時(shí),外部ROM被再次選種打開(kāi),按照單片機(jī)所提供的16位常數(shù)地址,將外部ROM中的常數(shù)經(jīng)P0口在S6P2時(shí)刻送入累加器A. 1.5.4 讀外部數(shù)據(jù)存儲(chǔ)器RAM的指令時(shí)序設(shè)外部RAM2000H單元中有一個(gè)數(shù)x,且DPTR中已存有該數(shù)地址2000H.則CPU 執(zhí)行外部ROM中的指令: MOVX A,@DPTR ;將外RAM的x送A 1, 在S2P2時(shí),ALE的第一個(gè)下降沿將P0口輸出的外程序ROM的低八位地址鎖存到74LS373鎖存器中; 2, 在S3P2的Psen為低電平時(shí),選中外ROM,并根據(jù)單片機(jī)P0、P2口輸出的16位地址選中movx指令(單字節(jié)),通過(guò)P0口送至單片機(jī)內(nèi)部IR中譯碼.經(jīng)譯碼后產(chǎn)生下列的一系列操作; 3, CPU將DPTR中的高8位(20H)送P2口輸出,低八位(00H)經(jīng)P0口輸出,節(jié)在S5P1時(shí)ALE第二次下降沿時(shí),將P0口的低八位地址鎖存; 4, 在第二個(gè)機(jī)器周期的S1-S3中單片機(jī)輸出/RD信號(hào)(低電平),選中外部RAM,并根據(jù)單片機(jī)提供的2000H 這16位地址中取出數(shù)據(jù)x. 5, CPU在S2-S3期間,將外部RAM2000H單元送到P0口上的數(shù)據(jù)送入累加器A中. 上述過(guò)程可以分成兩個(gè)指行的階段: 1, 根據(jù)PC所指定的程序存儲(chǔ)器的地址,將movx指令從片 外ROM中取出; 2, 經(jīng)譯碼后將DPTR提供的外數(shù)據(jù)存儲(chǔ)器RAM中的數(shù)據(jù) 地址取出數(shù)據(jù),經(jīng)P0口送累加器A. 在第一階段CPU產(chǎn)生/Psen信號(hào)用來(lái)選通外部程序存儲(chǔ)器ROM; 在第二階段CPU輸出/RD信號(hào)(低電平),用來(lái)選通并讀取外部數(shù)據(jù)存儲(chǔ)器RAM的數(shù)據(jù). 1.6 輸入輸出端口 在MCS-51單片機(jī)的四個(gè)端口都是具有輸出鎖存功能的雙向端口,這些鎖存器的位置都在SFR中,其地址分別為:80H、90H、A0H 、B0H.出于系統(tǒng)的考慮,在硬件設(shè)計(jì)上對(duì)每一個(gè)端口都有不同的要求,所以每一個(gè)端口又具有不同的特點(diǎn). 1.6.1 P0口: 特點(diǎn):“通用數(shù)據(jù)I/O端口”和“地址、數(shù)據(jù)復(fù)用總線”端口. 1,在作為通用數(shù)據(jù)I/O端口時(shí),具有較強(qiáng)的驅(qū)動(dòng)能力(8個(gè)TTL負(fù)載),與MOS負(fù)載連接時(shí),需要外接一個(gè)上拉電阻。 2,作為“地址、數(shù)據(jù)復(fù)用總線”使用時(shí),P0口首先輸出外部存儲(chǔ)器的低八位地址,然后再變?yōu)閿?shù)據(jù)總線進(jìn)行數(shù)據(jù)的輸入或輸出.此時(shí),P0口不能再作為通用I/O口。 P0口的位結(jié)構(gòu)圖 1,P0口的I/O操作(通用I/O端口)在P0口作為通用I/O端口時(shí),控制電路中的“控制”為“0”電平,多路開(kāi)關(guān)MUX接入下方的鎖存器的/Q端。 由于與門(mén)的一個(gè)輸入端為“0”,所以它使上端的FET截止.這就是P0口在做I/O口時(shí)輸出為“漏極開(kāi)路”的結(jié)構(gòu)原因. 輸出操作:在執(zhí)行以口為目標(biāo)的指令時(shí),數(shù)據(jù)送到鎖存器的“D”端,經(jīng)“/Q”端送場(chǎng)效管應(yīng)輸出極.如:送“1”時(shí),/Q=“0”,使下端的FET截止.這樣出現(xiàn)輸出極的兩個(gè)FET全部截止.在這種情況下必須在端口線上外加上拉電阻.這樣在上拉電阻的作用下,使端口為高電平.同理,若總線向口送“0”時(shí),鎖存器的/Q=1,使下端的FET導(dǎo)通(上面的FET仍然截止),這樣端口呈現(xiàn)“0”電平. 輸入操作(讀引腳,讀鎖存,輸入前寫(xiě)一) a,讀引腳:讀外部送到端口引腳的電平,即通常所說(shuō)的輸入操作(如:MOV A,P0).此時(shí),單片機(jī)控制“讀引腳”的三態(tài)門(mén),使引腳處的外部電平經(jīng)三態(tài)門(mén)送入內(nèi)部總線. b,讀鎖存器:將進(jìn)行讀鎖存器并進(jìn)行處理,最后再寫(xiě)回鎖存器的操作稱之為: “讀—修改—寫(xiě)”操作。在這種情況下, 讀入的數(shù)據(jù)不是來(lái)自引腳,而是端口內(nèi)部的鎖存器的內(nèi)容。 當(dāng)前面完成一次端口的輸出后,要再將前面輸入的狀態(tài)取回來(lái),進(jìn)行再處理,然后重新輸出,在MCS-51的指令系統(tǒng)中這種“讀—修改—寫(xiě)”的操作有: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px,y 、 CLR Px,y和SET Px,y。 如: ORL P0,A ;P0 ∨ A → P0 c,輸入時(shí)應(yīng)先寫(xiě)“1”:在端口電路中,可以發(fā)現(xiàn)一個(gè)問(wèn)題:端口在輸入(讀引腳)時(shí),原來(lái)鎖存器的狀態(tài)可能要影響引腳電平的輸入.例如:原來(lái)鎖存器的狀態(tài)為“0”態(tài),既輸出極的下端FET是飽和狀態(tài),這樣如果外電路向引腳輸入高電平時(shí),電路將不能正確讀入.要解決的方法就是讓下端的FET截止,既事先向端口寫(xiě)一個(gè)“1”. 請(qǐng)注意下面的一段程序: MOV A,#0FFH;0FFH送累加器A MOV P0,A ;向P0口“寫(xiě)1” MOV A,P0 ;從P0口輸入數(shù)據(jù)到A 你能正確的分析出指令的操作嗎? 2,P0口的總線方式(系統(tǒng)使用外存儲(chǔ)器時(shí))控制電路的“控制”=1,此時(shí)與門(mén)打開(kāi),MUX接向“地址/數(shù)據(jù)”信號(hào).在這種情況下,輸出極的兩個(gè)FET都處于正常的工作狀態(tài) 。訪問(wèn)外部存儲(chǔ)器的指令movx、movc ,就是使用P0口來(lái)輸出外部存儲(chǔ)器的低八位地址和輸入、輸出存儲(chǔ)器的數(shù)據(jù)?梢詮模涸L問(wèn)外部程序存儲(chǔ)器ROM的時(shí)序; 讀外部數(shù)據(jù)存儲(chǔ)器RAM的指令時(shí)序中來(lái)清楚的觀察P0口作為“地址/數(shù)據(jù)復(fù)用”總線的工作特點(diǎn)。在進(jìn)行單片機(jī)的硬件系統(tǒng)的設(shè)計(jì)中,如果使用了外部存儲(chǔ)器(或使用movx指令來(lái)訪問(wèn)外部接口電路)時(shí),P0口成為整個(gè)系統(tǒng)的地址/數(shù)據(jù)復(fù)用總線。換句話,P0口不能再作為通用的I/O端口的形式直接與外部連接。 P0口特點(diǎn)小結(jié): 1, 做通用數(shù)據(jù)I/O端口時(shí),輸出級(jí)上端的FET處于截止?fàn)顟B(tài),所以與MOS器件連接時(shí),必須接“上拉電阻”,否則不能正確的輸出高電平; 2,在輸入操作前,為了保證輸入正確,必須先向端口“寫(xiě)1”; 3,“讀引腳”與“讀鎖存器”是不同的兩個(gè)數(shù)據(jù)通道。凡是“讀—修改—寫(xiě)” 的操作,CPU讀的都是端口鎖存器中的數(shù)據(jù)。 4,為了提高電路的可靠性,端口引腳不要直接與三極管一類(lèi)的器件直接連接,應(yīng)加隔離電路或與三極管之間加一個(gè)電阻. 5,在總線方式時(shí),P0口不能再做通用的I/O端口。它分時(shí)輸出地址、數(shù)據(jù)總線的信息(此時(shí)引腳不用外接上拉電阻)。特點(diǎn):?jiǎn)渭兊耐ㄓ肐/O端口,負(fù)載能力為3個(gè)TTL輸入。與P0口的區(qū)別在于內(nèi)部具有上拉電阻,所以輸出時(shí)不用外接上拉電阻。 1.6.2 P1口的位結(jié)構(gòu)圖 1.6.3 P2口 特點(diǎn): “通用數(shù)據(jù)I/O端口”和“高八位地址總線”端口 與P0口一樣,P2口在系統(tǒng)使用外部存儲(chǔ)器時(shí),做高八位的地址總線。 應(yīng)當(dāng)注意的是:僅使用外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口分兩種情況: 1,僅僅使用256B的外部RAM時(shí),既使用movx a,@r0指令訪問(wèn)外部RAM,此時(shí)用8位的寄存器R0或R1作間址寄存器,這時(shí)P2口無(wú)用,所以在這種情況下,P2口仍然可以做通用I/O端口。 2,如果訪問(wèn)外部ROM或使用大于256BRAM時(shí),P2口必須作為外存儲(chǔ)器的高八位地址總線。 如:movx a,@dptr ;訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器 movc a,@a+dptr ;訪問(wèn)外部程序存儲(chǔ)器 這里使用了16位的寄存器DPTR 1.6.4 P3口 特點(diǎn):通用I/O端口、多用途端口在多用途情況下,P3口分別作為串行口、外中斷輸入、外部計(jì)數(shù)輸入和系統(tǒng)擴(kuò)展時(shí)使用的WR和RD信號(hào)的端口。在這種情況下,鎖存器Q端為“1”電平以保證與門(mén)是打開(kāi)的。在通用I/O模式下,“替代輸出功能”端為“1”電平,以保證與門(mén)打開(kāi)。 1.6.5 并行端口在使用時(shí)應(yīng)注意的幾個(gè)問(wèn)題 “拉電流”還是“灌電流”----與大電流負(fù)載的連接 (我們以美國(guó)ATMEL公司生產(chǎn)的AT8951為例) 1, 使用灌電流的方式與電流較大的負(fù)載直接連接時(shí), 端口可以吸收約20mA的電流而保證端口電平不高于0.45V(見(jiàn)右上圖)。 2,采用拉電流方式連接負(fù)載時(shí),AT89C51所能提供“拉電流”僅僅為80μA,否則輸出的高電平會(huì)急劇下降.如果我們采用右下圖的方式,向端口輸出一個(gè)高電平去點(diǎn)亮LED,會(huì)發(fā)現(xiàn),端口輸出的電平不是“1”而是“0”! 當(dāng)然,不是所有的單片機(jī)都是這樣,PIC單片機(jī)就可以提供30mA的拉電流和灌電流。單對(duì)于大多數(shù)IC電路,最好還是使用“灌電流”去推動(dòng)負(fù)載。單片機(jī)與繼電器等大電流負(fù)載的接口我們知道:AT89C51的端口可以吸收約20mA的電流.對(duì)于繼電器等大于20mA的負(fù)載,單片機(jī)可以采用右圖的接法,用一個(gè)三極管來(lái)承擔(dān)負(fù)載所需的大電流. 若于負(fù)載電流易造成干擾單片機(jī)的環(huán)境,應(yīng)采用右下圖”光電隔離”的方式.其中: A 、 B兩處沒(méi)有 任何電的聯(lián)系. 1.7 MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器定時(shí)/計(jì)數(shù)器工作方式與原理: 定時(shí)/計(jì)數(shù)器是一種應(yīng)用非常廣泛的邏輯電路,它可以完成兩種不同的方式工作----“定時(shí)”、“計(jì)數(shù)”。 定時(shí)/計(jì)數(shù)器工作方式與原理: 1,定時(shí):產(chǎn)生一個(gè)標(biāo)準(zhǔn)的時(shí)間間隔;如20mS,100mS或1000mS等.單片機(jī)使用這種方式可以產(chǎn)生一個(gè)符合某一要求的脈沖方波(如下圖)。 2,計(jì)數(shù):對(duì)外部的事件(脈沖)進(jìn)行統(tǒng)計(jì).很明顯外部事件的發(fā)生是隨機(jī)的,單片機(jī)不可能預(yù)知外部事件何時(shí)發(fā)生,但可以進(jìn)行統(tǒng)計(jì),當(dāng)達(dá)到所要求的數(shù)值時(shí),單片機(jī)進(jìn)行相應(yīng)的操作。 3,定時(shí)/計(jì)數(shù)器的工作原理:用一個(gè)簡(jiǎn)單的框圖構(gòu)造它的模型 :N位計(jì)數(shù)器構(gòu)成了電路的核心。定時(shí),計(jì)數(shù)兩種方式的區(qū)別在于計(jì)數(shù)器的脈沖來(lái)源.初值寄存器是用來(lái)設(shè)定“定時(shí)/計(jì)數(shù)的具體參數(shù)” (1):何時(shí)控制啟動(dòng)計(jì)數(shù)? (2):如何控制定時(shí)還是計(jì)數(shù)? (3):如何控制定時(shí)/計(jì)數(shù)的長(zhǎng)短? 1.7.1 定時(shí)/計(jì)數(shù)器的四種工作模式 1,模式0:13位計(jì)數(shù)器模式。 當(dāng)計(jì)數(shù)器計(jì)滿為全”1”時(shí),再來(lái)一個(gè)計(jì)數(shù)脈沖時(shí),就產(chǎn)生一個(gè)“溢出中斷信號(hào)”TF1=1. 2,模式1 :既16位計(jì)數(shù)器模式(以T1為例). GATE=0時(shí),TR1=1開(kāi)始定時(shí)/計(jì)數(shù); GATE=1時(shí)(門(mén)控方式), TR=1且INT1=1時(shí),開(kāi)始工作.此種方式主要用于測(cè)量加在INT1腳上一個(gè)正脈沖的脈寬. 3,模式2 : 自動(dòng)重裝初值模式由TL1做計(jì)數(shù)器,TH1做初值寄存器. 工作前TL1,TH1分別預(yù)置相同的初值.計(jì)數(shù)器TL1工作時(shí),每當(dāng)溢出產(chǎn)生中斷的同時(shí), 將TH1中的初值自動(dòng)重裝.此模式主要用于做串行口波特率發(fā)生器使用. 4,模式3 組合擴(kuò)展模式在這種模式中,單片機(jī)將T0和T1重新進(jìn)行“拆分、組合”. 將T0變?yōu)橛蒚H0,TL0組成的兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器. 注意:模式3時(shí)T0(TH0,TL0)及T1的各自特點(diǎn): 1, TH0計(jì)數(shù)脈沖來(lái)自內(nèi)部fosc,所以它只能處于”定時(shí)”方式; 2, TH0分別借用了定時(shí)器T1的TR1和TF1來(lái)為自己工作,使TH0能象TL0那樣用TR1啟動(dòng)定時(shí),并用TF1來(lái)作為T(mén)H0的溢出中斷的標(biāo)志; 3,由于T1缺少了啟動(dòng)控制信號(hào)TR1和溢出中斷標(biāo)志TR1,那么在模式3時(shí),T1是如何工作? 沒(méi)有溢出中斷標(biāo)志TF1,則T1就不用中斷方式工作(實(shí)際上連查詢也不行);沒(méi)有啟動(dòng)控制信號(hào)TR1,可以讓它在模式3之前就開(kāi)始工作,并且讓它事先設(shè)定為自動(dòng)重裝模式. 4, 模式3就是將單片機(jī)原有的T0,T1兩個(gè)計(jì)數(shù)器變成三個(gè)獨(dú)立的計(jì)數(shù)器,其中T1要事先設(shè)定為模式2(串行口的波特率發(fā)生器)并啟動(dòng)起來(lái)。在模式3時(shí)T0,T1的電路結(jié)構(gòu)圖定時(shí)/計(jì)數(shù)器4種模式比較 1.7.2 MCS-51定時(shí)/計(jì)數(shù)器的控制和狀態(tài)寄存器 GATE 選通門(mén):GATE=0時(shí),只要TR=1,計(jì)數(shù)器就開(kāi)始工作. GATE=1時(shí),只有INT腳和TR同時(shí)為“1”時(shí),計(jì)數(shù)器才開(kāi)始工作.主要用于測(cè)量INT腳上高電平脈沖的寬度. C/T 計(jì)數(shù)、定時(shí)方式選擇位:C/T=0時(shí),計(jì)數(shù)方式.既計(jì)數(shù)器的計(jì)數(shù)脈沖來(lái)自T0或T1引腳的外部事件.C/T=1時(shí):定時(shí)方式,計(jì)數(shù)脈沖來(lái)自內(nèi)部震蕩頻率fosc的12分頻. M1 、M0 模式選擇:分別對(duì)應(yīng)四種模式. 2,控制寄存器TCON (SFR地址:88H) TF1,TF0 定時(shí)器T1,T0的溢出標(biāo)志:計(jì)數(shù)器溢出時(shí)硬件自動(dòng)置位即TF=1,進(jìn)入中斷后再由硬件自動(dòng)清除; TR1.TR0 計(jì)數(shù)器T1,T0的控制位:由軟件置位(計(jì)數(shù)器開(kāi)始工作)或清零(計(jì)數(shù)器停止工作). IE1,IE0 外部中斷INT1,INT0的請(qǐng)求標(biāo)志:當(dāng)單片機(jī)檢測(cè)到INT引腳上有下降沿時(shí),IE=1申請(qǐng)中斷.進(jìn)入中斷服務(wù)程序時(shí),硬件自動(dòng)清除IE標(biāo)志. IT1,IT0 外中斷觸發(fā)類(lèi)型控制:IT=1時(shí),外中斷信號(hào)的下降沿出發(fā)IE標(biāo)志,IT=0時(shí),外中斷信號(hào)的低電平引發(fā)IE標(biāo)志. (關(guān)于中斷部分將在后面相關(guān)章節(jié)中再做詳細(xì)介紹) 1.8 MCS-51單片機(jī)的串行接口第八節(jié)目錄二單片機(jī)系統(tǒng)中的串行接口既特點(diǎn)串行口的設(shè)計(jì)使MCS-51單片機(jī)的功能 大大增加.可以用串行通訊的方式實(shí)現(xiàn)單片機(jī)與單片機(jī)或者是單片機(jī)與微機(jī)等設(shè)備之間的數(shù)據(jù)交換. 串行通訊電路簡(jiǎn)單,成本低,可以實(shí)現(xiàn)遠(yuǎn)距離的數(shù)據(jù)傳輸。缺點(diǎn)是傳輸速度低于并行數(shù)據(jù)傳輸。 在一個(gè)嵌入式系統(tǒng)中,往往采用多單片機(jī)構(gòu)成一個(gè)完整的控制系統(tǒng),它們之間以串行通信的方式進(jìn)行數(shù)據(jù)交換---多機(jī)通訊(如圖). 串行通訊應(yīng)用示意圖關(guān)于串行通訊中的基本概念: 字符幀:也稱數(shù)據(jù)幀,它是由“起始位”“數(shù)據(jù)位” 和“停止位”構(gòu)成(如下圖所示)。波特率:每秒鐘傳輸二進(jìn)制數(shù)據(jù)的個(gè)數(shù).波特率 使用的單位是:bps(bit per scond),既 位/秒。異步通訊:數(shù)據(jù)是以字符或字節(jié)為單位組成字符幀傳送的.數(shù)據(jù)是從發(fā)送端一幀一幀的發(fā)送,通過(guò)傳輸線為接收端一幀一幀的接收.發(fā)送與接收相互獨(dú)立,互不同步。 1.8.1 數(shù)據(jù)緩沖寄存器 SBUF SBUF是用來(lái)存放串行口發(fā)送和接收數(shù)據(jù)的寄存器,在SFR的地址為99H.在物理上它對(duì)應(yīng)兩個(gè)不同的單元:發(fā)送寄存器和接收寄存器。 CPU寫(xiě)SBUF就是開(kāi)始發(fā)送數(shù)據(jù)(MOV SBUF,A); CPU讀SBUF就是接收數(shù)據(jù)到A (MOV A,SBUF)。 由于發(fā)送SBUF與接收的SBUF是兩個(gè)不同的邏輯部件,所以在硬件設(shè)計(jì)上保證了51單片機(jī)串行口是一個(gè)可以同時(shí)發(fā)送與接收的”全雙工”接口。 1.8.2 串行口控制寄存器SCON 地址:98H SM0 SM1: 串行口操作模式選擇位.可以確定串行口的四種模式之一(如下表); SM2 RI :完成一幀數(shù)據(jù)接收的標(biāo)志,原始應(yīng)清零,接收完成RI=1并申請(qǐng)中斷; TI :完成一幀數(shù)據(jù)發(fā)送的標(biāo)志,原始應(yīng)清零,發(fā)送完成TI=1同時(shí)申請(qǐng)中斷; RB8:在9位數(shù)據(jù)傳送的模式2、3時(shí),接收到的第9位數(shù)據(jù); TB8:在9位數(shù)據(jù)傳送的模式2、3時(shí),將要發(fā)送的第9位數(shù)據(jù); REN:允許接收位,REN=1時(shí)允許接收.由軟件置位或清零; SM2 :多機(jī)通信使能位. 1,模式0、1時(shí): SM2不用,應(yīng)設(shè)為0。時(shí)RI才能被正常激活并引發(fā)中斷; 2,模式2、3時(shí): 若SM2=0時(shí),無(wú)論RB8如何,RI都能被激活(RI=1)。 但是RI=1并不能引發(fā)中斷!所以只能用查詢的方式接收 數(shù)據(jù)。 若SM2=1,收到的第9位(RB8)=0時(shí),則RI不會(huì)被激活;若SM2=1且RB8=1時(shí),RI才能被激活=1并引發(fā)中斷。如何使用RI,TI標(biāo)志(中斷和查詢) CPU與串行口之間不是同步工作的,兩者之間的數(shù)據(jù)交換通過(guò)SBUF,何時(shí)交換必須借助于標(biāo)志信號(hào)進(jìn)行。 RI(SCON.0):接收完一幀數(shù)據(jù)的標(biāo)志。 如果系統(tǒng)中斷是開(kāi)放的,則RI=1時(shí)會(huì)自動(dòng)引發(fā)中斷。用戶可以通過(guò)中斷服務(wù)程序?qū)BUF中的數(shù)據(jù)取出送累加器A。 MOV A,SBUF 。也可以使用查詢的方式對(duì)RI進(jìn)行檢測(cè),如果RI=1則執(zhí)行: MOV A,SBUF 。 TI (SCON.1):發(fā)送完一幀數(shù)據(jù)標(biāo)志。 如果系統(tǒng)中斷是開(kāi)放的,則TI會(huì)自動(dòng)引發(fā)中斷。用戶可以通過(guò)中斷服務(wù)程序向SBUF輸送下一個(gè)數(shù)據(jù): MOVSBUF, A 。也可以使用查詢的方式對(duì)TI進(jìn)行檢測(cè),如果TI=1則執(zhí)行: MOV SBUF , A 。使用查詢RI、TI標(biāo)志方式進(jìn)行發(fā)送與接收N個(gè)數(shù)據(jù) 1.8.3 串行口的模式0 特點(diǎn):串行口做同步移位寄存器用,其波特率為 fosc/12.在這種模式下RXD(P3.0)做數(shù)據(jù)口;TXD(P3.1)做移位脈沖輸出端.在移位過(guò)程中,先移數(shù)據(jù)的低位.注意:移位脈沖的頻率就是模式0的波特率. 模式0的主要功能是:可以使用一個(gè)串行口來(lái)擴(kuò)展出8位、16位等并行口,且理論上可以擴(kuò)展n*8位的并行口. 模式0 電路框圖串行口模式0的時(shí)序信號(hào)(發(fā)送)模式0的工作原理(發(fā)送)單片機(jī)執(zhí)行mov sbuf,a指令的S6P2時(shí),出現(xiàn)“寫(xiě)sbuf ”信號(hào): 1,打開(kāi)總線三態(tài)門(mén)使累加器中的數(shù)據(jù)送到SBUF中; 2,使D型觸發(fā)器置一, 觸發(fā)器的輸出構(gòu)成了SBUF的第9位; 3,啟動(dòng)“發(fā)送控制器”開(kāi)始發(fā)送。在“寫(xiě)SBUF信號(hào)”有效相隔一個(gè)機(jī)器周期后,“發(fā)送控制器”的SEND=1使RXD,TXD端的與門(mén)打開(kāi),使數(shù)據(jù)和移位脈沖輸出。在TXD端,每一個(gè)機(jī)器周期中發(fā)出一個(gè)同步脈沖,同時(shí)在SEND=1期間,每一個(gè)S6P2時(shí)控制器發(fā)出一個(gè)SHIFT移位信號(hào)將SBUF中的數(shù)據(jù)右移一次(同時(shí)D型觸發(fā)器清零)。這樣:每當(dāng)SBUF中的數(shù)據(jù)右移(發(fā)送)一位時(shí),SBUF的左端便移入1個(gè)“0”。當(dāng)SBIUF中的數(shù)據(jù)右移7次后,檢零器的7個(gè)輸入端全為“0”,向控制器發(fā)出一個(gè)信號(hào):通知控制器作最后一次移位,然后控制器的SEND=0停止發(fā)送數(shù)據(jù)和同步信號(hào),TI被置位。模式0的工作原理(接收) 在滿足REN=1且RI=0的條件下(實(shí)際上是一條寫(xiě)SCON指令),就會(huì)引發(fā)一次接收過(guò)程。在下一個(gè)機(jī)器周期的S6P2時(shí)刻,接收控制器將11111110寫(xiě)入移位寄存器。在下一個(gè)周期的S1P1使RECEIVE=1從而使TXD端的與門(mén)打開(kāi)。 同發(fā)送的過(guò)程類(lèi)似:在后面的每一個(gè)機(jī)器周期從TXD端發(fā)出同步移位脈沖,在每一個(gè)S5P2時(shí)刻對(duì)RXD線進(jìn)行采樣。在S6P2時(shí)刻,控制器對(duì)寄存器進(jìn)行移位,每左移一次右端就補(bǔ)進(jìn)一位由RXD端輸入的數(shù)據(jù)。 當(dāng)從RXD端輸入7位數(shù)據(jù)時(shí),開(kāi)始最右端的“0”被移到寄存器的最左端,寄存器向控制器發(fā)信號(hào),通知控制器做最后一次接收,并將完整的8位數(shù)據(jù)裝入SBUF中。最后清RECEIVE,SCON中的RI置位,向CPU發(fā)中斷申請(qǐng)。模式0的時(shí)序信號(hào)(接收) 1.8.4串行口模式1 特點(diǎn):10位傳輸格式 (1個(gè)起始位+8個(gè)數(shù)據(jù)位+1個(gè)停止位); 波特率:可變波特率,由定時(shí)器T1的溢出率來(lái)確定,所以在此種模式下,首先要對(duì)T1進(jìn)行初始化以確定串行口的波特率;發(fā)送操作:在TI=0,執(zhí)行mov sbuf,a 指令后從TXD端開(kāi)始發(fā)送數(shù)據(jù)。當(dāng)發(fā)送完8位數(shù)據(jù)后自動(dòng)的添加一個(gè)高電平的停止位,并將TI置位。接收操作:在REN=1且RI=0的條件下進(jìn)行。串行口的接收控制器對(duì)RXD線進(jìn)行采樣,其采樣頻率是接收時(shí)鐘的16倍。當(dāng)連續(xù)8次采集到RXD線上為低電平時(shí),檢測(cè)電路便認(rèn)定RXD線上有了“起始位”,在此后,便開(kāi)始在每次第7 、 8 、9三個(gè)脈沖時(shí)進(jìn)行RXD采樣,采取“三中取二”的原則來(lái)確定接收的數(shù)據(jù)(如圖所示)。當(dāng)接收到停止位時(shí),必須滿足:RI=0且SM2=0,才能把接收的數(shù)據(jù)送到SBUF中(停止位送SCON的RB8中,并使RI=1),否則數(shù)據(jù)丟失。串行口模式1時(shí)數(shù)據(jù)幀格式及接收采樣示意圖 1.8.5 串行口模式2、3 特點(diǎn):模式2、3都是11位傳輸格式 (1個(gè)起始位+9個(gè)數(shù)據(jù)位+1個(gè)停止位),不同處是波特率; 波特率: 模式2:固定為fosc/64或fosc/32(具體由PCON中的 SMOD位來(lái)確定)。 模式3:由定時(shí)器T1的溢出波特率來(lái)確定。模式2、3的發(fā)送過(guò)程類(lèi)似于模式1,唯一的區(qū)別在于數(shù)據(jù)幀中數(shù)據(jù)是9位。這樣,在發(fā)送一幀數(shù)據(jù)時(shí),CPU除了要把8位數(shù)據(jù)送SBUF外(mov sbuf,a),還要把第9位數(shù)據(jù)送到SCON.TB8中 set scon.tb8 或:clr scon.tb8 但注意要先設(shè)定好scon.tb8,然后再向SBUF送數(shù),因?yàn)閙ov sbuf,a指令一執(zhí)行,串行口就開(kāi)始發(fā)送。 例如: set scon.tb8 或: clr scon.tb8 mov sbuf,a mov sbuf,a 模式2、3的接收過(guò)程類(lèi)似于模式1,不同的是:模式1時(shí),SCON中的RB8是接收到的停止位(“1”);而模式2、3時(shí),RB8是接收到的第9位。 在模式1,接收操作只有在RI=0,且REN=1時(shí)數(shù)據(jù)才能接收。而模式2、3的接收條件是: a,RI=0且SM2=0 或 b, RI=0且RB8=1。 只有滿足a或滿足b的條件時(shí),接收到的數(shù)據(jù)才能送到SBUF,并使RI=1激活,否則接收無(wú)效且RI不能置位。 RI=0是保證SBUF空(每次取走數(shù)據(jù)時(shí)通過(guò)軟件復(fù)位RI,如果沒(méi)有取走數(shù)據(jù)則RI=1),以保證接收到的數(shù)據(jù)不丟失。后一個(gè)條件是由SM2和RB8共同來(lái)控制接收。 令SM2=0可以保證RB8正確的接收奇偶校驗(yàn)位; 令SM2=1可以利用接收到的RB8控制接收是否有效。 即 RB8=1時(shí),接收有效。RB8=0時(shí),接收無(wú)效。串行口模式2、3時(shí)數(shù)據(jù)幀格式發(fā)送時(shí):將SCON中的TB8作為第9位數(shù)據(jù)發(fā)送;接收時(shí):將接收來(lái)的第9位送到SCON中的RB8中。 1.8.5.1 模式2、3的應(yīng)用之一 帶奇偶校驗(yàn)位的數(shù)據(jù)傳送奇偶校驗(yàn):接收到的第9位數(shù)據(jù)是發(fā)送方送來(lái)的奇偶校驗(yàn)位。 在這種情況下,必須令SM2=0,否則接收的校驗(yàn)位RB8=0時(shí),將影響數(shù)據(jù)的接收(因?yàn)镽B8是根據(jù)8位數(shù)據(jù)進(jìn)行奇偶校驗(yàn)的結(jié)果來(lái)設(shè)定,有時(shí)為“1”,而有時(shí)為“0”)。 當(dāng)接收到數(shù)據(jù)后,用指令對(duì) PSW.P位進(jìn)行判斷。將此結(jié)果與RB8中的數(shù)據(jù)進(jìn)行“異或”,看結(jié)果是否與約定的相符合。 例如:發(fā)送、接收雙方約定為奇校驗(yàn): 若發(fā)送的數(shù)據(jù)和第9位分別是:00011010 、0 (第9位數(shù)據(jù)是發(fā)送方用根據(jù)奇校驗(yàn)自動(dòng)生成的) 若接收后SBUF送A的數(shù)據(jù)是:00011010,這時(shí),PSW.P=1,且 RB8=0 。則進(jìn)行: P異或RB8=1, 滿足約定條件既接收正確。反之若SBUF送A=00011011,使PSW.P=0,且RB8=0 。 P異或RB8=0 表明不符合約定條件,接收出錯(cuò)。 總之,使用模式2、3發(fā)送帶“奇偶校驗(yàn)”位的數(shù)據(jù)時(shí): 1,一定要使SM2=0。 2,又因?yàn)镾M2=0,所以盡管RI能夠激活,但不會(huì)引發(fā)中斷,所以只能采用“查詢”的方式接收數(shù)據(jù)。利用模式2,3進(jìn)行帶奇校驗(yàn)的串行通訊程序流程圖 1.8.5.2 模式2、3的應(yīng)用之二:多機(jī)通訊在傳統(tǒng)的多路數(shù)據(jù)采集系統(tǒng)中,存在著許多缺點(diǎn)。使它在采集的點(diǎn)數(shù)和引線長(zhǎng)度都受到限制。 采用多CPU的方式可以構(gòu)成一個(gè)多機(jī)通訊系統(tǒng)。如在一個(gè)生產(chǎn)線上要對(duì)許多參數(shù)(溫度、壓力、流量等)進(jìn)行采集檢測(cè),并且要對(duì)這些數(shù)據(jù)進(jìn)行處理、顯示、打印或保存。 我們可以將這些單片機(jī)進(jìn)行分工:選一臺(tái)單片機(jī)作為主機(jī),專門(mén)負(fù)責(zé)接收其他單片機(jī)傳回的數(shù)據(jù),并進(jìn)行數(shù)據(jù)的后期處理如:保存、顯示等。而其它的單片機(jī)則完成對(duì)傳感器的信號(hào)檢測(cè)、A/D轉(zhuǎn)換,最后將數(shù)據(jù)上傳給主機(jī)。我們稱這些單片機(jī)為從機(jī)。傳統(tǒng)方式的多路數(shù)據(jù)采集系統(tǒng)采用“智能傳感器”組成的多路數(shù)據(jù)采集系統(tǒng)主從式多機(jī)通訊原理主機(jī)發(fā)送的數(shù)據(jù)可以傳送到各個(gè)從機(jī),從機(jī)發(fā)送的數(shù)據(jù)只能為主機(jī)接收,從機(jī)之間不能直接通訊; 主機(jī)和從機(jī)的設(shè)置為模式2或3,其中主機(jī)的SM2=0,從機(jī)的SM2=1。 主機(jī)首先通過(guò)發(fā)送地址碼來(lái)尋找從機(jī)(地址碼的特征是第9位數(shù)據(jù)為“1”,且被從機(jī)接收為RB8),所以,所有的從機(jī)都能接收到主機(jī)發(fā)出的地址碼(因?yàn)椋篟I=0,SM2=1,RB8=1),并使RI=1引發(fā)中斷。從機(jī)在中斷服務(wù)程序中,將接收到地址碼與自己的地址進(jìn)行比較,被選中的從機(jī)將自己的SM2=0,而未被選中的從機(jī)仍保持SM2=1。 當(dāng)主機(jī)找到從機(jī)后,開(kāi)始向從機(jī)發(fā)數(shù)據(jù)、命令,其特征為第9位=0。由于從機(jī)SM2=0,所以盡管接收到的RB8=0,同樣可以激活從機(jī)的RI,使其以查詢的方式接收主機(jī)發(fā)出的數(shù)據(jù)或命令。當(dāng)主機(jī)與從機(jī)的通訊完成后,從機(jī)再將其SM2=1,主機(jī)重新發(fā)出另一個(gè)從機(jī)的地址,所有從機(jī)可以馬上響應(yīng)并接收地址信息。多機(jī)通訊原理在模式2、3中, 1,SM2=0時(shí):RB8=1或RB8=0 都可以激活RI, 但不能引發(fā)中斷。 2,SM2=1時(shí):RB8=1才能激活RI并引發(fā)中斷。 而RB8=0時(shí),RI不能激活。小 結(jié) 1,主機(jī)的SM2=0,從機(jī)的SM2=1; 2,主機(jī)向從機(jī)發(fā)送的地址碼第9位為“1”; 3,所有的從機(jī)SM2=1、RB8=1、RI=0,接收主機(jī)的地址進(jìn)入中斷服務(wù)程序。在程序中比較、確認(rèn)是否為被尋從機(jī)。 4,被尋從機(jī)將SM2清零,以保證能以查詢的方式接收主機(jī)的數(shù)據(jù)、命令。同時(shí)向主機(jī)返回地址供主機(jī)核實(shí)。沒(méi)有被選種的從機(jī)保持SM2=1并退出服務(wù)程序。 5,被尋中的從機(jī)以查詢RI的方式與主機(jī)之間進(jìn)行數(shù)據(jù)交換(注意:因?yàn)镾M2=0時(shí),RI雖然能被激活,但不能引發(fā)中斷),完成后,重新將SM2置1。 1.8.5.3 模式2、3使用時(shí)要注意的問(wèn)題在模式2、3中,可以實(shí)現(xiàn)較為特殊的通訊方式,如帶校驗(yàn)位的9位傳送、多機(jī)通訊。注意:當(dāng)SM2=0時(shí),只能采用查詢方式。 1.8.6 波特率及定時(shí)器T1的設(shè)定在串行口的異步通訊中,發(fā)送方與接收方是兩個(gè)互相獨(dú)立的系統(tǒng),它們的系統(tǒng)時(shí)鐘可以各不相同(如圖所示)。在這種條件下使通訊正確的條件是:1,要有相同的字符幀格式;2,要有相同的波特率。 MCS-51單片機(jī)的串行口四種模式其波特率各不相同。其中模式1、3的波特率就是由定時(shí)器T1的溢出率來(lái)決定的(另外PCON中的SMOD位起著波特率加倍的作用)。如何設(shè)定波特率?在編制串行口通訊(模式1、3)程序時(shí),在程序的初始化中,必須進(jìn)行波特率的設(shè)定,既對(duì)T1進(jìn)行初始化。 T1初始化的主要任務(wù)就是: 1,設(shè)置T1的工作方式為定時(shí)(C/T=0); 工作模式為模式2 :自動(dòng)重裝。 2,計(jì)算定時(shí)常數(shù)并分別送給TH1、TL1。 波特率計(jì)算公式:B = T1溢出率:=(計(jì)數(shù)速率)/ [ 256-(TH1)] = (fosc/12) / [ 256-(TH1)] 波特率、初值TC計(jì)算公式 B= fosc / [ 96 X(256-TH)]; (SMOD=1時(shí))或 B= fosc / [ 192 X(256-TH)]; (SMOD=0時(shí)) 其中:fosc為系統(tǒng)時(shí)鐘頻率,TH為定時(shí)器T1的初值。所以可以推出: TH=256-[ fosc/(384XB)] ; (SMOD=0時(shí))或: TH=256-[ fosc/(192XB)] ; (SMOD=1時(shí))【舉例】設(shè)系統(tǒng)時(shí)鐘為11.059MHz,要求波特率為1200Hz,求TH。【解】用上述公式TH=256-[11.059MHz /(384X1200)]=232 =0E8H 設(shè):SMOD=0 參考資料: « PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù) »李朝青 ---------北京航空航天大學(xué)出版社 28.00 1.9 MCS-51的中斷系統(tǒng)中斷: CPU中止正在運(yùn)行的程序,轉(zhuǎn)向?yàn)橥獠吭O(shè)備服務(wù)的過(guò)程稱為中斷。當(dāng)完成中斷后,CPU再回到原來(lái)的“斷點(diǎn)”繼續(xù)原來(lái)的程序。中斷源是由外部產(chǎn)生,具有隨機(jī)性、不可知性。 MCS-51的中斷系統(tǒng)結(jié)構(gòu)圖 MCS-51單片機(jī)共有5個(gè)中斷源(如圖所示)。 1.9.1中斷允許寄存器IE(0A8H) EA:總允許位。EA=0:禁止一切中斷;EA=1中斷開(kāi)放。 ES:串行口中斷允許位。ES=1:允許RI、TI引發(fā)中斷; ES=0:禁止中斷。 ET1、ET0:定時(shí)器T1、T0允許位。ET=1允許,=0禁止。 EX1、EX0:外中斷 int1、int0允許位。ET =1允許,=0禁止。 1.9.2中斷優(yōu)先級(jí)寄存器IP(0B8H) PS:串行口中斷優(yōu)先級(jí)設(shè)定位; PT1、PT0:定時(shí)器T1、T0中斷優(yōu)先級(jí)設(shè)定位; PX1、PX0:外中斷 int1、0中斷優(yōu)先級(jí)設(shè)定位; 1.9.3 優(yōu)先級(jí)結(jié)構(gòu)由于IP寄存器的設(shè)定,將5個(gè)中斷源分為兩個(gè)級(jí)別。中斷的發(fā)生將遵循下面的3條基本原則: 1,低級(jí)中斷在響應(yīng)執(zhí)行中,可以被高級(jí)中斷所中斷,反之則不能。 2,一個(gè)中斷(不論是什么優(yōu)先級(jí))一旦得到響應(yīng),與它同級(jí)的中斷則不能在中斷它。 3,當(dāng)CPU同時(shí)收到幾個(gè)同一級(jí)別的中斷要求時(shí),CPU響應(yīng)哪個(gè)中斷源取決于硬件的查詢順序(見(jiàn)圖)。 如何改變中斷源的優(yōu)先級(jí)順序從中斷系統(tǒng)的硬件結(jié)構(gòu)圖可以清楚地看出同一級(jí)別中5個(gè)中斷源的查詢順序。很明顯,要改變這種順序只能通過(guò)IP的設(shè)置。 如:要想將串行口的級(jí)別設(shè)為最高時(shí),將IP中的PS置一。 既使用指令:setb ip.ps 或 mov 0b8h,#10h 完成對(duì)IP設(shè)置。 1.9.4 中斷查詢與響應(yīng)協(xié)議在每一個(gè)機(jī)器周期中,所有的中斷源都要按照其順序檢查一遍,到S6狀態(tài)時(shí),就查找到所有被激活的中斷申請(qǐng)并排好優(yōu)先權(quán)。在下一個(gè)機(jī)器周期的S1狀態(tài),只要不受阻斷,就開(kāi)始響應(yīng)高級(jí)中斷。 如果發(fā)生下列情況,中斷將被阻止: 1,同級(jí)或高級(jí)中斷正在執(zhí)行時(shí); 2,當(dāng)前的機(jī)器周期不是指令的最后一個(gè)機(jī)器周期; 3,CPU正在執(zhí)行的指令是RETI或訪問(wèn)IE、IP寄存器時(shí),CPU是不會(huì)響應(yīng)中斷,而且要等到該指令的下一條指令執(zhí)行完后中斷才能響應(yīng)。 CPU查詢到某一中斷源后,使相應(yīng)的“優(yōu)先級(jí)激活”觸發(fā)器置位用以阻斷同級(jí)或低級(jí)中斷。在硬件的控制下,程序自動(dòng)轉(zhuǎn)向?qū)?yīng)的矢量單元,執(zhí)行其服務(wù)程序。 CPU響應(yīng)中斷時(shí),將當(dāng)時(shí)程序計(jì)數(shù)器PC的內(nèi)容進(jìn)棧,并將相應(yīng)的中斷矢量裝入PC中,使CPU轉(zhuǎn)向?qū)?yīng)的服務(wù)程序。中斷服務(wù)程序的最后一條指令是RETI,指令將清除“優(yōu)先級(jí)激活觸發(fā)器”,然后從堆棧中彈出斷點(diǎn)地址并裝入到PC中。矢量入口的指令應(yīng)當(dāng)是轉(zhuǎn)移指令。 1.9.5 外部中斷在MCS-51引腳上有:INT0、INT1兩個(gè)外部的中斷輸入,作為外部事件的觸發(fā)信號(hào)。CPU在每一個(gè)機(jī)器周期對(duì)它們進(jìn)行一次檢測(cè)。系統(tǒng)設(shè)定了兩種觸發(fā)方式:邊沿觸發(fā)(下降沿)和電平觸發(fā)(低電平)。具體由TCON中的IT0、IT1來(lái)確定。 1,在邊沿觸發(fā)方式中,在相鄰的兩個(gè)機(jī)器周期,如果第一次采集是高電平,第二次采集是低電平時(shí),則TCON中的標(biāo)志IE0或IE1置位。所以,在邊沿觸發(fā)方式時(shí):外部設(shè)備發(fā)出的邊沿信號(hào)(高電平和低電平)的時(shí)間應(yīng)大于一個(gè)機(jī)器周期,否則信號(hào)將可能漏檢。 2,如果采用“電平”觸發(fā)方式,CPU采集到INT0或INT1的引腳為低電平時(shí)將激活標(biāo)志IE0或IE1。所以在這種觸發(fā)方式中,外部的低電平至少應(yīng)保留一個(gè)機(jī)器周期。 1.9.6 中斷請(qǐng)求的撤除以外中斷電平觸發(fā)為例:當(dāng)CPU響應(yīng)該中斷并進(jìn)入到服務(wù)程序后,在執(zhí)行RETI返回主程序前,必須將外部的低電平撤掉,否則,當(dāng)CPU返回主程序后,會(huì)因?yàn)橥獠康牡碗娖叫盘?hào)而再次進(jìn)入中斷,使程序無(wú)法正常運(yùn)行。 同理,其它中斷源也存在類(lèi)似的問(wèn)題。所以在使用中斷時(shí)必須清楚在響應(yīng)某一中斷時(shí),其中斷請(qǐng)求(標(biāo)志)是否要撤除,如何撤除等問(wèn)題。 MCS-51的中斷請(qǐng)求的撤除方法撤除外部電平請(qǐng)求信號(hào)的方案 1.9.7 中斷響應(yīng)時(shí)間(以外部中斷INTx為例)每個(gè)機(jī)器周期的S5P2時(shí)刻,INTx引腳的電平被鎖存到內(nèi)部寄存器中,待下一個(gè)周期查詢。 1,最短時(shí)間:中斷請(qǐng)求有效,查詢后在下一個(gè)周期便開(kāi)始執(zhí)行一條硬件的子程序的調(diào)用(時(shí)間是兩個(gè)周期),然后開(kāi)始執(zhí)行服務(wù)程序的第一條指令。這樣從鎖存電平的周期到執(zhí)行中斷服務(wù)程序,中間相隔3個(gè)機(jī)器周期。 2,最長(zhǎng)時(shí)間:如果中斷信號(hào)發(fā)生在前面所說(shuō)的3種情況時(shí), 響應(yīng)時(shí)間就要變長(zhǎng): 第1種情況:響應(yīng)時(shí)間取決于高級(jí)中斷的執(zhí)行時(shí)間; 第2種情況:指當(dāng)前CPU執(zhí)行的指令是多周期指令,如乘除 法指令(4個(gè)周期),最壞情況,還要等3個(gè)周 期。這樣響應(yīng)周期變?yōu)?+3=6個(gè)周期; 第3種情況:CPU當(dāng)前執(zhí)行的指令是RETI或訪問(wèn)IE、IP寄存器 時(shí),本指令(1個(gè)周期)沒(méi)有響應(yīng),且下一條指 令執(zhí)行完后才能響應(yīng),這樣附加的等待時(shí)間最長(zhǎng) 不會(huì)超過(guò)5個(gè)周期(1+4)。整個(gè)響應(yīng)為5+3=8個(gè) 周期。這樣,如果不考慮第1種情況,整個(gè)中斷 響應(yīng)的時(shí)間范圍應(yīng)當(dāng)是: 3~8個(gè)機(jī)器周期。 中斷響應(yīng)時(shí)間的不確定,在大多數(shù)場(chǎng)合下可能是無(wú)關(guān)緊要的,但是對(duì)于一些較特殊的場(chǎng)合下,這種響應(yīng)時(shí)間的不確定往往會(huì)帶來(lái)一些問(wèn)題。 如:利用中斷來(lái)編制一個(gè)時(shí)鐘程序時(shí),便不可避免的帶來(lái)誤差,所以是要提醒大家注意。在程序中可以使用一些算法來(lái)減少這種誤差(參考清華的資料) 。 相對(duì)比較美國(guó)mircchip公司的PIC單片機(jī)由于使用單字節(jié)、單周期指令,使中斷響應(yīng)時(shí)間固定,所以從根本上消除了這種的情況。 (本章結(jié)束)
單片機(jī)中斷ppt:這是單片機(jī)中斷ppt,包括了中斷計(jì)數(shù)流水燈電路,問(wèn)題的提出——中斷的概念,中斷響應(yīng)過(guò)程,MCS-51中斷系統(tǒng)結(jié)構(gòu),3級(jí)中斷控制開(kāi)關(guān)設(shè)置,中斷計(jì)數(shù)流水燈硬件電路設(shè)計(jì)等內(nèi)容,歡迎點(diǎn)擊下載。
c單片機(jī)編程ppt:這是c單片機(jī)編程ppt,包括了C51與標(biāo)準(zhǔn)C的差異,C語(yǔ)言與匯編語(yǔ)言,存儲(chǔ)模式,使用C51擴(kuò)展關(guān)鍵字等內(nèi)容,歡迎點(diǎn)擊下載。
單片機(jī)畢業(yè)設(shè)計(jì)ppt模板:這是單片機(jī)畢業(yè)設(shè)計(jì)ppt模板,包括了課題完成情況,研究背景及意義,課題設(shè)計(jì)情況,課題設(shè)計(jì)過(guò)程,存在的不足,致謝等內(nèi)容,歡迎點(diǎn)擊下載。