《單片機原理及應(yīng)用》電子課件
《《單片機原理及應(yīng)用》電子課件》由會員分享,可在線閱讀,更多相關(guān)《《單片機原理及應(yīng)用》電子課件(464頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單片機原理及應(yīng)用,主講人:袁凌峰,電 話:2066266 E-mail:yuan_,第1章 單片機概述,本章重點: 1、什么是單片機 2、單片機的分類及特點 3、 什么是嵌入式系統(tǒng),1.1 單片機概況,1.1.1 什么是單片機,單片機 是單片微型計算機的簡稱。將計算機的CPU、RAM、ROM、定時/計數(shù)器和多種IO接口集成在一片芯片上,形成了芯片級的計算機。 單片機早期的含義稱為單片微型計算機(single chip microcomputer),直譯為單片機。,準(zhǔn)確反映單片機本質(zhì)的叫法應(yīng)該是微控制器MicroController Unit (MCU)或Micr
2、oProcesser Unit(MPU),單片機也稱為嵌入式微處理器(Embedded MicroProcesser) 或嵌入式微控制器(Embedded MicroController),1.1.2 單片機的發(fā)展簡史及未來,初級階段:1974-1978年。代表芯片Intel公司的MCS-48系列,Motorola公司的6801系列和Zilog公司的Z8系列。 高性能階段:1978-1983年。代表芯片Intel公司的MCS51系列。 8位單片機鞏固提高階段:1983年-現(xiàn)今。這一階段一方面不斷完善8位單片機,另一方面發(fā)展16位、32位機。,單片機的發(fā)展趨勢:8位機是主流,未來是8位機與32位
3、機共同發(fā)展的時代。,單片機從結(jié)構(gòu)功能上的發(fā)展趨勢: 1、大容量高性能化 2、小容量低價格化 3、外圍電路內(nèi)裝化 4、RISC結(jié)構(gòu)取代CISC結(jié)構(gòu),1.1.3 單片機的分類及特點,1、分類,(1)按指令集分類 復(fù)雜指令集(CISC)結(jié)構(gòu)普林斯頓結(jié)構(gòu) 精簡指令集(RISC)結(jié)構(gòu)哈佛結(jié)構(gòu),(2)按半導(dǎo)體工藝分 高密度短溝道MOS工藝HMOS 互補金屬氧化物HMOS工藝CHMOS,(3)按片內(nèi)程序存儲器類型分 無ROM型、QTP型、EPROM型、OTP型和Flash型,(4)按字長分 1位、4位、8位、16位、32位、64位,2、單片機的特點,(1)優(yōu)異的性價比,(2)集成度高
4、、體積小、可靠性高,(3)控制功能強,(4)低電壓、低功耗,1.1.4 單片機的應(yīng)用,1、在智能儀器儀表中的應(yīng)用,2、在工業(yè)方面的應(yīng)用,3、在電信中的應(yīng)用,4、在軍用導(dǎo)航方面的應(yīng)用,5、在日常生活中的應(yīng)用,6、在其它方面的應(yīng)用,1.2 常用8位系列單片機簡介,1.2.1 Intel公司8位系列單片機,1.2.2 89系列單片機,1、AT89系列(美國Atmel公司),2、P89系列(Philiips公司),特點:126時鐘模式,支持ISP,1.2.3 W78E51系列(臺灣華邦公司),1.2.4 M68HC08系列(Motorola公司),Motorola公司單片機命名方法,指令系統(tǒng)與MCS-
5、51不同,1.2.5 PIC系列(美國Microchip公司),1.3 單片機與嵌入式系統(tǒng)簡介,1.3.1 什么是嵌入式系統(tǒng),嵌入式系統(tǒng)就是將計算機系統(tǒng)按特定的要求嵌入到實際應(yīng)用系統(tǒng)中。,嵌入式系統(tǒng)一般是指非PC機系統(tǒng),它由硬件和軟件兩大部分組成。硬件包括微處理器MCU、存儲器、I/O端口及外設(shè)、圖形控制器等;軟件包括操作系統(tǒng)(OS或?qū)崟r多任務(wù)操作系統(tǒng))、應(yīng)用程序系統(tǒng)、或稱監(jiān)控程序系統(tǒng)等。,1.3.2 嵌入式計算機系統(tǒng)與通用型計算機的特點,1. 嵌入式系統(tǒng)是面向特定的應(yīng)用,2. 嵌入式系統(tǒng)是知識集成系統(tǒng),3. 嵌入式系統(tǒng)的硬、軟件必須具有高效率,4. 嵌入式系統(tǒng)和實際應(yīng)用有機地結(jié)合在一起,5.
6、 嵌入式系統(tǒng)的軟件固化于內(nèi)部存儲器中,6. 嵌入式系統(tǒng)本身無自舉開發(fā)能力,1.3.3 嵌入式系統(tǒng)的發(fā)展趨勢,1. 嵌入式系統(tǒng)應(yīng)用軟件的開發(fā)需要強大的開發(fā)工具和操作系統(tǒng)的支持,2. 聯(lián)網(wǎng)成為發(fā)展的必然趨勢,3. 支持小型電子設(shè)備實現(xiàn)小尺寸、微功耗和低成本,4. 應(yīng)能提供精巧的多媒體人機界面,1.4 常用單片機開發(fā)工具,1.4.1 Keil51 集成開發(fā)環(huán)境,目前常用版本Vision3 V3.31。特點: 1、集成開發(fā)環(huán)境,源程序編輯、編譯、鏈接、調(diào)試均在集成環(huán)境下 2、支持多種處理器(包括ARM) 3、支持C語言和匯編語言 4、支持源程序調(diào)試 5、支持硬件仿真器 6、支持軟件仿真器,Keil 軟
7、件的啟動畫面,利用Keil 集成開發(fā)環(huán)境調(diào)試程序,1.4.2 Proteus仿真軟件,目前版本 V7.2SP1 ,用的較多的版本是V6.7SP3和V7.12 特點: 1、可以實現(xiàn)單片機、接口芯片的電路仿真,非常適用于教學(xué)和產(chǎn)品開發(fā)的前期階段。 2、與MutsimEWB功能相當(dāng),但比其小巧,V6.7SP3壓縮包僅18.5M。并且可以實現(xiàn)多種單片機(MCS-51、PIC系列、ARM系列)的仿真和程序調(diào)試。 3、對計算機的硬件要求非常低(賽揚2.0 256M內(nèi)存),利用Proteus軟件在進(jìn)行數(shù)字電壓表的調(diào)試和仿真,1.4.3 有關(guān)網(wǎng)站和參考書,電子開發(fā)網(wǎng): 單片機開發(fā)
8、工具網(wǎng): 力源信息: 成都力源單片機技術(shù)有限公司: 周立功單片機: Proteus仿真社區(qū): ,參考書: 單片機原理及應(yīng)用 萬文略主編 重慶大學(xué)出版社 單片機原理及接口技術(shù) 李朝青編著 北京航空航天大學(xué)出版社 Proteus入門實用教程 周潤景 張麗娜 劉印群 編著 機械工業(yè)出版社,小 結(jié),單片機,是單片微型計算機的簡稱。將計算機的CPU、RAM、ROM、定時/計數(shù)器和多種IO接口集成在一片芯片上,形成了芯片級的計算機。,嵌入式系統(tǒng)就是將計算機系統(tǒng)按特定的要求嵌入到實際應(yīng)用系統(tǒng)中。嵌入式系統(tǒng)一般是指非PC機系統(tǒng),它由硬件和軟件兩大部分組成。,作 業(yè),教材
9、:P17 1-1,1-4,1-6 1-1、什么叫單片機?它有哪些特點? 1-4、單片機主要應(yīng)用在哪些方面? 1-6、什么叫嵌入式系統(tǒng)?它與單片機的關(guān)系如何?,第二章單片機內(nèi)部結(jié)構(gòu)及原理,本章要點 MCS5152系列CPU內(nèi)部結(jié)構(gòu)特點 MCS5152系列單片機存儲器的結(jié)構(gòu) MCS-5152系列單片機I/O端口結(jié)構(gòu)及驅(qū)動能力,使用時的注意事項 MCS5152系列單片機存儲器空間結(jié)構(gòu)及位尋址空間,2.1 Intel公司的MCS-51/52系列單片機內(nèi)部結(jié)構(gòu)原理,2.1.1 MCS-51/52系列單片機CPU的結(jié)構(gòu),MCS-51/52系列單片機內(nèi)部由一個8位CPU、128256B數(shù)據(jù)存儲器、程序存儲器
10、、23個16位定時器、4個8位的可編程I/O端口和可編程全雙工UART串行口等組成。,1 控制器,控制器由程序計數(shù)器 (PC,16位)、指令寄存器(IR,8位) 、指令譯碼器(ID)、定時控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進(jìn)行譯碼,通過定時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的全部內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的功能。,2 運算器,運算器由算術(shù)邏輯單元ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW、BCD碼運算調(diào)整電路等組成。,(1) 累加器ACC ACC是一個8位的寄存器,簡稱為A,它通過暫存器與ALU相連。它是CPU執(zhí)行指令時
11、使用最頻繁的寄存器,用來存一個操作數(shù)或中間結(jié)果。,(2) 算術(shù)邏輯單元ALU ALU是由加法器和其它邏輯電路等組成的,它用于對數(shù)據(jù)進(jìn)行算術(shù)四則運算和邏輯運算、移位操作、位操作等功能。ALU的兩個操作數(shù),一個由A通過暫存器2輸入,另一個由暫存器1輸入,運算結(jié)果的狀態(tài)送PSW。,(3) 程序狀態(tài)字寄存器PSW PSW是一個8位的專用寄存器,用于存程序運行中的各種狀態(tài)信息。它可以進(jìn)行位尋址。PSW各位的定義如下:,PSW位地址 字節(jié)地址D0H,CY(PSW. 7): 進(jìn)位標(biāo)志,在進(jìn)行加或減運算時,如果操作結(jié)果最高位有進(jìn)位或借時,CY由硬件置“1”,否則清“0”。在進(jìn)行位操作時,CY又可以
12、被認(rèn)為是位累加器,它的作用相當(dāng)于CPU中的累加器A。 AC(PSW.6): 輔助進(jìn)位標(biāo)志(又稱半進(jìn)位),在進(jìn)行加或減運算時,低四位數(shù)向高四位產(chǎn)生的進(jìn)位或借位,將由硬件置“1”,否則清“0”。AC位可用于BCD碼調(diào)整時的判斷位。 F0(PSW.5): 用戶標(biāo)志位,由用戶置位或復(fù)位。它可作為用戶自行定義的一個狀態(tài)標(biāo)記。 RS1 RS0(PSW.4 PSW.3): 工作寄存器組指針,用以選擇CPU當(dāng)前工作的寄存器組。,RS1 RS0與工作寄存器組的對應(yīng)關(guān)系,OV(PSW.2): 溢出標(biāo)志,當(dāng)進(jìn)行算術(shù)運算時,如果產(chǎn)生溢出,則由硬件將OV位置1,否則清“0”。 當(dāng)執(zhí)行有符號數(shù)的加法指令A(yù)DD
13、或減法指令SUBB時,當(dāng)D6位有向D7位的進(jìn)位或借位時 D6CY=1時,而D7位沒有向CY位的進(jìn)位或借位D7CY =0時,則OV=1或D6CY =0,D7CY=1則OV=1所以溢出的邏輯表達(dá)式為: OV= D6CY D7CY F1(PSW.1): 用戶標(biāo)志位,同F(xiàn)0。 P(PSW.0): 奇偶標(biāo)志位,該位始終跟蹤累加器A內(nèi)容中“1”的奇偶性。當(dāng)累加器A內(nèi)容中有奇數(shù)個“1”時,P置1;否則,P置“0”。改變累加器A中內(nèi)容的指令均會影響P標(biāo)志位。,2.1.2 MCS-51/52單片機存儲器結(jié)構(gòu),1 MCS-51/52單片機存儲器劃分方法,2 程序存儲器 MCS-51/52單片
14、機的程序存儲器一般用于存放編好的程序、表格和常數(shù)。8051片內(nèi)有4KB的ROM,8751片內(nèi)有4KB的EPROM,8031片內(nèi)無程序存儲器,8052片內(nèi)有8KB的ROM,8752片內(nèi)有8KB的EPROM,8032片內(nèi)無程序存儲器。 當(dāng)EA=1時,PC在00FFFH范圍內(nèi)執(zhí)行片內(nèi)ROM中的程序;PC在1000H0FFFFH范圍內(nèi)執(zhí)行片外ROM中的程序。 當(dāng)EA0時,PC在00FFFFH,64k范圍內(nèi)執(zhí)行片外ROM中的程序。,MCS-51/52單片機的程序存儲器中有7個特殊地址單元。 0000H: MCS-5152單片機復(fù)位后PC=0000H,即程序從0000H開始執(zhí)行指令。 0003H:
15、 外部中斷0入口地址 000BH: 定時器0溢出中斷入口地址 0013H: 外部中斷1入口地址 001BH: 定時器1溢出中斷入口地址 0023H: 串行口中斷入口地址 002BH: 定時器2溢出,T2EX(P1.1)端負(fù)跳變時的入口地址(僅對52子系列單片機所具有)。,,,3 數(shù)據(jù)存儲器 數(shù)據(jù)存儲器用于存放運算中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位、待調(diào)試的程序等。數(shù)據(jù)存儲器在物理上和邏輯上都分為兩個地址空間:一個是片內(nèi)128/256字節(jié)的RAM,另一個是片外最大可擴充64K字節(jié)的RAM。訪問片內(nèi)RAM使用MOV指令,訪問片外RAM使用MOVX指令。 對片外RAM只能采用間接尋址方式
16、,用R0、R1和DPTR作為間址寄存器;前兩者是低8位地址指針,尋址范圍為256B,而DPTR是16位地址指針,故尋址范圍可達(dá)64K字節(jié)。 片內(nèi)數(shù)據(jù)存儲器在物理上又可分為二個不同的區(qū):,(1)00H7FH(0127)單元組成低128字節(jié)的片內(nèi)RAM區(qū),對其訪問可采用直接尋址或間接尋址的方式 。其中:01FH共32個單元分為4組,每組8個單元組成工作寄存器R0R7;20H2FH共16個字節(jié)、128個位的地址為007FH;30H7FH共80個單元,為用戶RAM區(qū),做為堆棧或數(shù)據(jù)緩沖。,(2)80HFFH(128256)單元組成高128字節(jié)的專用寄存器(SFR)區(qū),只能采用直接尋址方式來訪問。
17、 (3)MCS-52子系列中的片內(nèi)RAM增大了128字節(jié),其地址范圍也是從80HFFH ;為了與SFR區(qū)分,對此段的范圍只能采用間接尋址方式來訪問。,4 專用寄存器SFR MCS-51/52中共有23個專用寄存器SFR(又稱特殊功能寄存器),其中3個僅52子系列單片機所擁有,5個是雙字節(jié)寄存器,11個具有位尋址能力(特點:字節(jié)地址可以被8整除),這些專用寄存器離散地分布在片內(nèi)RAM的高128字節(jié)地址中。專用寄存器并未占滿80HFFH整個地址空間,對空閑地址的操作是無意義的。若訪問到空閑地址,則讀入的是隨機數(shù)。,單片機特殊功能寄存器SFR,注意:系統(tǒng)復(fù)位后,(SP)07H,P0P3為0FF
18、H,SBUF內(nèi)容不定,IP、IE、PCON部分位的值不確定外,其余寄存器內(nèi)容均為0.,2.1.3 MCS-51/52系列單片機引腳及功能,下面分別說明各主要引腳的功能: 1. 主電源引腳Vss和Vcc Vss(20腳):接地 Vcc(40腳):主電源+5V,正常操作和對EPROM編程及驗證時均接+5V電源。 2. 外接晶振引腳XTAL1和XTAL2 XTAL1(19腳)和XTAL2(18腳):接外部晶振的兩個引腳。,3. 控制信號引腳 RSTVPD (9腳):單片機復(fù)位備用電源引腳。 ALEPROG(30腳):當(dāng)訪問片外存儲器時,ALE(地址鎖存允許)的輸出用于鎖存
19、低字節(jié)地址信號。當(dāng)CPU不訪問外部RAM時,該引腳輸出晶振頻率1/6頻率的正脈沖信號。對于EPROM型單片機,該引腳在編程期間用于輸入編程脈沖。 PSEN(29腳):輸出訪問片外程序存儲器的讀選通信號。 EAVpp(31腳):當(dāng)該輸入端輸入高電平時,CPU可訪問片內(nèi)程序存儲器4KB或8KB的地址范圍。若PC值超出4KB/8KB地址時,將自動轉(zhuǎn)向訪問片外程序存儲器。當(dāng)EA輸入低電平時,則只能訪問片外程序存儲器,不論片內(nèi)是否有程序存儲器。對于EPROM型單片機(8751),在對EPROM 編程期間,此引腳用于施加+21V的編程電壓Vpp。 注意:ALE和PSEN引腳的驅(qū)動能力均為8個L
20、STTL負(fù)載。,,,,,,4. 輸入輸出引腳P0、P1、P2、P3 P0.0P0.7(3932腳):P0口是一個8位漏極開路型準(zhǔn)雙向IO端口。在訪問片外存儲器時,它分時做低8位地址總線和8位雙向數(shù)據(jù)總線(AD0 AD7)。在EPROM編程時,由P0口輸入指令字節(jié);而在驗證程序時,則輸出指令字節(jié)。驗證程序時和做為雙向I/O端口一樣,要求外接上拉電阻。P0口能以吸收電流的方式驅(qū)動8個LSTTL負(fù)載。 P1.0P1.7(18腳):P1口是一個帶內(nèi)部弱上拉電阻的8位準(zhǔn)雙向IO口。在EPROM編程和驗證程序時,由它輸入低8位地址。P1能驅(qū)動4個LSTTL負(fù)載。 在52子系列單片機中,P1.0
21、還相當(dāng)于專用功能端T2,即定時器的計數(shù)輸入/時鐘輸出端;P1.1還相當(dāng)于專用功能端T2EX,即定時器T2的重裝載/捕捉/方向等外部控制端。 P2.0P2.7(2128腳):P2口是一個帶內(nèi)部弱上拉電阻的8位準(zhǔn)雙向IO口。在訪問外部存儲器時,由它輸出高8位地址(A8 A15)。在對EPROM編程和程序驗證時,由它輸入高8位地址。P2可以驅(qū)動4個LSTTL負(fù)載。 P3.0P3.7(1017腳):P3口是一個帶內(nèi)部弱上拉電阻的準(zhǔn)雙向IO口。在MCS-51/52中,這8個引腳還用于專門的第二功能,見下表。P3口能驅(qū)動4個LSTTL負(fù)載。,P3口的第二功能表,小 結(jié),1、51系列單片機是8位機。
22、52系列與51系列的差別。 2、51系列單片機得存儲器在物理上分為4個存儲空間,在邏輯上分為3個存儲空間。 3、程序存儲器中7個特殊的單元。 4、內(nèi)部RAM 07FH根據(jù)用途不同分為3個空間。 5、SFR的地址范圍在內(nèi)部RAM 80H0FFH空間內(nèi),其中部分寄存器可以位尋址。 6、系統(tǒng)復(fù)位后各個寄存器的值。 7、單片機各引腳的功能及其驅(qū)動能力。,2-2、 MCS5152系列單片機內(nèi)部包含哪些主要邏輯功能部件? 2-4、 MCS5152單片機的存儲器從物理上和邏輯上分別可劃分幾個空間? 2-6、 MCS51單片機片內(nèi)256B的數(shù)據(jù)存儲器可分為幾個區(qū)?分別做什么用? 2-10、程序狀態(tài)寄存器PSW
23、的作用是什么?常用狀態(tài)有哪些位?作用是什么?,作 業(yè),教材P41 2-2,2-4,2-6,2-10,2.1.4 單片機IO端口結(jié)構(gòu),1 P0口的結(jié)構(gòu)及功能,(1) P0口結(jié)構(gòu) 它由1個輸出鎖存器、2個三態(tài)輸入緩沖器、1個輸出驅(qū)動電路和1個輸出控制電路組成。輸出驅(qū)動電路由一對FET(場效應(yīng)管)組成,其工作狀態(tài)受輸出控制電路的控制;輸出控制電路由一個與門電路,1個反相器和1個路多路開關(guān)MUX組成,(2) P0口的功能 P0口做一般IO口使用時 多路開關(guān)MUX的位置由CPU發(fā)出的控制信號決定。當(dāng)P0口做IO端口使用時,CPU內(nèi)部發(fā)出控制電平0信號封鎖與門,使輸出上拉場效管T1截止,同時多
24、路開關(guān)把輸出鎖存器Q端與輸出場效應(yīng)管T2的柵極接通。此時P0即做通用的IO口使用。 當(dāng)P0口做輸出口時:內(nèi)部數(shù)據(jù)總線上的信息由寫脈沖鎖存至輸出鎖存器,輸入D=0時,Q0而Q1,T2導(dǎo)通,P0口引腳輸出“0”;當(dāng)D=1時,Q1而Q0,T2截止,P0口引腳輸出1。輸出驅(qū)動級是漏極開路電路,若要驅(qū)動NMOS或其他拉電流負(fù)載時,需外接上拉電阻。P0口中的輸出可以驅(qū)動8個LSTTL負(fù)載。,,,,P0口做輸入口時:端口中有2個三態(tài)輸入緩沖器用于讀操作。其中輸入緩沖器2的輸入與端口引腳相連,故當(dāng)執(zhí)行一條讀端口輸入指令時,產(chǎn)生讀引腳的選通將該三態(tài)門打開,端口引腳上的數(shù)據(jù)經(jīng)緩沖器2讀入內(nèi)部數(shù)據(jù)總線。 輸入緩
25、沖器1并不能直接讀取端口引腳上的數(shù)據(jù),而是讀取輸出鎖存器Q端的數(shù)據(jù)。Q端與引腳處的數(shù)據(jù)是一致的。結(jié)構(gòu)上這樣的安排是為了適應(yīng)“讀-修改-寫”一類指令的需要。 端口進(jìn)行輸入操作前,應(yīng)先向端口輸出鎖存器寫入“1”,使Q=0則輸出級的兩個FET管均截止,引腳處于懸空狀態(tài),變?yōu)楦咦杩馆斎?。這就是所謂的準(zhǔn)雙向I/O口。單片機的P0P3都是準(zhǔn)雙向IO口。,, P0口做地址數(shù)據(jù)總線復(fù)用時 在擴展系統(tǒng)中,P0端口做為地址數(shù)據(jù)總線使用,此時可分為兩種情況: 一種是以P0口引腳輸出地址數(shù)據(jù)信息。 另一種情況由P0口輸入數(shù)據(jù),此時輸入的數(shù)據(jù)是從引腳通過輸入緩沖器2進(jìn)入內(nèi)部總線。 當(dāng)P0口做地址/數(shù)據(jù)總線復(fù)用
26、時,它就不能再做通用I/O口使用了。,2 P1口的結(jié)構(gòu)及功能 (1) P1口結(jié)構(gòu) P1口也是一個準(zhǔn)雙向IO口,其結(jié)構(gòu)見圖所示。 P1口在結(jié)構(gòu)上與P0口的區(qū)別是:沒有多路開關(guān)MUX和控制電路部分;輸出驅(qū)動電路部分與P0也不相同,只有一個FET場效應(yīng)管,同時內(nèi)部帶上拉電阻,此電阻與電源相連。,(2) P1口的功能 P1口可做通用雙向IO口使用,當(dāng)P1口輸出高電平時,能向外部提供拉電流負(fù)載,因此不必再外接上拉電阻。當(dāng)端口用做輸入時,和P0口一樣,為了避免誤讀,必須先向?qū)?yīng)的輸出鎖存器寫入“1”,使FET截止。然后再讀端口引腳。 在52子系列單片機和89系列單片機中,P1.0和P1.
27、1是多功能位。除做一般雙向IO口外,P1.0還可以做為定時器計數(shù)器2的外部輸入端,這時此引腳以T2來表示;P1.1還可做為定時器計數(shù)器2的外部控制輸入,以T2EX來表示。,3P2口的結(jié)構(gòu)及功能 (1) P2口的結(jié)構(gòu) P2口的位結(jié)構(gòu)中上拉電阻的結(jié)構(gòu)與P1相同,但比P1口多了一個輸出轉(zhuǎn)換多路控制部分。 (2) P2口的功能 當(dāng)多路開關(guān)MUX倒向鎖存器輸出Q端時,構(gòu)成了一個準(zhǔn)雙向IO口此時P2做通用的IO口用。P2引腳的數(shù)據(jù)與內(nèi)部總線相同。當(dāng)系統(tǒng)擴展有大于256字節(jié)64K字節(jié)的外部存儲器時,在CPU的控制下,轉(zhuǎn)換開關(guān)MUX倒向內(nèi)部地址線一端,此時P2口可用于輸出高8位的地址。因為訪問
28、外部存儲器的操作是連續(xù)不斷的,P2口要不斷輸出高8位地址,故此時P2口不可能再做通用IO口使用。,4P3口的結(jié)構(gòu)及功能 (1) P3口的結(jié)構(gòu) 同樣P3口與P1口的輸出驅(qū)動部分及內(nèi)部上拉電阻相同,比P1口多了一個第二功控制部分的邏輯電路(由一個與非門和一個輸入緩沖器組成)。 (2) P3口的功能 P3口是一個多功能的端口。當(dāng)?shù)诙敵龉δ鼙3指唠娖綍r,打開與非門,鎖存器輸出可以通過與非門送FET管輸出到引腳端,這是做通用IO口的輸出使用情況。輸入時,引腳數(shù)據(jù)通過三態(tài)緩沖器2和3在讀引腳選通控制下進(jìn)入內(nèi)部總線。,P3口除了做通用IO使用外,它的各位還具有第二功能。當(dāng)P3口某一位用于第二功能
29、做輸出時,該位的鎖存器應(yīng)置“1”,打開與非門,第二功能端內(nèi)容通過“與非門”和FET送至端口引腳。當(dāng)做第二功能輸入時,端口引腳的第二功能信號通過緩沖器3送到第二輸入功能端。 總之,無論P3口做通用輸入口還是做第二輸入功能口用,相應(yīng)位的輸出鎖存器和第二輸出功能端都應(yīng)置“1”,使FET截止。P3口的引腳信號輸入通道中有2個緩沖器,當(dāng)做第二輸入功能時,引腳輸入信號取自緩沖器3的輸出;做通用輸入口時輸入信號取自三態(tài)緩沖器2。,5. 端口負(fù)載能力和接口要求 P0口的輸出級與P1P3口的輸出級在結(jié)構(gòu)上是不相同的,因此他們的負(fù)載能力和接口要求也各不相同。 (1) P0口的每一位輸出可驅(qū)動8個LS
30、TTL負(fù)載。P0口在驅(qū)動拉電流和MOS負(fù)載時必須要接上拉電阻。 (2) P1P3口的輸出級均接有內(nèi)部上拉電阻,他們的每一位輸出可以驅(qū)動4個LSTTL負(fù)載。 (3) P0P3口都是準(zhǔn)雙向IO口,做輸入時,必須先向相應(yīng)端口的鎖存器寫入“1”,使驅(qū)動管FET截止。P0口輸入時呈高阻態(tài),而P1P3口內(nèi)部有上拉負(fù)載電阻,當(dāng)系統(tǒng)復(fù)位時,P0P3端口鎖存器全為“1”。,2.3 單片機的振蕩器及時序電路,幾個概念:,指令周期:單片機執(zhí)行一條指令所需的時間。一般由幾個機器周期組成。 機器周期:CPU訪問存儲器一次所需要的時間。機器周期由若干個時鐘周期組成。 時鐘周期(狀態(tài)周期):由2個節(jié)拍構(gòu)成。 節(jié)
31、拍振蕩周期1fosc 單片機的一個機器周期包含6個狀態(tài)周期,即12個振蕩周期。依次用S1P1、S1P2、S2P1、S2P2、S6P1、S6P2表示。,2.3.1 振蕩器和時鐘電路,1. 單片機內(nèi)部時鐘電路 圖為HMOS型單片機的振蕩電路,當(dāng)外接晶振時,C1和C2值通常選擇30pF;外接陶瓷諧振器時,C1和C2的典型值約為47pF。在設(shè)計印刷電路板時,晶體或陶瓷諧振器和電容應(yīng)盡可能安裝在單片機芯片附近,以減少寄生電容,保證振蕩器穩(wěn)定和可靠工作。為了提高溫度穩(wěn)定性,應(yīng)采用NPO電容。C1、C2對頻率有微調(diào)作用,振蕩頻率范圍是1.2MHz12MHz。,2. HMOS型單片機外部時鐘源的接法 對
32、HMOS型單片機,外部振蕩器的信號接至XTAL2端,而內(nèi)部反相放大器的輸入端XTAL1端應(yīng)接地,如圖所示。由于XTAL2端的邏輯電平不是TTL的,故建議外接一個上拉電阻。,3. CHMOS型單片機的外部時鐘源的接法 對CHMOS型的單片機,接線方法與HMOS型的單片機有所不同:外部振蕩器的信號接至XTAL1,而XTAL2不用。左圖是CHMOS型單片機的振蕩電路,右圖是CHMOS型單片機的外部時鐘源的接法圖。,4. 對外部時鐘信號的要求 最小的高電平和低電平持續(xù)時間應(yīng)符合產(chǎn)品技術(shù)的要求(皆為20ns),一般為頻率低于12MHz的方波。這種方式適用于多塊芯片同時工作時,便于同步。,2.3.2
33、 單片機的復(fù)位電路,1. 復(fù)位結(jié)構(gòu) HMOS型單片機的復(fù)位結(jié)構(gòu)見左圖。復(fù)位引腳RSTVPD通過一個施密特觸發(fā)器與單片機復(fù)位電路相連。 CHMOS型的復(fù)位結(jié)構(gòu)見右圖,此處的復(fù)位引腳只是單純地稱為RST,而不是RSTVPD。 振蕩器正在運行的情況下,復(fù)位是靠在RSTVPD或RST引腳加持續(xù)二個機器周期的高電平來實現(xiàn)的。 復(fù)位時, ALE=1和PSEN=1 ,復(fù)位后PC指向0000H。,,2. 復(fù)位電路 單片機的復(fù)位有上電自動復(fù)位和按鈕手動復(fù)位兩種。 上電復(fù)位是利用電容充電來實現(xiàn)的。上電復(fù)位所需的最短時間是振蕩周期建立時間加上2個機器周期時間,在這個時間內(nèi)RSTVPD端的電平應(yīng)維
34、持高于施密特觸發(fā)器的下閾值。,手動復(fù)位分為按鈕脈沖復(fù)位和按鈕電平復(fù)位。 按鈕脈沖復(fù)位電路如下圖所示。由外部提供一個復(fù)位脈沖寬度大于2個機器周期。復(fù)位脈沖過后,由內(nèi)部下拉電阻保證RSTVPD端變?yōu)榈碗娖健?按鈕電平復(fù)位電路如下圖所示。當(dāng)按下復(fù)位按鈕時,電源直接加到RSTVPD端使其為高電平,同時電容通過復(fù)位按鈕放電。復(fù)位按鈕松開后,隨著電容充電電流的減小,逐漸使RSTVPD端恢復(fù)低電平。,小 結(jié),1、P0P3口均為準(zhǔn)雙向口,讀取引腳狀態(tài)時必須先向該引腳寫入“1”。 2、P0口做為I/O口使用時,必須接上拉電阻。 3、P0、P2口做為地址數(shù)據(jù)總線使用后,一般不再做為I/O口使用。 4、P0P3口
35、的驅(qū)動能力。 5、機器周期、狀態(tài)周期、節(jié)拍、振蕩周期的概念。 6、機器周期的構(gòu)成。 7、單片機復(fù)位的條件。 8、單片機使用內(nèi)部時鐘電路時晶振、電容的接法和數(shù)值選擇。 9、單片機的復(fù)位結(jié)構(gòu)。 10、常用的復(fù)位電路及其元器件數(shù)值。,作 業(yè),教材:P41 2-8、2-9、2-12、2-16 2-8、開機復(fù)位后,CPU使用的是哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組? 2-9、單片機的程序存儲器和數(shù)據(jù)存儲器共處同一地址空間為什么不會發(fā)生總線沖突? 2-12、位地址7CH與字節(jié)地址7CH如何區(qū)別?位地址7CH具體在片內(nèi)RAM中什么位置? 2-16、單片機有幾種復(fù)位方法?應(yīng)注
36、意什么事項?,第3章 單片機指令系統(tǒng)及編程舉例,本章要點,1、熟練掌握單片機的尋址方式 2、記憶指令并掌握指令應(yīng)用的方法和技巧 3、了解單片機匯編語言的編程方法和技巧 4、了解偽指令的使用 5、掌握常用程序的編制方法,3.1 指令系統(tǒng)簡介,3.1.1 指令系統(tǒng)概述,指令是計算機根據(jù)人的意圖所執(zhí)行的操作命令,是與計算機內(nèi)部結(jié)構(gòu)、硬件資源密切聯(lián)系的,某種計算機所有指令的集合稱為指令系統(tǒng)。 MCS-51/52系列單片機的指令系統(tǒng)共有111條指令,其中49條是單字節(jié)指令,45條是雙字節(jié)指令,17條是三字節(jié)指令。111條指令中共有33個功能,用匯編編程時,只需要42個助記符就能指明這33個功能操作。
37、其中有64條指令的執(zhí)行時間為單機器周期,45條指令的執(zhí)行時間為雙機器周期,乘法和除法指令只需4個機器周期。 AT89及P89的指令系統(tǒng)與MCS-51/52系列單片機的指令系統(tǒng)完全相同。,3.1.2 指令格式,單片機的匯編語言指令格式與其他微機的指令格式一樣。均由以下幾個部分組成: 標(biāo)號:操作碼操作數(shù) ;注釋 標(biāo)號又稱為指令地址符號,一般由16個字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號分開。 表示為可選項。 操作碼 是由助記符表示的字符串,他規(guī)定了指令的操作功能。 操作數(shù) 是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址。 注釋是為該條指令作的說明,以便于閱讀。,指令系統(tǒng)中,
38、操作數(shù)可以為1、2、3個,也可以沒有。不同功能的指令,操作數(shù)作用不同。例如,傳送類指令多數(shù)有兩個操作數(shù),寫在左面的稱為目的操作數(shù)(表示操作結(jié)果存放的單元地址),寫在右面的稱為源操作數(shù)(指出操作數(shù)的來源)。 操作碼與操作數(shù)之間必須用空格分隔,操作數(shù)與操作數(shù)之間必須用逗號“,”分隔。帶方括號項可有可無,稱可選擇項。操作碼是指令的核心,不可缺少。,3.1.3 指令分類及符號說明,1. 指令分類 單片機指令系統(tǒng)的111條指令分為下面五類: (1)數(shù)據(jù)傳送類指令29條,分為:片內(nèi)RAM、片外RAM、程序存儲器的傳送指令,交換及堆棧操作指令。 (2)算術(shù)運算類24條分為:加、帶進(jìn)位加、減、乘、除
39、、加1、減1指令。 (3)邏輯運算類24條分為:邏輯與、或、異或、移位指令。 (4)控制程序轉(zhuǎn)移類17條分為: 無條件轉(zhuǎn)移與調(diào)用、條件轉(zhuǎn)移與調(diào)用、返回與空操作指令。 (5)布爾變量操作類17條分為: 位數(shù)據(jù)傳送、位與、位或、位轉(zhuǎn)移指令。,2. 符號說明 A: 累加器Acc。 B: 專用寄存器,用于MUL和DIV指令中。 C: 為進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機中的累加器。 : 為間址寄存器或基址寄存器的前綴。如Ri,A+PC,A+DPTR。 Rn: 表示當(dāng)前選中的寄存器區(qū)的8個工作寄存器R0R7(n=07)。 Ri: 表示當(dāng)前選中的寄存器區(qū)中的2個寄存器R0、R1,可做地
40、址指針即間址寄存器(i=0、1)。 direct: 表示8位內(nèi)部數(shù)據(jù)存儲器單元的地址。它可以是內(nèi)部RAM的單元地址0127或?qū)S眉拇嫫鞯牡刂?,如I O端口、控制寄存器、狀態(tài)寄存器等(128255)。,#data: 表示包含在指令中的8位立即數(shù)。 #data16: 表示包含在指令中的16位立即數(shù)。 addr16: 表示16位的目的地址。用于 LCALL和LJMP指令中,目的地址范圍是64KB的程序存儲器地址空間。 addr11: 表示11位的目的地址。用于ACALL和 AJMP的指令中,目的地址必須存放在與下一條指令第一個字節(jié)同一個2KB程序存儲器地址空間之內(nèi)。 rel: 表
41、示8位帶符號的偏移量。用于SJMP和所有的條件轉(zhuǎn)移指令中。偏移字節(jié)相對于下一條指令的第一個字節(jié)計算,在-128+127范圍內(nèi)取值。,DPTR:為數(shù)據(jù)指針,可用做16位的地址寄存器。 bit: 表示內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧? X: 表示片內(nèi)RAM的直接地址或寄存器。 (X): X中的內(nèi)容。在直接尋址方式中,表示直接地址X中的內(nèi)容。 ((X)): 在間接尋址方式中,表示由間址寄存器X指出的地址單元中的內(nèi)容。 : 表示將箭頭右邊的內(nèi)容傳送至箭頭的左邊。,3.2 單片機的尋址方式,指令執(zhí)行中所需的操作數(shù)可以在內(nèi)存、寄存器、I/O端口中,稱它們?yōu)椴僮鲾?shù)的地址,訪問這些操作數(shù)的
42、方法稱為尋址方式。單片機中采用了7種尋址方式。,3.2.1 立即尋址方式,采用立即尋址的指令一般是雙字節(jié)的。第一個字節(jié)是指令的操作碼,第二個字節(jié)是立即數(shù)。因此,操作數(shù)就是放在程序存儲器中的常數(shù)。立即數(shù)前面應(yīng)加前綴“#”號。 例如: MOV A, #2BH ;A2BH,即將立即數(shù)2BH傳送至A中。,3.2.2 直接尋址方式,采用直接尋址的指令一般是雙字節(jié)或三字節(jié)指令,第一字節(jié)為操作碼,第二,三字節(jié)為操作數(shù)的地址碼。單片機中,直接地址只能用來表示片內(nèi)低128字節(jié)單元、專用寄存器和片內(nèi)RAM的位地址空間。其中專用寄存器和位地址空間只能用直接尋址方式來訪問。 例如:MOV A,30H ;(30H)
43、A MOV C,00H ; (00H)Cy LJMP 1000H ; 將1000H送入PC,3.2.3 寄存器尋址方式,寄存器尋址方式用于訪問選定的工作寄存器R0R7、A、B、DPTR和進(jìn)位CY中的數(shù)。其中R0R7由操作碼低三位的8種組合表示,A、B、DPTR、C則隱含在操作碼之中。 這種尋址方式中被尋址的寄存器中的內(nèi)容就是操作數(shù)。 例如:MOV A, R0 ;(R0)A MOV B ,A ;(A)B,3.2.4 寄存器間接尋址方式,這種尋址方式中,指令指定寄存器中的內(nèi)容為操作數(shù)的地址。寄存器間接尋址是用于訪問片內(nèi)數(shù)據(jù)存儲器或片外數(shù)據(jù)存儲器。當(dāng)訪問片內(nèi)RAM 或片外的低
44、256字節(jié)空間時,可用R0或R1做為間址寄存器;當(dāng)訪問片外整個64KB的地址RAM空間時,用16位寄存器DPTR做間址寄存器。這類指令都為單字節(jié)的指令,操作碼的最低位表示是采用R0還是R1做間址器。 在執(zhí)行PUSH和POP指令時,也采用寄存器間接尋址,此時用堆棧指針SP做間址寄存器。 例如:MOVX A, R0 ; ((R0))A MOVX A , DPTR ; ((DPTR))A POP ACC ; ((SP))A , (SP)-1SP,3.2.5 基址加變址尋址方式,這種尋址方式用于訪問程序存儲器中的某個字節(jié)。以DPTR或PC作為基址寄存器,累加器A做為變址寄存器,兩者的內(nèi)
45、容之和為操作數(shù)的地址。這種尋址方式常用于查表操作。 例如:MOVC A,A+DPTR ;指令代碼為93H,單字節(jié)指令。設(shè)該指令放在1040H單元,A的原內(nèi)容為A0H,DPTR中的值為 3000H,則操作數(shù)的地址等于:A0H+3000H=30A0H,即將30A0H單元中的內(nèi)容傳送至A中。該指令的執(zhí)行過程如下圖所示。,3.2.6 相對尋址方式,相對尋址是將程序計數(shù)器PC中的當(dāng)前內(nèi)容與指令第二字節(jié)所給出數(shù)相加,其和為跳轉(zhuǎn)指令的轉(zhuǎn)移地址,轉(zhuǎn)移地址也稱為轉(zhuǎn)移目的地址。PC中的當(dāng)前值稱為基地址,指令第二字節(jié)的數(shù)據(jù)稱為偏移量。偏移量為帶符號的數(shù),其值為-128+127。故指令的跳轉(zhuǎn)范圍相對PC的當(dāng)前值
46、在-128+127之間跳轉(zhuǎn)。此種尋址方式一般用于相對跳轉(zhuǎn)指令。 例如:SJMP 05H ;指令代碼是雙字節(jié)的,即80,05H 現(xiàn)設(shè)PC=4000H為本指令的地址,轉(zhuǎn)移目的地址=(4000+02)+05H=4007H PC當(dāng)前值,3.2.7 位尋址方式,位尋址是指對片內(nèi)RAM的位尋址區(qū)(字節(jié)地址20H2FH)和可以位尋址的專用寄存器進(jìn)行位操作時的尋址方式。在進(jìn)行位操作時,借助于進(jìn)位C作為位操作累加器。操作數(shù)直接給出該位的地址,然后根據(jù)操作碼的功能對其進(jìn)行位操作。位尋址的位地址與直接尋址的字節(jié)地址形式完全一樣,主要由對應(yīng)的操作數(shù)的位數(shù)來區(qū)分,使用時應(yīng)加以注意。 例如:MOV
47、10H,C ;10H是位尋址的位地址(C是位累加器) MOV A,10H ;10H是直接尋址的字節(jié)地址(A是字節(jié)累加器),單片機的7種尋址方式中,每種尋址方式可涉及的存儲器空間見下表,3.3 指令系統(tǒng)及應(yīng)用舉例,3.3.1 數(shù)據(jù)傳送類指令(29條),1 數(shù)據(jù)傳送類指令特點 數(shù)據(jù)傳送指令一共29條,這類指令一般是把源操數(shù)傳送到目的操作數(shù),指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)修改為源操作數(shù)。傳送類指令一般不影響標(biāo)志位,只有堆棧操作可以直接修改程序狀態(tài)字PSW。另外,對目的操作數(shù)為A的指令將影響奇偶標(biāo)志P位。 數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVC、MOVX、XCH、XCHD、S
48、WAP、PUSH、POP共8種。源操作數(shù)可以采用寄存器、寄存器間接、直接、立即、變址加基址5種尋址方式;目的操作數(shù)可以采用前三種尋址方式。,2 用于片內(nèi)數(shù)據(jù)存儲器傳送的指令使用說明及舉例 (1) 以累加器A為目的操作數(shù)的指令(4條) MOV A,Rn ;A Rn MOV A,#data ;A data MOV A,Ri ;A ((Ri)) MOV A,direct ;A (direct) 例: MOV A,R3 ; (R3)A , (A)=(R3) MOV R1,#80H ; #80HR1 , (R1)=80H MOV A, R1 ; ((R1))A
49、 , (80H)A MOV A,#20H ; #20HA , (A)=20H,(2) 以工作寄存器Rn為目的操作數(shù)的指令(3條) MOV Rn,A ;Rn A MOV Rn,direct ;Rn (direct) MOV Rn,#data ;Rn data 例 MOV R1,A ;R1 A , (A)=(R1) MOV R3,30H ;R3 (30H),(R3)=(30H) MOV R7,#80H ;R7 #80H ,(R7)=80H,(3) 以直接地址為目的操作數(shù)的指令(5條) MOV direct,A MOV direct,R
50、n MOV direct,direct MOV direct,Ri MOV direct,#data 例: MOV 30H,A ;30H (A) , (30H)=(A) MOV 20H,R7 ;20H (R7) , (20H)=(R7) MOV 27H,#0FH ;27H #0FH , (27H)=0FH MOV 50H,40H ;50H (40H) , (50H)=(40H),(4) 以間接地址為目的操作數(shù)的指令(3條) MOV Ri,A MOV Ri,direct MOV Ri,#data 這組指令的功能是把源操作數(shù)所指定的內(nèi)容傳送至以
51、R0或R1為地址指針的片內(nèi)RAM單元中。 源操作數(shù)有寄存器尋址、直接尋址和立即尋址3種方式。目的操作數(shù)為寄存器間接尋址。 例: MOV A, #00H ;A #00H , (A)=00H MOV R0,#30H ;R0 #30H,(R0)=30H MOV R0,A ;(R0) (A), (30H)=00H,(5) 16位數(shù)據(jù)傳送指令(1條) MOV DPTR,#data16 這是唯一的16位立即數(shù)傳送指令,其功能是把16位立即數(shù)傳送至16位數(shù)據(jù)指針寄存器DPTR。 例: MOV DPTR,#04FFH ;DPTR #04FFH,(DPTR)=04FFH,3用
52、于片外數(shù)據(jù)存儲器傳送指令及舉例(4條) MOVX A, Ri ;A ((Ri)) MOVX A, DPTR ;A ((DPTR)) MOVX Ri, A ;(Ri) (A) MOVX DPTR,A ;(DPTR) (A) 在單片機中,CPU對片外RAM的訪問只能用寄存器間接尋址的方式,且僅有4條指令。以DPTR間接尋址時,尋址的范圍達(dá)64KB;以Ri間接尋址時,僅能尋址256B的范圍。而且片外RAM的數(shù)據(jù)只能和累加器A之間進(jìn)行傳送,不能與其他寄存器和片內(nèi)RAM單元直接進(jìn)行傳送。 片外IO端口的訪問均可使用此4條指令。,例 MOV DPTR,#A000
53、H ;DPTR #A000H,(DPTR)=0A000H MOV A,40H ;A (40H), (A)=(40H) MOVX DPTR,A ;(DPTR)(A),(A000H)=(A) 這幾條指令實現(xiàn)了 A000H (40H) 例 MOV DPTR, #2000H ;DPTR #2000H,(DPTR)=2000H MOVX A, DPTR ;A (2000H), (A)=(2000H) MOV DPTR, #5000H ;DPTR #5000H, (DPTR)=5000H MOVX DPTR,A ;(DPTR) (A), (5000H
54、)=(A) 這幾條指令實現(xiàn)了 5000H (2000H),4 用于程序存儲器數(shù)據(jù)傳送的指令及舉例(2條) MOVC A,A+PC ;A ((A)+(PC)) MOVC A,A+DPTR ;A ((A)+(DPTR)) 單片機指令系統(tǒng)中,這2條一般用于查表,其數(shù)據(jù)表格放在程序存儲器中。 例: 在程序存儲器中,存有LED顯示器09的字形段碼為: 210AH : 0C0H 0字符的段碼 210BH : 0F9H 1字符的段碼 210CH : 0A4H 2字符的段碼 210DH : 0B0H 3字符的段碼 執(zhí)行 MOV A,01H MOV DPTR,
55、#210AH MOVC A,A+DPTR 后,(A)=0F9H,5 交換指令及舉例(5條) XCH A, Rn ;(A) (Rn) XCH A,Ri ;(A)((Ri)) XCH A,direct ;(A)(direct) XCHD A,Ri ;(A)3-0((Ri))3-0 SWAP A ;(A)7-4(A)3-0 這組指令的前三條為全字節(jié)交換指令,其功能是將A的內(nèi)容與源操作數(shù)所指出的數(shù)據(jù)互換。后兩條指令為半字節(jié)交換指令,其中XCHD A,Ri是將A內(nèi)容的低4位與Ri所指片內(nèi)RAM單元中的低4位數(shù)據(jù)互相交換,各自的高4位不變。SWAP A指令是將A中內(nèi)容
56、的高、低4位數(shù)據(jù)互相交換。 例: 設(shè)(A)=12H,(20H)=34H,執(zhí)行以下指令的結(jié)果如何? XCH A,20H ;A (20H) , (A)=34H,(20H)=12H SWAP A ;(A)7-4 (A)3-0 , (A)=43H,6 堆棧操作指令及舉例(2條) PUSH direct ;SP (SP)+1 ,(SP)(direct) POP direct ;direct((SP)),SP(SP)-1 PUSH指令是入棧(或稱壓棧或進(jìn)棧)指令,其功能是先將棧指針SP的內(nèi)容加1,然后將直接尋址單元中的數(shù)壓入到SP所指示的單元中。POP是出棧(或稱彈出)指令,
57、其功能是先將棧指針SP所指示的單元內(nèi)容彈出送到直接尋址單元中,然后將SP的內(nèi)容減1,仍指向棧頂。 使用堆棧時,一般需重新設(shè)定SP的初始值。系統(tǒng)復(fù)位或上電時SP的值為07H,而08H1FH正好也是CPU的工作寄存器區(qū),故為不占用寄存器區(qū),程序中需使用堆棧時,先應(yīng)給SP設(shè)置初值。但應(yīng)注意不超出堆棧的深度。一般SP的值可以設(shè)置在1FH或更大一些的片內(nèi)RAM單元。,利用堆棧操作指令可以實現(xiàn)數(shù)據(jù)的傳送,例如: PUSH DPH POP 30H 可以實現(xiàn) 30H (DPH) 注意:在對累加器進(jìn)行堆棧操作時必須使用ACC,而不能用A。 PUSH ACC 和 POP ACC 是正確的寫法,
58、而 PUSH A 和 POP A 的寫法是錯誤的。,小 結(jié),1、單片機的七種尋址方式 2、七種尋址方式的尋址空間 3、29條數(shù)據(jù)傳送類指令的使用,作 業(yè),教材P78 31、32、33、34 31、什么叫尋址方式?單片機有哪幾種尋址方式?這幾種尋址方式是如何尋址的? 32、要訪問專用寄存器和片外數(shù)據(jù)存儲器應(yīng)采用什么尋址方式? 33、用于外部數(shù)據(jù)傳送的指令有哪幾條?有何區(qū)別? 34、指出下列指令的本質(zhì)區(qū)別: MOV A,DATA MOV A,#DATA MOV DATA1,DATA2 MOV 60H,#61H,3.3.2 算術(shù)運算類指令,1 算術(shù)運算類指令特點 算
59、術(shù)運算類指令共有24條,其中包括4種基本的算術(shù)運算指令,即加、減、乘、除。這4種指令能對8位無符號數(shù)進(jìn)行直接的運算,借助溢出標(biāo)志也能對有符號的二進(jìn)制整數(shù)進(jìn)行加減運算。同時借助進(jìn)位標(biāo)志,可以實現(xiàn)多精度的加減和循環(huán)移位,也可以對壓縮的BCD數(shù)進(jìn)行運算(壓縮BCD數(shù),是指在一個字節(jié)中存放二位BCD數(shù))。 算術(shù)運算指令對程序狀態(tài)字PSW中的Cy、AC、OV三個標(biāo)志位都有影響,根據(jù)運算的結(jié)果可將他們置1或清除。但是加1和減1指令不影響這些標(biāo)志。算術(shù)運算類指令用到的助記符有:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV八種。,2. 算術(shù)運算類指令使用說明及舉例 (1) 不帶進(jìn)位
60、的加法指令(4條) ADD A, Rn ;A (A)+(Rn) ADD A, Ri ;A (A)+((Ri)) ADD A, direct ;A (A)+(direct) ADD A, #data ;A (A)+#data 這4條指令的功能是把A中的數(shù)與源操作數(shù)所指出的內(nèi)容相加,其結(jié)果仍存在A中。相加過程中若位3和位7有進(jìn)位,則將輔助進(jìn)位標(biāo)志AC和進(jìn)位標(biāo)志Cy置位,否則清0。,(2) 帶進(jìn)位加法指令(4條) ADDC A, Rn ;A (A)+(Rn)+(Cy) ADDC A, Ri ;A (A)+((Ri))+(Cy) ADDC A, direct ;
61、A (A)+(direct)+(Cy) ADDC A, #data ;A (A)+#data+(Cy) 這4條指令的功能是把源操作數(shù)所指示的內(nèi)容和A中的內(nèi)容及進(jìn)位標(biāo)志Cy相加,結(jié)果存入A中。運算結(jié)果對PSW中相關(guān)位的影響同上述的4條加法指令。 帶進(jìn)位加法指令一般用于多字節(jié)數(shù)的加法運算,低位字節(jié)相加時和可能產(chǎn)生進(jìn)位,可以通過帶進(jìn)位加法指令將低位字節(jié)的進(jìn)位加到高字節(jié)上去。高位字節(jié)求和時必須使用帶進(jìn)位的加法指令。,(3) 帶進(jìn)位減法指令(4條) SUBB A, Rn ;A (A)-(Rn)-(Cy) SUBB A, Ri ;A (A)-((Ri))-(Cy) SUBB A,d
62、irect ;A (A)-(direct)-(Cy) SUBB A,#data ;A (A)-data-(Cy) 這4條指令的功能是把A中的內(nèi)容減去源操作數(shù)所指出的內(nèi)容和進(jìn)位標(biāo)志,差存入A中。當(dāng)夠減時,進(jìn)位標(biāo)志復(fù)位,不夠減時,低字節(jié)需向高字節(jié)借位,因此進(jìn)位標(biāo)志將置位。注意:單片機沒有不帶借位的減法指令。,(4) 加1指令(5條) INC A ; A (A)+1 INC Rn ; Rn (Rn)+1 INC Ri ;(Ri)((Ri))+1 INC direct ;direct(direct)+1 INC DPTR ;DPTR (DPTR)+1 這一組指令
63、的功能是將操作數(shù)所指定的單元或寄存器中的內(nèi)容加1。其結(jié)果送回原操作數(shù)單元中。 例: 已知DPTR=11FFH; 執(zhí)行INC DPTR指令后,結(jié)果: DPTR=1200H 注:單片機中這是僅有的一條16位運算指令。,(5) 減1指令(4條) DEC A ; A (A)-1 DEC Rn ; Rn (Rn)-1 DEC Ri ;(Ri)((Ri))-1 DEC direct ;direct (direct)-1 這組指令的功能是將操作數(shù)所指定的單元或寄存器中的內(nèi)容減1,其結(jié)果送回原操作數(shù)單元中。,(6) 乘法指令(1條) MUL AB ;BA (A
64、)(B) 此條指令的功能是實現(xiàn)兩個8位無符號數(shù)的乘法操作,2個數(shù)分別存在累加器A和寄存器B中。乘積為16位,低8位積在A中,高8位積在B中。若積大于255,溢出標(biāo)志位OV置位,否則復(fù)位,而Cy位總是為0。乘法指令是整個指令系統(tǒng)中執(zhí)行時間最長的2條指令之一,它需4個機器周期(48個振蕩周期)才能完成一次乘法操作。,(7) 除法指令(1條) DIV AB ;A (A)(B) (商),B AB(余); ; Cy 0 ,OV 0 除法指令可以實現(xiàn)兩個8位無符號數(shù)的除法。被除數(shù)放在A中,除數(shù)放在B中。指令執(zhí)行后,商放在A中而余數(shù)在B中。進(jìn)位標(biāo)志Cy和溢出標(biāo)志OV均清0,只有
65、當(dāng)除數(shù)為0時,A和B中的內(nèi)容為不確定值,此時OV位置位,說明除法溢出。指令的執(zhí)行時間也是4個機器周期,和乘法指令相同是執(zhí)行時間最長的2條指令之一。,(8) 十進(jìn)制調(diào)整指令(1條) DA A 這條指令是在進(jìn)行BCD碼加法運算時,用來對BCD碼的加法運算結(jié)果自動進(jìn)行修正(主要是高、低4位是否+6)。另外,對BCD碼的減法運算不能用此指令來進(jìn)行修正。 注:該指令必須緊跟在加法指令后面,否則調(diào)整結(jié)果將出現(xiàn)錯誤。 注意:同是21H,若是BCD碼則表示十進(jìn)制數(shù)21;若是十六進(jìn)制則為21H。,3.3.3 邏輯運算類指令,1 邏輯運算類指令的特點 邏輯運算類指令共24條,包括與、或、異或、清
66、除、求反、左右移位等操作指令。這些指令執(zhí)行時一般不影響程序狀態(tài)寄存器PSW,僅當(dāng)目的操作數(shù)為A時對奇偶標(biāo)志P位有影響,帶進(jìn)位的移位指令影響Cy位。邏輯運算指令用到的助記符有ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9種。,2邏輯運算類指令的使用說明及舉例 (1) 邏輯與運算指令(6條) ANL A, Rn ; A (A)(Rn) ANL A, Ri ; A (A)((Ri)) ANL A,#data ; A (A)#data ANL A,direct ; A (A)(direct) ANL direct, A ; direct (direct)(A) ANL direct,#data ; direct (direct)#data 邏輯與運算指令共6條,前四條指令是A的內(nèi)容與操作數(shù)所指出的內(nèi)容進(jìn)行按位邏輯與,結(jié)果送A中。指令執(zhí)行后影響奇偶標(biāo)志位P。后兩條指令是將直接地址單元中的內(nèi)容和源操作數(shù)所指出的內(nèi)容按位進(jìn)行邏輯與,結(jié)果送入直接地址單元中。 利用與指令可以實現(xiàn)寄存器或內(nèi)存單元中的幾位或全部清“0”。,(2) 邏輯或運
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案