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