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