51單片機自學資料.ppt_第1頁
51單片機自學資料.ppt_第2頁
51單片機自學資料.ppt_第3頁
51單片機自學資料.ppt_第4頁
51單片機自學資料.ppt_第5頁
已閱讀5頁,還剩247頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應(yīng)用,課程特點,學習方法,知識點既分散又連貫,結(jié)構(gòu)和指令系統(tǒng)是基礎(chǔ); 與電子線路尤其是數(shù)字電子線路關(guān)系密切;,預(yù)習、復(fù)習; 多動手(硬件、軟件實驗); 多看參考書(包括利用網(wǎng)上資料); 其它(上課、作業(yè)、答疑)。,第一章 概述 第二章 MCS-51單片機的結(jié)構(gòu)和原理 第三章 MCS-51單片機的指令系統(tǒng) 第四章 MCS-51單片機的程序設(shè)計 第五章 MCS-51單片機的中斷系統(tǒng) 第六章 MCS-51單片機的串行接口 第七章 MCS-51單片機的系統(tǒng)擴展 第八章 MCS-51單片機的測控接口(部分),主要內(nèi)容,1.1 微型計算機與單片機,計算機,巨,大,中,小,微,多片機(PC),單

2、片機,第一章 概述,單片機SCMC(Single Chip MicroComputer) -屬于微型機的一種 -具有一般微機的基本組成和功能 又稱為微控制器MCU(MicroController Unit),一、微型機與單片機的基本組成對比,微型機,CPU,存儲器,輸入/輸出接口,微 處 理 器 CPU,ROM,RAM,I/O接口,外設(shè),地址總線AB,數(shù)據(jù)總線DB,控制總線CB,微型機組成框圖,MCS-51單片機組成框圖,(1)優(yōu)異的性能價格比。,二、單片機的特點,單片機把各功能部件集成在一塊芯片上,內(nèi)部采用總線結(jié)構(gòu),減少了各芯片之間的連線,大大提高了單片機的可靠性與抗干擾能力。另外,其體積小

3、,對于強磁場環(huán)境易于采取屏蔽措施,適合于在惡劣環(huán)境下工作。 此外,程序多采取固化形式也可以提高可靠性。,(2)集成度高、體積小、有很高的可靠性。,為了滿足工業(yè)控制要求,一般單片機的指令系統(tǒng)中均有極豐富的轉(zhuǎn)移指令、I/O口的邏輯操作以及位處理功能。單片機的邏輯控制功能及運行速度均高于同一檔次的微機。,(3)控制功能強。,(4)單片機的系統(tǒng)擴展、系統(tǒng)配置較典型、規(guī) 范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。,三、單片機的應(yīng)用,1單片機應(yīng)用的特點 軟硬件結(jié)合、多學科交叉; 應(yīng)用現(xiàn)場環(huán)境惡劣(電磁干擾、電源波動、 沖擊振動、高低溫濕度等); 應(yīng)用領(lǐng)域廣泛且意義重大(硬件軟化-微控 制技術(shù))。,2 單片機的應(yīng)用領(lǐng)

4、域 在在工業(yè)自動化方面(過程控制、數(shù)據(jù)采集和測控 技術(shù)、機器人技術(shù)、機械電子計算機一體化技術(shù)); 儀器儀表方面(測試儀表和醫(yī)療儀器-數(shù)字化、智能 化、高精度、小體積、低成本、便于增加顯示報警和自診斷功能); 在家用電器方面(冰箱、洗衣機、空調(diào)機、微波爐、電視機、音像設(shè)備等); 信息和通信產(chǎn)品方面(計算機的鍵盤、打印機、磁 盤驅(qū)動器;傳真機、復(fù)印機、電話機、考勤機); 在軍事方面(飛機、大炮、坦克、軍艦、導彈、火箭、雷達等)。,1.2 常用單片機系列介紹,1、綜述,自單片機誕生以來的近30年中,單片機已有70多個系列的近500個機種。國際上較有名、影響較大的公司及他們的產(chǎn)品如下所述: Intel

5、公司的MCS48、MCS51、MCS96系列; Motorola公司的6801、6802、6803、6805、68HCll系列產(chǎn)品; Zilog公司的Z8、Super8系列產(chǎn)品; 仙童(Fairchild)公司和Mostek公司的F8、3870系列產(chǎn)品;,NEC公司的COM87系列產(chǎn)品; Rockwell公司的6500、6501系列產(chǎn)品。 Atmel、PHILIPS 、LG等公司的51兼容機。 根據(jù)近年來國外實地考察,Intel公司的單片機在市場上占有量為67,其中MCS51系列產(chǎn)品又占54。在我們國內(nèi)雖然上述各公司的產(chǎn)品均有引進,但由于各種原因,至今在我國所應(yīng)用的單片機仍然是以MCS48、M

6、CS51、MCS96為主流系列。隨著這一系列的深入開發(fā),其主流系列的地位會不斷鞏固下去。因而我們在此主要介紹Intel公司的單片機系列。,2、MCS-51系列和AT89系列單片機,MCS-51是指由美國INTEL公司生產(chǎn)的一系列單片機的總稱,這一系列單片機包括了好些品種,如8031,8051,8751,8951,8032,8052,8752,8952等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機都是在8051的基礎(chǔ)上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS-51系列單片機,而8031是前些年在我國最流行的單片機,所以很多場合會看到8031的名稱。,(1) MCS

7、-51系列,MCS-51系列單片機分類,8051,1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21,P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD RXD/ P3.0 TXD/ P3.1 INT0/ P3.2 INT1/ P3.3 T0/ P3.4 T1/ P3.5 WR/ P3.6 RD/ P3.7 XTAL2 XTAL1 Vss,Vcc P0.0 P0.1 P0.2 P0.

8、3 P0.4 P0.5 P0.6 P0.7 EA/Vpp ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0,INTEL公司將MCS-51的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在做以8051為核心的單片機,當然,功能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發(fā)生產(chǎn)的。,(2)AT89系列,1.3 單片機的開發(fā)過程,這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實

9、上這些常數(shù)、地址在設(shè)計階段已被直接或間接地確定下來了。如當某器件的連線設(shè)計好后,其地址也就被確定了,當器件的功能被確定下來后,其控制字也就被確定了。然后用文本編緝器編寫軟件,編寫好后,用編譯器對源程序文件編譯、查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應(yīng)用仿真機對軟件進行調(diào)試,直到程序運行正確為止。,運行正確后,就可以寫片(將程序固化在 EPROM中)。,源程序 ORG 0000H LJMP START ORG 040H START:MOV SP,#5FH ;設(shè)堆棧 LOOP:NOP LJMP LOOP ;循環(huán) END ;結(jié)束,目標文件也就是最終寫入EPROM的文件: 02 00 40

10、FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43,仿真是單片機開發(fā)過程中非常重要的一個環(huán)節(jié),除了一些極簡單的任務(wù),一般產(chǎn)品開發(fā)過程中都要進行仿真,仿真的主要目的是進行軟件調(diào)試,當然借助仿真器,也能進行一些硬件排錯。一塊單片機應(yīng)用電路板包括單片

11、機部份及為達到使用目的而設(shè)計的應(yīng)用電路,仿真就是利用仿真器來代替應(yīng)用電路板(稱目標機)的單片機部份,對應(yīng)用電路部份進行測試、調(diào)試。 仿真分軟件模擬仿真和利用仿真器仿真兩類。,1.4 仿真、仿真器,軟件模擬仿真 是指用仿真軟件來模擬單片機運行情況,一般我們學習指令系統(tǒng)時常用這種方式,它不能進行硬件系統(tǒng)的調(diào)試和故障診斷。 利用仿真器仿真 利用仿真器以及微機可以進行軟硬件系統(tǒng)的調(diào)試和故障診斷。,在仿真調(diào)試過程中,可以以各種運行方式運行程序(斷點、單步、跟蹤),還可以觀察到單片機內(nèi)部存儲器、寄存器等的狀態(tài)。,演示實驗一 P1口的LED顯示,第二章 MCS-51系列單片機的結(jié)構(gòu)和原理,有關(guān)MCS-51機

12、的性能特點,在第一章已作了簡單介紹,本節(jié)將進一步詳細介紹它的結(jié)構(gòu),使大家對它的性能有更深入的了解。 MCS-51的典型產(chǎn)品是8051、8031、8751。8051是ROM型單片機,內(nèi)部有4KROM;8031無片內(nèi)ROM,8751片內(nèi)有4KEPROM;89C51片內(nèi)有4KFPEROM。除此以外,它們的內(nèi)部結(jié)構(gòu)及引腳完全相同。,本章將以MCS-51系列的8051為典型例子,詳細介紹單片機的結(jié)構(gòu)、性能、存儲器結(jié)構(gòu)及工作原理等內(nèi)容。通過對這些內(nèi)容的掌握,可以起到舉一反三、觸類旁通的作用。,2.1 MCS-51單片機的結(jié)構(gòu),以8051為例給出的單片機功能方塊圖如下。 由圖可見,在這一塊芯片上,集成了一臺

13、微型計算機的各個部分。其中主要有CPU、存儲器、可編程I/O、定時/計數(shù)器、串行口等。各部分通過內(nèi)部總線相連。,MCS-51單片機組成框圖,8051的內(nèi)部結(jié)構(gòu)展開圖,1288 RAM,RAM地址寄存器,P3口,P1口,P2口,P0口,鎖存器,鎖存器,鎖存器,鎖存器,中斷控制 定時/計數(shù)器 串行I/O口,SP,寄存器B,累加器A,暫存器1,暫存器2,程序狀態(tài) 字PSW,指令寄存器IR,指令譯碼器ID,數(shù)據(jù)指針DPTR,緩沖器,程序計數(shù)器,PC增1,程序地址寄存器AR,定時與控制,4K8 ROM,ALU,CPU,2.1.1 CPU,運算器,CPU,算術(shù)/邏輯部件ALU(Arithmetic Log

14、ic Unit),累加器ACC (Accumulator),程序狀態(tài)字寄存器PSW (Program Status Word),暫存寄存器,寄存器B,控制器,定時控制與條件轉(zhuǎn)移邏輯電路,程序計數(shù)器PC,指令寄存器IR,指令譯碼器ID,2.1.2 8051的片內(nèi)存儲器,8051單片機與一般微機的存儲器配置方式很不相同。 一般微機通常只有一個邏輯空間,可以隨意安排ROM或RAM。訪問存儲器時,同一地址對應(yīng)唯一的存儲單元,可以是ROM也可以是 RAM,并用同類訪問指令。 而MCS-51則不同:,8051在物理結(jié)構(gòu)上設(shè)計成程序存儲器與數(shù)據(jù)存儲器獨立分開的哈佛結(jié)構(gòu): 片內(nèi)程序存儲器4KB(ROM 000

15、0H0FFFH) 片內(nèi)數(shù)據(jù)存儲器128B(RAM 00H7FH),2.1.3 8051的I/O端口,8051有四個8位并行雙向I/O口P0、P1、P2、P3, 一個串行口。,2.1.4 8051的特殊功能寄存器SFR,8051內(nèi)部有21個特殊功能寄存器,分別 叫SP、IE、IP、PCON.(與內(nèi)部RAM統(tǒng) 一編址80HFFH),2.2 MCS-51單片機的存儲器組織,8051在物理結(jié)構(gòu)上有四個存儲空間: 片內(nèi)程序存儲器、片外程序存儲器、 片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。,new,片外,片外,程序存儲器,數(shù)據(jù)存儲器,8051在邏輯上,即從用戶角度上8051有三個存儲空間: 片內(nèi)外統(tǒng)一編址的程序存

16、儲器 片內(nèi)外不統(tǒng)一編址的數(shù)據(jù)存儲器 特殊功能寄存器(片內(nèi)),訪問這幾個不同的邏輯空間時,采用的指令: 片內(nèi)外程序存儲器空間-MOVC 片內(nèi)數(shù)據(jù)存儲器空間和SFR-MOV 片外數(shù)據(jù)存儲器地址空間-MOVX,一、程序存儲器及地址空間,作用-程序存儲器用于存放編好的程序和表格常數(shù)。 8051片內(nèi)有4K字節(jié)ROM,片外用16位地址線最多 可擴展64K字節(jié)ROM,兩者是統(tǒng)一編址的。 如果EA端保持高電平,8051執(zhí)行片內(nèi)前4KB ROM地址(0000H0FFFH) 中的程序。當尋址范圍超過4KB(1000HFFFFH)時,則從片外存儲器取指令。 當EA端保持低電平時,8051的所有取指令操作均在片外程序

17、存儲器中進行,這時片外存儲器可以從 0000H開始編址。,在程序存儲器中,有6個單元具有特殊功能,0003H:外部中斷0入口。 000BH:定時器0溢出中斷入口。 0013H:外部中斷1入口。 001BH:定時器1溢出中斷入口。 0023H:串行口中斷入口。 使用時,通常在這些入口地址處存放一條絕對跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或者從0000H起始地址跳轉(zhuǎn)到用戶設(shè)計的初始程序上。,0000H: 8051復(fù)位后,PC0000H,即程序從0000H 開始執(zhí)行指令。,二、數(shù)據(jù)存儲器及地址空間,數(shù)據(jù)存儲器,片外RAM64KB,地址范圍0000HFFFFH,片內(nèi)RAM128B,地址范

18、圍00H7FH,使用時只能用MOVX指令訪問,使用MOV指令訪問,可以進行堆棧操作,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),寄存器區(qū) 4組(32B),7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,寄存器區(qū) 4組(32B),. . . . . . . . .,由PSW中的2位RS1、RS0來決定選 哪一組為當前工作寄存器: RS1、RS0=00 選0組 RS1、RS0=01 選1組 RS1、RS0=10 選2組 RS1、RS0=11 選3組,在位地址區(qū),每一個BIT都有一個 地址,共168=128位,00H,30H 2FH 20H 1FH,. . .,

19、片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,寄存器0組,寄存器區(qū) 4組(32B),. . . . . . . . .,RS1、RS0=00,00H,30H 2FH 20H 1FH,. . .,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,寄存器1組,寄存器區(qū) 4組(32B),. . . . . . . . .,RS1、RS0=01,00H,30H 2FH 20H 1FH,. . .,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (8

20、0B),位地址區(qū) (16B),7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,寄存器2組,寄存器區(qū) 4組(32B),. . . . . . . . .,RS1、RS0=10,00H,30H 2FH 20H 1FH,. . .,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,寄存器3組,寄存器區(qū) 4組(32B),. . . . . . . . .,RS1、RS0=11,00H,30H 2FH 20H 1FH,. . .,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),7FH,寄存器

21、3組 寄存器2組 寄存器1組 寄存器0組,位地址區(qū),. . . . . . . . .,00H,30H 2FH 20H 1FH,. . .,片內(nèi)數(shù)據(jù)存儲器空間分布圖,通用RAM區(qū) (80B),位地址區(qū) (16B),00H,30H 2FH 20H 1FH,7FH,寄存器3組 寄存器2組 寄存器1組 寄存器0組,通用RAM區(qū),. . .,. . . . . . . . .,共80個字節(jié),作為一般的數(shù)據(jù)緩沖區(qū)并可設(shè)置堆棧區(qū),三、特殊功能寄存器(21個字節(jié)),SFR (Special Functional Register) 見書P20表2-2 與ALU相關(guān)的(3個) A Register (Accu

22、mulator): 累加器,通常用A或ACC表示。可字節(jié)尋址(E0H), 也可位尋址(E0HE7H) 它是一個寄存器,而不是一個做加法的部件。 在運算器做運算時其中一個數(shù)一定是在ACC中。 B Register:暫存寄存器。 暫存寄存器。在做乘、除法時放乘數(shù)或除數(shù)及結(jié)果。 PSW (Program Status Word ): PSW是8位寄存器,用于作為程序運行狀態(tài)的標志。這是一 個很重要的部件,里面存放了CPU工作時的很多狀態(tài),借此,我們可以了解CPU的當前狀態(tài),并作出相應(yīng)的處理。,它的各位功能如下:,當CPU進行各種邏輯操作或算術(shù)運算時,為反映操作或運算結(jié)果的狀態(tài),把相應(yīng)的標志位置1或清

23、0。這些標志的狀態(tài),可由專門的指令來測試,也可通過指令來讀出。它為計算機確定程序的下一步進行方向提供依據(jù)。PSW寄存器中各位的名稱及位置如上所示,下面說明各標志位的作用。,CY:進位標志。 加減運算時,保存最高位進位、借位狀態(tài)。 AC:半進位標志。 例:78H+97H 0111 1000 +1001 0111 1 0000 1111,有進位 CY=1,沒有半進位AY=0,RS1、RS0:工作寄存器組選擇位。 0 0 選擇工作寄存器0組 0 1 選擇工作寄存器1組 1 0 選擇工作寄存器2組 1 1 選擇工作寄存器3組 P:奇偶校驗位,它用來表示累加器A內(nèi)容中二進制數(shù)位 “1”的個數(shù)的奇偶性。若

24、為奇數(shù),則P=1,否則為0。 例:某運算結(jié)果是78H(01111000),P=0。,F0:用戶標志位。作為軟件標志,由編程人員決定 何時使用。 OV:溢出標志位。 有符號數(shù)運算時,如果發(fā)生溢出,OV置“1”,否 則清“0”。,與指針相關(guān)的(2個) SP (Stack Pointer): 堆棧指針,8位寄存器,用來指定堆棧的棧頂位置,初值為07H。它是加1計數(shù). DPTR (Data Pointer)(分成DPH、DPL兩個): 數(shù)據(jù)指針可以用它來訪問外部數(shù)據(jù)存儲器中的任一單元,也可以作為通用寄存器來用,由我們自已決定如何使用。,P0、P1、P2、P3: 四個并行輸入/輸出口的寄存器。它里面的內(nèi)

25、容對應(yīng)著管腳的輸出。 SCON (Serial Control Register) SBUF (Serial Date Buffer) PCON (Power Control Register),與端口相關(guān)的(7個),與定時/計數(shù)器相關(guān)的(6個),TMOD (Timer/Counter Mode Register) 定時器工作模式寄存器。 TCON (Timer/Counter Control Register) 定時器控制寄存器。 TH0、TL0 、TH1、TL1:分別是T0、T1的記數(shù)初值寄存器。,IP (Interrupt Priority Register) IE (Interrupt

26、 Enable Register),與中斷相關(guān)的(2個),課堂練習及思考題 (P30)題2、7、8、10 補充題: 下列是關(guān)于8031單片機存儲空間的描述,分析其對錯: a.特殊功能寄存器容量為21B, 沒有位地址。 b.外部數(shù)據(jù)存儲器容量可達64kB, 字節(jié)地址和位地址范圍均為0000HFFFFH c.程序存儲器容量可達64kB, 字節(jié)地址和位地址范圍均為0000HFFFFH,d. 內(nèi)部數(shù)據(jù)存儲器容量為128B, 字節(jié)地址和位地址范圍均為00H7FH e.特殊功能寄存器容量為21B, 有一部分特殊功能寄存器具有位地址。 f.程序存儲器容量可達64kB,地址范圍為0000HFFFFH。 2.M

27、CS-51單片機的工作寄存器組如何選擇?若PSW 的RS1、RS0位的內(nèi)容是01,那么此時工作寄存器R1的字節(jié)地址是多少? 3.MCS-51內(nèi)部RAM的寄存器區(qū)一共有多少個存儲單元?分為多少組?每組有多少個存儲單元?分別以什么作為寄存器名?,4.8051存儲空間的結(jié)構(gòu)與8086/8088有什么不同?它的物理結(jié)構(gòu)是怎樣的? 5.MCS-51單片機的內(nèi)部數(shù)據(jù)存儲器容量是多少?它有 什么特點?,2.3 MCS-51單片機的并行端口結(jié)構(gòu)與操作,8051單片機有4個I/O端口,每個端口都是8位準雙向口,共占32根引腳。每個端口都包括一個鎖存器(即專用寄存器P0P3)、一個輸出驅(qū)動器和輸入緩沖器。通常把4

28、個端口籠統(tǒng)地表示為P0P3。,在無片外擴展存儲器的系統(tǒng)中,這4個端口的每一位都可以作為準雙向通用I/O端口使用。在具有片外擴展存儲器的系統(tǒng)中,P2口作為高8位地址線,P0口分時作為低8位地址線和雙向數(shù)據(jù)總線。 8051單片機4個I/O端口線路設(shè)計的非常巧妙,學習I/O端口邏輯電路,不但有利于正確合理地使用端口,而且會給設(shè)計單片機外圍邏輯電路有所啟發(fā)。 下面簡單介紹一下輸入/輸出端口結(jié)構(gòu)。,2.3.1 P0口和P2的結(jié)構(gòu),下圖為P0口的某位P0.n(n=07)結(jié)構(gòu)圖,它由一個 輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路 及控制電路組成。從圖中可以看出,P0口既可以作 為I/O用,也可以作為地址

29、/數(shù)據(jù)線用。,一、P0口的結(jié)構(gòu),1、P0口作為普通I/O口,輸出時 CPU發(fā)出控制電平“0”封鎖“與”門,將輸出上拉場效 應(yīng)管T1截止,同時使多路開關(guān)MUX把鎖存器與輸出,驅(qū)動場效應(yīng)管T2柵極接通。故內(nèi)部總線與P0口同相。由于輸出驅(qū)動級是漏極開路電路,若驅(qū)動NMOS或其 它拉流負載時,需要外接上拉電阻。P0的輸出級可驅(qū)動8個LSTTL負載。, 輸入時-分讀引腳或讀鎖存器 讀引腳:由傳送指令(MOV)實現(xiàn); 下面一個緩沖器用于讀端口引腳數(shù)據(jù),當執(zhí)行一條由端口輸入的指令時,讀脈沖把該三態(tài)緩沖器打開,這樣端口引腳上的數(shù)據(jù)經(jīng)過緩沖器讀入到內(nèi)部總線。, 輸入時-分讀引腳或讀鎖存器 讀鎖存器:有些指令 如

30、:ANL P0,A稱為“讀-改-寫” 指令,需要讀鎖存器。 上面一個緩沖器用于讀端口鎖存器數(shù)據(jù)。,*原因:如果此時該端口的負載恰是一個晶體管基極,且原端口輸出值為1,那么導通了的PN結(jié)會把端口引腳高電平拉低;若此時直接讀端口引腳信號,將會把原輸出的“1”電平誤讀為“0”電平?,F(xiàn)采用讀輸出鎖存器代替讀引腳,圖中,上面的三態(tài)緩沖器就為讀鎖存器Q端信號而設(shè),讀輸出鎖存器可避免上述可能發(fā)生的錯誤。*,準雙向口: 從圖中可以看出,在讀入端口數(shù)據(jù)時,由于輸出驅(qū)動FET并接在引腳上,如果T2導通,就會將輸入的高電平拉成低電平,產(chǎn)生誤讀。所以在端口進行輸入操作前,應(yīng)先向端口鎖存器寫“1”,使T2截止,引腳處于

31、懸浮狀態(tài),變?yōu)楦咦杩馆斎搿_@就是所謂的準雙向口。,2、P0作為地址/數(shù)據(jù)總線,在系統(tǒng)擴展時,P0端口作為地址/數(shù)據(jù)總線使用時,分為: P0引腳輸出地址/數(shù)據(jù)信息。,CPU發(fā)出控制電平“1”,打開“與”門,又使多路開關(guān)MUX把CPU的地址/數(shù)據(jù)總線與T2柵極反相接通,輸出地址或數(shù)據(jù)。由圖上可以看出,上下兩個FET處于反相,構(gòu)成了推拉式的輸出電路,其負載能力大大增強。,2、P0作為地址/數(shù)據(jù)總線,P0引腳輸出地址/輸入數(shù)據(jù) 輸入信號是從引腳通過輸入緩沖器進入內(nèi)部總線。 此時,CPU自動使MUX向下,并向P0口寫“1”,“讀引腳”控制信號有效,下面的緩沖器打開,外部數(shù)據(jù)讀入內(nèi)部總線。,2、P0作為地

32、址/數(shù)據(jù)總線,-真正的雙向口,二、P2的內(nèi)部結(jié)構(gòu),1.P2口作為普通I/O口,CPU發(fā)出控制電平“0” ,使多路開關(guān)MUX倒向鎖存器 輸出Q端,構(gòu)成一個準雙向口。其功能與P1相同。,2.P2口作為地址總線 在系統(tǒng)擴展片外程序存儲器擴展數(shù)據(jù)存儲器且容量超過256B (用MOVX DPTR指令)時,CPU發(fā)出控制電平“1”,使多路開關(guān)MUX倒內(nèi)部地址線。此時,P2輸出高8位地址。,2.3.2 P1口、P3口的內(nèi)部結(jié)構(gòu),P1口的一位的結(jié)構(gòu) 它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成-準雙向口。,P3的內(nèi)部結(jié)構(gòu),D Q CLK Q,P3.n,讀鎖存器,內(nèi)部總線,寫鎖存器,讀引腳,VCC,

33、R,T,P3口引腳,第二輸入功能,第二輸出功能,一、作為通用I/O口與P1口類似-準雙向口(W=1),W,P3的內(nèi)部結(jié)構(gòu),D Q CLK Q,P3.n,讀鎖存器,內(nèi)部總線,寫鎖存器,讀引腳,VCC,R,T,P3口引腳,第二輸入功能,第二輸出功能,二、P3第二功能(Q=1) 此時引腳部分輸入(Q=1、W=1) ,部分輸出(Q=1、W輸出) 。,W,課堂復(fù)習,補充題: 1.MCS-51單片機的哪些端口,有兩種功能?分別是什么功能? 2.在系統(tǒng)擴展片外程序存儲器時,P2口是否可以再作為通用I/O口?,3. 某控制程序有如下片段: MOV P1,#00H,MOV A,P1 執(zhí)行后結(jié)果不正常,請問為什么

34、會出現(xiàn)這種情況,如何修改程序,才能保證輸入的數(shù)據(jù)正常?,MOV P1,#0FFH,2.4 MCS-51單片機片外總線和復(fù)位,2.4.1 MCS-51單片機片外總線配置,地址總線: P2口(高8位A15A8)和P0口(低8位A7A0) 可尋址64KB。,數(shù)據(jù)總線: P0口(D7D0),控制總線: ALE、PSEN、WR、RD,2.4.2 MCS-51單片機復(fù)位(RST高電平2個機器周期),任何單片機在工作之前都要有個復(fù)位的過程,復(fù)位是什么意思呢?對單片機來說,是程序還沒有開始執(zhí)行,是在做準備工作-初始狀態(tài)。顯然,準備工作不需要太長的時間,復(fù)位需要不少于24個時鐘周期的時間就可以了。,如何進行復(fù)位

35、呢?只要在單片機的RST引腳上加上高電平,就可以了。為了達到這個要求,可以用很多種方法,見圖。,一、復(fù)位電路(兩種),上電復(fù)位電路,復(fù)位后,PC指向0000H,使單片機從起始地址0000H開始執(zhí)行程序。,一、復(fù)位電路(兩種),上電且開關(guān)復(fù)位,二、復(fù)位后單片機的狀態(tài),復(fù)位后各寄存器的狀態(tài),PC 0000H(程序入口) P0、P1、P2、P3 0FFH (可以直接輸入) SP 07H (棧底已經(jīng)設(shè)好) PSW 00H (選擇0組寄存器) 其余大部分都是0,2.4.3 MCS-51單片機最小系統(tǒng),最小系統(tǒng)-最少外部電路條件下,可以獨立工作 的單片機系統(tǒng)。,8051,9,RST,C,R,+5V,K,2

36、.5 MCS-51單片機片時序,CPU時序及有關(guān)概念p1415,計算機工作要有嚴格的時序。事實上,計算機更象一個大鐘,什么時候分針動,什么時候秒針動,什么時候時針動,都有嚴格的規(guī)定,一點也不能亂。基本時序單位:,3.機器周期:一個機器周期包括12個時鐘周期。 4.指令周期:執(zhí)行一條指令的時間。,1.振蕩周期:晶體振蕩器的周期。 2.狀態(tài)周期:振蕩周期2分頻,也稱時鐘周期。,INTEL對每一條指令都給出了它的指令周期數(shù), MCS-51單片機的所有指令中,有一些完成得比較快,只要一個機器周期就行了,有一些完成得比較慢,得要2個機器周期,還有兩條指令要4個機器周期才行。,3.1 概述,7種尋址方式,

37、111條指令,字節(jié)數(shù),運算速度,單字節(jié)指令:49條 雙字節(jié)指令:45條 三字節(jié)指令:17條,單周期指令:64條 雙周期指令:45條 四周期指令: 2 條,第三章 MCS-51指令系統(tǒng) Instruction Set,功能,數(shù)據(jù)傳送類:29條 算術(shù)運算類:24條 邏輯運算類:24條 控制轉(zhuǎn)移類:17條 位操作類: 17條,常用符號,Rn:工作寄存器中的寄存器Rn、R1R7之一,,Ri:工作寄存器中的寄存器R0或R1,#data:8位立即數(shù),#data16:16位立即數(shù),direct:片內(nèi)RAM或SFR的地址(8位),間接尋址寄存器,Bit:片內(nèi)RAM或SFR的位地址,addr11:11位目的地址

38、,addr16:16位目的地址,rel: 補碼形式的8位地址偏移量。 偏移范圍為-128127 /:位操作指令中,該位求反后參與操作,不影響該位 X:片內(nèi)RAM的直接地址或寄存器 (X):相應(yīng)地址單元中的內(nèi)容 :箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi),3.2 尋址方式,3.2.1 立即尋址 Immediate Addressing,操作數(shù)就包含在指令代碼中,在操作碼之后,稱為立即數(shù),用“”表示。 MCS-51 如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245H,8086/8088 MOV AL,80H MOV AL,0F5H MOV BX,1245H,操作數(shù)存

39、在程序存儲器中,3.2.2 直接尋址 Direct Addressing 直接使用數(shù)所在單元的地址找到了操作數(shù),所以稱 這種方法為直接尋址。 操作數(shù)在SFR、內(nèi)部RAM、位地址空間。 如: MOV A,00H MOV C,60H MOV A,0F0H,8086/8088CPU MOV AL,2000H,3.2.3 寄存器尋址 Register Addressing,對選定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR中的數(shù)進行操作。 例:MOV A,R0;將R0工作寄存器中的數(shù)據(jù)送到累加器A中去。,提一個問題:我們知道,工作寄存器就是內(nèi)存單元的一部分,如果我們選擇工作寄存器組

40、0,則R0就是RAM的00H單元,那么這樣一來,MOV A,00H 和 MOV A,R0不就沒什么區(qū)別了嗎?,MOV AL,BL (8086CPU的寄存器尋址方式),的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將00H單元中的內(nèi)容送到A中去,但是執(zhí)行的過程不同,執(zhí)行第一條指令需要2個機器周期,而第二條則只需要1個機器周期,第一條指令變成最終的目標碼要兩個字節(jié)(E5H 00H),而第二條則只要一個字節(jié)(E8H)就可以了。,3.2.4 寄存器間接尋址 Register Indirect Addressing,把地址放在另外一個寄存器中,根據(jù)這個寄存器中的數(shù)值決定該到哪個單元中取數(shù)據(jù)。 R0,R1-

41、8位地址,片內(nèi)低128字節(jié)或片外 DPTR-16位,片外64KB MCS-51 如:MOV A,R0 MOVX A,R0 MOVX A,DPTR,8086/8088CPU MOV AL,BX MOV AX,SI,操作數(shù)在片內(nèi)RAM中,操作數(shù)在片外RAM中,操作數(shù)在片外RAM中,以DPTR或PC為基址寄存器,累加器A為變址寄存器。把兩者內(nèi)容相加,結(jié)果作為操作數(shù)的地址。 常用于查表操作。 MCS-51 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC; PC+1 PC,(A+PC)A,3.2.5 變址尋址(基址+變址),Base-Register-plus-Index

42、-Register-Indirect Addressing,8086/8088CPU MOV AL,BX+SI MOV AX,BP+DI,操作數(shù)在程序存儲器中,如:MOVC A,A+DPTR 設(shè)DPTR=2000H,A=E0H,20E0H,47,指令代碼,如:MOVC A,A+PC 設(shè)A=E0H,2121H,45,當前PC,指令代碼,3.2.6 相對尋址,將PC中的當前內(nèi)容與指令第二字節(jié)給出的數(shù)相加,結(jié) 果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地址)。 PC中的當前內(nèi)容稱為基地址(本指令后的字節(jié)地址) 指令第二字節(jié)給出的數(shù)據(jù)稱為偏移量,1字節(jié)帶符號數(shù). 常用于跳轉(zhuǎn)指令。 如: JC 23H 若C=0

43、,不跳轉(zhuǎn); C=1,跳轉(zhuǎn).,Relative Addressing,改變PC,如:JC 23,1025H,23H,1002H,指令代碼,當前PC,對片內(nèi)RAM的位尋址區(qū)和某些可位尋址的特殊功能寄存器進行位操作時的尋址方式。 如: SETB 3DH; 將27H.5位置1 CLR C ;Cy位清0 8086/8088CPU 無此尋址方式,3.2.7 位尋址 Bit Addressing,操作數(shù)在片內(nèi)RAM位地址區(qū)或SFR某些位中,尋址方式涉及的存儲器空間,3.3 數(shù)據(jù)傳送類指令(29條) Data Transfer Instruction,MCS-51 助記符: 8086/8088 助記符: MO

44、V、MOVX、MOVC MOV XCH、XCHD、SWAP XCHG PUSH、POP PUSH、POP 源操作數(shù)尋址方式(5種): 立即尋址、直接尋址、寄存器尋址、 寄存器間接尋址、變址尋址。 目的操作數(shù)尋址方式(3種): 直接尋址、寄存器尋址、寄存器間接尋址 除了目的操作數(shù)為ACC的指令影響奇偶標志P外,一般不影響 標志位。,3.3.1 以累加器為目的操作數(shù)的指令(4條),MOV A,Rn ;RnA MOV A,direct;(direct)A MOV A,Ri ;(Ri)A MOV A,#data;dataA 將源操作數(shù)指定內(nèi)容送到A中。,3.3.2 以寄存器Rn為目的操作數(shù)的指令 (3

45、條),MOV Rn,A MOV Rn,direct MOV Rn,#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入當前工作寄存器,源操作數(shù)不變。,3.3.3 以直接地址為目的操作數(shù)的指令(5條),MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入由直接地址指出的片內(nèi)存儲單元RAM中。 例: MOV 20H,A MOV 20H,R1 MOV 20H,30H MOV 20H,R1 MOV 0A0H,#34H MOV P2,#34H,3.3.4 以間接地址

46、為目的操作數(shù)的指令(3條),MOV Ri,A ;A (Ri) MOV Ri,direct;(direct) (Ri) MOV Ri,#data; data (Ri) 功能:把源操作數(shù)指定的內(nèi)容送入以R0或R1為地址 指針的片內(nèi)存儲單元RAM中。 例:MOV R0,A MOV R1,20H MOV R0,#34H,3.3.5 十六位數(shù)的傳遞指令(1條),MOV DPTR,#data16 8051是一種8位機,這是唯一的一條16位立即數(shù)傳遞指令。功能:將一個16位的立即數(shù)送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 執(zhí)行完了之后DPH中的值為12H

47、,DPL中的值為34H。 如果我們分別向DPH,DPL送數(shù),則結(jié)果也一樣。 如下面兩條指令: MOV DPH,#35H MOV DPL,#12H。 則就相當于執(zhí)行了 MOV DPTR,#3512H。,3.3.6 累加器A與片外RAM之間的數(shù)據(jù)傳遞類指令(4條),MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A 說明: 1.在51中,與外部存儲器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的數(shù)據(jù)必需要通過A送去,而所有要讀入的外部 RAM中的數(shù)據(jù)也必需通過A讀入。 在此我們可以看出內(nèi)外部RAM的區(qū)別了,內(nèi)部RAM間可以直接進行數(shù)據(jù)的傳遞,而外部則

48、不行。 比如,要將外部RAM中某一單元(設(shè)為0100H單元的數(shù)據(jù))送入另一個單元(設(shè)為0200H單元),也必須先將0100H單元中的內(nèi)容讀入A,然后再送到0200H單元中去。,2.要讀或?qū)懲獠康腞AM,當然也必須要知道RAM的地址,在后兩條指令中,地址是被直接放在DPTR中的。而前兩條指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口來提供。 3.使用時應(yīng)先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用讀寫命令。 例:將外部RAM中100H單元中的內(nèi)容送入外部RAM中200H單元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR

49、,#0200H MOVX DPTR,A,3.3.7 讀程序存儲器指令(2條),MOVC A,A+DPTR MOVC A,A+PC 本組指令是將ROM中的數(shù)送入A中。本組指令也被稱為查表指令,常用此指令來查一個已做好在ROM中的表格 說明:查找到的結(jié)果被放在A中,因此,本條指令執(zhí)行前后,A 中的值不一定相同。 例:有一個數(shù)在R0中,要求用查表的方法確定它的平方值(此 數(shù)的取值范圍是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR . ORG 0100H(用偽指令ORG指示隨后的指令從這一地址開始 存放) DB 0,1,4,9,16,25,如果R0中的值為2,則

50、最終地址為100H+2為102H,到102H單元中找到的是4。,3.3.8 堆棧操作(2條),PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一條為壓入指令,就是將direct中的內(nèi)容送入堆棧中,第二條為彈出指令,就是將堆棧中的內(nèi)容送回到direct中。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B 則執(zhí)行第一條PUSH ACC指令是這樣的:將SP中的值加1,即變?yōu)?0H,然后將A中的值送到60H單元中,因此執(zhí)行完本條指令后,內(nèi)存60H單元的值就是1

51、00,同樣,執(zhí)行PUSH B時,是將SP+1,即變?yōu)?1H,然后將B中的值送入到61H單元中,即執(zhí)行完本條指令后, 61H單元中的值變?yōu)?0。,3.3.9 交換指令(5條),XCH A,Rn ;ARn XCH A, direct ;A(direct) XCH A, Ri ;A(Ri) XCHD A, Ri ;A.3A.0(Ri).3(Ri).0 SWAP A ;A.3A.0A.7A.4 例: 已知A中的內(nèi)容為34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0,;R6=29H ;A=29H,R6=34H ;A=92H ;A=34H,R6=

52、92H ;A=36H,(R0)=54H (設(shè)原來R0 ;指向的單元的內(nèi)容為56H),(40H)= H 50H = H A= H (41H)= H 51H= H R0= H,課堂練習,1.設(shè):內(nèi)部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,執(zhí)行下列片段后:,MOV R0,40H MOV A,R0 INC R0 MOV R0,A,b. MOV R0,#40H MOV A,R0 INC R0 MOV A,R0,;R0=50H ;A=30H ;R0=51H ;(51H)=30H,;R0=40H ;A=50H ;(40)=51H ;A=51H,2.給出每條

53、指令執(zhí)行后的結(jié)果,MOV 23H,#30H MOV 12H,#34H MOV R0,#23H MOV R7,12H MOV R1,#12H MOV A,R0 MOV 34H,R1 MOV 45H,34H MOV DPTR,#6712H MOV 12H,DPH MOV R0,DPL MOV A,R0,;(23H)=30H ;(12H)=34H ;R0=23H,;R7=34H ;R1=12H ;A=30H,;(34H)=34H ;(45H)=34H ;DPTR=6712H,;(12H)=67H ;R0=12H ;A=67H,內(nèi)部RAM,3.利用傳送類指令并用多種方法將內(nèi)部RAM中50H單元的內(nèi)容與

54、40H單元的內(nèi)容互換。,3.4 算術(shù)運算類指令(24條) Arithmetic Operations,主要對8位無符號數(shù);也可用于帶符號數(shù)運算。 包括:加、減、乘、除、加1、減1運算指令 影響PSW有關(guān)位。,3.4.1 加法指令,ADD A,#data ; AdataA ADD A,direct ; A(direct )A ADD A,Rn ; ARnA ADD A,Ri ; A(Ri)A 用途:將A中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié)果 存在A中。,1.不帶進位位的加法指令(4條),例1:ADD A,#47H ADD A,34H ADD A,R7 ADD A,R0,例2: MOV A,#0A

55、EH ADD A,#81H 則執(zhí)行完本條指令后,A中的值為2FH; C=1,AC=0,OV=1,P=1。 對無符號數(shù):結(jié)果為12FH;,2.帶進位位的加法指令(4條),ADDC A,Rn; ARnCYA ADDC A,direct; A(direct )CYA ADDC A,Ri; A(Ri)CYA ADDC A,#data; AdataCYA 用途:將A中的值和其后面的值以及進位位C中的值相加, 最終結(jié)果存在A,常用于多字節(jié)數(shù)運算中。 說明:由于51單片機是一種8位機,所以只能做8位的數(shù)學運算,但8位運算的范圍只有0255,這在實際工作中是不夠的,因此就要進行擴展,一般是將2個8位(兩字節(jié))

56、的數(shù)學運算合起來,成為一個16位的運算,這樣,可以表達的數(shù)的范圍就可以達到065535。,例:,先做67H+A0H=107H,而107H顯然超過了0FFH,因此最終保存在A中的是07H,而1則到了PSW中的CY位了。換言之,CY就相當于是100H。 然后再做10H + 30H + CY,結(jié)果是41H,所以最終的結(jié)果是4107H。,1067H+30A0H,0001 0000 0110 0111,0011 0000 1010 0000,0100 0001 0000 0111,1067H,30A0H,4107H,設(shè):1067H存在R1R0中, 30A0H存在R3R2中,計算R1R0+R3R2,結(jié)果存

57、在R5R4中。,MOV A,R0 ADD A,R2 ;R0+R2A和CY MOV R4,A MOV A,R1 ADDC A,R3 ;R1+R3+CYA和CY MOV R5,A,又例:,先做67H+20H=87H,沒有超過0FFH,因此最終保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,結(jié)果是40H,所以最終的結(jié)果是4087H。,1067H+3020H,0001 0000 0110 0111,0011 0000 0010 0000,0100 0000 1000 0111,1067H,3020H,4087H,設(shè):1067H存在R1R0中, 3020H存在R3R2

58、中,計算R1R0+R3R2,結(jié)果存在R5R4中。,3. 加1指令(5條),INC A;A+1A,影響P標志 INC Rn;Rn+1Rn INC direct;(direct)+1(direct) INC Ri;(Rn)+1(Rn) INC DPTR;DPTR+1DPTR 功能很簡單,就是將后面目標中的值加1。,例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。 連續(xù)執(zhí)行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR,; A=13H ; R0=34H ;(21H)=33H ;(34H)=23H ; DPTR=1235H,DA A 在進行BCD碼加法運算時,跟在ADD和ADDC指令之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論